Skip to content

Commit caf93e0

Browse files
committed
tapchannel: update createAndSignSweepVpackets to be 2nd level aware
In this commit, we make sure to pass in the correct signDesc when we go to sign for a second level txn. For a 2nd level txn, we'll actually use the signDesc that's needed to generate the 2-of-2 multi-sig, instead of the one that we'd normally use to sweep.
1 parent 083382e commit caf93e0

File tree

1 file changed

+19
-3
lines changed

1 file changed

+19
-3
lines changed

tapchannel/aux_sweeper.go

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,7 @@ func (a *AuxSweeper) signSweepVpackets(vPackets []*tappsbt.VPacket,
431431
// createAndSignSweepVpackets creates vPackets that sweep the funds from the
432432
// channel to the wallet, and then signs them as well.
433433
func (a *AuxSweeper) createAndSignSweepVpackets(
434-
sweepInputs []*cmsg.AssetOutput, signDesc input.SignDescriptor,
434+
sweepInputs []*cmsg.AssetOutput, resReq lnwallet.ResolutionReq,
435435
sweepDesc lfn.Result[tapscriptSweepDesc],
436436
) lfn.Result[[]*tappsbt.VPacket] {
437437

@@ -443,7 +443,20 @@ func (a *AuxSweeper) createAndSignSweepVpackets(
443443
signPkts := func(vPkts []*tappsbt.VPacket,
444444
desc tapscriptSweepDesc) lfn.Result[[]*tappsbt.VPacket] {
445445

446-
err := a.signSweepVpackets(vPkts, signDesc, desc)
446+
// If this is a second level output, then we'll use the
447+
// specified aux sign desc, otherwise, we'll use the
448+
// normal one.
449+
signDesc := lfn.MapOption(
450+
func(aux lnwallet.AuxSigDesc) input.SignDescriptor {
451+
return aux.SignDetails.SignDesc
452+
},
453+
)(desc.auxSigInfo).UnwrapOr(resReq.SignDesc)
454+
455+
err := a.signSweepVpackets(
456+
vPkts, signDesc, desc.scriptTree.TapTweak(),
457+
desc.ctrlBlockBytes, desc.auxSigInfo,
458+
desc.secondLevelSigIndex,
459+
)
447460
if err != nil {
448461
return lfn.Err[[]*tappsbt.VPacket](err)
449462
}
@@ -452,7 +465,10 @@ func (a *AuxSweeper) createAndSignSweepVpackets(
452465
}
453466

454467
return lfn.AndThen2(
455-
a.createSweepVpackets(sweepInputs, sweepDesc), sweepDesc,
468+
a.createSweepVpackets(
469+
sweepInputs, sweepDesc, resReq,
470+
),
471+
sweepDesc,
456472
signPkts,
457473
)
458474
}

0 commit comments

Comments
 (0)