今回はEIPについて理解を深めることでERCトークンについて理解を深めたいと思う。
本記事を書こうと思った動機
独自ERCトークンの実装の際に、本格的に腰を据えて理解したいと思った際に、EIPを理解する必要があると考えたから。
なぜなら独自のERCトークンを発行するスマートコントラクトを実装する場合、EIPに記載されている標準に従うことが重要だから。
例えば、Ethereumの標準トークンであるERC20やERC721などは、EIPの一部として定義されています。EIPは、トークンがどのように振る舞うべきか、どの関数を含むべきか、といった規定を設けています。例えば、ERC20トークンは、transfer, balanceOf, approve, allowanceなどの関数を実装することが求められます。
これらの標準に従うことで、その規定を満たしたトークンはEthereumのエコシステム全体と互換性を持つことができます。つまり、ウォレット、取引所、その他のdApps(分散型アプリケーション)との間で自由にやり取りすることが可能になります!
EIPとは何か
公式ドキュメントによると、EIPは
1.「Ethereum Improvement Proposal」の略称で、イーサリアムの改善提案を意味します。
2. 設計文書であり、イーサリアムコミュニティに情報を提供するためのものです。
3. イーサリアムの新機能や、そのプロセスや環境の改善を記述します
4. 提案される新機能の技術的詳細と、その提案の理由が記載されます
5. EIPの著者は、コミュニティ内での合意形成の責任があります
6. EIPの著者はまた、異なる意見を文書化する役割も果たします
ということです。
つまりそれはまるで「建築の設計図」とも言えます。この設計図には新たに建つべき建物(ここではイーサリアムの新機能や改善点)の詳細な仕様と、その建物を建てる理由(新機能や改善の動機)が詳細に描かれている。そして、その設計図の作成者(EIPの著者)は、設計図に基づいて建物を建てるためのコンセンサス(合意)を形成し、異論や反対意見があればそれもきちんと記録する。それによって、全員がその建築計画(改善提案)について理解し、議論を通じて最良の方向性を見つけることが可能となるということ。
ERCの3つのタイプ
EIPには大きく分けて3つのタイプがあります。
以上をまとめると以下のようになります:
- スタンダードトラックEIP:イーサリアムの実装全体に影響を及ぼす変更を記述します。このタイプはさらにコア、ネットワーキング、インターフェース、ERCの4つのカテゴリに分けられます。
- メタEIP:イーサリアムに関連するプロセスを記述するか、あるいはプロセスへの変更を提案します。これらは通常、コミュニティの合意を必要とします。
- 情報提供型EIP:イーサリアムの設計に関する問題を記述するか、一般的なガイドラインを提供します。しかし新機能の提案は含まれず、ユーザーはこれらを無視する自由があります。
公式ドキュメントによるNFTの定義
NFTと聞くと儲かる儲からないだのがもてはやされる昨今、正確な技術的な定義を理解している人は少ないのではないのでしょうか。
噛み砕いて要約すると、
- 全てのNFTは一意のID番号(uint256と呼ばれる種類の数字)を持っていて、これがそのNFTを特定するための識別子になります。
- このID番号はNFTが存在する間、一度決まると変わることはありません。
- NFTはそのIDと、そのIDを管理するスマートコントラクト(これが所在地のようなもの)の組み合わせで、全世界から見て一意に識別できます。
- IDの数字は0から順番に増えていくかもしれませんが、そうであるとは限らないので、そのパターンを当てにしてはいけません。
- NFTは何らかの理由で無効になる、つまり「消える」ことがあります。
- IDとして使われるuint256は、その大きさと性質がさまざまな用途に適しています。なぜなら、UUIDやsha3ハッシュといった他の種類の一意識別子をuint256に変換できるからです。これらの一意識別子がuint256に変換可能な理由は、UUIDとsha3ハッシュが基本的にバイナリデータとして扱えるためです。そして、そのバイナリデータをそのままuint256の値として使用することができます。これにより、それぞれの一意識別子を直接ERC-721トークンのIDとして使用することが可能になります。
つまり....NFTとは
それぞれが「NFTのスマートコントラクトアドレスとそのスマートコントラクト内で一意に管理される識別子(通常はuint256型のID)」とのペアで表され、これにより所有権とユニークなデジタルアセットが関連付けられるもの
のこと。