Zum Inhalt springen
buybitcoinsmart

Glossar / Mining und Konsens

Sigop-Limit pro Block

Was ist das Sigop-Limit pro Block?
Das Sigop-Limit pro Block begrenzt jeden Bitcoin-Block auf 80.000 Einheiten an Kosten für Signaturvorgänge, ein Verifikationsbudget, das getrennt vom Budget von 4.000.000 Gewichtseinheiten gezählt wird.

Spezifiziert im BIP-141.

Das Prüfen von Signaturen kostet einen Node Zeit, deshalb misst der Konsens diese Arbeit in einem eigenen Budget ab, statt sie dem Blockspeicher anzulasten. BIP141 setzte den Zähler auf 80.000 Einheiten und bepreiste jeden Legacy-Signaturvorgang mit vier davon, womit eine ältere Obergrenze von 20.000 vervierfacht wurde. Eine normale Auszahlung mit einem einzigen Schlüssel oder eine Taproot-Auszahlung verbraucht eine Handvoll Einheiten, sodass die Obergrenze für fast alle unsichtbar ist, die Bitcoin bewegen.

So funktioniert es

Das Sigop-Limit pro Block ist eine laufende Summe, die Transaktion für Transaktion addiert wird, während ein Node einen Block verbindet, und ein Block, dessen Summe 80.000 überschreitet, ist ungültig.

Für seine Ermittlung wird nichts ausgeführt: Ein Node durchsucht die Script-Bytes und zählt die Opcodes, sodass eine Signaturprüfung in einem Zweig, den die Ausgabe nie nimmt, vollständig berechnet wird. Diese pessimistische Haltung ist beabsichtigt: Ein Node muss wissen, dass ein Block bezahlbar ist, bevor er irgendetwas verifiziert.

Drei Zählungen werden summiert, und sie fallen nicht alle auf dieselbe Transaktion. Die Legacy-Zählung liest die eigenen Eingabe-Scripts einer Transaktion und ihre eigenen Ausgabe-Scripts, multipliziert mit vier, sodass ein Vorgang, der in ein scriptPubKey geschrieben wird, demjenigen angelastet wird, der die Ausgabe erstellt, und nicht demjenigen, der sie später ausgibt. Die Pay-to-Script-Hash-Zählung liest das Redeem-Script, das eine ausgebende Eingabe offenlegt, ebenfalls multipliziert mit vier. Die Witness-Zählung zählt zum Nennwert: eine Einheit für eine P2WPKH-Eingabe, und ein P2WSH-Script wird genau so berechnet, wie es unter P2SH berechnet worden wäre.

Ein Unterschied zwischen diesen Prüfungen kostet echtes Geld. Die P2SH- und die Witness-Lesung wenden den Rabatt von BIP141 an, bei dem OP_CHECKMULTISIG mit vorangehendem OP_1 bis OP_16 als eins bis sechzehn statt als pauschal zwanzig zählt; die Legacy-Prüfung wendet ihn nie an. Eine Bare-Zwei-von-drei-Multisig-Ausgabe wird mit den vollen zwanzig Vorgängen berechnet, achtzig Einheiten des Budgets, und zwar bei ihrer Erstellung.

Tapscript verließ das Budget ganz. BIP342 nahm die Tapscript-Signaturvorgänge aus den blockweiten 80.000 heraus und gab jedem Script ein eigenes Kontingent: 50 Einheiten, zuzüglich der serialisierten Größe des Witness dieser Eingabe, vermindert um 50 jedes Mal, wenn ein Signatur-Opcode mit einer echten Signatur ausgeführt wird. Fünfzig ergibt sich aus vier Millionen Gewichtseinheiten geteilt durch achtzigtausend Sigops, das Verhältnis zwischen den beiden Obergrenzen.

Wo Sie es sehen

Die Relay-Richtlinie trifft auf das Sigop-Limit pro Block lange vor dem Konsens, über drei Bitcoin Core-Konstanten, die strenger sind als die Regel des Netzwerks.

Eine einzelne Transaktion darf nicht mehr als ein Fünftel des Blockbudgets beanspruchen, 16.000 Einheiten. Eine standardmäßige Pay-to-Script-Hash-Eingabe darf ein Redeem-Script offenlegen, das höchstens 15 Signaturvorgänge enthält. Eine dritte Zählung liest Nicht-Witness-Vorgänge dort, wo sie tatsächlich ausgeführt werden können, statt dort, wo sie stehen, und stoppt die Weitergabe oberhalb von 2.500 pro Transaktion; sie liest das ausgegebene scriptPubKey, das die blockweite Zählung bereits bei der Erstellung berechnet hat.

