Betrachten wir 3 mögliche Transaktionen:
Tx1 ein Ausgangswert ist negativ
Tx2 a sigScript ist leer
Tx3 ein scriptPubKey ist leer
Ist es möglich, dass diese Transaktionen Konsensregeln erfüllen (können in einem Block abgebaut werden)? Sind sie alle gemäß den Standardisierungs-/Richtlinienregeln nicht standardisiert?
Der Ausgangswert von Tx1 ist negativ
Definitiv nicht. ( Codebasis 2015 , Codebasis 2022 )
Tx2-SigScript ist leer
Ja, solange das Skript als wahr ausgewertet wird.
Tx3 scriptPubKey ist leer
Ja, der scriptPubKey wird nicht validiert.
Tx2 und Tx3 können beide von jedem im Netzwerk ausgegeben werden, andere Benutzer werden versuchen, es sofort auszugeben, und Bergleute könnten versuchen, es unter Ihnen herauszugreifen, selbst wenn Sie die erste Ausgabe mit einer hohen Gebühr tätigen .
Um Claris' Antwort etwas hinzuzufügen, das mich in dem leeren scriptPubKey-Fall verwirrte, der mir diese Woche im IRC erklärt wurde.
Keiner der bisher explizit definierten Ausgabetypen (P2PK, P2PKH, P2SH, P2WPKH, P2WSH, P2SH-P2WPKH, P2SH-P2WSH, P2TR) kann wie definiert einen leeren scriptPubKey enthalten. Eine Bitcoin-Transaktion muss jedoch keinen explizit definierten Ausgabetyp haben. Konsensregeln beziehen sich nur auf Skripte und nicht auf Ausgabetypen. Wenn Konsensregeln ausschließlich in Bezug auf Ausgabetypen definiert wären, wäre es tatsächlich nicht möglich gewesen, SegWit und Taproot als Soft Forks zu verwenden.
Der zugehörige Bitcoin Core-Code (EvalScript gibt true zurück, wenn scriptPubKey leer ist) ist hier .