Solidity言語

レッスン3:Solidityの高度なコンセプト④

リステリンは便秘にも効果があるんじゃないかと、、、車中運転しながら考えておりましたw
便秘っていろんな要素があって、なってしまうんだと思うんですが、口内環境が体に及ぼす影響って大きいっていうのをドクターから聞いた話です。食事を摂る前に口をゆすいで細菌を洗い流すだけで、便秘の予防になるとかいろいろ。

そんな雑談をしたところで、続きをしたいと思いますw

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

4月13日午前第二部、始めます!

チャプター4:ガス(燃料)

ここ割と重要な部分ですね。通常のプログラミング言語との絶対的な違いを説明する上で、このガス(燃料)というのが挙げられます!
32

以前のブログにも言葉を調べていたら、ガスの存在に出会ったので、ガスについて話しましたね。

車が走るためには何が必要ですか??ガス(燃料)が必要ですよね!それと同じで、ユーザーが関数を使用するたびに支払わなければならない燃料代です。支払いに使う通貨は、日本円、、ではなく、Ether(イーサ)というイーサリアムの通貨になります!Etherでガスを買い、使用するために支払うという構造です。

ここでも書いてありますが、関数が複雑であればあるほど、ガスのコストが高くなり、処理速度に影響してきます。ガスコスト=手数料と考えるとわかりやすいですが、手数料を安く設定すると、処理速度もその価格に比例します!なので処理を早くしたい場合はその分価格を高く設定して、手数料(ガス)を支払う必要があるという事でもありますね。

ガスコスト低い = 処理速度が遅い
ガスコスト高い = 処理速度が早い

という事になりますね。Dappを触った事がある方なら、このガスコストってなんだ??weiってなんだ??っていう壁にぶち当たりますが、そういう仕組みになってます。

ちなみにweiはガスコストの支払いにつかうEther通貨の単位です。
参考文献見つけたので貼り付けます!
17
※とってもやさしいビットコイン記事参照

/*例えばですが、10,000円が1 Etherだとしたら、(例え、ですからね!)
1円は0.0001 Etherとなります。
この1円の単位が1 weiですよ。という事だとすると、、
1 Ether = 10000weiだ、という事。これはあくまで例えの話しですからね!!*/

日本っぽくすると、10000円は10千円と表すのと一緒、って事ですからね。

etherの単位の中で一番ちっちゃい単位だと理解しておきましょう!
15
08
簡単に言わせてもらえば、ヘボプログラマがDappを作ってはいけないと、、なぜならばガスコストとしてユーザーが余計に支払わなければならなくなり、高額なのに粗末なゲームをやらされる事になりかねないから。

WindowsPCをお使いの方であれば、誰しもが有料のセキュリティ対策ソフトを入れていると思います。それは悪いプログラムを作った人が不正にお金だったりデータだったり盗む事ができるからであり、そういう情報を渡さないために入れておく必要があるからですよね。

ガスコストというのは、イーサリアム上のセキュリティのための維持・管理手数料だ、と捉えてもいいかもしれませんね。

それでも、PCにはセキュリティソフトは入れておくのは必須ですけどね。Dappしか触らないのであれば必要ないかもしれませんが、それを狙って悪い事を考える人がいるのも事実なので、現段階では対策はしておくに越した事はないでしょう!

サイドチェーンに関しては、ブロックチェーンの機能拡張という考えでいいでしょう!

21

ガス=手数料というのは理解できたと思います。今度はガスの節約術に関しての記述ですね!これはしっかりと理解して行かないと今後の開発に影響がでますので、しっかり覚えましょう!

struct内で複数のuint型を持つ場合は、できる限り小さい単位のuintを使う事でコストのかかる容量を小さくする事ができるという事。

ちなみに、、

uint8は2の8乗(2*2*2*2*2*2*2*2)なので0~255までが出力範囲。
uint16は2の16乗(2^16)となるので、0~65,535までが出力範囲。
uint32は2の32乗、、、
uint64は2の64乗、、、、
、、、
uint256は2の256乗、、、、、、

なので、uint8の出力範囲内で収まる物に関しては、uint8型を指定してやる。という意味ですね。

49
こちらが例なのだが、//の部分が正直何を言っているのかわからなかったが、「miniはnormalに比べてガスコストが低くなる。」と書いてあるのだが、、uint32に指定する事により、32ビットのストレージの確保だけで済むので、ガスコストが低くできる、という事なのである!

噛み砕くと、通常のuintだと、uint = uint256となってしまうため、256ビットのストレージを確保する形になる。そこでuint32にすると、32ビットのストレージの確保で済むため、224ビット分余計に使わなくて済むから、ガスコストが低くできるという事だね。

ほっほっほ〜!!問題解いてる時はよくわかってなかったが今ようやく理解できたw

嬉しいですねぇ!ブログ効果抜群!!

それでは踏まえてテストだ!!!
31

はいはい!!今回のチャプターも内容は濃かったがテストは薄いぞ!!w

ここもイージークエスチョンだ!!

Zombie structに2つのプロパティを追加するだけなので、、
26
このdnaの後ろに追加していこう!!追加の仕方はnameとdnaでやっているので、、

uint32 level;
uint32 readyTime;


とするだけですな。

levelを追加したって事は、レベルアップする要素があるという事。
readyTimeはテストの文章にあるという事ですな。

こんなところでチャプター4も完了しましたね!

午前の部はこの辺で終了とさせていただきます!

午後の部はチャプター5と6あたりを一気にいけたらと思っております。

もっといければもっと攻めます!

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

という事で、また後ほど!!

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