【EIP/ERC Vol.2】〜EthereumにおけるToken design規格について〜
前回は、EIP/ERCの全体像と各カテゴリの概要について触れてきました。今回から各カテゴリの主要規格の詳細と関連プロジェクトについて触れていきたいと思います。まずはEthereum上で最も活用されているカテゴリと言えるToken designについて見ていきます。※下記、おさらいになりますが前回提示したEIP/ERCのカテゴリ分類です。
目次
- Token design
1. FT(Fungible Token)-ERC20、ERC223、ERC621
2. NFT(Non-Fungible Token)-ERC721、ERC998、ERC1155、ERC721x
Token design
前回の記事では、Token分類をFungibility(Tokenの代替性)を用いてFT(Fungible Token)/NFT(Non-Fungible Token)に分けて解説していきました。今回は、このFT/NFTにおける主要なERC規格とその関連プロジェクトをあげて更に理解を深めていきたいと思います。
- FT(Fungible Token)
ERC20
ERC規格の中で最も使用されている規格と言えるのがこのERC20です。遡ること2015年11月19日、Ethereum創設者のVitalik Buterin氏と、後に様々なToken規格に関わることとなるFabian Vogelsteller氏ら2名によって提出され、2017年9月11日に採択されました。数あるERC規格の中で、このERC20が広く知られるようになったのは、2017年のICOブームがきっかけと言えます。当時ICOプロジェクトの多くが、参加ユーザーが1つのウォレットでTokenが受け取れるようにとERC20規格を採用したことが背景にあります。このように、どのTokenもERC20規格に則って発行されたことで、ICO後のToken受け取りだけでなく、取引所へのListingもスムーズとなりToken designのstandardとなりました。もちろんICOに限らずゲームやシェアリングサービスなど、アプリケーション毎に異なるTokenが存在する場合であっても、ユーザーは1つのウォレットで完結するため、ユーザー体験を大きく改善させるきっかけとなった規格と言えます。
※EIP20:https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md
ERC20の時価総額(2018年10月時点)
現在、ERC20の時価総額はEtheruemネットワーク全体の約60%を占め、巨大な市場が確立されています。
Token数
Ethereum上で発行されているTokenの数は13,9983に及びます。
【ERC20対応ウォレット】
- MyEtherWallet:https://www.myetherwallet.com/
- MetaMask:https://metamask.io/
- Ginco:https://ginco.io/
- TokenPocket:https://Tokenpocket.jp/
【主要プロジェクト】
- OmiseGo (OMG):https://omisego.network/
- Kyber Network (KNC):https://kyber.network/
- IDEX (Aurora):https://idex.market/
- 0x (ZRX):https://0xproject.com/
ERC223
ERC20で問題視されていた誤送信時のToken凍結について、ERC223でToken Fallbackという関数を追加し、仮に誤送信された場合はTokenが返信されるよう定義しました。このように、ERCでは全く新しい改善提案から、これまで提案されて来たERC規格の上位互換として提案される規格が多くあります。
※ERC223:https://github.com/ethereum/EIPs/issues/223
ERC621
ERC20の上位互換の規格とされ、2つの追加関数(increaseSupply、DecreaseSupply)によりTokenの供給を増減することができるよう定義しました。これは主に、NFTの権利をToken化するRFT(Re-Fungible Token)の文脈で活用検討がなされています。具体的な例としては、アートや音楽といったNFTに紐づくFTを発行し、所有や閲覧に関する権利をToken化することができるという仕組みです。これにより下記のような設計が可能となります。
- 唯一無二の性質を持つNFTの所有・閲覧に関する権利を分割し複数人で保有
- NFTオーナーはNFTに紐づくFTが取引される毎に手数料収入を取得
- NFTに紐づくFTの発行量に応じて価格を形成
このように、Tokenを用いることで著者と閲覧者の間で異なる権利をTokenとして存在させ、それぞれに固有の価値を見いだすことができます。
※ERC621:https://github.com/ethereum/EIPs/pull/621
※こちらのRe-Fungible Tokenについて書かれた記事では、このNFTに紐づくFTをBondedCurveTokenと表現し、権利Tokenの供給量によて価格変動するToken設計が提案されています。
2. NFT(Non-Fungible Token)
ERC721
Non-Fungible Tokenを設計する上で最も広く知られているのがこのERC721です。ERC721はCryptokittiesのCo-founderでもあるDieter Shirley氏によって提案されました。CryptoKittiesは、2017年11月28日のリリース直後、Ethereumネットワーク上のトランザクションの13%を逼迫するほどの人気となり、同時にその規格となるERC721も広く知られるようになりました。これはERC721はEthereum上のゲームを活発にさせたきっかけとも言えます。ERC721の適用範囲はキャラクターに固有のIDを割振るだけでなく、キャラクター毎にオリジナルのパラメーターを設計することもでき、育成や配合といったイベントを通じて様々なキャラクター生成を可能としました。そして現在、NFTを取り扱ったマーケットプレイスもリリースされはじめ、NFTの大きな市場が確立しつつあります。
※EIP721:https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
CryptoKitties(https://www.cryptokitties.co/)
【主要プロジェクト】
- CryptoKitties:https://www.cryptokitties.co/
- Decentraland:https://decentraland.org/
- Ethermon:http://ethermon.net/
- Etherbots:https://etherbots.io/
- Crypko:https://crypko.ai/
【関連プロジェクト】
- IPFS:https://ipfs.io/
【NFTマーケットプレイス】
- Opensea:https://opensea.io/
- RareBits:https://rarebits.io/
- emoon:https://www.emoon.io/
- memefactory:https://memefactory.io/
現在、ERC721に準拠するアプリケーションはゲームが中心となっていますが、その他にも様々なジャンルのユースケースが存在しています。その中でもいくつかユニークなユースケースをあげてみたいと思います。
Superrare(https://superrare.co/)
アートをNon-Fungible Tokenとして売買できるプラットフォームです。デジタルアートのような固有資産にERC721を用いてCtoCの取引を実現させたプラットフォームです。
cryptocup(https://www.cryptocup.io/)
2018年のサッカーワールドカップロシア大会の試合結果を予想するアプリケーションです。どこでERC721が使われているかというと、自分が予測した内容をToken化し、さらに大会開催中に予想したTokenが二次流通できるという設計となっています。
このように、ゲームに限らず様々な用途のNFTが存在しています。現状はまだデジタル資産のToken化が中心となっておりますが、不動産や絵画といったリアルワールドアセットをToken化するプロジェクトもいくつか出てきており、今後ますます多くの固有資産がToken化していくことが想定されます。
なお、現在NFTに関わるプロジェクトによるAllianceもできていてゲームの枠を超えて様々な用途での活用に関する議論がされ始めています。
The Non-fungible Alliance
ERC864
本来分割が不可能な唯一無二の固有財産として存在するNFT(Non-Fungible Token)を、分割するという規格です。先ほどご紹介したERC621と類似した考え方になりますが、あくまでこちらはNFT単体を分割してその所有権をシェアしようという規格になります。
※ERC864:https://github.com/ethereum/EIPs/issues/864
ERC998
Tokenをパッケージ化する規格になります。これはゲーム内のアバターを想像していただくと理解しやすいかと思います。例えば、自分が保有するERC721のキャラクターにERC721の洋服・アクセサリー・コイン(ERC20性のToken)を備えさせた場合を想像してみてください。これまでの規格であればキャラクターと洋服・アクセサリー・コインはそれぞれ別々に存在している扱いとなるため、個人またはマーケットプレイスなどに送信する際、それぞれ別々に送信する必要がありました。つまりキャラクターが着ている洋服・アクセサリーを一度脱がせるて裸にさせるイメージです。これでは受け取り側は少し戸惑いますよね。そこでこのERC998を用いることで、キャラクターが洋服やアクセサリーを脱がずに(コインも握りしめたまま)、1体のアバターとして送信することが可能となりました。
※EIP998:https://github.com/ethereum/EIPs/blob/master/EIPS/eip-998.md
ERC1155
1つのコントラクトでゲーム内のアイテムTokenをまとめて一括送信できる規格です。これは送信時にAtomic Swapsの技術を用いて取引所(ゲーム運営側など)を介さずに最小限の承認プロセスで「多対多」のアイテムTokenの交換を実現させます。(Atomic Swapsとは第三者を仲介さずにユーザー同士で異なる種類の通貨を交換可能にする仕組み)この規格は2018年6月にDApps開発プラットフォームのENJINのCo-Founder & CTO であるWitek Radomski氏により提案されました。主に、ゲームに参加中の複数のプレーヤー同士でアイテム交換が必要となるソーシャルゲームでの使用に適した規格と言えます。これまでのERC規格でゲーム展開する場合、1アイテムを交換する度にコントラクトが発生し、送信アイテム数と送信先プレーヤーの数だけコントラクトが発生する設計となってしまいました。これでは、gasコストがかさむ上に、スピード感も期待できないゲームとなってしまいます。これをERC1155の規格を用いることで、ゲーム内で瞬時に「多対多」のアイテムTokenの交換が可能となり、ゲーム性損なわずに展開が可能となりました。
※ERC1155:https://github.com/ethereum/EIPs/issues/1155
下記がENJINのMedium上で解説されたこれまでのAtomic Swapsの承認プロセスと、ERC1155を用いた際に実現できるAtomic Swapsの承認プロセスになります。
Atomic Swaps — Trading Multiple Items
- これまでの規格でAtomic Swapsを導入した場合の承認プロセス
- ERC1155を用いた際のAtomic Swapsの承認プロセス
Multi-Transfers
- ERC1155を用いた際、1コントラクトで複数プレーヤーへ複数アイテムの送信が可能
ERC721x
ERC721xはサイドチェーンのプロジェクトととして知られるLoomNetworkが提案した規格であり、ERC721の上位互換として、下記を可能にした規格です。
- 3種類のTokenを生成・管理
- 複数のTokenをまとめて送信(例:キャラクターを複数体まとめて送信)
- 複数のTokenをまとめて生成(例:同種のカードを100枚生成)
Tokenの生成・送信時のgas代の削減や様々なタイプのゲームキャラクター・アイテムに対応可能にすることを目的として作られました。ERC721と互換性があるため、ERC721に対応したマーケットプレイスやWalletなどでも取り扱いが可能です。
なお、ERC721xで生成・管理が可能なTokenは下記3種類になります。
- NFT
- FT(数量制限あり)
- FT(数量制限なし)
※ここであげるFTとは、ERC20とは異なりERC721x上で発行・管理する独自のFTと定義されます。そのため、マーケットプレイスではERC721として取り扱われます。
この規格により、一つのゲーム中で上記3種類のTokenを混在させる場合にも、一つのコントラクトで全て発行させることが可能となります。NFTのToken規格であるERC721の場合、代替性のないものをToken化することを前提としているため、1つのToken ID毎に存在するTokenの数量は必ず1つとなりました。例えば、CryptoKittiesのようなモデルでは、それぞれの猫に異なるToken IDが付与されているため、猫同士の代替性はありません。また、同種のキャラクターが存在するようなモデルのMyCryptoHeroesの場合にも、キャラクター1体毎に異なるToken IDが付与され、同種のキャラクターであってもそれぞれが代替性のないToken となります(織田信長は、10体存在するが、同じ織田信長であってもそれぞれ異なるToken IDが付与されている)。一方で、Gods Unchained(トレーディングカードゲーム)のようなモデルでは、同種のカードに対しては同じToken IDを付与するため、同種のカード間での代替性が生じます(発行枚数によってカードのレア度を表現)。ERC721xでは、こうしたCryptoKitties・MyCryptoHeroesのようなNFT要素に加え、Gods UnchainedのようなFT要素のどちらも設計可能なToken規格となっています。
※ERC721x:https://github.com/loomnetwork/erc721x
ERC721xの専用サイトやBlockchain学習サービス「CryptoZombies」で規格に関する解説やレッスンが公開されています。
the official ERC721x.org
CryptoZombies「RC721x: Multi Fungible Tokens」
ERC721/ERC20/WEC1155/ERC1178の各対応範囲
【その他、関連規格】
- ERC874:https://github.com/ethereum/EIPs/pull/874
- ERC888:https://github.com/ethereum/EIPs/issues/888
- ERC994:https://github.com/ethereum/EIPs/issues/994
- ERC981:https://github.com/ethereum/EIPs/issues/981
- ERC1178:https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1178.md
ここまでがToken designに関する主要規格と代表的なプロジェクトの概要でした。次回は、その他のカテゴリ(Identity・Subscription・Compliance・・)について順に見ていきたいと思います。
Reference
- https://etherscan.io/Tokens
- https://medium.com/@billyrennekamp/re-fungible-Tokenrft-297003592769?fbclid=IwAR0C4ioIoQjVimY650nd74Auhb_Fuf8R1tfNDTB7PrRgxjutrOop_-zUmcU
- https://www.cryptokitties.co/catalogue/new-arrivals
- https://nonfungiblealliance.org/
- https://blog.enjincoin.io/erc-1155-the-crypto-item-standard-ac9cf1c5a226
- https://github.com/loomnetwork/erc721x
- https://erc721x.org/
- https://cryptozombies.io/jp/lesson/9