Lesson 6 capture4 コントラクトの関数呼び出し
状態を変更しない(今の状態を呼び出したり、固定の値を呼び出す)関数(call)。
状態を変更する(ブロックチェーンのデータを更新する)関数(send)を持っている。
Web3.jsコントラクトのインスタンス化
// myContractをインスタンス化
var myContract = new web3js.eth.Contract(myABI, myContractAddress);
Call
これはローカルのノードでのみ機能しブロックチェーン上のトランザクションを生成しない。
var myContract = new web3js.eth.Contract(myABI, myContractAddress);
myContract.methods.myMethod(123).call()
Send
var myContract = new web3js.eth.Contract(myABI, myContractAddress);
Web3.jsを使って、次のように123をパラメーターにして、myMethodという名の関数を呼び出すトランザクションをsendすることができる。
myContract.methods.myMethod(123).send()
Web3プロバイダとしてMetamaskを使用する場合、send()関数を呼び出すとこれを全部行ってくれるのでコード内で特別なことを行う必要はありません。
ゾンビデータ取得
call関数の実際の使用例
Zombie[] public zombies;
よってIDが15のゾンビを探したい場合は、関数であるかのようにzombies(15)と呼び出すことができる。
getter:メンバ変数から値を取得するメソッド。
これはゾンビのIDを受け取って、そのゾンビをコントラクトでクエリして、その結果を返す
return cryptoZombies.methods.zombies(id).call();
}
// 関数を呼び出し、その結果を処理する:
getZombieDetails(15)
.then(function(result) {
console.log("Zombie 15: " + JSON.stringify(result));
});
{
"name": "H4XF13LD MORRIS'S COOLER OLDER BROTHER",
"dna": "1337133713371337",
"level": "9999",
"readyTime": "1522498671",
"winCount": "999999999",
"lossCount": "0" // Obviously.
}
参考 PROMISE
Promiseはresolveとreject、ふたつの関数を引数に取ります。
resolve:処理が成功したときのメッセージを表示する関数
reject:処理が失敗したときのメッセージを表示する関数
resolve('成功');
});
Promise(function(resolve, reject) {
reject('失敗');
});
prev
-
クリプトゾンビLesson 6 capture3 コントラクトへのアクセス
Lesson 6 capture3 コントラクトへのアクセス Web3.jsがコントラクトにアクセスするため、必要となるもは コントラクトの アドレス と ABI 。 スマートコントラクトを書き終えた ...
NEXT
-
クリプトゾンビLesson 6 capture4 補足 promiss
Lesson 6 capture4 補足 promiss コールバック関数 コールバック関数 - 非同期処理 非同期処理の完了を待つ方法!Promise&async/await Promiseのコンス ...