diff --git a/lnrpc/lightning.pb.go b/lnrpc/lightning.pb.go index c2ff05f3e..e270cc34f 100644 --- a/lnrpc/lightning.pb.go +++ b/lnrpc/lightning.pb.go @@ -5414,6 +5414,9 @@ type ChannelCloseSummary struct { AliasScids []uint64 `protobuf:"varint,14,rep,packed,name=alias_scids,json=aliasScids,proto3" json:"alias_scids,omitempty"` // The confirmed SCID for a zero-conf channel. ZeroConfConfirmedScid uint64 `protobuf:"varint,15,opt,name=zero_conf_confirmed_scid,json=zeroConfConfirmedScid,proto3" json:"zero_conf_confirmed_scid,omitempty"` + // The TLV encoded custom channel data records for this output, which might + // be set for custom channels. + CustomChannelData []byte `protobuf:"bytes,16,opt,name=custom_channel_data,json=customChannelData,proto3" json:"custom_channel_data,omitempty"` } func (x *ChannelCloseSummary) Reset() { @@ -5553,6 +5556,13 @@ func (x *ChannelCloseSummary) GetZeroConfConfirmedScid() uint64 { return 0 } +func (x *ChannelCloseSummary) GetCustomChannelData() []byte { + if x != nil { + return x.CustomChannelData + } + return nil +} + type Resolution struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -19127,7 +19137,7 @@ var file_lightning_proto_rawDesc = []byte{ 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x0a, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6c, 0x6e, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x4d, 0x61, 0x70, - 0x52, 0x09, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x4d, 0x61, 0x70, 0x73, 0x22, 0xb6, 0x06, 0x0a, 0x13, + 0x52, 0x09, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x4d, 0x61, 0x70, 0x73, 0x22, 0xe6, 0x06, 0x0a, 0x13, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x6e, @@ -19170,7 +19180,10 @@ var file_lightning_proto_rawDesc = []byte{ 0x72, 0x6f, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x5f, 0x73, 0x63, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x04, 0x42, 0x02, 0x30, 0x01, 0x52, 0x15, 0x7a, 0x65, 0x72, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, - 0x6d, 0x65, 0x64, 0x53, 0x63, 0x69, 0x64, 0x22, 0x8a, 0x01, 0x0a, 0x0b, 0x43, 0x6c, 0x6f, 0x73, + 0x6d, 0x65, 0x64, 0x53, 0x63, 0x69, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x10, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x22, 0x8a, 0x01, 0x0a, 0x0b, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x4f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x43, 0x4c, diff --git a/lnrpc/lightning.proto b/lnrpc/lightning.proto index ca40e4b4c..fbf02129a 100644 --- a/lnrpc/lightning.proto +++ b/lnrpc/lightning.proto @@ -1758,6 +1758,10 @@ message ChannelCloseSummary { // The confirmed SCID for a zero-conf channel. uint64 zero_conf_confirmed_scid = 15 [jstype = JS_STRING]; + + // The TLV encoded custom channel data records for this output, which might + // be set for custom channels. + bytes custom_channel_data = 16; } enum ResolutionType { diff --git a/lnrpc/lightning.swagger.json b/lnrpc/lightning.swagger.json index 69478fc94..5298b9f7d 100644 --- a/lnrpc/lightning.swagger.json +++ b/lnrpc/lightning.swagger.json @@ -4182,6 +4182,11 @@ "type": "string", "format": "uint64", "description": "The confirmed SCID for a zero-conf channel." + }, + "custom_channel_data": { + "type": "string", + "format": "byte", + "description": "The TLV encoded custom channel data records for this output, which might\nbe set for custom channels." } } }, diff --git a/rpcserver.go b/rpcserver.go index ad0c3392a..41f84ff8a 100644 --- a/rpcserver.go +++ b/rpcserver.go @@ -4517,6 +4517,16 @@ func (r *rpcServer) ClosedChannels(ctx context.Context, resp.Channels = append(resp.Channels, channel) } + err = fn.MapOptionZ( + r.server.implCfg.AuxDataParser, + func(parser AuxDataParser) error { + return parser.InlineParseCustomData(resp) + }, + ) + if err != nil { + return nil, fmt.Errorf("error parsing custom data: %w", err) + } + return resp, nil } @@ -4990,7 +5000,8 @@ func createRPCOpenChannel(r *rpcServer, dbChannel *channeldb.OpenChannel, // createRPCClosedChannel creates an *lnrpc.ClosedChannelSummary from a // *channeldb.ChannelCloseSummary. func (r *rpcServer) createRPCClosedChannel( - dbChannel *channeldb.ChannelCloseSummary) (*lnrpc.ChannelCloseSummary, error) { + dbChannel *channeldb.ChannelCloseSummary) (*lnrpc.ChannelCloseSummary, + error) { nodePub := dbChannel.RemotePub nodeID := hex.EncodeToString(nodePub.SerializeCompressed()) @@ -5004,9 +5015,7 @@ func (r *rpcServer) createRPCClosedChannel( // Lookup local and remote cooperative initiators. If these values // are not known they will just return unknown. - openInit, closeInitiator, err = r.getInitiators( - &dbChannel.ChanPoint, - ) + openInit, closeInitiator, err = r.getInitiators(&dbChannel.ChanPoint) if err != nil { return nil, err } @@ -5073,6 +5082,14 @@ func (r *rpcServer) createRPCClosedChannel( channel.ZeroConfConfirmedScid = confirmedScid } + // Finally we'll attempt to encode the custom channel data if + // any exists. + channel.CustomChannelData, err = encodeCustomChanData(histChan) + if err != nil { + return nil, fmt.Errorf("unable to encode open chan "+ + "data: %w", err) + } + // Non-nil error not due to older versions of lnd. default: return nil, err