🐡
[Astar]RMRKコントラクト備忘録⑥(MultiAssetを読み進めてみよう!)
今回は、こちらの「MultiAsset」の実装を確認していきます。
「MultiAsset」の実装はこちらになります。
今回は、こちらの「add_asset_entry」を見てみましょう。
その前に、データ構造も確認します。
下のように、5つの変数が存在しています。
また、collection_asset_entriesのバリューであるAssetは、こちらの3つから構成されています。
- equippable_group_id
- asset_uri
- part_ids
まずは、「add_asset_entry」の最初に実行される、「ensure_asset_id_is_available」について見てみましょう。
下のように、asset_idが存在する場合には、エラーを返しています。
こちらのように、共通で使用される、「AssetIdAlreadyExists」のエラーであることが確認できます。
「asset_id」が存在しないことを確認すると、「collection_asset_entries」に挿入を行います。
さらに、「collection_asset_ids」にpushで追加し、「asset_catalog_address」に挿入しています。
最後に「_emit_asset_set_event」を発火して完了です。
では、実際にやってみましょう。
このように、「add_asset_entry」を実行します。
「get_asset」関数でこのように確認することができます。
「get_asset_uri」「get_asset」関数はこのようになっています。
通常の取得の処理になります。
また、「get_asset_catalog_address」もこのような処理になっています。
以上です。
Discussion