Ist der LogsBloom im Block-Header derselbe wie der Bloom-Filter im Transaction Receipts Trie?

Beim Lesen des gelben Papiers versuche ich, den Unterschied zwischen den Hb- und Rb-Werten zu verstehen - sie scheinen dasselbe zu sein, es sei denn, ich habe etwas übersehen.

Ist der LogsBloom im Block-Header Hb derselbe wie der Bloom-Filter im Transaction Receipts Trie Rb?

Wenn es sich um dasselbe handelt - warum wird es zweimal gespeichert?

Wenn sie anders sind, erklären Sie bitte, warum sie anders sind.

Antworten (1)

Nein, sie sind nicht dasselbe. Der Bloom-Filter in der Transaktion ( R_b) enthält nur die Protokolle dieser Transaktion, während der Bloom-Filter im Blockheader ( H_b) die Protokolle aller Transaktionen in diesem Block enthält.

Also ja, die Informationen werden zweimal gespeichert, aber mit dem Vorteil, schnell überprüfen zu können, ob ein bestimmtes Protokoll in einem Block vorhanden ist, ohne Zugriff auf alle Transaktionen zu haben. Dadurch können Light-Clients (die nur Block-Header kennen) nach Ereignissen Ausschau halten.

Technische Korrektur: Sie sagen "Also ja, die Informationen werden doppelt gespeichert ...", was irgendwie wahr ist. Jede Transaktion speichert einen Bloomfilter der Quittung dieser Transaktion. Der Block speichert die Vereinigung aller Bloom-Filter in jeder Transaktion. Wenn der Bloom-Filter auf Blockebene „nein“ sagt, müssen Sie die Bloom-Filter der Transaktionsbelege nicht überprüfen. Wenn auf der obersten Ebene „Ja“ steht, bedeutet dies „Vielleicht“, und Sie müssen den Blütefilter jeder Transaktion überprüfen, der wiederum „Nein“ oder „Vielleicht“ anzeigt. Wenn „Vielleicht“ angezeigt wird, müssen Sie die tatsächlichen Protokolle überprüfen. Es kann falsch positive Ergebnisse geben, aber niemals falsch negative.