初心者文系主婦がブロックチェーンを学ぶブログ

IT革命のビッグウェーブに乗り遅れた主婦が、ブロックチェーン革命の波にのるべく、ブロックチェーン技術を学ぶブログです。

【CryptZombies】レッスン5チャプター2:ERC721規格と多重継承

ERC721規格は次のようになっています。実装が必要なメソッドのリストとも言えます。

contract ERC721 {
  event Transfer(address indexed _from, address indexed _to, uint256 _tokenId);
  event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId);

  function balanceOf(address _owner) public view returns (uint256 _balance);
  function ownerOf(uint256 _tokenId) public view returns (address _owner);
  function transfer(address _to, uint256 _tokenId) public;
  function approve(address _to, uint256 _tokenId) public;
  function takeOwnership(uint256 _tokenId) public;
}

注: ERC721規格は現在 ドラフト であり、まだ正式に合意された実装ではありません。ここではOpenZeppelinのライブラリの現バージョンを使用していますが、将来正式な規格リリース前に変更される可能性があります。この実装については可能なものの ひとつ であり、ERC721規格の正式なものとは考えないでください。

トークン・コントラクトの実装

トークン・コントラクト実装の際、初めにすべきはインターフェースをSolidityファイルにコピー/インポートすることです( import "./erc721.sol";)。
するとコントラクトはそれを継承し、関数定義で各メソッドをオーバーライドします。
Solidityでは、コントラクトは次のように複数コントラクトを継承可能です:

contract SatoshiNakamoto is NickSzabo, HalFinney {
  }

複数の継承をするときは、継承している複数のコントラクトをコンマ( ,)で区切るだけです。
この場合、SatoshiNakamotoはNickSzaboとHalFinneyを継承しています。

テストの実行

①erc721.sol を zombieownership.solにインポートせよ。

import "./erc721.sol";

②ZombieOwnershipがZombieAttackとERC721を継承することを宣言せよ。

contract ZombieOwnership is ZombieAttack, ERC721 {
}


お疲れさまでした!


<参考>
CryptoZombies - イーサリアム上でゲームを開発する方法を学習。Powered by Loom Network