非中央集権アプリ ~ 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一覧はこちらのページで閲覧することができます。
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-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で作成されています。
CryptoKitties
ERC-721の利用例としてはCryptoKittiesが有名です。
CryptoKitties(クリプトキィティーズ)は仮想の猫を集めるゲームであり、猫(cattributesを備えている)は256ビットのゲノムで表されています。
ユーザーが飼っている猫を荒廃させると、生まれた子猫のcattributesは親猫のゲノムを組み合わせたものになります。
珍しい猫を育てたり販売することでユーザー間で高値で取引されています。
この猫は一匹一匹が替えの効かない唯一無二のNFTとなっており、それは例えゲーム会社の開発元であっても例外ではありません。
DApps、NFTゲームの先進的存在として現在もユーザー数を伸ばして行っています。
こちらの記事もいかがですか?!
ざっくり歴史把握シリーズは今さら聞けない情報もたくさんありおすすめです!
自分じゃなくてよかった・・・ 株式市場の歴史、実は結構古いんです。
株式市場の歴史をざっくり把握する / Stock market
今さら聞けない・・・ビットコインやイーサリアムの歴史をざっくり把握しておきましょう! 現代でも裁量トレードはまだ残っていますが、この先の未来では裁量トレードを行う人はほとんどいなくなるかと思います。アルゴリズム取引の歴史をざっくり把握する / Algorithmic trading
ナイチンゲールは実はデータサイエンティストだった!? 裁量トレードだって、botトレードだってテクニカル分析の基本を知らなければいけません。こちらもなかなか今さら聞けない分野ですので、歴史についてまずはざっくり勉強していきましょう。
テクニカル分析の歴史をざっくり把握 / Technical analysis
なんとなく頼りないイメージのある経済学者ですが、もちろん凄い人は凄いんです。 FXは慎重に!