ブロックチェーン入門 chapter 07

web3ビジネスに関連したERC規格

web3 ビジネスを語る上で欠かせないのは、さまざまなトークンの規格たちです。 ERC-20 Fungible Token や ERC-721 Non-Fungible Tokenが有名ですが、 その他でもよく使われる規格がありますので、代表的な例を取り上げてみたいと思います。

【目次】






ERC-1155 Multi Token Standard

https://eips.ethereum.org/EIPS/eip-1155
1つのコントラクトで複数のトークンを取り扱うための規格です。 データ構造としては、トークン1つに対して id と value を持ちます。 id があるという点ではNFT (ERC-721) に近いですが、一方でERC-20 (FT) のように残高を持つため、 FTとNFTの両方の特徴を持つタイプのトークンであるといえるでしょう。 同一タイプ (id) であれば兌換性 (だかんせい) があるため、特定のidをあるERC-20のトークンとして見なせば、 複数のERC-20のトークンを1つのコントラクトとして取り扱うことが可能になります。 複数の種類のトークンを1コントラクトで取り扱えることにより、コントラクトのデプロイにかかる トランザクション手数料を減らすことが可能です。

ERC-1155 Multi Token Standard
図1 ERC-1155 Multi Token Standard

関数としては複数のトークンを一度に転送するための関数が定義されているため、ある送信元 (_from) から ある送信先 (_to) にトークンを送る際、複数のIDと残高を指定してまとめて転送することが可能です。 承認は金額を指定して許可するERC20やトークンIDを指定して許可するERC721とは異なり、 操作するオペレーターを指定して許可を出す方式となっています。

function safeBatchTransferFrom(address _from, address _to, uint256[] calldata _ids, uint256[] calldata _values, bytes calldata _data) external;
function balanceOfBatch(address[] calldata _owners, uint256[] calldata _ids) external view returns (uint256[] memory);
function setApprovalForAll(address _operator, bool _approved) external;
上記のような関数を使ってコントラクト内の複数の種類のトークンをまとめて送れることにより、 操作にかかるトランザクション手数料を減らすことが可能です。 これらの特徴から、多種のトークンを扱うシステムやマーケットプレイスなどで、ERC1155やERC1155を ベースにしたコントラクトが利用されているケースがあります。






ERC-3525 Semvi-Fungible Token

https://eips.ethereum.org/EIPS/eip-3525
こちらも1つのコントラクトで複数のトークンを取り扱うための規格です。 データ構造としては、トークン1つに対してidとvalueとslotを持ちます。 同一のslotを持つトークンは結合が可能であり、逆に残高の範囲内であれば新しいidを持った トークンに対してvalueの分割を行うことも可能です。

ERC3525 Semi-Fungible Token
図2 ERC3525 Semi-Fungible Token

ERC1155では同一タイプのトークンであれば必ず1つにまとまってしまうという性質があり、 それぞれに個別の付加情報を付けるのが難しかったのですが、こちらの規格であれば同一タイプの トークンに対し、個別の付加情報を付けることも可能です。 「共通する価値を持ちながら」「それぞれ個別に付加情報を持つ」という点で、 株式や手形などの金融商品に似た性質があり、この規格自体もこれらの資産の取り扱いを意識したものとなります。






ERC-2981 NFT Royalty Standard

https://eips.ethereum.org/EIPS/eip-2981

