Was bedeutet "Block Health"? (mempool.space)

Hallo liebe Community,
ich habe gesehen, dass es im Mempool bei den gültigen Blöcken eine Spalte „Health“ gibt, in der seit Block 733.911 eine Prozentzahl eingetragen wird.
Dabei werden die Prozentzahlen, die kleiner 99% sind, gelb hinterlegt.
Was sollen mir diese Werte sagen?

Was mir spontan dabei auffällt, ist, dass die Blöcke, die nicht 100% haben bei den zuletzt aufgenommenen Transaktionen, sehr unaufgeräumt aussehen. Quasi wie Tetris beim GameOver… :grinning:

Vermutlich bedeutet das, dass Speicherplatz verschwendet wurde. :man_shrugging:

Das ist in den Mempool Docs hier erklärt: mempool - Bitcoin Explorer

Vereinfacht auf Deutsch:

Es geht darum mögliche Zensur von Transaktionen zu erkennen.

Man kann ja vorab erwarten welche Transaktionen im nächsten Block landen, da neutrale Miner einfach nur Transaktionsgebühren maximieren wollen. Wenn also alle Transaktionen die vom mempool Explorer prognostiziert werden auch tatsächlich im nächsten Block landen ist das ein „gesunder“ Block. Transaktionen die unter diesem Gesichtspunkt fehlen können eventuell vom Miner bewusst ignoriert worden sein.

Genau sagen kann man das natürlich nie, da es durch viele Faktoren dazu kommen kann dass ein Miner eine Transaktion die ihm eigentlich mehr Geld bringen würde auslässt. Block building (also das möglichst effiziente konstruieren eines Blockes für maximalen Gewinn) ist sowieso kein triviales Problem und es kann durch unterschiedliche Algorithmen zu Abweichungen kommen.

Wenn im Explorer also unter 100% Health ausgewiesen sind, heisst das nicht dass nachweislich eine Transaktion zensiert wurde, sondern nur dass Transaktionen die man in diesem Block eigentlich erwartet hätte fehlen, was möglicherweise auf Zensur hindeuten könnte.

In der Übersicht kann man auch sehen welche Transaktionen abweichen und welcher Grund vermutet wird. Hier z.B. eine Transaktion die tatsächlich vom AntPool nicht aufgenommen wurde:

14 „Gefällt mir“

Herzlichen Dank für diese ausführlichen Erläuterungen. Da habe ich wieder etwas gelernt und jeder Tag, an dem man etwas lernt, ist kein verlorener Tag!

Müsste nach deiner Theorie dann nicht der Block 774628 eine Blockhealth von nahezu 0% haben?

Das ist ja keine Zensur, sondern eine zusätzliche Transaktion die vom Miner hinzugefügt wurde. Und da die Fee 0 sat/vB ist kannst du immer davon ausgehen dass der Pool ein eigenes Interesse an der Transaktion hat.

Siehe: https://twitter.com/LuxorTechTeam/status/1620922782845669378

Wie kann der Code unterscheiden, ob ein Miner die Transaktion absichtlich aufnimmt?
Für mich wäre das einzige Kriterium die Fees. Und da viele Transaktionen mit höheren Fees für einen Block mit 0fee verworfen wurden, müsste der Code eigendlich von Zensur ausgehen.

Es geht doch einfach nur um die Unterscheidung:

  • eine erwartete Transaktion taucht nicht auf → evtl. Zensur also wirkt sich auf die Block Health aus

  • eine unerwartete Transaktion taucht auf → hat nichts mit Zensur zu tun und ist allgemein neutral zu bewerten

Der Miner hat das gute Recht in seinen Block eigene Transaktionen zu schreiben. Er verzichtet damit auf Transaktionsgebühren, und bezahlt damit „indirekt“ die volle Gebühr (Opportunitätskosten).

Genau deshalb müsste ja die Blockhealth recht schlecht sein, weil viele erwartete Transaktionen nicht in den Block übernommen wurden.

Wo ist mein Denkfehler… :thinking:

Nein, die große Transaktion vom Miner war aber eben nicht erwartet. Es geht doch darum mögliche Zensur zu erkennen. Wenn der Miner eine eigene Transaktion veröffentlichen will, dann steht ihm das doch vollkommen frei. Seine Transaktion hat in diesem Moment die höchste Priorität. Nirgendwo ist eine Transaktion günstiger als wenn er sie selbst in einen Block schreibt.

Er hat einen objektiven Grund diese Transaktion aufzunehmen, das hat also nichts mit Zensur zu tun.

Wenn ein Miner ohne objektiven Grund eine Transaktion weg lässt (also grundlos auf Gebühren verzichtet) dann kann man daraus auf Zensur schließen. Wo ist das hier der Fall?

