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

イーサリアムのブロックその2

· 約2分

イーサリアムのブロック構造と合意するアルゴリズム - Qiita ではブロック構造を調べてみたが、下記の2つは疑問でした。

receipts_root: ???
logs_bloom: ???

receipts_root

  • 各トランザクション毎に、トランザクションを実行する時、発生した下記の各種データをレシート(receipt)として記録される。
    • ブロック番号
    • ブロックハッシュ
    • トランザクションハッシュ
    • 使われた gas
    • 該当トランザクションを実行した後、ブロック内に使われたガス
    • 該当トランザクションを生成した時に作られたログ
    • etc
  • ブロックにある全てのトランザクションのレシートを基づいて、マークル木構造を作成し、最終的にrootノードのハッシュ値を receipts_root とする

logs_bloom

  • ブロックチェーンで発生した各種のイベント(普通のトランザクションやコントラクト間でのやり取りなど)をトラッキングできる
  • ログには概ね下記の情報を含めている
    • ログを取っているのアカウントアドレス
    • トランザクションによって実行されるイベントを表すトピック
    • それらのイベントに関連するデータ
  • bloom というのは、ブルームフィルター であり、ある情報を含めているかどうかを効率よく、確率的に判定できる データ構造である
  • これがあるため、ログを検索したい場合、ブロック全体ではなくヘッダー部だけ取得し、この logs_bloom の部分を使って、検索したいキーワードを含めるかどうかを判定できる

参考記事