Blockchain code Metaverse VR

Crypto×VR×SmartContract(384)

スポンサーリンク

//tips

//smart contract

Udemyで最適な環境構築部分を知りたかったのだが、基礎部分もがっつりあるので先にそちらも確認していく。

自分のlaptopにてコンパイルしたcontract sourceをrinkebyなどのネットワークdeployするとcontract instanceとしてオブジェクトとして生成される。

この流れはクラスを自身で作成し、そのインスタンスを生成している流れと似ている。

Solidityで書かれたものがcontract difinition、そこからコンパイルすると、2つのアウトプットが得られ、それが以前触れたbytecodeとABIになる。bytecodeが実際のcontractの内容とABIがインターフェースで機械語であるbytecodeを我々がみて、気づきを得やすくするもの。

Remixで下記を記載。

pragma solidity ^0.4.17;

contract Inbox{
//インスタンスの中身
//このstorage変数はブロックチェーン上に保存される
string public message;

//contract名と同じfunctionはコンストラクターとしてcontract生成時
//自動的に必ず一回呼ばれるもの
function Inbox(string initialMessage)public{
message= initialMessage;
}

function setMessage(string newMessage)public{
message=newMessage;
}

function getMessage()public view returns(string){
//アクセスして値を返しているだけなのでview
return message;
}
}

これはremixでcontract sourceを作り、bytecodeにコンパイルし、deployするとブラウザのfake network(javascript VM)にインスタンスとして生成される。

そしてdeploy後にinitialMessageを入力すると、その後に、インスタンスが生成され、setmessage,getmessageが使えるようになる。

これはcontractのstarageに格納されている変数messageをcontract内の関数で処理していることを意味する。

また、getMessage()をコードベースで削除してもデプロイされたインスタンスの機能には影響しないので再デプロイしてインスタンスを生成し直す必要がある。

デプロイ時にtoが無い場合にのみcontractが生成されることになる。そして、何かブロックチェーン上での変更がある場合は、それはtranactionという形を通して実行されることになる。

string public message;がデプロイされ、messageをブロックチェーン上で見る場合にはcallされ、それはtransactionを実行するものではないため、コストも必要なく、即座に結果が返される。

一方で setMessageはトランザクションであり、ブロックチェーン上の値を変更するため、callではなくなり、コストもかかるtransactionを使うことになる。同時に、transactionコードも取得できる。

gas priceは最小単位であるweiで表され、senderがtransaction処理を依頼するためにかかるコスト。pay per unitで換算されるため、gas priceを10でオファーすることの意味は、3wei使用する足し算を3*10=30weiのコストとして負担するということ。

Gaslimitはこのtransactionで消費するガスの許容できる最大gas数を示す。ループ処理が延々に終わらないなどが起こってしまうと膨大なコストがかかることになるので、それへの対策となる。

例えばgaslimit10に設定し、doMathfunction内で下記を順に実行していくとすると、

Add:cost3
Substract:cost3
Multipply:cost5

足し算と引き算の部分は実行されるが、10を超えるタイミングとなる掛け算は実行されないことになる。

Gaslimit20とすれば通るので、gasprice300でtotalcostを見てみると

300*wei/gas*11gas=3300weiがtotalのgasコストとなる。

ここからremixではなくエディターを使用しての作成を行っていく。

早速vscodeに移すも下記のエラー。このエラーをどうにか解決する方法を見つけなければならないよう。npm installまたはnpm initが問題か。

Source file requires different compiler version (current compiler is 0.8.10+commit.fc410830.Emscripten.clang)

また、Constructorを呼ぶ場合やmemoryを呼ぶ場合についても確認する必要がある。

人気の記事

1

皆さん、ついに、エアラインでも、サブスクリプションが始まったのはご存じですか? まだ実験段階ですが、ANAが、定額全国住み放題サービスを提供する「ADDress」と組んで、国内線を4回まで定額利用可能 ...

2

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

3

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

4

ついに、noteの月間アクティブユーザー数が4400万人(2020年3月時点)に到達しました。 そもそも、「note」とは、クリエイターが、文章やマンガ、写真、音声を投稿することができ、ユーザーはその ...

5

ボードゲームカフェが1日2回転で儲かるという記事をみつけたので興味を持ち、調べてみました。 まずは、需要がどれくらいあるのか、市場のようすからみていきましょう。 世界最大のボードゲーム市場はドイツで、 ...

-Blockchain, code, Metaverse, VR
-, ,

Copyright© BUSINESS HUNTER , 2023 All Rights Reserved Powered by AFFINGER5.