From ec7dc031c9b391a023be4ee72ed7e8a0448d3313 Mon Sep 17 00:00:00 2001 From: George Tsagkarelis Date: Thu, 2 May 2024 16:52:47 +0200 Subject: [PATCH] htlcswitch: expose custom channel blob from link --- htlcswitch/interfaces.go | 11 +++++++++++ htlcswitch/link.go | 13 +++++++++++++ htlcswitch/mock.go | 14 ++++++++++++++ 3 files changed, 38 insertions(+) diff --git a/htlcswitch/interfaces.go b/htlcswitch/interfaces.go index eda85cfb0..0bada0d10 100644 --- a/htlcswitch/interfaces.go +++ b/htlcswitch/interfaces.go @@ -12,6 +12,7 @@ import ( "github.com/lightningnetwork/lnd/lnwallet/chainfee" "github.com/lightningnetwork/lnd/lnwire" "github.com/lightningnetwork/lnd/record" + "github.com/lightningnetwork/lnd/tlv" ) // InvoiceDatabase is an interface which represents the persistent subsystem @@ -271,6 +272,16 @@ type ChannelLink interface { // have buffered messages. AttachMailBox(MailBox) + // FundingCustomBlob returns the custom funding blob of the channel that + // this link is associated with. The funding blob represents static + // information about the channel that was created at channel funding + // time. + FundingCustomBlob() fn.Option[tlv.Blob] + + // CommitmentCustomBlob returns the custom blob of the current local + // commitment of the channel that this link is associated with. + CommitmentCustomBlob() fn.Option[tlv.Blob] + // Start/Stop are used to initiate the start/stop of the channel link // functioning. Start() error diff --git a/htlcswitch/link.go b/htlcswitch/link.go index 8eca0f004..ab4284d62 100644 --- a/htlcswitch/link.go +++ b/htlcswitch/link.go @@ -3775,3 +3775,16 @@ func (l *channelLink) fail(linkErr LinkFailureError, l.failed = true l.cfg.OnChannelFailure(l.ChanID(), l.ShortChanID(), linkErr) } + +// FundingCustomBlob returns the custom funding blob of the channel that this +// link is associated with. The funding blob represents static information about +// the channel that was created at channel funding time. +func (l *channelLink) FundingCustomBlob() fn.Option[tlv.Blob] { + return l.channel.State().CustomBlob +} + +// CommitmentCustomBlob returns the custom blob of the current local commitment +// of the channel that this link is associated with. +func (l *channelLink) CommitmentCustomBlob() fn.Option[tlv.Blob] { + return l.channel.LocalCommitmentBlob() +} diff --git a/htlcswitch/mock.go b/htlcswitch/mock.go index a0f38c74f..c56b47548 100644 --- a/htlcswitch/mock.go +++ b/htlcswitch/mock.go @@ -27,6 +27,7 @@ import ( "github.com/lightningnetwork/lnd/channeldb/models" "github.com/lightningnetwork/lnd/clock" "github.com/lightningnetwork/lnd/contractcourt" + "github.com/lightningnetwork/lnd/fn" "github.com/lightningnetwork/lnd/htlcswitch/hop" "github.com/lightningnetwork/lnd/invoices" "github.com/lightningnetwork/lnd/lnpeer" @@ -35,6 +36,7 @@ import ( "github.com/lightningnetwork/lnd/lnwallet/chainfee" "github.com/lightningnetwork/lnd/lnwire" "github.com/lightningnetwork/lnd/ticker" + "github.com/lightningnetwork/lnd/tlv" ) func isAlias(scid lnwire.ShortChannelID) bool { @@ -912,6 +914,10 @@ func (f *mockChannelLink) ChannelPoint() wire.OutPoint { return wire.OutPoint{} } +func (f *mockChannelLink) ChannelCustomBlob() fn.Option[tlv.Blob] { + return fn.Option[tlv.Blob]{} +} + func (f *mockChannelLink) Stop() {} func (f *mockChannelLink) EligibleToForward() bool { return f.eligible } func (f *mockChannelLink) MayAddOutgoingHtlc(lnwire.MilliSatoshi) error { return nil } @@ -942,6 +948,14 @@ func (f *mockChannelLink) OnCommitOnce(LinkDirection, func()) { // TODO(proofofkeags): Implement } +func (f *mockChannelLink) FundingCustomBlob() fn.Option[tlv.Blob] { + return fn.None[tlv.Blob]() +} + +func (f *mockChannelLink) CommitmentCustomBlob() fn.Option[tlv.Blob] { + return fn.None[tlv.Blob]() +} + var _ ChannelLink = (*mockChannelLink)(nil) func newDB() (*channeldb.DB, func(), error) {