Zum Inhalt springen
buybitcoinsmart

Glossar / Transaktionen und Gebühren

SIGHASH_ANYONECANPAY

Was ist SIGHASH_ANYONECANPAY?
SIGHASH_ANYONECANPAY ist ein Modifikator, der jede andere Eingabe aus dem Digest entfernt, sodass eine Signatur nur die eine Coin abdeckt, die sie ausgibt, und andere sich der Transaktion frei anschließen können.

Er ist kein eigener Modus. Das Flag hat den Wert 128 und wird einem der drei Basismodi hinzugefügt, woraus 129, 130 oder 131 entsteht, und jede Kombination beantwortet eine andere Frage dazu, was der Unterzeichner Fremden ändern lassen will. Crowdfunding und Ordinals-Marktplätze sind die beiden Bereiche, in denen er sich bewährt.

So funktioniert es

Das Setzen des Modifikators schrumpft die Eingabeseite des Digests auf einen einzigen Eintrag: den ausgegebenen Outpoint, seine Sequenznummer und das Skript, das er entsperrt.

Jede andere Eingabe verschwindet aus der Berechnung. Ein Unterzeichner, der unter dieser Regel arbeitet, weiß weder, wie viele andere Personen Coins beigesteuert haben, in welcher Reihenfolge sie das getan haben, noch, ob später weitere hinzukommen, und das spätere Hinzufügen einer Eingabe kann eine früher erstellte Signatur nicht ungültig machen. Diese Eigenschaft ist die ganze Funktion, und sie macht Signaturen sammelbar: Mehrere Personen können getrennt voneinander, zu verschiedenen Zeiten und auf verschiedenen Rechnern signieren, und jemand kann die Teile zu einer gültigen Transaktion zusammenführen.

Der Basismodus bestimmt weiterhin die Ausgabeseite, und die drei Kombinationen verhalten sich sehr unterschiedlich.

  • 129, der Modifikator mit der Regel für alle Ausgaben, bedeutet „meine Coin geht hinein und die Auszahlungen müssen genau diese Liste sein“. Eingaben dürfen hinzugefügt werden, Ausgaben nicht.
  • 130, der Modifikator mit der Regel ohne Ausgaben, ist die schwächste Signatur, die das Protokoll zulässt: eine Coin hinein, und keinerlei Aussage darüber, wohin etwas gelangt.
  • 131, der Modifikator mit der Regel für eine einzelne Ausgabe, bedeutet „meine Coin geht hinein und ich muss die Ausgabe an meinem Index erhalten“. Alles andere bleibt offen.

Wo er auftritt

Zwei Konstruktionen nutzen ihn ernsthaft, und beide beruhen darauf, dass Fremde Gelder hinzufügen können, ohne das bereits Signierte zu brechen.

Die erste ist der Assurance-Vertrag, die Bitcoin-Version eines Crowdfunding-Versprechens. Jeder Unterstützer signiert den Wert 129 über eine feste Ausgabeliste, die die Auszahlung des Projekts enthält, und jedes Versprechen ist eine Eingabe. Die Transaktion wird erst gültig, wenn die zugesagten Eingaben die Ausgaben decken, sodass das Finanzierungsziel sich selbst durch Arithmetik durchsetzt statt durch einen Treuhänder, und eine Kampagne, die ihr Ziel verfehlt, erzeugt einfach nie eine gültige Transaktion. Das Zusagen kostet nichts und der Rückzug kostet nichts, weil die Coins sich nie bewegen.

Die zweite ist das vorab signierte Marktplatzangebot. Ein Verkäufer signiert den Wert 131 über seine eigene Inschrift- oder Rune-Ausgabe und den gewünschten Preis, veröffentlicht das Ergebnis als teilweise signierte Transaktion, und jeder Käufer vervollständigt sie mit seinen eigenen Eingaben, seinem eigenen Wechselgeld und einer Gebühr. Kein Listing-Vertrag, kein Verwahrer und keine Gegenpartei, der man für die Abwicklung selbst vertrauen müsste.

Eine Warnung gehört dazu. Ein Wert 130, der in einem öffentlichen Mempool liegt, ist kostenloses Geld für den, der ihn zuerst aufnimmt, und nur ein Bit trennt ihn von den sicheren Kombinationen. Wenn Sie Signiercode prüfen, stellen Sie sicher, dass der Basismodus eine fest im Code stehende Konstante ist und dass der Modifikator der einzige Teil ist, den etwas variieren darf.

Das Flag-Byte lesen

Teilen Sie das Sighash-Flag-Byte in seine beiden Hälften, und es ist nicht mehr kryptisch. Die unteren Bits ergeben den Basismodus: 1 für alle Ausgaben, 2 für keine, 3 für eine einzelne passende Ausgabe. Das hohe Bit mit dem Wert 128 ist der Modifikator. Eine Signatur, die auf 81 endet, deckt also alles außer den anderen Eingaben ab, 83 ist die Marktplatzregel, und ein einfaches 01 ohne Modifikator ist die gewöhnliche Zahlung, die Ihre eigene Wallet bei jeder Ausgabe erzeugt.

Nicht zu verwechseln mit

Häufig gestellte Fragen

Erlaubt SIGHASH_ANYONECANPAY, dass irgendjemand meine Coin ausgibt?

Nein. Die Signatur autorisiert weiterhin nur die eine Coin, die sie benennt, und nur unter der Ausgaberegel, die zusammen mit ihr gewählt wurde. Was sie erlaubt, ist, dass andere Personen ihre eigenen Eingaben derselben Transaktion hinzufügen, ohne Ihre Signatur ungültig zu machen.

Wo begegnet mir dieses Flag tatsächlich?

In vorab signierten Marktplatzangeboten für Ordinals und Runes, die es mit der Regel für eine einzelne Ausgabe kombinieren, und in Assurance-Verträgen nach Art des Crowdfunding. Gewöhnliche Zahlungen nutzen es nie, und keine Wallet für Endkunden bietet diese Einstellung an.

Weiterlesen

Verwandte Begriffe

Mehr zum Thema Transaktionen und Gebühren

Diese Seite auf Englisch lesen