Blockchain code Metaverse VR

SmartContract×VR×Crypto(605)

スポンサーリンク

//tips

疲れが出たか目がまわり出した。寒暖差による寝不足か、tiktokを頑張ってみようとしたからか、風呂上がりの冷房か、昼飯抜いているからか。tiktokダメージ+冷房コンボに一票。

//smart contract

ページ記載のwindow.addEventListener('load', function() {の中で、
Web3.js(ページの中では<script language="javascript" type="text/javascript" src="web3.min.js"></script>で呼ばれるもの)を、Metamaskのプロバイダで初期化( web3js = new Web3(web3.currentProvider);)できたから、今度はスマートコントラクトにアドレスとABIを利用してアクセスしていく。

この場合のアドレスとは、コントラクトがdeploy時に与えられるもので、永久に有効なイーサリアム上の固定アドレスが与えられる。

ABIはコントラクトのメソッドをJSON形式で表して、関数の呼び出しをコントラクトが理解できるような型の定義をWeb3.jsに教えてくれる。

コントラクトのアドレスとABIがわかったら、Web3でインスタンス化。このインスタンスを通してコントラクトの関数を実行させる。なので、チェーンとフロントエンドを結ぶ変電器のようなもの。

var myContract = new web3js.eth.Contract(myABI, myContractAddress);

var cryptoZombies;

function startApp() {
var cryptoZombiesAddress = "YOUR_CONTRACT_ADDRESS";

cryptoZombies = new web3js.eth.Contract(ryptoZombiesABI, cryptoZombiesAddress);
}

Openseaのように多様なコントラクトを含む世界では、ABIとアドレスを変数にして取得させる必要がありそう。

これによりインスタンス化されたcryptoZombiesは、コントラクトの関数を呼び出すための2つのメソッド、callとsendを持っている。バージョンの進行に伴いどちらを使うかはぶれていたはずなのでバージョンでの仕様に準拠。0.8系統ではお金の絡みでcallをメインに使う流れに戻ったと記憶している。ここはうろ覚えなので後ほど確認。

callはview関数およびpure関数に使われる物で、ローカルのノードでのみ機能し、ブロックチェーン上のトランザクションを生成しない。

sendはトランザクションを生成し、ブロックチェーン上のデータを変更する。viewまたはpureではない関数には、sendを使用。

sendの使用はユーザーにガスの支払いを要求し、そのトランザクションに署名するようMetamaskのポップアップ画面を表示する。sendが呼ばれると、接続したメタマスクが自動でおこなってくれる。

Solidityでpublicの変数を宣言する時には自動的に同じ名前でパブリックなgetterが生成されるのはremixでお馴染み。

Zombie[] public zombies;はzombies(15)とすることで15番格納分を取り出すことができる。

関数を使った少し複雑なものを見ていく。

function getZombieDetails(id) {
return cryptoZombies.methods.zombies(id).call();
}

これはコントラクトにあるZombie[] public zombiesからゾンビを返す関数。

これは外部サーバーへのAPIコールのように非同期処理である。そういえばダイナミックルートで外部への接続を多用したのでpromise周りの理解が役に立った気がする。再度確認。snapshotはpromiseとは違うのだが同じような概念なのかも。

Promiseは処理が実行中の処理を監視し、処理が問題なく完了すればresolve、反対に問題があればrejectを呼び出してメッセージを表示する。

Promise の状態には下記がある。

Pending - 終了待ち状態 (初期状態でもあります)
Settled - 処理結果が出た状態
-Fulfilled - 正常終了状態
-Rejected - 失敗状態

https://yumegori.com/javascript-promise-method

getZombieDetails(15)
.then(function(result) {
console.log("Zombie 15: " + JSON.stringify(result));
});

人気の記事

1

コロナによる需要変化 コロナパンデミックの影響で、人々は外に出られなくなり、自宅で過ごす時間が増えました。 この自粛ムードの中、下記のようなビジネスの需要変化が引き起こされています。 【利用者減少】 ...

2

米国レストランの決済時に毎日お世話になっていた「Square」のビジネスモデルについて本日はふれていきたいと思います。 「Square」とは、ネットにつながったモバイル端末と専用のカードリーダーを用意 ...

3

無料でネットショップを開けるアプリとして多くの人に驚きを与えたBASE株式会社が、2019年10月25日東証マザーズに上場しました。2020年2月時点で90万店を超えるショップを抱えるまでに成長してい ...

4

2011年にサービスを開始してから圧倒的な成長率を誇るインテリア通販サイト 【FLYMEe/フライミー】を皆さんご存じでしょうか。 「自分のイメージするインテリア、本当に欲しいインテリアがどこにあるの ...

5

ナイキのSNKRSが、なぜこれほどまでに人気なのか?調べてみました。 きっかけは米国での友達との会話。彼は自分のシューズをみせて、「これ20万円もしたんだぜ。」と語ってくれました。 あまり靴に興味がな ...

-Blockchain, code, Metaverse, VR
-, ,

Copyright© BUSINESS HACKER , 2022 All Rights Reserved Powered by AFFINGER5.