イーサリアム(ETH)トークン標準ERC-20とERC-721の違い
イーサリアムは、スマートコントラクトを実行できる分散型プラットフォームであり、様々なトークンを発行・管理するための基盤を提供しています。その中でも、ERC-20とERC-721は、最も広く利用されているトークン標準です。本稿では、これらの標準の違いについて、技術的な詳細を含めて詳細に解説します。
1. トークン標準とは
トークン標準とは、イーサリアム上でトークンを作成する際に従うべき共通のルールセットです。標準化されたインターフェースを提供することで、異なるトークン間の相互運用性を高め、ウォレット、取引所、その他のアプリケーションがトークンを容易に認識し、処理できるようにします。ERC-20とERC-721は、それぞれ異なる種類のトークンを定義しており、その特性と用途も異なります。
2. ERC-20トークン
2.1 ERC-20トークンの特徴
ERC-20は、ファンジブル(fungible)トークン、つまり交換可能なトークンを定義するための標準です。各トークンは、他のトークンと区別がつかず、同じ価値を持ちます。例えば、1 ETHは別の1 ETHと完全に交換可能です。ERC-20トークンは、主に以下の特徴を持ちます。
- 可分性: トークンは、小数点以下の桁数まで分割可能です。
- 交換可能性: 各トークンは、他のトークンと区別されません。
- 総供給量: トークンの総供給量は、事前に定義されます。
2.2 ERC-20トークンの主要な関数
ERC-20標準では、以下の主要な関数が定義されています。
- totalSupply(): トークンの総供給量を返します。
- balanceOf(address _owner): 特定のアドレスが保有するトークンの残高を返します。
- transfer(address _to, uint256 _value): トークンを別の住所に転送します。
- approve(address _spender, uint256 _value): 特定のアドレスに、トークンの使用を許可します。
- allowance(address _owner, address _spender): 特定のアドレスが、別の住所に対して許可されているトークンの使用量を返します。
- transferFrom(address _from, address _to, uint256 _value): 特定のアドレスから、別の住所にトークンを転送します(approve関数で許可されている必要があります)。
2.3 ERC-20トークンの用途
ERC-20トークンは、様々な用途に利用されています。
- ユーティリティトークン: 特定のプラットフォームやサービスへのアクセス権を提供するトークン。
- セキュリティトークン: 株式や債券などの金融商品をトークン化したもの。
- ステーブルコイン: 米ドルなどの法定通貨にペッグされたトークン。
- ガバナンストークン: プロジェクトの意思決定に参加するための投票権を提供するトークン。
3. ERC-721トークン
3.1 ERC-721トークンの特徴
ERC-721は、ノンファンジブル(non-fungible)トークン、つまり非交換可能なトークンを定義するための標準です。各トークンは、固有の識別子を持ち、他のトークンとは区別されます。例えば、デジタルアート作品やゲーム内のアイテムなどが該当します。ERC-721トークンは、主に以下の特徴を持ちます。
- 固有性: 各トークンは、固有の識別子を持ちます。
- 非交換可能性: 各トークンは、他のトークンと区別されます。
- 所有権: トークンの所有権は、ブロックチェーン上で明確に記録されます。
3.2 ERC-721トークンの主要な関数
ERC-721標準では、以下の主要な関数が定義されています。
- balanceOf(address _owner): 特定のアドレスが保有するトークンの数を返します。
- ownerOf(uint256 _tokenId): 特定のトークンの所有者アドレスを返します。
- transferFrom(address _from, address _to, uint256 _tokenId): 特定のトークンを別の住所に転送します。
- approve(address _approved, uint256 _tokenId): 特定のアドレスに、トークンの使用を許可します。
- getApproved(uint256 _tokenId): 特定のトークンに対して許可されているアドレスを返します。
- setApprovalForAll(address _operator, bool _approved): 特定のアドレスに、すべてのトークンの使用を許可または禁止します。
- isApprovedForAll(address _owner, address _operator): 特定のアドレスが、別の住所に対してすべてのトークンの使用を許可されているかどうかを返します。
3.3 ERC-721トークンの用途
ERC-721トークンは、様々な用途に利用されています。
- デジタルアート: デジタルアート作品の所有権を証明するために使用されます。
- ゲームアイテム: ゲーム内のアイテムの所有権を証明するために使用されます。
- コレクティブル: トレーディングカードや限定版アイテムなどのコレクティブルの所有権を証明するために使用されます。
- 不動産: 不動産の所有権をトークン化するために使用されます。
- サプライチェーン管理: 製品の追跡とトレーサビリティを向上させるために使用されます。
4. ERC-20とERC-721の比較
以下の表は、ERC-20とERC-721の主な違いをまとめたものです。
| 特徴 | ERC-20 | ERC-721 |
|---|---|---|
| ファンジビリティ | ファンジブル(交換可能) | ノンファンジブル(非交換可能) |
| 固有性 | なし | あり(固有のトークンID) |
| 可分性 | 可能 | 不可能 |
| 用途 | ユーティリティトークン、セキュリティトークン、ステーブルコインなど | デジタルアート、ゲームアイテム、コレクティブルなど |
5. その他のトークン標準
ERC-20とERC-721以外にも、様々なトークン標準が存在します。例えば、ERC-1155は、ファンジブルトークンとノンファンジブルトークンを組み合わせた標準であり、複数の種類のトークンを1つのコントラクトで管理できます。また、ERC-998は、ERC-721の拡張であり、トークンの所有権を複数のアドレスで共有できるようにします。
6. まとめ
ERC-20とERC-721は、イーサリアム上でトークンを作成するための重要な標準です。ERC-20は、交換可能なトークンを定義し、ERC-721は、非交換可能なトークンを定義します。それぞれの標準は、異なる特性と用途を持ち、様々なプロジェクトで利用されています。トークン標準の理解は、イーサリアムエコシステムを理解する上で不可欠です。今後も、新しいトークン標準が登場し、イーサリアムの可能性を広げていくことが期待されます。