LoginSignup
2

More than 5 years have passed since last update.

イーサリアム・コントラクトのデータ周り

Posted at

基本のデータサイズ

  • イーサリアムのブロック生成時間は、平均 15 秒
  • イーサリアムのブロックサイズは、固定ではない
    • 含めいているトランザクションの GAS Limit 値の合計値が規定されているブロック単位の GAS Limit を超えてなければ良い
    • ブロック単位の GAS Limit はマイナーが、+/- 1/2024(0.0976%) 範囲で調整できる
    • ブロック単位の GAS Limit は現在は 6,706,546 GAS(https://ethstats.net/)

トランザクションが持つデータ

  • コントラクトのメソッドを呼び出す際に、定義されているメソッドのパラメータ毎に値を渡す必要がある
  • パラメータ毎の値は、32バイトで
  • これらの値はエンコードされ、トランザクションのdataフィールドに保持される

ブロックが持つデータ

  • stateRoot:stateのマークル木ルートのハッシュ値
  • transactionsRoot:トランザクションのマークル木ルートのハッシュ値
  • receiptsRoot:レシートのマークル木ルートのハッシュ値

疑問

  • ハッシュ値だけ?データの本体はどこにあるの?

スマートコントラクトが持てるデータ

  • コントラクトアカウント毎にストレージ領域がある
    • 持っている全データのマークル木のルートハッシュを持っている
  • スマートコントラクトを定義する際、mapping (address => uint256)のような、どのアドレスがどの残高を持っているかの情報を保持する場合は、特に制限がない。

参考記事

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2