So erstellen Sie eine gültige unsignierte Transaktion

Wie kann ich eine gültige unsignierte Transaktion erstellen, die mit diesen Adressen gesendet und abgebaut werden kann?

Könnte jemand die Rohtransaktion erstellen und mir zeigen?

Absenderadresse: 1NsRUK6vmPbtQa8sSjeXVxeYQiGCGNi6W3

Empfängeradresse: 37KSBUjixDYxmgmTdepb79aso69vPZrLu2

Hinweis: Dies sind beide meine Adressen und ihre Salden sind 0.

Antworten (1)

So funktioniert Bitcoin nicht.

Bitcoin verwendet weder ein Kontensystem noch Adressen auf Protokollebene. Bitcoin ausgeben bedeutet, dass Sie von einer Transaktionsausgabe ausgeben. Wenn es keine verfügbare Transaktionsausgabe gibt, aus der Sie Ausgaben tätigen können, können Sie keine Transaktion erstellen. Bei Adressen mit einem Saldo von 0 kann also keine gültige Transaktion erstellt werden.

Als nächstes erfordert die von Ihnen angegebene "Sendeadresse" eine digitale Signatur, um damit verbundene Ausgaben ausgeben zu können. Dies liegt daran, dass dieser Adresstyp Wallets mitteilt, dass eine Ausgabe erstellt werden soll, die die Form hat, OP_DUP OP_HASH160 <hash> OP_EQUALVERIFY OP_CHECKSIGin der die Adresse codiert <hash>und der Adresstyp die anderen Opcodes angibt. Sie können also keine Ausgaben ausgeben, die dieser Adresse zugeordnet sind, ohne eine gültige digitale Signatur bereitstellen zu können, die dem öffentlichen Schlüssel entspricht, der gehasht wird <hash>.

Was Sie tun könnten, ist eine Transaktionsausgabe, deren Skript so etwas wie OP_DUP OP_HASH160 <hash> OP_EQUAL. Dies erfordert keine Signatur, aber ein solches Skript, obwohl es mit der bereitgestellten Adresse erstellt werden kann, entspricht nicht dieser Adresse, da es nicht den Aufbau hat, den der Adresstyp angibt.

Daher ist es unmöglich, eine solche gültige unsignierte Transaktion zu erstellen, weil 1) es keine Ausgabe zum Ausgeben gibt und 2) die Adresse eine Signatur erfordert, um von damit verbundenen Ausgaben auszugeben.


Ein solches signaturloses Skript, wie ich es beschrieben habe, entspricht keiner Adresse; Es gibt keinen Adresstyp, der dies angibt.

Das Ausgabeskript würde wie folgt aussehen:

76a914ef0ffa5f1cc59bed17cf4e35ae9cbf396cddf17088

Eine Transaktionsausgabe aus diesem Skript würde folgendermaßen aussehen:

0200000001deadbeef000000000000000000000000deadbeef00000000000000000000000000000000222103061e97605659c9dc77ed437cbc345ec41633888ae3b2c75fdd532db789cc476fffffffff01000000000000000016a914ef0ffa5f1cc59bed17cf4e35ae9cbf396cddf1708700000000
Könnten Sie also bitte ein Beispiel für das Transaktionsausgabeskript und den Adresstyp sowie eine solche Transaktion in Hex angeben?
Wie was? Das von mir bereitgestellte Beispielskript, das keine Signatur erfordert?
ja sowie ein Beispiel, wie die Transaktion in Hex aussehen würde und ein Beispiel für den Adresstyp,
Ich habe die Antwort mit einem Beispiel aktualisiert. Beachten Sie, dass das Beispiel nicht wirklich von vorhandenen Ausgaben ausgibt.
Aber wenn Sie mit einem solchen Ausgabeskript eine p2sh-Transaktion mit der Skriptsig als OP_TRUE erstellen, wäre das nicht möglich?
Ja, das wäre möglich, aber auch völlig unabhängig von den von Ihnen angegebenen Adressen.
Was würde also passieren, wenn Sie die Operationscodes eines utxo ändern, damit es ohne Signatur ausgegeben werden kann?
Sie können die Opcodes eines vorhandenen UTXO nicht ändern. Das Ändern eines UTXO erfordert das Ändern der Transaktion, die das UTXO enthält, und das erneute Mining des Blocks, der diese Transaktion enthält, UND aller darauf folgenden Blöcke. Es ist für jemanden unmöglich, dies zu tun, wenn er nicht über die privaten Schlüssel verfügt, die an der Transaktion beteiligt sind, die auch das UTXO erstellt hat.