Genau… Die TX war nicht erwartet, wie Du oben schreibst, müsste also die Blockhealth schlechter sein.
Mir ist das Zensur Thema völlig Latte. Ich beziehe mich nur auf die TX die erwartet werden und welche, warum auch immer, durch die große TX ersetzt wurden.
Du widersprichst Dir halt in dem Punkt selber. :man_shrugging:

Aber genau das will die Block Health doch aussagen… :roll_eyes:

Nein, es sind jeweils unterschiedliche Gründe warum Transaktionen „nicht auftauchen“.

Ich glaube zwar @sutterseba wird es viel besser erklären als ich, aber ich unternehme trotzdem einen Versuch - auch weil ich selbst sicher gehen will, es verstanden zu haben.

Der Miner hat die Transaktion selbst in den Block geschrieben (und wahrscheinlich solange zurückgehalten, bis er einen Block findet?) - und deshalb war es eine unerwartete Transaktion.
Andere Miner hätten also gar nicht die Möglichkeit gehabt, diese aufzunehmen. Da diese unerwartete Transaktion fast den ganzen Blockspace benötigt, fallen sehr viele erwartete Transaktionen aus dem Block raus. Die verbleibenden Transaktionen welche reinpassen, sind allerdings erwartete Transaktionen.

Das bedeutet dann in meinem Verständnis: Der Miner kann jederzeit eigene Transaktionen allen anderen bevorzugen, nimmt sonst aber die ökonomisch wertvollsten auf. Würde er spezifisch Transaktionen aus dem Mempool rausnehmen (außer seinen eigenen), ungeachtet vom ökonomischen Anreiz, wären das keine unerwarteten Transaktionen sondern später erwartete Transaktionen für einen späteren Block?
Ich glaube das Wording mit unerwarteten Transaktionen macht es vom Verständnis schwierig: Da unter Nutzerverständnis jede Transaktion als unerwartet interpretiert werden kann, welche eben nicht genügend ökonomischen Anreiz bietet.

Wenn ich hier auf dem Holzweg bin, dann kurze Info und ich lösche den Beitrag :smiley:

Genau, als würde der Busfahrer seine eigene Familie durchwinken ohne dass sie ein Ticket kaufen müssen.

Wirklich kostenlos fährt diese Familie dann trotzdem nicht, da sie Plätze belegen für die der Busfahrer eigentlich Geld verlangen hätte können. Das sind dann Opportunitätskosten die der Busfahrer indirekt übernimmt.

Mit Zensur hätte diese Aktion aber nichts zu tun, die anderen Fahrgäste waren dem Busfahrer halt einfach nicht wichtig genug. Er überbietet mit seinen Opportunitätskosten die Gebühren der wartenden Fahrgäste und damit ist es vollkommen legitim dass seine Familie mitfahren darf.

Wenn der Busfahrer aber grundlos einen z.B. dunkelhäutigen Fahrgast abweist, obwohl er für sein Ticket zahlen würde, dann ist das nicht nur rassistisch sondern auch Zensur. Und hier, also mit entfernten Fahrgästen die eigentlich ausreichend viel Geld für ihr Ticket zahlen wollen, setzt der neue Block Health Parameter an.

Alles andere spielt keine Rolle.

1 „Gefällt mir“

This is determined by counting how many expected transactions a block is missing—a block that is not missing any expected transactions will have 100% health, while a block missing 1 or more expected transactions will have sub-100% health.

Freie Übersetzung:
Man zählt die erwarteten Transaktionen
Fehlt keine erwartete Transaktion ist die Health 100%
Fehlt eine oder mehr erwartete Transaktionen ist die Health <100%

Wenn man sich nun die Grafik anschaut, sieht man doch direkt, dass sehr viele der erwarteten Transaktionen nicht in den Block aufgenommen wurden.

Es scheint ja dann so zu sein, dass die blauen Kästchen, welche eigene Transaktionen des Miners sind, nicht mit in diese Gleichung zählen.
Daher werden dann nur die Blöcke nach dessen eigenen Transaktionen berücksichtigt.
Da nun der Platz limitiert ist, aber alle Transaktionen, welche noch mit enthalten sind, erwartbar waren, fällt der Wert entsprechend bei 100% aus. Ich hätte hier ehrlich auch einen Wert <100 erwartet, aber rein mathematisch ist das schon nachvollziehbar (sofern ich mit der Annahme der nicht gewerteten Transaktionen des Miners korrekt liege).

Hier ist ein hübsches Beispiel:
Block 774845

In diesem Block ist als einzige Transaktion die Auszahlung der 6,25 BTC eingetragen …
Health = 0,04
Von allen erwarteten Transaktionen wurde nichts gemacht, und das obwohl im MemPool ausreichend Transaktionen für 2 komplette Blöcke vorhanden wären.