mirror of
https://github.com/bitcoin/bips.git
synced 2026-10-19 19:29:18 +00:00
bip-0370: say what the Input Finalizer keeps in a version 2 input
BIP 174 tells the Input Finalizer to clear all other data except the UTXO and unknown fields from a finalized input. It was written when the unsigned transaction was a global field. PSBTv2 moves the data that defines the input into the input map, and a finalizer that follows the sentence literally removes it: without PSBT_IN_PREVIOUS_TXID or PSBT_IN_OUTPUT_INDEX the result is invalid, and without PSBT_IN_SEQUENCE and the locktime fields the Transaction Extractor builds a different transaction. BIP 370 amends Creator, Updater, Signer and Transaction Extractor for PSBTv2, adds the Constructor, and says nothing about the Input Finalizer. Add the section: the five fields are kept. Bitcoin Core does this today: at 19b0ff2fa0, PSBTInput::Serialize in src/psbt.h writes them for every PSBTv2 input, finalized or not.
This commit is contained in:
1 file changed
+5
@@ -278,6 +278,11 @@ If the Signer added a signature that does not use SIGHASH_ANYONECANPAY, the Inpu
|
|||||||
If the Signer added a signature that does not use SIGHASH_NONE, the Outputs Modifiable flag must be set to False.
|
If the Signer added a signature that does not use SIGHASH_NONE, the Outputs Modifiable flag must be set to False.
|
||||||
If the Signer added a signature that uses SIGHASH_SINGLE, the Has SIGHASH_SINGLE flag must be set to True.
|
If the Signer added a signature that uses SIGHASH_SINGLE, the Has SIGHASH_SINGLE flag must be set to True.
|
||||||
|
|
||||||
|
===Input Finalizer===
|
||||||
|
|
||||||
|
For PSBTv2s, when the Input Finalizer clears a finalized input's fields as BIP 174 asks, it must keep PSBT_IN_PREVIOUS_TXID, PSBT_IN_OUTPUT_INDEX, PSBT_IN_SEQUENCE, PSBT_IN_REQUIRED_TIME_LOCKTIME and PSBT_IN_REQUIRED_HEIGHT_LOCKTIME.
|
||||||
|
The Transaction Extractor constructs the transaction from these fields, and an input missing either PSBT_IN_PREVIOUS_TXID or PSBT_IN_OUTPUT_INDEX is invalid.
|
||||||
|
|
||||||
===Transaction Extractor===
|
===Transaction Extractor===
|
||||||
|
|
||||||
For PSBTv2s, the transaction is constructed using the PSBTv2 fields.
|
For PSBTv2s, the transaction is constructed using the PSBTv2 fields.
|
||||||
|
|||||||
Reference in new issue
Block a user