Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion sweepbatcher/sweep_batch.go
Original file line number Diff line number Diff line change
Expand Up @@ -1707,13 +1707,20 @@ func (b *batch) monitorSpend(ctx context.Context, primarySweep sweep) error {

// monitorConfirmations monitors the batch transaction for confirmations.
func (b *batch) monitorConfirmations(ctx context.Context) error {
// Find initiationHeight.
primarySweep, ok := b.sweeps[b.primarySweepID]
if !ok {
return fmt.Errorf("can't find primarySweep")
}

reorgChan := make(chan struct{})

confCtx, cancel := context.WithCancel(ctx)

confChan, errChan, err := b.chainNotifier.RegisterConfirmationsNtfn(
confCtx, b.batchTxid, b.batchPkScript, batchConfHeight,
b.currentHeight, lndclient.WithReOrgChan(reorgChan),
primarySweep.initiationHeight,
lndclient.WithReOrgChan(reorgChan),
)
if err != nil {
cancel()
Expand Down
18 changes: 12 additions & 6 deletions sweepbatcher/sweep_batcher_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -781,12 +781,15 @@ func testSweepBatcherSimpleLifecycle(t *testing.T, store testStore,
Notifier: &dummyNotifier,
}

const initiationHeight = 550

swap1 := &loopdb.LoopOutContract{
SwapContract: loopdb.SwapContract{
CltvExpiry: 111,
AmountRequested: 111,
ProtocolVersion: loopdb.ProtocolVersionMuSig2,
HtlcKeys: htlcKeys,
CltvExpiry: 111,
AmountRequested: 111,
ProtocolVersion: loopdb.ProtocolVersionMuSig2,
HtlcKeys: htlcKeys,
InitiationHeight: initiationHeight,
},

DestAddr: destAddr,
Expand Down Expand Up @@ -871,14 +874,17 @@ func testSweepBatcherSimpleLifecycle(t *testing.T, store testStore,
SpendingTx: spendingTx,
SpenderTxHash: &spendingTxHash,
SpenderInputIndex: 0,
SpendingHeight: 601,
}

// We notify the spend.
lnd.SpendChannel <- spendDetail

// After receiving the spend, the batch is now monitoring for confs.
<-lnd.RegisterConfChannel
confReg := <-lnd.RegisterConfChannel

// Make sure the confirmation has proper height hint. It should pass
// the swap initiation height, not the current height.
require.Equal(t, int32(initiationHeight), confReg.HeightHint)

// The batch should eventually read the spend notification and progress
// its state to closed.
Expand Down