

Discover more from oneseep Newsletter
ERC-4906は優しさ<スマートコントラクトとフロントエンドの関係>
またまた miinインスパイアードな記事ですが、今日はERC-4906をスタートとして少し記事を書いていきます。


話題になった CheckVVではERC-4906がOpenEditionに採用されて評価バク上がりというツイートを見ました。なになに?ERC-4906って何と思ったことでしょう。では紐解いていきましょう
ERC-4906自体の定義はこちらにあります。超抜粋します。
概要
この規格はEIP-721の拡張です。MetadataUpdate
EIP-721 トークンにイベントを追加します。
メタデータ更新拡張機能は、EIP-721 コントラクトではオプションです。
/// @title EIP-721 Metadata Update Extension
interface IERC4906 is IERC165, IERC721 {
/// @dev This event emits when the metadata of a token is changed.
/// So that the third-party platforms such as NFT market could
/// timely update the images and related attributes of the NFT.
event MetadataUpdate(uint256 _tokenId);
/// @dev This event emits when the metadata of a range of tokens is changed.
/// So that the third-party platforms such as NFT market could
/// timely update the images and related attributes of the NFTs.
event BatchMetadataUpdate(uint256 _fromTokenId, uint256 _toTokenId);
}
参照: https://eips.ethereum.org/EIPS/eip-4906
この実装はERC-721にeventを出力する機能を追加する規格です。今回の場合はMetadataがアップデートされたタイミングでEventを出すという機能です。
Eventとは、コントラクトの関数が実行されたときに、その結果を外界に出力する機能です。このイベントはEthereumのブロックに書き込みが行われます。
つまりEthreumのトランザクションをずっと監視していればそのイベントが拾うことができます。
これが大変重要で、そのコントラクトに確認に行くきっかけをもらうことができます。擬似的なコントラクトから非ブロックチェーン側へのプッシュとなっているわけです。
ERC-4096の世界だとこういうことができるのですね。ERC-4096でERC721のメタデータのアップデートのお知らせを統一方式にした結果、非スマコン側からその値をコントラクトに確認せずに変更がわかるようになったのです。
これまではきっとユーザーがメタデータとか画像が変わったかもしれないからアップデートしてという感じでやっていたのでしょう。メタデータが大きく変わることがこれまで想定されていませんでした。
これまでのPFPであればこれでもよかったのかもしれません。でもNFTの遊びも極まってきて、ガンガン作者がパラメータや画像を変えて所有者を楽しませています。
また、ゲーム系になるとよりメタデータのリアルタイムアップデートの有用性がたかまってくるでしょう。
ゲーム系で画面にでるメタデータを頻繁にアップデートするにはこれまでこんな感じの実装が必要だったかもしれません。
(実際には自分専用のコントラクトなら上記と同様な実装を俺様実装としてもちろん可能でした。自分の発行ではないNFTを使う場合を想定すると)
サーバーさんは忙しい割にほとんどのケースは空振りでしょう。サーバーでなくともため息がでますね。頻度を1日に1回とかにしても見るコントラクトが100個だったらどうでしょう。泣けますね。
ERC-4096のおかげで楽ちんです。
地球にとってもよいことなのです。
省エネ!
謝辞
タイトルは若干下記の記事をリスペクト参照して命名しました。とても素敵な技術記事です。イベントの大切さがわかります。