multi: use prev output fetcher where possible

This commit is contained in:
Oliver Gugger committed 2022-03-24 18:02:37 +01:00
1 parent 72c9582b85
commit f130eddb92
13 files changed
+255 -44

No files matched your search

+3 -1
View File
@@ -1623,7 +1623,9 @@ func (i *testInput) RequiredTxOut() *wire.TxOut {
// encode the spending outpoint and the tx input index as part of the returned
// witness.
func (i *testInput) CraftInputScript(_ input.Signer, txn *wire.MsgTx,
hashCache *txscript.TxSigHashes, txinIdx int) (*input.Script, error) {
hashCache *txscript.TxSigHashes,
prevOutputFetcher txscript.PrevOutputFetcher,
txinIdx int) (*input.Script, error) {
// We'll encode the outpoint in the witness, so we can assert that the
// expected input was signed at the correct index.
+8 -2
View File
@@ -7,6 +7,7 @@ import (
"github.com/btcsuite/btcd/blockchain"
"github.com/btcsuite/btcd/btcutil"
"github.com/btcsuite/btcd/txscript"
"github.com/btcsuite/btcd/wire"
"github.com/lightningnetwork/lnd/input"
"github.com/lightningnetwork/lnd/lnwallet"
@@ -263,13 +264,18 @@ func createSweepTx(inputs []input.Input, outputs []*wire.TxOut,
return nil, err
}
hashCache := input.NewTxSigHashesV0Only(sweepTx)
prevInputFetcher, err := input.MultiPrevOutFetcher(inputs)
if err != nil {
return nil, fmt.Errorf("error creating prev input fetcher "+
"for hash cache: %v", err)
}
hashCache := txscript.NewTxSigHashes(sweepTx, prevInputFetcher)
// With all the inputs in place, use each output's unique input script
// function to generate the final witness required for spending.
addInputScript := func(idx int, tso input.Input) error {
inputScript, err := tso.CraftInputScript(
signer, sweepTx, hashCache, idx,
signer, sweepTx, hashCache, prevInputFetcher, idx,
)
if err != nil {
return err