🎉

【完全保存版】ERC721とERC20の特徴を持ったERC3525を理解しましょう!

2022/12/04に公開1

こんにちは、CryptoGamesの高橋です。

本日は、ERC3525について説明をしていきたいと思います。

なお、詳細はこちらをご確認ください。
https://docs.solv.finance/solv-documentation/ERC-3525-SFT/EIP-3525

1.ERC3525を見てみる

こちらが、テストネットで作成したERC3525です。

見た目はERC721のNFTのようですね。

https://testnets.opensea.io/ja/collection/semifungibletoken-swords

こちらになります。

2.Etherscanを使って見てみる

では、Etherscanを用いて、中身を見てみましょう。
https://mumbai.polygonscan.com/address/0xccebae0130f3acecfe17592e6d94d2303d69c572

1.トークンIDの値(value)を見てみる

実はERC3525にはトークンIDごとに値を持ちます。
例えば、下を見てみましょう。

これはトークンID:1が100という値を持っていることを表しています。

トークンID:1は武器の想定なので、この武器の「攻撃力」が100であるといったイメージです。

同じように、トークンID:2を見ると、こちらは攻撃力が40でした。

こんな感じですね。

これはこちらの図がわかりやすいと思います。

ERC3525はERC721などに比べ、下のようにレイヤーが一つ増えています。

https://docs.solv.finance/solv-documentation/ERC-3525-SFT/core-mechanisms/id-slot-units

2.トークンIDの値(value)を移動させる

valueは数値なので、増やしたり、移動させることができます。

例えば、トークンID:1に新たにミントをしてみましょう。

すると、今までの100に30が加わり、130になりました。

こんなイメージです。

では、トークンID:2からトークンID:1へ下のように移動させてみましょう。

すると、トークンID:1は130 + 30 = 160になりました。

トークンID:2は40 - 30 = 10になりました。

こんなイメージです。

3.トークンIDの属性(slot)を確認する

ERC3525では、それぞれのトークンが属性(slot)を持ちます。

例えば、トークンID:1は下のように1という属性(slot)を持ちます。

ここで、属性(slot):1は「武器」を想定しています。

同じように、トークンID:2も属性(slot):1という、「武器」属性を持っています。

このようなイメージになります。

別のトークンも見てみましょう。

トークンID:7は下のように2という属性(slot)を持ちます。

ここで、属性(slot):2は「防具」を想定しています。

つまり、トークンID:1とトークンID:7は別の属性(slot)だとわかりました。

トークンID:8も下のように2という属性(slot)を持っています。

これはトークンID:7と同じ属性(slot)です。

つまり、このようなイメージになりました。

ここで、トークンID:7とトークンID:8の値も見てみましょう。

トークンID:7の値は30であり、

トークンID:8の値は55でした。

そして、トークンID:7とトークンID:8は「防具」という属性(slot)なので、下のように先ほどの値は「防御力」の値になります。

4.異なる属性(slot)間での値(value)の移動について(できない)

では、異なる属性間で値を移動させようとするとどうなるでしょう。

下のように防御属性(slot)のトークンID:8から攻撃属性(slot)のトークンID:1に移動させようとすると下のようにエラーが起こるようになります。

これは、通貨で考えるとわかりやすいと思います。

1,000円に30ドルを足しても、1,030円とはなりません。

このように、属性が異なると、数字の持つ概念が異なるので、単純な計算ができません。

そのため、値を送ることができないようになっています。

このようなイメージですね。

また、これにより、ERC3525は概念の異なる、属性を一つのコントラクトに内包することができます。

5.totalSupplyを見てみる

最後に、totalSupplyを見てみましょう。
下のように、10となっています。

これは、現在発行しているトークン数が10だからです。

そのため、基本的にはNFTのように振る舞いながらも、それぞれに値を格納することができています。

今回は以上です。

最後までお読みいただき、ありがとうございました。

Discussion

えぬえふ父さんえぬえふ父さん

こんにちは。いつもツイートを拝見しています😄今回もとてもわかりやすい記事で勉強になりました。
質問です。例えばトークンID1にスロット1と2の値を両方とも格納することは可能なのでしょうか?それとも1トークン、1スロットなのでしょうか?
またこのようなERC規格をどのようなメディアやウェブサイトから調べるのでしょうか?良ければ教えてください。よろしくお願いします🙏