0xMiden / 0xMiden/protocol

Move `NonFungibleAsset` to `miden-standards`

Aberta
#3,637 0 comentários 1 reação 0 responsáveis Ver no GitHub
standards
Linguagem predominante
Rust
Estrelas
132
Forks
167
Merge médio
1d 23h
PRs com merge (30d)
110

Descrição

With https://github.com/0xMiden/protocol/pull/3625 `NonFungibleAsset` became a standard asset and so should be moved to `miden-standards`, next to the `NonFungibleFaucet` implementation. It can now be adapted to be specific to that faucet and the logic of `NonFungibleFaucet::compute_asset_commitment` can move to it.

It could be defined as:

```rust
pub struct NonFungibleAsset(Asset);

impl NonFungibleAsset {
pub fn new(faucet_id: AccountId, data: &[u8], salt: Word) -> Self {
let data_digest = Hasher::hash(data);
let value = AssetValue::from_raw(Hasher::merge(&[data_digest, salt]));

let asset_class_suffix = value.as_elements()[0];
let asset_class_prefix = value.as_elements()[1];
let asset_class = AssetClass::new(asset_class_suffix, asset_class_prefix);

let asset_id = AssetId::new(asset_class, faucet_id, AssetComposition::None)
.expect("non-fungible composition is always valid");
let asset = Asset::new(asset_id, value.as_word())
.expect("non-fungible asset should be a valid asset");

Self(asset)
}

// ... public accessors ...
}

impl From for Asset {
fn from(asset: NonFungibleAsset) -> Self {
asset.0
}
}
```

Other required changes are migrating all miden-protocol tests that use `NonFungibleAsset` to a `testing`-only `MockAsset` that uses `AssetComposition::None`.

Guia de contribuição

Abrir o guia de contribuição

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.