2次流通からの収益
図3 2次流通からの収益
あるトークンを取引した際にどのくらいのロイヤリティを誰に支払えば良いかを教えてくれる規格です。 規格として定義されている以下のインターフェースで分かるように、ロイヤリティの支払先と額を教えてくれるのみで、 実際にロイヤリティを送付してくれるかは上位層の実装によります。
function royaltyInfo( uint256 tokenId, uint256 salePrice ) external view returns (address receiver, uint256 royaltyAmount);
OpenZeppelinによる実装 (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/common/ERC2981.sol) では、追加機能としてトークン個別にロイヤリティ送付先を設定しなくても、デフォルトの送付先を設定できるようになっています。
function _setTokenRoyalty(uint256 tokenId, address receiver, uint96 feeNumerator) internal virtual
function _resetTokenRoyalty(uint256 tokenId) internal virtual
function _setDefaultRoyalty(address receiver, uint96 feeNumerator) internal virtual
function _deleteDefaultRoyalty() internal virtual
このあたりのNFTロイヤリティの支払については紆余曲折があり、 ロイヤリティの支払を行わないマーケットプレイスの登場や、 ロイヤリティの支払を行わないマーケットプレイスからの取引を無視するためのコントラクト (https://github.com/ProjectOpenSea/operator-filter-registry) の提供、 またそのコントラクトの機能の選択化など、2021年から2023年にかけてNFTマーケット界隈では二転三転している状況でした。 現在は、クリエイター側で機能選択、販売時にはクリエイターへの支払を明確にするUIとするなどの 対応が行われ、ERC-2981の情報をベースにロイヤリティを支払うサイトも増え始めています。






ERC-6551 Non-fungible Token Bound Accounts

https://eips.ethereum.org/EIPS/eip-6551

NFTの所有権をあるNFTの所有者に紐づけて管理できるようにする規格です。 所有権を紐づけるNFTを、他のアカウントに送付した場合、紐づいているNFTも 同時に所有権が転移するようになっています。 トークンをまとめる、セットにするという概念では、ERC-998 Composable Non Funible Tokenや ERC-1155 Multi Token Standardも近しい概念ではありますが、ERC-6551では所有権の紐づけ先となるトークン自体は、 過去にデプロイされたERC-721などのトークンでも利用可能であることや、 トークン間の関連づけの柔軟性が高いことが特徴となります。

ERC6551 トークンによるトークンの所有
図4 ERC6551 トークンによるトークンの所有

内部的にはコントラクトの処理実体を別のコントラクトへの参照とすることにより、ロジックの入れ替えを可能とするProxy Contractの概念や、 ERC-4337 Account Abstractionのように署名検証処理をコントラクトで実施するなど、やや複雑な作りになっています。 詳細についてはまた別の機会に解説できればと思います。

ERC6551 Non-fungible Token Bound Accounts
図5 ERC6551 Non-fungible Token Bound Accounts






まとめ

web3ビジネスを語る上で欠かせないトークンの標準規格。代表的な規格を取り上げさせていただきました。

  • ERC-1155 Multi Token Standard
    1つのコントラクトで複数のトークンを取り扱うための規格です。データ構造としては、トークン1つに対して id と value を持ちます。
  • ERC-3525 Semi-Fungible Token
    1つのコントラクトで複数のトークンを取り扱うための規格です。データ構造としては、トークン1つに対して id と value と slot を持ちます。
  • ERC-2981 NFT Royalty Standard
    NFTマーケットにおける、取引時のロイヤリティに関する標準規格です。
  • ERC-6551 Non-fungible Token Bound Accounts
    NFTの所有権をあるNFTの所有者に紐づけて管理できるようにする規格です。
ビジネスを考えられる方々にとっては、ブロックチェーンはブラックボックスとして、 その特徴やメリット、デメリットを踏まえた上でうまく活用することに注力されるとよいかと存じます。
NTTテクノクロスでは、このようなブロックチェーンを活用したビジネスの検証サービスとして ContractGate PoC Service PUSH! をご提供しております。

ブロックチェーンを身近なものに

執筆者紹介

執筆者 兼松 和広 写真

兼松 和広(かねまつ かずひろ)

高度専門人材 / テックリード
2002年NTTテクノクロス(旧NTTソフトウェア)に入社。
さまざまなシステム開発や保守運用を担当しながら、データベースの専門家として 技術支援や研修講師を担い、数々の表彰を受賞。
2015年からブロックチェーンやweb3についての自らの知見や技術力を活用し、 多くのプロジェクトに参画。
2023年に高度専門人材として社内で任命される。
ブロックチェーンの団体であるEthereum Enterprise Alliance Japanのイーサリアム性能評価ワークショップに参加し、 ブロックチェーンのビジネス利用に必要な性能評価観点【ETHTerakoya × Blockchain EXE 】の発表等も実施。
日々、専門性を高めるべく自身を磨き続けている。

ContractGate製品についてのお問い合わせ、ブロックチェーン導入にあたってのご相談など
お気軽にお問い合わせください。

お問い合わせはこちらから

「5分でわかるシリーズ」
ホワイトペーパーのお申し込みはこちらです。

ホワイトペーパーはこちらから

トップへ