Solidity言語

レッスン5:ERC721はコレクター要素だ⑥Fin

レッスン5の完了!SafeMath16 uint16、SafeMath32 uint32の実装、再びリファクタリング、コメントのシンタックス、natspecについて。ちなみにチャプター13は回答は無いため、コーディングスペースの一部をしてはいけない状態にする、のが正解となるぞ。答えを見ながら進めてくれ!

という内容となりますな!
昼ごはん食べずにそのまま更新してしまった!
とても良い事であるw

CryptoZombies | イーサリアムでのゲーム開発を学ぶ

それでは開演しまっしょい!!

チャプター11:SafeMathパート3

02

ふむふむ、このように記述した部分(++;)に関しては、全てSafeMathを使う事によって、余計な問題を排除することができるから、やるべきだね!という説明は前回のブログにて説明いたしましたので、過去記事参照ください👉レッスン5:ERC721はコレクター要素だ⑤

51

WinCountとlossCountに関しては、zombie stract(構造体)にて宣言した内容ですね。ガスコストを抑えるためにも、必要最低限のuint16に指定したのは記憶に新しいところ、、、
過去記事はこちら👉レッスン4:BattleOfZombie④

このままでは、安全を確保できない、、、どうすれば、、

08

なるほど!!そういうことができるのね!!

using SafeMath for uint256;と宣言したのを、ビット数を変えたものをさらに追加でsafemathを宣言してやればいいということなのね!!そりゃ簡単だし、安全確保できるならやりましょう。

という事でテストだ!!

05

1も2も、宣言方法は全く一緒で数字だけかわるだけなので、、、

using SafeMath32 for uint32;
using SafeMath16 for uint16;

となります。

3では、++や–が使われているところがないか探してみよう(//でわかるようにしてくれているが)

ownerZombieCount[msg.sender] = ownerZombieCount[msg.sender].add(1);

となりますね。

なんとか無事にクリアできましたね!このSafeMathを早く知っていればよかったですが、先に知ってた所で中身の意味がさっぱりわかんなかったと思うので、その辺の理解力を考慮した上で今だしたっていうのは、さすがはゾンビちゃんですな!!

続けて次行きますか!!

チャプター12:SafeMathパート④

14

さすがはゾンビちゃん!気が利くぅ〜!!w

ではテストだ!!

46

な、なんて親切な、、wそこまでしなくてもここまで学んできた人なら見つけてリファクタリングできまっせ!!まかせんしゃい!

01
ここは、、、

randNonce = randNonce.add(1);

に変更します。

18

3つある方は、、、

myZombie.winCount = myZombie.winCount.add(1);
myZombie.level = myZombie.level.add(1);
enemyZombie.lossCount = enemyZombie.lossCount.add(1);

と変更すると。

2つある方は、、

myZombie.lossCount = myZombie.lossCount.add(1);
enemyZombie.winCount = enemyZombie.winCount.add(1);

と変更する!
SafeMath16とか32を宣言するだけで、後はここら辺のやり方を少しいじるだけで、セキュリティ性が高くなるんであればめちゃくちゃ楽チンですね。改めてSafeMathは便利だと感じました。

もう少しで終わりなのでやっちゃいます!

チャプター13:コメント
25

28

コメントについて書かれていますね、、この//の部分に何度となく助けてもらったのは言うまでも無いですな、、

20
画面の都合上完全に尻切れとんぼのため、文章が繋がらないので飛ばしてたもれ、、

長文の場合は/*  */という形でいれてあげれば良いという事ですね。
スタートはスラッシュアスタリスク、終わりはアスタリスクスラッシュ、です!

20 18

Solidityのコミュニティでは、natspecというフォーマットを用いることがスタンダードになっている、とのことだ!そもそもなんて読むんだろう、、なっつぺっく??なっとすぺっく??w

調べてみたのだがnatspecという言葉では何も出てはこなかったため、solidity言語を使うためにわかりやすくした独自のルールのようなものだと考えた方がよさそうですね。

使い方としても

/// @title(その名の通りタイトル)
/// @author(著者名)
/// @notice(お知らせという意味)
/// @param(パラメーターだから内容)
/// @dev(開発者向けへ説明)
/// @return(返り値の説明)

といった感じだ!
これから開発していこう!と考えている人ならば、最低でも@devタグで各関数の働きを説明することはしておこう。とのことなので、むしろ私であればかなりいろんなところに説明を残す事になるであろう。。ww

それではテストだ!!!

59

今回のテストは答えを確認できない内容なので、自分なりにやってみてって事でしょうな!

英語が苦手な私としてはそのまま日本語で書いちゃるわ!w

24

このような形になっているので、、natspecタグに置き換えると、、

30

このようにしてやったぜ!どうだ日本語で書いてやったが、答えはないのでこれで完了となるはずだ!

でも、ここでは回答が無いのが回答なので、どこかのコードに細工をして終了するのであろう。

と書いてあげれば、良いのだがわからない人がいると思うので、私が代わりに書いているのだ!

だがしかし、私にはそれほど広める力はないのだ、、、orz…

まだまだ先は長い、、楽しんでいこう!!

実際に細工してある箇所はここだ!答えを見ながらやれば完了できるぞ!

18

本来必要であるセミコロンを、終了するために外す作業が必要なので、このadd(1)とsub(1)の後ろのセミコロンを外して、答え合せしてやれば、このチャプターは終了するからな!

実際のコードでは外すとエラーが出て、実行できなくなると思うので、ここはあくまでも、

natspecを入れる練習のためのテストだ、と理解しておきましょうね!

セミコロンを外して、レッスン完了させよう!

こんな画面が出てくるはずだ!
ここまでのレッスンでのまとめも出てくるから、しっかりと見ておくか、記録しておけば後々こういうやり方した事を思い出せるぞ!!

20
31

これにてレッスン5は終了だ!!お疲れ様!

いつも言っているが、レッスンが完了したらTwitterやFacebookにてシェアすると、開発チームが確認できて、さらなるステップへのモチベーションが上がる事になるので、是非ともシェアしてくれ

わたしは全然関係のないただの初心者プログラマーだから、サクラではないから安心してくれw

ただ単にプログラミングの勉強をしてて、仮想通貨もいじってたら面白そうなゲームと出会い、始めたのがこのCryptoZombiesってだけだからな!

おかげで、20日以降に発表されるであろう事が今から楽しみで仕方ない!!

20日といえば、私のサラリーマンとしての最後であるから、なんとも記念すべき日となる事であろう!!

お祝いしたいところだが、家庭を持つ身としては、結果を出して家族を養っていけなければダメなのだから頑張って結果を出せるところまで実力を引き上げなければならないのだよ。

だからこそ、新しい技術に触れ、少しでも習得できるよう勉強しつつ、他の言語に関しても学び、次のチャプターではJavaScriptに触れていない人にとっては全然理解ができない内容なので、ブログに書きながらも情報をえて進めて行こうと思っています!!

ありがとう、レッスン5!!!とても良いゾンビちゃんに感謝を込めて!!!

次回はレッスン6について書いていくぞ!!

CryptoZombies | イーサリアムでのゲーム開発を学ぶ

明日フォークするんかな!!楽しみだ!!!

ではまた後ほど〜!

ABOUT ME
shidayuu
元バンドマンで読書・書評をしている函館在住32歳、しだゆうと申します! このブログでは主に読書した内容を元に、「ヒラメキを発信する」をテーマとして毎日更新しています。 書評をメインに、たまに元バンドマンの知識を発信していきます! あなたの役に立てる記事を書いていきます!