Glossar / Transaktionen und Gebühren
Outpoint
- Was ist ein Outpoint?
- Ein Outpoint ist der 36 Byte lange Zeiger, der genau eine Transaktionsausgabe identifiziert, indem er die 32 Byte lange ID der Transaktion, die sie erzeugt hat, mit dem 4 Byte langen Index ihrer Position kombiniert.
Bitcoin hat keine Kontonummern, deshalb muss jeder Ausgabevorgang genau angeben, welche Coin ausgegeben wird. Für Menschen geschrieben sieht der Zeiger aus wie eine Transaktions-ID, ein Doppelpunkt und eine Zahl, und er dient als Primärschlüssel der gesamten Datenbank nicht ausgegebener Ausgaben, die jeder Full Node führt. Wenn zwei Transaktionen jemals denselben Outpoint nennen, kann nur eine von ihnen gültig sein, und genau diese eine Regel verhindert, dass eine Coin zweimal ausgegeben wird.
So funktioniert es
Der Outpoint steht am Anfang jeder Transaktionseingabe, und er ist das Erste, was ein Node nachschlägt, wenn geprüft wird, ob ein Ausgabevorgang erlaubt ist.
In der serialisierten Form sind es zwei Felder ohne Trennzeichen: 32 Byte Transaktionshash, dann ein 4 Byte langer Index im Little-Endian-Format. Der Hash wird in interner Byte-Reihenfolge geschrieben, also umgekehrt zur Reihenfolge, die Sie in einem Block-Explorer sehen, sodass eine rohe Transaktion in Hexadezimaldarstellung eine Transaktions-ID rückwärts geschrieben zu referenzieren scheint. Das verwirrt jeden, der zum ersten Mal rohes Hex liest, und ist reine Anzeigekonvention, kein Unterschied in den Daten.
Indizes zählen ab null. Die erste Ausgabe einer Transaktion ist Index 0, die zweite ist Index 1, und eine Coin, die mit :2 endet, ist die dritte Ausgabe. Das Feld ist 4 Byte lang, die theoretische Obergrenze ist also 4.294.967.295, der sich keine echte Transaktion nähert.
Ein Wert ist reserviert. Eine Coinbase-Transaktion, die den Miner bezahlt, hat eine einzige Eingabe, deren Outpoint aus 32 Nullbytes mit einem Index aus lauter Einsen, 0xffffffff, besteht. Diese Kombination zeigt auf nichts und signalisiert, dass diese Eingabe Wert erzeugt statt ihn zu verschieben.
Die Einmaligkeit musste durch eine Regel erzwungen werden statt vorausgesetzt zu werden. Zwei Coinbase-Transaktionen mit identischem Inhalt würden identische IDs und damit doppelte Outpoints erzeugen, was in der frühen Geschichte von Bitcoin zweimal geschah. BIP30 verbot das Muster direkt, und BIP34 verlangte dann, dass jede Coinbase die Blockhöhe in ihrem Eingabeskript enthält, was unterschiedliche Inhalte garantiert. BIP34 wurde ab Block 227.931 im März 2013 durchgesetzt.
Wo Sie ihn sehen
Der Outpoint ist die Kennung, mit der Sie umgehen, wann immer Sie präzise von einer bestimmten Coin sprechen statt von einem Saldo.
Die Coin-Control-Bildschirme von Wallets listen Bestände als Transaktions-ID und Index auf. Die RPC-Schnittstelle von Bitcoin Core nimmt die beiden Felder als Paar: listunspent gibt sie zurück, gettxout schlägt einen nach, und createrawtransaction erwartet sie. Lightning verwendet den Outpoint der Finanzierungstransaktion als dauerhaften Namen eines Kanals, weshalb Kanal-IDs in Node-Software wie ein Hash mit einer kleinen Zahl dahinter aussehen.
Er ist auch das Richtige, das Sie in einem Streitfall angeben. Eine Adresse kann Dutzende Male bezahlt worden sein und eine Transaktion kann Dutzende Ausgaben haben, aber ein Outpoint benennt eine Zahlung eines Betrags zu einem Zeitpunkt, ohne Mehrdeutigkeit, über die man streiten könnte. Wenn eine Börse Sie bittet, eine bestimmte Einzahlung nachzuweisen, ist dies die Genauigkeit, die das Gespräch beendet.
Outpoint vs. Ausgabeindex
Der Ausgabeindex ist ein Feld innerhalb eines Outpoints, kein kürzerer Name dafür. Für sich allein trägt ein Index überhaupt keine Information, denn Dutzende Millionen Transaktionen haben eine Ausgabe an Index 0, und die Zahl sagt nichts darüber, welche gemeint ist. Die Verwechslung kommt von den Oberflächen der Block-Explorer, die den Index "vout" nennen und ihn prominent anzeigen, sodass Leute anfangen, den ganzen Zeiger vout zu nennen. Halten Sie beides auseinander, wenn Sie etwas notieren: Die Transaktions-ID sagt, welche Transaktion, und der Index sagt, welche Ausgabe darin, und nur beide zusammen identifizieren eine Coin.