multi: query circuit map inside contractcourt

This commit adds a new config method `QueryIncomingCircuit` that can be
used to query the payment's incoming circuit for giving its outgoing
circuit key.
This commit is contained in:
yyforyongyu
2024-04-04 11:10:03 +08:00
parent 4134b1c00a
commit 07466c4f8c
10 changed files with 130 additions and 44 deletions

View File

@@ -1134,6 +1134,7 @@ func newServer(cfg *Config, listenAddrs []net.Addr,
},
)
//nolint:lll
s.chainArb = contractcourt.NewChainArbitrator(contractcourt.ChainArbitratorConfig{
ChainHash: *s.cfg.ActiveNetParams.GenesisHash,
IncomingBroadcastDelta: lncfg.DefaultIncomingBroadcastDelta,
@@ -1224,10 +1225,26 @@ func newServer(cfg *Config, listenAddrs []net.Addr,
PaymentsExpirationGracePeriod: cfg.PaymentsExpirationGracePeriod,
IsForwardedHTLC: s.htlcSwitch.IsForwardedHTLC,
Clock: clock.NewDefaultClock(),
SubscribeBreachComplete: s.breachArbitrator.SubscribeBreachComplete, //nolint:lll
PutFinalHtlcOutcome: s.chanStateDB.PutOnchainFinalHtlcOutcome, //nolint: lll
SubscribeBreachComplete: s.breachArbitrator.SubscribeBreachComplete,
PutFinalHtlcOutcome: s.chanStateDB.PutOnchainFinalHtlcOutcome,
HtlcNotifier: s.htlcNotifier,
Budget: *s.cfg.Sweeper.Budget,
// TODO(yy): remove this hack once PaymentCircuit is interfaced.
QueryIncomingCircuit: func(
circuit models.CircuitKey) *models.CircuitKey {
// Get the circuit map.
circuits := s.htlcSwitch.CircuitLookup()
// Lookup the outgoing circuit.
pc := circuits.LookupOpenCircuit(circuit)
if pc == nil {
return nil
}
return &pc.Incoming
},
}, dbs.ChanStateDB)
// Select the configuration and funding parameters for Bitcoin.