【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