MCPcopy Create free account
hub / github.com/bitcoin/bitcoin / UpdatePSBTOutput

Function UpdatePSBTOutput

src/psbt.cpp:602–624  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

600}
601
602void UpdatePSBTOutput(const SigningProvider& provider, PartiallySignedTransaction& psbt, int index)
603{
604 std::optional<CMutableTransaction> unsigned_tx = psbt.GetUnsignedTx();
605 if (!unsigned_tx) {
606 return;
607 }
608 CMutableTransaction& tx = *unsigned_tx;
609 const CTxOut& out = tx.vout.at(index);
610 PSBTOutput& psbt_out = psbt.outputs.at(index);
611
612 // Fill a SignatureData with output info
613 SignatureData sigdata;
614 psbt_out.FillSignatureData(sigdata);
615
616 // Construct a would-be spend of this output, to update sigdata with.
617 // Note that ProduceSignature is used to fill in metadata (not actual signatures),
618 // so provider does not need to provide any private keys (it can be a HidingSigningProvider).
619 MutableTransactionSignatureCreator creator(tx, /*input_idx=*/0, out.nValue, {.sighash_type = SIGHASH_ALL});
620 ProduceSignature(provider, creator, out.scriptPubKey, sigdata);
621
622 // Put redeem_script, witness_script, key paths, into PSBTOutput.
623 psbt_out.FromSignatureData(sigdata);
624}
625
626std::optional<PrecomputedTransactionData> PrecomputePSBTData(const PartiallySignedTransaction& psbt)
627{

Callers 2

FillPSBTMethod · 0.85
ProcessPSBTFunction · 0.85

Calls 5

ProduceSignatureFunction · 0.85
GetUnsignedTxMethod · 0.80
FillSignatureDataMethod · 0.80
FromSignatureDataMethod · 0.80
atMethod · 0.45

Tested by

no test coverage detected