Solidity言語

レッスン6:未知なる領域を開拓せよ④

call、send、promise、getter、result、ロジック、などなどのワードが飛び交います。。なかなか難しく理解ができていない記事となってしまう事を先にお伝えしておきます。。

調べながらやっていても、なかなか理解できなく困っておりますが、困ったところで理解が進むわけではないので、とりあえず進んでみて、やっていこうと思います。

まずは流れを知る事で、理解できることもありますし、、

プラス思考で考えていきたいと思います!!

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

ではでは、開演しまっせ!!

チャプター4:コントラクトの関数呼び出し

48

ほうほう、、CallとSendとな、、翻訳せずともこの単語ならわかりますよね!

Callは「呼び出し・呼ぶ」Sendは「送信・送る」、ですな!

上記のような形がcallを使う際の形になりますね。修飾子のチャプターの際に、view関数とpure関数は読み取り専用なので、ガスを発生させる事なく、トランザクションに署名を要求されることもないとな!

04

Sendに関しても、callと使い方は一緒ですね。
ただコールとは逆に、ブロックチェーン状のデータを変更するため、ガスコストもかかるので、その際はトランザクションに署名するようにMetamaskがポップアップするとの事。

なるほどですな、、支払いが発生する場合はポップアップで知らせてくれると、、、これが知らせてくれなかったらまずいですもんね、、、必要不可欠ですな。

18

publicの変数を宣言する際は、自動的に同じ名前でパブリックなgetterが生成されるというのな、、

Solidityは、というか、ブロックチェーンを使ったプログラムを書く場合は、ガスコストがかからない仕組みにしなければならないという点から、ブロックチェーン上のデータをなるべく変更などしたくない、、というのが理由だと思うので、そのための仕組みなんでしょうかね、、

書き換えの処理にしてしまうとガスコストが必要になるので、コストがかからない方法でできる手段の一つなのかなと、、、

佐々木真さんの記事にて、getterとはオブジェクト指向なプログラミングの話で出てくる用語のひとつで、メンバ変数から値を取得するメソッドなんだよ、との事で紹介しておりますが、通常のJavaScriptであれば、書き換えてしまえば簡単だし楽なので、getterとsetterを使うか、使わないかはその現場次第との事。

ブロックチェーンを使う場合は、ガスコストのかからない方法を最優先にして作成していかなければならない事は、超重要事項なので、コストを最小に抑える対策は必須ですな。

42

JavaScriptや他の言語に関しては全然わからないのですが、Solidityの場合は新規で作成する場合は、バージョン情報を入力する必要があるので、互換性の問題などでかなり重要なのだなと感じているので、この注意文に関しては納得しております。

上記のコードは、フロントエンドに書くJavaScriptの関数との事。

02

promiseとは調べたところ、非同期処理を操作できる、非同期処理の成功時(resolve)・失敗時(reject)の処理を明示的に書くことができる・非同期処理を平行・直列に実行させることができる、、、とのこと。

う〜ん、、、今はまだわからないのですが、今はこういう事なのか〜程度での理解とします。

resultは結果という意味なので、非同期処理が成功した時にresult(結果)をコンソールにログする、って事ですな。
16

ロジックとは処理の内容や手順という意味ですな。
コードを見てみると、名前、DNA、レベル、準備時間、勝ち数、負け数の内容なので、zombie structの内容だということがわかりますな。

それではテストだ!

45

1では、関数を作成しよう、との事なので、まずは、

function zombieToOwner() {}

となるのだが、パラメータとしてidを受け取りcallを返して(return)コントラクトのzombieToOwnerを呼び出す、との事なので、、、

function zombieToOwner(id) {
return cryptoZombies.methods.zombieToOwner(id).call()
}

となる。

54

2では、またしても関数を作成しよう、との事なので

function getZombiesByOwner() {}

となり、パラメータはownerで、getZombiesByOwnerへのWeb3.jsのcallを返す、との事なので、

function getZombiesByOwner(owner) {
return cryptoZombies.methods.getZombiesByOwner(owner).call()
}

となります。

まとめると、、

f
unction zombieToOwner(id) {
return cryptoZombies.methods.zombieToOwner(id).call()
}

function getZombiesByOwner(owner) {
return cryptoZombies.methods.getZombiesByOwner(owner).call()
}

となります。

正直申し上げますと、、、例がなければ解けていないテストでしたね、、、

これが例なしでも解けていればいいのですがね、、まだまだ課題は残りますが、引き続き進めて参りたいと思っております!

今日はこんなところで失礼します!!

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

それではまた明日!

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