クリプトゾンビ

クリプトゾンビLesson 6 capture4 コントラクトの関数呼び出し

更新日:

Lesson 6 capture4 コントラクトの関数呼び出し

Web3.jsは、コントラクト関数を呼び出すための2つのメソッドをもつ。
状態を変更しない(今の状態を呼び出したり、固定の値を呼び出す)関数(call)。
状態を変更する(ブロックチェーンのデータを更新する)関数(send)を持っている。

Web3.jsコントラクトのインスタンス化

// myContractをインスタンス化
var myContract = new web3js.eth.Contract(myABI, myContractAddress);

Call

callはview関数およびpure関数に使われる。
これはローカルのノードでのみ機能しブロックチェーン上のトランザクションを生成しない。
// myContractをインスタンス化
var myContract = new web3js.eth.Contract(myABI, myContractAddress);
Web3.jsを使って、次のように123をパラメーターにしてmyMethodという名の関数をcallできる:
myContract.methods.myMethod(123).call()

Send

sendはトランザクションを生成し、ブロックチェーン上のデータを変更する。

viewまたはpureではない関数には、sendを使う必要がある。
// myContractをインスタンス化
var myContract = new web3js.eth.Contract(myABI, myContractAddress);

Web3.jsを使って、次のように123をパラメーターにして、myMethodという名の関数を呼び出すトランザクションをsendすることができる。

myContract.methods.myMethod(123).send()

注: トランザクションをsendすることはユーザーにガスの支払いを要求し、また彼らがトランザクションに署名するようMetamaskをポップアップします。
Web3プロバイダとしてMetamaskを使用する場合、send()関数を呼び出すとこれを全部行ってくれるのでコード内で特別なことを行う必要はありません。

ゾンビデータ取得

call関数の実際の使用例

Zombie[] public zombies;

Solidityではpublicの変数を宣言する際、自動的に同じ名前でパブリックな”getter”が生成される。
よってIDが15のゾンビを探したい場合は、関数であるかのようにzombies(15)と呼び出すことができる。

getter:メンバ変数から値を取得するメソッド。

フロントエンドに書くJavaScriptの関数は以下のようになる。
これはゾンビのIDを受け取って、そのゾンビをコントラクトでクエリして、その結果を返す
function getZombieDetails(id) {
return cryptoZombies.methods.zombies(id).call();
}

// 関数を呼び出し、その結果を処理する:
getZombieDetails(15)
.then(function(result) {
console.log("Zombie 15: " + JSON.stringify(result));
});

cryptoZombies.methods.zombies(id).call() はWeb3プロバイダのノードと通信して、コントラクトにあるZombie[] public zombiesからゾンビとそのインデックスidを返す。
これは外部サーバーへのAPIコールのように非同期なのでWeb3はここでpromiseを返すことになる。
このPromiseがWeb3プロバイダからの応答を受けとるとリゾルブする。このコードではthenステートメントが続行され、resultをコンソールにログする。
result は次のようなJavaScriptオブジェクトとなる:

{
"name": "H4XF13LD MORRIS'S COOLER OLDER BROTHER",
"dna": "1337133713371337",
"level": "9999",
"readyTime": "1522498671",
"winCount": "999999999",
"lossCount": "0" // Obviously.
}

参考 PROMISE

Promiseとは、JavaScriptにおいて、非同期処理の操作が完了したときに結果を返すもの。
Promiseはresolveとreject、ふたつの関数を引数に取ります。
resolve:処理が成功したときのメッセージを表示する関数
reject:処理が失敗したときのメッセージを表示する関数

Promise(function(resolve, reject) {
resolve('成功');
});
Promise(function(resolve, reject) {
reject('失敗');
});

prev

ogp
クリプトゾンビLesson 6 capture3 コントラクトへのアクセス

Lesson 6 capture3 コントラクトへのアクセス Web3.jsがコントラクトにアクセスするため、必要となるもは コントラクトの アドレス と ABI 。 スマートコントラクトを書き終えた ...

続きを見る

NEXT

ogp
クリプトゾンビLesson 6 capture4 補足 promiss

Lesson 6 capture4 補足 promiss コールバック関数 コールバック関数 - 非同期処理 非同期処理の完了を待つ方法!Promise&async/await Promiseのコンス ...

続きを見る

ビットコインってなに?

2008年11月、metzdowd.comにナカモトサトシにより投稿された論文Bitcoin:A Peer-to-Peer Electronic Cash Systemで定義された仕様とをもとにビットコイン・コミュニティーで開発が続けられる製造と取引に暗号学を使った通貨のことです。

ビットコイン自体は、フリー・ソフトウエアで、ソフトウェア開発のプラットフォームGitHubに登録すれば、ソースやドキュメント閲覧が可能で、開発に参加も可能です。

ナカモトサトシは、2010年12月まで開発に携わっていましたが、その後姿を消しました。日本名ですが、国籍も含め匿名性が高く身元も不明です。

真偽のほどは、不明ですがSBI社長の北尾氏が、2018年3月期第2四半期 SBIホールディングス(株)決算説明会動画の1:29:20頃)でナカモトサトシと議論を交わしたと発言して話題になりました。

ビットコインの仕組み

ビットコインは、P2P型の公開型分散台帳技術(DLT)によって信頼性を担保され運用されるブロックチェーンで結合された暗号通貨(cryptocurrency)のことです。

ビットコインは、P2Pネットワーク上のサーバー上で同一取引情報を持ちコントロールすることで取引の妥当性のチェックが行われるため、銀行など、特定の管理者がいない非中央集権型の仮想通貨と呼ばれています。

ブロックチェーン


GitHub

ブロックチェーンの動き

マイニング

ビットコインは送信アドレス(Tx)に対するデジタル署名によって保護されており、一定時間(10分)ごとに、すべての取引記録を分散台帳に追加します。

その追加処理には、ネットワーク上の分散取引台帳データと、10分間に発生したすべての取引のデータの整合性を取りながら正確に記録することが必要です。

整合性を取る作業は、膨大な計算量が必要となるため専用のハードウエアの計算能力を使って、誰でもが取引を処理することができます。

この手伝いをしてくれた人(膨大な計算処理を行った人)の中で、結果として追記処理を成功させた人には、その見返りとしてビットコインが支払われます。

この作業をマイニングと呼びます。

マイニングには、ソロマイニングとプールマイニングがあり、個人のPCでも余った演算能力でプールマイニングに参加できます。

ブロックチェーンをより深く理解する

全画面にして字幕設定を自動翻訳 イタリア語=>自動翻訳を経由して日本語に設定するとよくわかります。

上記デモは、下記リンク先サイトを使用しているので、自分でも試すことができます。

 

ジェネシス・マイニングでのハッシュパワー購入

ジェネシス・マイニングは世界最大の高く信頼されたビットコイン クラウド マイニングのプロバイダーです。ハッシュパワー購入時に,コード(kjx2uz)を使用した人は、購入時に3%の割引になります。

ブロックチェーンエクスプローラー

ブロックチェーンアドレスを入力することで、送金状況(confirmation回数の確認)が行えます。

イーサリウムの仕組み

-クリプトゾンビ

Copyright© 仮想通貨アンテナ , 2021 All Rights Reserved.