Blockchain code Metaverse VR

SmartContract×VR×Crypto(627)

スポンサーリンク

//tips

//smart contract

どうもEVMについて完全に腹落ちしなかったの再度検証。Merkle Patricia Trieの構造まで突っ込んでいく。

気になっているのは、balanceは結局ブロックチェーン内に保存されるのか、ブロックチェーン(状態遷移)の付属品として、stateそのもの(遷移完了後形態)のデータ構造を持った状態で、付けられているのかというところ。

外部アカウント(EOA)は、ユーザーを表したアカウントであり、20byteのアドレスとstateを持ち、それをユーザーが管理している秘密鍵でコントロールする。

Bitcoinと同様に、秘密鍵から公開鍵が生成され、その公開鍵からこの外部アカウントアドレスが生成される。

state(パラメータ)として、NonceとBalanceのみを持つが、この中身はチェーン内に反映されるか?

Ethereum's state is a large data structure which holds not only all accounts and balances, but a machine state, which can change from block to block according to a pre-defined set of rules, and which can execute arbitrary machine code. The specific rules of changing state from block to block are defined by the EVM.

https://ethereum.org/en/developers/docs/evm/

Stateはmodified Merkle Patricia Trieと呼ばれるデータ構造をとっており、ハッシュによって繋がれる全てのアカウントとその分岐もととなるのハッシュをもつ。

the state is an enormous data structure called a modified Merkle Patricia Trie, which keeps all accounts linked by hashes and reducible to a single root hash stored on the blockchain.

外部アカウントのNonceはアカウントが行ったトランザクションの回数を記録しているもの。これでstate前後の管理はきちんとできそう。自分の外部アカウントのBalanceの値を取るためbalance参照が早い。

https://ethereum.github.io/yellowpaper/paper.pdf

では、それがブロックのどこに格納される情報なのかが問題。というか、気になる。

完了後の確定情報とトランザクション情報は、チェーン情報の中にありそうなことが下記のルートハッシュ構成からわかった。

ワールドステート:
各アカウントのステートで構成されるツリーのルートハッシュ。

トランザクションルート:
ブロックに含まれるトランザクションで構成されるツリーのルートハッシュ。

レシートルート:
トランザクションレシートで構成されるツリーのルートハッシュ。

この構造は、コンピュータで使用されているRAMのストレージモデルと同じ役割を果たし、これにより、通貨のトランザクション以外にもデータを取り扱えるようになった。

このトランザクションルートに格納されるハッシュは実行後のハッシュであり、その実行結果を受けたバランスなどの値がワールドステートのアカウント部分に格納されるという認識で良いのかと思ったが、これは要約値であり、実データではないとのこと。

これらの実データは各ノードのローカルデータに保存。

ブロックに含まれているのは、要約値のみであり、実際の「全てのアカウント状態のデータ」「全てのレシートのデータ」はブロックチェーンの外で管理されている。なんてこった。各フルノードがそれぞれのローカルストレージにこれらの値を保持していてこれらの実データはネットワークに伝搬されない。

https://www.etarou.work/posts/4979138

イーサリアムを理解したい場合にはこのお三方がおすすめ。

https://www.etarou.work/posts/4979138

【図解】ブロックチェーンレベルでのイーサリアムの理解

truffle compileでbuild/contractsフォルダの中に作成した.jsonフォルダからabiとbytecodeを確認。

Remixを利用してここからdeploy済みのコントラクトの関数を実行してみた。

Abiを自身の.jsonから抽出し、remixに貼り付け。text.abiの形で貼り付けておき、metamaskをrinkebyに切り替えて、そちらにremixのinjected web3を使用して接続。

きちんとアカウント部分が自身のrinkebyアドレスであることが確認できたら、at address部分にdeployしたコントラクトのアドレスを入力。これは自身のEOAのアドレスと混同しない。

そうするとdeployed contractに接続し、インスタンス生成してくれているので、その中のボタンをペチペチ押して、nameやtotalsupplyがきちんと表示されるかを確認。問題なし。remixからclaimitemもできるか確かめておく。問題なし。

https://testnets.opensea.io/assets/rinkeby/0xd01fd6c7d061ed797e9269e9f31889e65ca25da5/6

Abi抽出参照:
https://v1.shunsuke.me/ja/tech/ethereum/recipe-how-to-send-tokens-easily-with-remix/#abi%E3%81%AE%E5%8F%96%E5%BE%97

https://rinkeby.infura.io/v3/

Rinkebyにアクセスする別アカウントから自身のアカウントを攻撃しようとしているのだが、もう一つのrinkeby接続アカウントが作れず苦戦。

Metamaskは同じテストネットワークにつながるアカウントを複数作れなかった。

Ganacheのテストネットワークにdeployして試すかと思ったが、metamaskのテスト用つくればよいことに気がついた。

なかなか怖くてできていなかったが、今なら作りだめしといても良さそう。

https://chrome.google.com/webstore/category/extensions?hl=ja

高度な設定からテストネット表示をオンにする必要があった。

若干時差があったので一旦閉じて再度開くと選択できるようになる。

3つまで手持ちメタマスクを増やした。

人気の記事

1

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

2

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

3

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

4

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

5

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

-Blockchain, code, Metaverse, VR
-, ,

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