Skip to content

Commit

Permalink
insert channel directly after opening
Browse files Browse the repository at this point in the history
  • Loading branch information
JssDWt committed Feb 5, 2024
1 parent e0d3fab commit ecf4272
Show file tree
Hide file tree
Showing 5 changed files with 50 additions and 4 deletions.
20 changes: 20 additions & 0 deletions interceptor/intercept_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"github.com/breez/lspd/chain"
"github.com/breez/lspd/common"
"github.com/breez/lspd/config"
"github.com/breez/lspd/history"
"github.com/breez/lspd/lightning"
"github.com/breez/lspd/lsps0"
"github.com/breez/lspd/notifications"
Expand All @@ -20,9 +21,11 @@ import (
)

type Interceptor struct {
nodeid []byte
client lightning.Client
config *config.NodeConfig
store InterceptStore
historyStore history.Store
openingService common.OpeningService
feeEstimator chain.FeeEstimator
feeStrategy chain.FeeStrategy
Expand All @@ -34,15 +37,19 @@ func NewInterceptHandler(
client lightning.Client,
config *config.NodeConfig,
store InterceptStore,
historyStore history.Store,
openingService common.OpeningService,
feeEstimator chain.FeeEstimator,
feeStrategy chain.FeeStrategy,
notificationService *notifications.NotificationService,
) *Interceptor {
nodeid, _ := hex.DecodeString(config.NodePubkey)
return &Interceptor{
nodeid: nodeid,
client: client,
config: config,
store: store,
historyStore: historyStore,
openingService: openingService,
feeEstimator: feeEstimator,
feeStrategy: feeStrategy,
Expand Down Expand Up @@ -238,6 +245,19 @@ func (i *Interceptor) Intercept(req common.InterceptRequest) common.InterceptRes
scid = chanResult.ConfirmedScid
}

err = i.historyStore.UpdateChannels(context.TODO(), []*history.ChannelUpdate{{
NodeID: i.nodeid,
PeerId: destination,
AliasScid: chanResult.AliasScid,
ConfirmedScid: chanResult.ConfirmedScid,
ChannelPoint: channelPoint,
LastUpdate: time.Now(),
}})
if err != nil {
// Don't break here, this is not critical.
log.Printf("paymentHash: %s, failed to insert newly opened channel in history store. %v", reqPaymentHashStr, channelPoint.String())
}

useLegacyOnionBlob := slices.Contains(i.config.LegacyOnionTokens, token)
return common.InterceptResult{
Action: common.INTERCEPT_RESUME_WITH_ONION,
Expand Down
18 changes: 18 additions & 0 deletions lsps2/intercept_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,14 @@ import (

"github.com/breez/lspd/chain"
"github.com/breez/lspd/common"
"github.com/breez/lspd/history"
"github.com/breez/lspd/lightning"
"github.com/breez/lspd/lsps0"
"github.com/btcsuite/btcd/wire"
)

type InterceptorConfig struct {
NodeId []byte
AdditionalChannelCapacitySat uint64
MinConfs *uint32
TargetConf uint32
Expand All @@ -29,6 +31,7 @@ type InterceptorConfig struct {

type Interceptor struct {
store Lsps2Store
historyStore history.Store
openingService common.OpeningService
client lightning.Client
feeEstimator chain.FeeEstimator
Expand All @@ -43,6 +46,7 @@ type Interceptor struct {

func NewInterceptHandler(
store Lsps2Store,
historyStore history.Store,
openingService common.OpeningService,
client lightning.Client,
feeEstimator chain.FeeEstimator,
Expand All @@ -54,6 +58,7 @@ func NewInterceptHandler(

return &Interceptor{
store: store,
historyStore: historyStore,
openingService: openingService,
client: client,
feeEstimator: feeEstimator,
Expand Down Expand Up @@ -534,6 +539,19 @@ func (i *Interceptor) ensureChannelOpen(payment *paymentState) {
scid = chanResult.ConfirmedScid
}

err := i.historyStore.UpdateChannels(context.TODO(), []*history.ChannelUpdate{{
NodeID: i.config.NodeId,
PeerId: destination,
AliasScid: chanResult.AliasScid,
ConfirmedScid: chanResult.ConfirmedScid,
ChannelPoint: payment.registration.ChannelPoint,
LastUpdate: time.Now(),
}})
if err != nil {
// Don't break here, this is not critical.
log.Printf("failed to insert newly opened channel in history store. %v", payment.registration.ChannelPoint.String())
}

i.paymentChanOpened <- &paymentChanOpenedEvent{
paymentId: payment.id,
scid: *scid,
Expand Down
2 changes: 1 addition & 1 deletion lsps2/intercept_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ func setupInterceptor(
openingService = defaultopeningService()
}

i := NewInterceptHandler(store, openingService, client, f, config)
i := NewInterceptHandler(store, &mockHistoryStore{}, openingService, client, f, config)
go i.Start(ctx)
return i
}
Expand Down
7 changes: 7 additions & 0 deletions lsps2/mocks.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"github.com/GoWebProd/uuid7"
"github.com/breez/lspd/chain"
"github.com/breez/lspd/common"
"github.com/breez/lspd/history"
"github.com/breez/lspd/lightning"
"github.com/btcsuite/btcd/btcec/v2"
"github.com/btcsuite/btcd/wire"
Expand Down Expand Up @@ -96,6 +97,12 @@ func (s *mockLsps2Store) RemoveUnusedExpired(ctx context.Context, before time.Ti
return nil
}

type mockHistoryStore struct{}

func (s *mockHistoryStore) UpdateChannels(ctx context.Context, updates []*history.ChannelUpdate) error {
return nil
}

type mockLightningClient struct {
openResponses []*wire.OutPoint
openRequests []*lightning.OpenChannelRequest
Expand Down
7 changes: 4 additions & 3 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ func main() {
}

client.StartListeners()
interceptor := interceptor.NewInterceptHandler(client, node.NodeConfig, interceptStore, openingService, feeEstimator, feeStrategy, notificationService)
interceptor := interceptor.NewInterceptHandler(client, node.NodeConfig, interceptStore, historyStore, openingService, feeEstimator, feeStrategy, notificationService)
htlcInterceptor, err = lnd.NewLndHtlcInterceptor(node.NodeConfig, client, interceptor)
if err != nil {
log.Fatalf("failed to initialize LND interceptor: %v", err)
Expand All @@ -141,8 +141,9 @@ func main() {
log.Fatalf("failed to initialize CLN client: %v", err)
}

legacyHandler := interceptor.NewInterceptHandler(client, node.NodeConfig, interceptStore, openingService, feeEstimator, feeStrategy, notificationService)
lsps2Handler := lsps2.NewInterceptHandler(lsps2Store, openingService, client, feeEstimator, &lsps2.InterceptorConfig{
legacyHandler := interceptor.NewInterceptHandler(client, node.NodeConfig, interceptStore, historyStore, openingService, feeEstimator, feeStrategy, notificationService)
lsps2Handler := lsps2.NewInterceptHandler(lsps2Store, historyStore, openingService, client, feeEstimator, &lsps2.InterceptorConfig{
NodeId: node.NodeId,
AdditionalChannelCapacitySat: uint64(node.NodeConfig.AdditionalChannelCapacity),
MinConfs: node.NodeConfig.MinConfs,
TargetConf: node.NodeConfig.TargetConf,
Expand Down

0 comments on commit ecf4272

Please sign in to comment.