非中央集権アプリ ~ ERC-20, ERC-721

非中央集権アプリ ~ ERC-20, ERC-721

非中央集権トークン

トークンという言葉は所有権全体を表す抽象概念であり、特定の資産を売買できる権利というニュアンスです。

これは資産だけではなく、ソフトウェアや映画、音楽などのデジタルコンテンツにアクセスできる権利も含まれています。

イーサリアムコミュニティーはトークンの作成を支援するため EIP (Ethereum Improvement Proposal)というプロセスを通じてトークンの規格を策定しています。

ERC-20

ERC-20は、ファンジブル作成の際の規格です。

ファンジブルトークンはお店のポイントや、飛行機会社のマイル等、通貨の代わりとして機能するトークンのことを指します。

ERC-20でのコントラクトトークンは同一の価値であると識別されるため区別することはできません。

ERC-20トークン作成の際は特定の関数を実装することが義務付けられています。

ERC-20の義務関数

# トークンの流通数
totalSupply()
# 指定したアドレスの残高
balanceOf(address _owner)
# 送金の失敗や成功をfalseとtrueで返す
transfer(address _to, uint256 _value)
# 所有者の代理として送金された失敗と成功をfalseとtrueで返す
transferFrom(address _from, addres _to, uint256 _value)
# 承認の失敗や成功をfalseとtrueで返す。
approve(address _spender, uint256 _value)
# 承認されたアドレスが引き出せる金額を返す
allowance(address _owner, address _spender)

これらの関数を組み込むことによってERC-20トークンを作成することができます。

スマートコントラクトトークンの法律的な位置付けはまだ議論が始まったばかりであり将来トークンが有価証券となる可能性も残されているため、今後も注意深く動向を追っていく必要があります。

イーサリアムで作成されたTokens一覧はこちらのページで閲覧することができます。

Tokesn一覧

ERC-721

ERC-721はノンファンジブルトークン、通称NFT規格です。

ノンファンジブルトークンは互いに異なっている規格であり、コントラクトがトークンの残高を追跡することは不可能で、発行するトークンをそれぞれ個別に追跡する必要があります。

ERC-20同様ERC-721もオプションフィールドを追加実装可能であり、必要であればトークンのURI(Uniform Resource Identifier)を追加することも可能です。

ただし、実装には特定の関数が義務付けられています。

ERC-721の義務関数

# 指定所有者のNFTの数を返す
balanceOf(address _owner)
# 特定のトークンIDの所有者アドレスを返す
ownerOf(uint256 _tokenId)
# トークンの所有権を譲渡する
# _to譲渡先がコントラクトであるケースではonERC721Received関数で受信可能か検証する
safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data)
# トークンの所有権を譲渡する〜空の文字列を設定
safeTransferFrom(address _from, address _to, uint256 _tokenId)
# トークンの所有権を譲渡する
transferFrom(address _from, address _to, uint256 _tokenId)
ただしこれは譲渡前にERC-721かどうかの確認は行われません。
このため、万が一ERC-721ではなかった場合は永遠に権利を失うことになります。
ERC-20かERC-721か曖昧な場合はsafeTransferを使用するようにしましょう。
# 別のアドレスが所有者の代理としてトークンを送金可能にする
approve(address _approved, uint256 _tokenId)
# _approvedがtrueの場合はoperatorに対して現在の所有者が所有するトークンの管理を承認
setApprovalForAll(address _operator, bool _approved)
# 指定されたトークンIDに対し承認されたアドレスを返す
getApprovedForAll(address _owner, address _operator)
# _operatorがオペレーターとして承認されているかどうかのチェック
isApprovedForAll(address _owner, address _operator)

まとめ〜NFT実用例

ERC-20同様ERC-721コントラクトはOpenZeppelinで作成されています。

Github OpenZeppelinはこちら

CryptoKitties

ERC-721の利用例としてはCryptoKittiesが有名です。

CryptoKitties(クリプトキィティーズ)は仮想の猫を集めるゲームであり、猫(cattributesを備えている)は256ビットのゲノムで表されています。

ユーザーが飼っている猫を荒廃させると、生まれた子猫のcattributesは親猫のゲノムを組み合わせたものになります。

珍しい猫を育てたり販売することでユーザー間で高値で取引されています。

この猫は一匹一匹が替えの効かない唯一無二のNFTとなっており、それは例えゲーム会社の開発元であっても例外ではありません。

カナダの会社Axiom ZenまたはAnimoca Brandsから提供され、2017年11月28日からプレイ可能となっており、2020年時点でユーザー数は10万人を突破。

DApps、NFTゲームの先進的存在として現在もユーザー数を伸ばして行っています。

過去最高値としては600ETH(当時の価格で約1900万円で落札された猫もいます。

プロフィール

こうたろう
こうたろう
音大を卒業後ピアニストとして活動。
日本で活動後北欧スウェーデンへ。
アーティストLindha Kallerdahlと声帯とピアノによる即興哲学を研究。
その後ドイツ・ケルンに渡りAchim Tangと共にアルバム作品制作。
帰国後、金田式DC録音の第一人者:五島昭彦氏のスタジオ「タイムマシンレコード」にアシスタントとして弟子入り。
独立後音楽レーベル「芸術工房Pinocoa(現:Kotaro Studio)」を結成。
タンゴやクラシックなどアコースティック音楽作品を多数プロデュース。
大阪ベンチャー研究会にて『芸術家皆起業論~変化する社会の中、芸術家で在り続けるために』を講演。
その後、秋山庄太郎氏後継の写真スタジオ「村上アーカイブス」でサウンドデザイナー兼音響担当として映像制作チームに参加。
村上宏治氏の元で本格的に写真、映像技術を学ぶ。
祖父母の在宅介護をきっかけにプログラムの世界に興味を持ち、株式会社 ジオセンスの代表取締役社長:小林一英氏よりプログラムを学ぶ。
現在はKotaro Studioにて『あなたのためのアートスタジオ』音と絵をテーマに芸術家として活動中。
2023年より誰かのための癒しの場所『Curanz Sounds』をプロデュース。

Share this post