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

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

【CryptZombies】レッスン2チャプター11:Interfaceを使用する

Interfaceの使用

チャプター10の例をNumberInterfaceを使って、interfaceを次のように定義します。

contract NumberInterface { function getNum(address _myAddress) public view returns (uint); }

これをコントラクト内で使用します。

contract MyContract {
  address NumberInterfaceAddress = 0xab38...; 
  // ここは、イーサリアム上のFavoriteNumberコントラクトのアドレスが入る。
  NumberInterface numberContract = NumberInterface(NumberInterfaceAddress);
  // `numberContract`という名前のNumberInterfaceは他のコントラクトを指し示すものになっているぞ 。(NumberInterfaceAddressを使って初期化)

  function someFunction() public {
    // コントラクトから`getNum`を呼び出せるぞ:
    uint num = numberContract.getNum(msg.sender);
    // ...よし、`num`を操作するぞ。
  }
}

こうすれば、イーサリアムブロックチェーン上でほかのコントラクトとやりとりできます。(ただし、関数がpublicやexternalである場合に限る。)

 

テストの実行

君のコード中にクリプトキティーズのコントラクトのアドレスを保存しておいた。ckAddressという名前の変数に格納されている次の行では、kittyContractという名前のKittyInterfaceを作成し、ckAddressを使用して初期化せよやり方はnumberContractで実施したのと同じ方法をとればよい。

赤線のとおり、クリプトキティーズのコントラクトアドレスが、ckAddressという名前ですでに格納されています。

f:id:nomadomama:20181202235456p:plain

 

次に、青線を見ていきます。

Interfaceの初期化については、オレンジ線のとおり、例題のnumberContractを参考にしてみます。

  NumberInterface numberContract = NumberInterface(NumberInterfaceAddress);
  // `numberContract`は他のコントラクトを指し示すものになっているぞ 

上の例を参考に、kittyContractという名前のKittyInterfaceを作成し、初期化します。

f:id:nomadomama:20181203000013p:plain

 

お疲れさまでした!

 

 

<参考>

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