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

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

【CryptZombies】レッスン2チャプター4:Require

Require

requireはある条件を満たさない場合はエラーを投げて実行を止めることができるものです。

条件次第で関数を実行したいときにかなり使えます。

エクセルでいうところのif関数みたいなもの?

function sayHiToVitalik(string _name) public returns (string) {
  // まず_nameが"Vitalik"と同じかどうか比較する。真でなければエラーを吐いて終了させる。
  // (注:Solidityはネイティブで文字列比較ができない。そこで文字列の比較を
  // するためにkeccak256 を使ってハッシュ同士を比較する方法を使うのだ。
  require(keccak256(_name) == keccak256("Vitalik"));
  // もし真ならば、関数を処理する:
  return "Hi!";
}

sayHiToVitalik("Vitalik")でこの関数を呼び出せば、”Hi!"と帰ってきます。

それ以外で呼び出せばエラーを吐いて終了します。

 

テストの実行

①createRandomZombieの最初にrequireステートメントを記述せよ。この関数でownerZombieCount[msg.sender]が0であるかを確認し、そうでなければエラーを投げるように設定せよ。

上の例では文字列の比較をするためにkeccak256を使っていましたが、今回は数字の比較なので、keccak256を使用せず、単純にrequireを使用します。

f:id:nomadomama:20181125162916p:plain

 

※Solidityでは、どの用語を最初に書いても問題はありません。

しかしながら、システムのチェッカーがベーシックなものなので、1種類しか答えを判定することができません。

そこで、ownerZombieCount[msg.sender]を先に書くようにします。

 

お疲れさまでした!

 

 

<参考>

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