EIP-4973を理解したい

#juneboku > topics > EIP-4973を理解したい
created: 2022-11-05 / updated: 2022-11-07

Ethereum、EIP-4973、ERC-4973

EIPを読む

まずは https://eips.ethereum.org/EIPS/eip-4973 を読もう。

EIP-4973: Account-bound Tokens
An interface for non-transferrable NFTs binding to an Ethereum account like a legendary World of Warcraft item binds to a character.

とのことで、Soulbound Token的なことを表現したいように思える。

概念的なSoulを扱うのはたいへんだから、まずは少なくともAccountに紐づけるような堅実な実装を目指している印象。

関数のインターフェイスは以下の通り。ERC-721と比べると transfer 系がないのがわかる。

function balanceOf(address owner) external view returns (uint256);
function ownerOf(uint256 tokenId) external view returns (address);
function unequip(uint256 tokenId) external;
function give(address to, string calldata uri, bytes calldata signature) external returns (uint256);
function take(address from, string calldata uri, bytes calldata signature) external returns (uint256);

give と take があるってことは、二者間の合意にもとづいた受け渡しはできるってことかね〜。

unequip がとても重要そうな印象を受ける。が、説明を読んでもよくわからなかった。

実装を読む

https://github.com/rugpullindex/ERC4973/blob/master/src/ERC4973.sol を読んでみよう。

import {SignatureChecker} from "@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol";
import {EIP712} from "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol";
import {ERC165} from "@openzeppelin/contracts/utils/introspection/ERC165.sol";
import {BitMaps} from "@openzeppelin/contracts/utils/structs/BitMaps.sol";

知らないことだらけだ。

知らないことは、別途で理解を進めていく。

関数 unequip は「トークンを捨てる」みたいな感じかねぇ。英単語equipの否定形で「装備を外す」的な?Account-bound Tokensにおいて装備を外すってのはそのトークンは誰にも使えなくなる、って理解で合っているだろうか。

function unequip(uint256 tokenId) public virtual override {
  require(msg.sender == ownerOf(tokenId), "unequip: sender must be owner");
  _usedHashes.unset(tokenId);
  _burn(tokenId);
}

まとめ

  • transferのように一方的に送りつけたりはできないっぽい
  • giveとtakeによって、双方の合意のもとに受け渡しすることはできるっぽい?
  • unequipによって誰も二度と使えない状態にできるっぽい

ここから先は、ERC-4973を実装したトークンを発行して誰かといっしょに触ってみるのがいいだろう。

Mentioned in days

In 2022-11-06 Sun Read full day →

今日のウェブログ

EIP-4973を理解したいの続きをやっていった。
派生してEIP-165を理解したい、EIP-712を理解したいのページをつくった。

ひとつひとつ、じっくり考えて少しずつ理解していくしかないよな〜。日記によれば、去年の11月にはAxie Infinityに手を出しているわけだから、かれこれ1年くらいはWeb3系の話題を視界に入れ続けてはいるわけだ。それにしてはキャッチアップが遅すぎるか。もうちょっとギアを上げてやっていきたい。伸び代しかない。

In 2022-11-05 Sat Read full day →

今日のウェブログ

EIP-4973を理解したいのページをつくった。

Archives : 2,609 days