イーサリアムのブロック構造と合意するアルゴリズム - Qiita ではブロック構造を調べてみたが、下記の2つは疑問でした。
receipts_root: ???
logs_bloom: ???
receipts_root
- 各トランザクション毎に、トランザクションを実行する時、発生した下記の各種データをレシート(receipt)として記録される。
- ブロック番号
- ブロックハッシュ
- トランザクションハッシュ
- 使われた gas
- 該当トランザクションを実行した後、ブロック内に使われたガス
- 該当トランザクションを生成した時に作られたログ
- etc
- ブロックにある全てのトランザクションのレシートを基づいて、マークル木構造を作成し、最終的にrootノードのハッシュ値を
receipts_root
とする
logs_bloom
- ブロックチェーンで発生した各種のイベント(普通のトランザクションやコントラクト間でのやり取りなど)をトラッキングできる
- ログには概ね下記の情報を含めている
- ログを取っているのアカウントアドレス
- トランザクションによって実行されるイベントを表すトピック
- それらのイベントに関連するデータ
bloom
というのは、ブルームフィルター
であり、ある情報を含めているかどうかを効率よく、確率的に判定できる
データ構造である- これがあるため、ログを検索したい場合、ブロック全体ではなくヘッダー部だけ取得し、この
logs_bloom
の部分を使って、検索したいキーワードを含めるかどうかを判定できる