🐡

[Astar]RMRKコントラクト備忘録⑥(MultiAssetを読み進めてみよう!)

2023/04/01に公開

今回は、こちらの「MultiAsset」の実装を確認していきます。

「MultiAsset」の実装はこちらになります。

今回は、こちらの「add_asset_entry」を見てみましょう。

その前に、データ構造も確認します。

下のように、5つの変数が存在しています。

また、collection_asset_entriesのバリューであるAssetは、こちらの3つから構成されています。

  1. equippable_group_id
  2. asset_uri
  3. 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