Solidity ゲームで学ぶ CryptoZombies レッスン2その2

les3

CryptoZombiesで学ぶSolidity。Lesson2の第2回になります。
こんにちは、ノリヒロです。最近ですがLesson6:App Front-ends & Web3.js が追加となりました!このCryptoZombiesは、全世界(199カ国以上)で約15万人以上に学ばれているそうです。レッスン6をこなすと…メタマスクを被ったゾンビを作成できるようになるみたいです。これはがんばってこなさねば!
前回レッスン2 第1回はこちらからどうぞ。
Solidity ゲームで学ぶ CryptoZombies レッスン2その1

Solidity レッスン2 第2回

目次
①チャプター4:Require

②チャプター5:継承

③チャプター6:インポート

 

①チャプター4:Require

les4
“Require”という関数があるんですね。ある条件を満たさない場合は、エラーを出して実行(コントラクト)を止めてくれるものであると。例を見ます。

function sayHiToVitalik(string _name) public returns (string){

require(keccak256( _name) == keccak256(“Vitalik”));

return “Hi”;
}

Vitalikに挨拶を言う関数です。変数はstring型の_nameで、戻り値はstring型であると。
その関数の内容が{ }の中です。ここで出てきました”require”。
もし、(_name)をkeccak256のハッシュ関数で取得したハッシュが、”Vitalik”という文字をkeccak256のハッシュ関数で暗号化したハッシュと同じであれば(=require)、”Hi”という言葉を返すということですね。

注意にありますが、Solidityではネイティブでは文字列比較ができないそうです。そうなんですね…。だからわざわざハッシュ同士を比較する形をとっているそうです。同じ文字からであれば、必ず同じハッシュ値になる(不可逆性)。これはブロックチェーンを学ぶ上での基本でしたね。それではテストです。
less2
これは簡単ですね、require関数をそのままあてはめればいいだけですね。答えです。

require( ownerZombieCount[msg.sender] == 0);

1

②チャプター5:継承

2
継承ですか、文言を読むだけでは理解しにくいですが…同じcontractを書かなくても参照してくれるということですかね。例で言えば、contract Baby Doge is Doge の”is Doge”を加えておけば、ContractのBabyDogeを参照するときに同時にcontract Dogeも参照してくれるということですかね。確かにこれはコードを整理するときに便利なような気がします。さて、テストです。
3
これもやさしいですね。Zombiefeedingというコントラクトは、ZombieFactoryの全てのメソッドを継承しているということですので、

contract  ZombieFeeding is ZombieFactory {
}

ですね。
5

③チャプター6:インポート

8
次はimport(インポート)ですね。これはプログラムを行っている人であれば、理解はしやすいと思いますね。pythonであればimport  ○○○ で○○○というモジュールをよみこむということになります。Solidityでも基本は同じですね。
import “./someothercontract.sol”;

contract newContract is SomeOtherContract{
}

まず、someothercontractというsolidityファイルが同じディレクトリにあれば、参照した状態でNewcontractという
コントラクトを作成するということですね。前レッスンの継承がここでは役に立ってます!

それではテストです。
9

これもできますね。

import “./zombiefactory.sol”;

10

今回のまとめ
チャプター4:条件   require
チャプター5:継承   is  ○○ ○○を継承(必ず参照)する
チャプター6:import   ファイルを参照する

チャプター6:import⇒チャプター5:継承 はよく使われそうです。

いかがでしたでしょうか。
今回は比較的分かりやすい部分だったかと思います。また、別のプログラム言語と比較して覚えると相乗効果で覚えていきますね、理解が加速していきます。早くメタマスクのマスクが欲しい…。

本日もよきCryptoLifeを。
ありがとうございました。

コメント