Lesson 2 JavaScript の実装
このコントラクトはZombieFactoryを継承した最終コントラクトであり、両方のコントラクトのpublicメソッドにアクセスできる。
コントラクトをコンパイルするとabiとバイトコードが生成され、さらにネットワーク上にdeployすることでアドレスが与えられる。
コントラクトの機能をEthereumの外部、もしくは別のコントラクトから呼び出すための標準化された方法を定義しています。
今回の場合、solidityとJavascriptのインターフェースを定義。
JavaScript とweb3.jsを使用して実行したコントラクトがやりとりする例
var ZombieFeedingContract = web3.eth.contract(abi)
var contractAddress = /* our contract address on Ethereum after deploying */
var ZombieFeeding = ZombieFeedingContract.at(contractAddress)
// ゾンビのIDと捕食したい子猫のIDをすでに持っているものとする。
let zombieId = 1;
let kittyId = 1;
// クリプトキティの画像を取得するにはweb APIに照会する必要がある。
// この情報はブロックチェーンにはない。ウェブサーバーにあるだけだ。
// もし全ての情報がブロックチェーン上に格納されていれば、サーバーの
// 障害を心配することはなくなるがな。まぁこのゾンビゲームを気に入ってもらえなければ、
// APIを変更するか我々のアクセスをブロックするだけだ。問題ない 😉
let apiUrl = "https://api.cryptokitties.co/kitties/" + kittyId
$.get(apiUrl, function(data) {
let imgUrl = data.image_url
// 画像を表示する部分だ
})
// ユーザーが子猫をクリックししたときの処理だ:
$(".kittyImage").click(function(e) {
// コントラクトの`feedOnKitty` メソッドを呼び出す
ZombieFeeding.feedOnKitty(zombieId, kittyId)
})
// コントラクトのNewZombieイベントをリッスンして表示できるようにする部分だ:
ZombieFactory.NewZombie(function(error, result) {
if (error) return
// この関数はレッスン1でやったのと同じようにゾンビを表示するものだ:
generateZombie(result.zombieId, result.name, result.dna)
})
クリプトゾンビ実際の動作
https://cryptozombies.io/jp/lesson/2/chapter/14
prev
-
クリプトゾンビ Lesson 2 Chapter13If ステートメント
Lesson 2 Chapter13If ステートメント SolidityのIfステートメントはJavaScript と同じ。 文字列の比較 function eatBLT(string sandwi ...
next
Lesson 3へ進む
-
クリプトゾンビ Lesson 3 Solidityの高度なコンセプト
Lesson 3 Solidityの高度なコンセプト DApp開発必要な技術 コントラクトのオーナーシップ ガス(燃料)のコスト コードの最適化 セキュリティ prev next