0xMiden / 0xMiden/protocol

Move `NonFungibleAsset` to `miden-standards`

Abierto
#3,637 0 comentarios 1 reacción 0 asignados Ver en GitHub
standards
Lenguaje dominante
Rust
Estrellas
132
Forks
167
Merge medio
1 d 23 h
PR fusionados (30 d)
110

Descripción

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`.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.