Das Limit erreicht auch Ihre Gebühr. Die Einstellung bytespersigop von Bitcoin Core, standardmäßig 20, ersetzt das Gewicht einer Transaktion durch den größeren Wert aus ihrem tatsächlichen Gewicht und ihren Sigop-Kosten multipliziert mit zwanzig, sodass eine Transaktion mit vielen Signaturvorgängen für ihre Größe teurer berechnet wird, als sie ist. Eine Bare-Multisig-Ausgabe zu erstellen ist der übliche Weg, sie auszulösen.

Miner treffen auf das Budget als zweite Einschränkung neben dem Gewicht, was BIP342 als Grund dafür angibt, Tapscript herauszunehmen: zwei Obergrenzen erschweren den Zusammenbau eines Blocks mehr als eine. Core reserviert 400 Einheiten für die Coinbase-Ausgaben, bevor eine Vorlage gefüllt wird.

Sigop-Limit pro Block vs. Blockgewicht

Das Blockgewicht zählt Daten und das Sigop-Limit pro Block zählt Verifikationsarbeit, und ein Block ist voll, sobald er eine der beiden Obergrenzen erreicht. Das Gewicht ist die Obergrenze, die ein gewöhnlicher Block zuerst erreicht, weil eine P2WPKH-Eingabe eine Einheit kostet und eine Taproot-Ausgabe überhaupt nichts hinzufügt, sodass das Sigop-Budget das Ergebnis nur bei einem Block entscheidet, der mit Script im alten Stil beladen ist. Teilen Sie eine Obergrenze durch die andere, erhalten Sie 50 Gewichtseinheiten pro Signaturvorgang, das Verhältnis, das BIP342 wiederverwendete, um das Tapscript-Budget zu bepreisen, und das, was im Protokoll einem Wechselkurs zwischen Bytes und Signaturprüfungen am nächsten kommt.

Nicht zu verwechseln mit

Häufig gestellte Fragen

Warum beträgt das Sigop-Limit pro Block 80.000?

Weil BIP141 die ältere Regel neu skalierte, statt sie zu ersetzen. Die Obergrenze vor SegWit lag bei 20.000 Signaturvorgängen pro Block, und BIP141 multiplizierte sowohl die Zählung als auch die Obergrenze mit vier, wodurch ein Block mit Legacy-Scripts genau derselben Einschränkung unterliegt wie zuvor, was mit dazu beitrug, dass die Änderung als Soft Fork eingeführt werden konnte.

Zählen Taproot-Ausgaben gegen das Sigop-Limit pro Block?

Nein. BIP342 nahm die Tapscript-Signaturvorgänge aus den blockweiten 80.000 heraus und gab jedem Script stattdessen ein eigenes Budget: 50, zuzüglich der serialisierten Größe des Witness dieser Eingabe, vermindert um 50 jedes Mal, wenn ein Signatur-Opcode mit einer nicht leeren Signatur ausgeführt wird.

Kann das Sigop-Limit pro Block beeinflussen, was ich für das Bewegen von Bitcoin zahle?

Nur wenn Ihre Transaktion für ihre Größe ungewöhnlich viele Signaturen enthält, was für die meisten Menschen bedeutet, eine Bare-Multisig-Ausgabe zu erstellen statt sie auszugeben. Der Wert bytespersigop von Bitcoin Core in Höhe von 20 bewertet eine Transaktion mit dem größeren Wert aus ihrem tatsächlichen Gewicht und ihren Sigop-Kosten mal 20, sodass eine normale Ausgabe mit einem einzelnen Schlüssel oder eine Taproot-Ausgabe nicht betroffen ist.

Verbraucht das Ausgeben einer alten Multisig-Ausgabe einen Teil des Sigop-Budgets pro Block?

Nur wenn die Ausgabe in einen Script-Hash eingebettet war. Sigops in einem Pay-to-Script-Hash-Redeem-Script oder einem P2WSH-Witness-Script werden der Transaktion angelastet, die sie ausgibt, während Sigops, die direkt in einem Bare-Multisig-scriptPubKey stehen, bereits der Transaktion angelastet wurden, die die Ausgabe erstellt hat, sodass das Ausgeben dieser Ausgabe nichts hinzufügt.

Weiterlesen

Verwandte Begriffe

Mehr zum Thema Mining und Konsens

Diese Seite auf Englisch lesen