本日はERCトークンについて、一緒に深掘りしてみましょう。それぞれの時代とともに変わるその特性と機能について、詳しく解説していきます。
ERC-20: 代替可能トークンの出発点
まず初めに、ERC-20についてです。ERC-20は、2015年に提案された代替可能トークン(fungible tokens)の規格で、クリプト通貨やユーティリティトークンなどに使用されています。どういうことかというと、ERC-20トークンは互換性があり、一つ一つのトークンが全く同じ価値を持つという特性があります。たとえば、我々が知っているビットコインやイーサリウムがまさにこれですね。同じ価値を持つERC-20トークンは交換可能なため、取引所で取引するのに適しています。
主な関数は次の通りです:
-
totalSupply()
: これは発行されたトークンの合計供給量を返す関数です。 -
balanceOf(address _owner)
: これは特定のアドレスが所有するトークンの量を返す関数です。 -
transfer(address _to, uint256 _value)
: これはトークンの送信を行う関数です。 -
approve(address _spender, uint256 _value)
: これは他のアドレスに、自分のトークンを特定の量まで使うことを許可する関数です。 -
allowance(address _owner, address _spender)
: これはあるアドレスが別のアドレスから使うことを許可されているトークンの量を返す関数です。
しかし、このERC-20トークンには一つ欠点があります。それは全てのトークンが同じ価値を持つという特性上、個々のトークンに独自の特性を持たせることができない点です。
Alice :「俺日本円札持ってんだよね〜」
Bob : 「俺もだけど。ちなみにその札にはなんていう数字が書いてある?」
Alice :「1000...」
Bob :「じゃあ俺と一緒だね。俺も1000って書いてあるよ」
Alice : 「俺のはあの有名な俳優からもらったんだ!俺のは唯一無二なんだ!」
Bob : 「そんなの知らんがな(でも、どうにかしてその付加価値を載せれないかな...」
---> NFT誕生
ERC-721: ユニークな存在、NFTの興隆
2017年になると、私たちはERC-721に出会います。ERC-721は非代替可能トークン(NFT)を規定する規格で、個々のトークンがユニークな属性を持つことが特徴です。これにより、デジタルアートやコレクティブアイテムなど、独自性が重視される領域で活用されるようになりました。
CryptoKitties
は、ERC-721の代表的な例です。各キティは一意の属性を持ち、それらはメタデータとして保存されます。これにより、それぞれのキティがユニークな存在となり、値段が異なるのです。ERC-721の主な関数は次の通りです:
-
balanceOf(address _owner)
: これは特定のアドレスが所有するNFTの数を返します。 -
ownerOf(uint256 _tokenId)
: これは特定のトークンIDの所有者を返します。 -
safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data)
: これは特定のトークンIDのNFTを安全に転送します。 -
approve(address _approved, uint256 _tokenId)
: これは他のアドレスに特定のNFTを操作する権限を与えます。 -
getApproved(uint256 _tokenId)
: これは特定のNFTに対する承認済みアドレスを返します。
しかしながら、ERC-721にも問題がありました。それは、複数のNFTを一度に移転したい場合、一つ一つのNFTに対して移転関数を呼び出さなければならないという点です。これは、例えばゲーム内で多くのユニークなアイテムを持っているプレイヤーがこれらのアイテムを一度に売買したいと思った場合、非常に手間がかかるという問題を示しています。
それを解決するために登場したのが、ERC-1155です。ERC-1155は2018年に提案され、代替可能トークン(FTs)と非代替可能トークン(NFTs)の両方を扱えるように設計されています。つまり、ERC-1155は一つの規格でERC-20とERC-721の両方の特性を持つことができるんです!また、ERC-1155は一度のトランザクションで複数のNFTまたはFTを送信することが可能です。これはトランザクションの効率性を大幅に向上させる重要な改良点です。
ERC-1155: 効率性と柔軟性の向上
この問題を解決するために誕生したのが、ERC-1155です。ERC-1155は、一度のトランザクションで複数のトークンを送信できるように設計されました。さらに、この規格は代替可能トークン(FT)と非代替可能トークン(NFT)の両方を扱うことができます。
ERC-1155の主な関数は次の通りです:
-
balanceOf(address _owner, uint256 _id)
: これは特定のアドレスが所有する特定のIDのトークンの数を返します。 -
safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes _data)
: これは一つのトークンを安全に転送する関数です。 -
safeBatchTransferFrom(address _from, address _to, uint256[] _ids, uint256[] _values, bytes _data)
: これは複数のトークンを一度に安全に転送する関数です。
ERCトークンの成長と変遷は、ブロックチェーン技術の進化と、それに対する社会のニーズの変化を反映していて面白いですね。