mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-08-30 07:35:07 +02:00
lnwallet+sweep: extend the WitnessGenerator type to return an InputScript
In this commit, we extend the WitnessGenerator type to now return an InputScript. This allows it to be more encompassing, as now callers can expect a sigScript to be populated if the input being swept requires a sigScript field. Along the way, we've also renamed input.BuildWitness to input.CraftInputScript. We also take a step towards allowing the sweeper to sweep transactions for n2pwkh outputs. We do so by modifying the BuiltWitness method to instead return an InputScript. Additionally, when populating inputs if a sigScript is present, it will now be populated.
This commit is contained in:
@@ -216,25 +216,29 @@ func createSweepTx(inputs []Input, outputPkScript []byte,
|
||||
|
||||
hashCache := txscript.NewTxSigHashes(sweepTx)
|
||||
|
||||
// With all the inputs in place, use each output's unique witness
|
||||
// With all the inputs in place, use each output's unique input script
|
||||
// function to generate the final witness required for spending.
|
||||
addWitness := func(idx int, tso Input) error {
|
||||
witness, err := tso.BuildWitness(
|
||||
addInputScript := func(idx int, tso Input) error {
|
||||
inputScript, err := tso.CraftInputScript(
|
||||
signer, sweepTx, hashCache, idx,
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
sweepTx.TxIn[idx].Witness = witness
|
||||
sweepTx.TxIn[idx].Witness = inputScript.Witness
|
||||
|
||||
if len(inputScript.SigScript) != 0 {
|
||||
sweepTx.TxIn[idx].SignatureScript = inputScript.SigScript
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// Finally we'll attach a valid witness to each csv and cltv input
|
||||
// Finally we'll attach a valid input script to each csv and cltv input
|
||||
// within the sweeping transaction.
|
||||
for i, input := range inputs {
|
||||
if err := addWitness(i, input); err != nil {
|
||||
if err := addInputScript(i, input); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user