メインコンテンツまでスキップ

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

· 約2分

基本のデータサイズ

  • イーサリアムのブロック生成時間は、平均 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)のような、どのアドレスがどの残高を持っているかの情報を保持する場合は、特に制限がない。

参考記事