2019の23日目の記事です。VALU社で色々やっている菊池です。今日はブロックチェーン人材です。ERC1155の話をします。StandardEthereum上でトークンを表現するための規格としては、ERC20やERC223、ERC721が有名ではありますが、近頃ERC1155という規格がFinalizeされました。Tokenをどっちも扱えるよ、といった感じでしょうか。それだけだとナンノコッチャ、という感じですね。ブロックチェーン難しい。ソースコードを読むそこで我々プログラマーとしては、とりあえずソースコードがあれば読んでみるのが早いですよね。トークンの規格って何よってのは、つまるところインタフェースの定義なので、そちらを見てみましょう。このファイルには、全部で5つのインタフェースメソッドが定義されています。送信数量に加えて、トークンIDや任意の追加情報を指定して送る機能ですね。ERC1155では、このトークンIDが大事そうです。違いといえば、渡せるトークンIDが複数になっていること、そして同じくvalueも複数指定可能になっているくらいですね。BatchTransferという名前の通り、複数種類のトークンを同時に送信できるメソッドのようです。(uint256);残高取得です。任意のaddressの、任意のIDに対応するトークンの残高を取得します。memory);前述のbalanceOfの複数トークンID指定版。external;特定のアドレスに対して、自分のトークンの変更を許可するためのメソッドですね。OAuthみたいな感じで、3rd-partyアプリケーションに自分のトークンのTransferを許可するみたいなやつですね。操作を許可しているかどうかがわかります。memory);トークンのメタデータを取得するためのURIを返却するメソッドです。準拠したJSONだそうです。追加情報(好きに使えそう)上記5つのプロパティが利用可能です。ERC20やERC721ではコントラクトごとに持たせていたプロパティが、ERC1155ではコントラクト内のトークンIDごとに定義できるようです。ERC1155大体わかったなるほど、ここまでで、大体ERC1155の大枠はわかってきました。ERC20で表現できるのは、1コントラクトにつき1トークンでしたし、ERC721でも、1コントラクトにつき(表現が難しいけれど)1セットのNFTの集合を表現してきました。各コントラクトに各トークンやアセットの集合が定義されているイメージ(伝われ)一方でERC1155では、1つのコントラクトに、複数種類のトークンを定義できるようです。それは、fungible-tokenとnon-fungible-tokenといった異なる特性のトークンであっても同居可能です。1つのコントラクトに複数の種別のトークンが同居できるイメージ(伝われ)IERC1155TokenReceiverさてもう大体わかったのでそろそろオシマイにしたいのですが、実はもう1個インターフェースが記述されているファイルが残っていました。解説できればと思ったのですが、意外と分量が多そうなので、またの機会に勉強して解説できればと思っています。まとめERC1155規格について、solidityコードで記述されたinterfaceを読み取ることで、ざっくりどんな規格なのかを学びました。複数のトークンを扱うようなサービスを考えるにあたっては、ERC1155で提案されているような、1コントラクトに複数トークンが同居できるような仕組みはとても有用そうだなーと思いました。一方で、ERC1155は2019/12/23現在はまだMetaMaskも未対応ですし、その他のウォレットアプリでも対応状況は芳しくないです。これからERC1155がどんどん使われていって、多くのアプリケーションが対応していって、名実ともにトークン規格のデファクトになると嬉しいな、ワクワクしますね。ダウンロード#ブロックチェーン#Ethereum#Solidity#ERC1155この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。kikuchi埼玉県狭山市を代表するソフトウェアエンジニアです。「評価の基準を変え、お金の流れを変え、フェアな世界をつくる。クリエイターへのお問合せnoteカイゼン目安箱クリエイターの。