From 1e431879afd53be71a3bafe29ddae93837337f40 Mon Sep 17 00:00:00 2001 From: Ferdinando Ametrano Date: Mon, 7 Sep 2026 18:01:00 +0200 Subject: [PATCH] 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. --- bip-0370.mediawiki | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/bip-0370.mediawiki b/bip-0370.mediawiki index 0adb6af3..93b56e88 100644 --- a/bip-0370.mediawiki +++ b/bip-0370.mediawiki @@ -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 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=== For PSBTv2s, the transaction is constructed using the PSBTv2 fields.