lnrpc: add new SendCoins RPC to service

This commit adds a new RPC to the RPC server: “sendcoins”. This RPC is
identical to “sendmany” with one small change: the level of send
parallelization is 1. This is useful when one wishes to simply send
coins to a friend and/or a payment.
This commit is contained in:
Olaoluwa Osuntokun 2016-06-29 11:28:10 -07:00
parent e22734f9cf
commit 6e5fb13a0d
No known key found for this signature in database
GPG Key ID: 9CC5B105D03521A2
2 changed files with 178 additions and 112 deletions

@ -13,6 +13,8 @@ It has these top-level messages:
LightningAddress
SendManyRequest
SendManyResponse
SendCoinsRequest
SendCoinsResponse
NewAddressRequest
NewAddressResponse
ConnectPeerRequest
@ -72,7 +74,7 @@ func (x NewAddressRequest_AddressType) String() string {
return proto.EnumName(NewAddressRequest_AddressType_name, int32(x))
}
func (NewAddressRequest_AddressType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor0, []int{4, 0}
return fileDescriptor0, []int{6, 0}
}
type ChannelPoint struct {
@ -120,6 +122,25 @@ func (m *SendManyResponse) String() string { return proto.CompactText
func (*SendManyResponse) ProtoMessage() {}
func (*SendManyResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
type SendCoinsRequest struct {
Addr string `protobuf:"bytes,1,opt,name=addr" json:"addr,omitempty"`
Amount int64 `protobuf:"varint,2,opt,name=amount" json:"amount,omitempty"`
}
func (m *SendCoinsRequest) Reset() { *m = SendCoinsRequest{} }
func (m *SendCoinsRequest) String() string { return proto.CompactTextString(m) }
func (*SendCoinsRequest) ProtoMessage() {}
func (*SendCoinsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
type SendCoinsResponse struct {
Txid string `protobuf:"bytes,1,opt,name=txid" json:"txid,omitempty"`
}
func (m *SendCoinsResponse) Reset() { *m = SendCoinsResponse{} }
func (m *SendCoinsResponse) String() string { return proto.CompactTextString(m) }
func (*SendCoinsResponse) ProtoMessage() {}
func (*SendCoinsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
type NewAddressRequest struct {
Type NewAddressRequest_AddressType `protobuf:"varint,1,opt,name=type,enum=lnrpc.NewAddressRequest_AddressType" json:"type,omitempty"`
}
@ -127,7 +148,7 @@ type NewAddressRequest struct {
func (m *NewAddressRequest) Reset() { *m = NewAddressRequest{} }
func (m *NewAddressRequest) String() string { return proto.CompactTextString(m) }
func (*NewAddressRequest) ProtoMessage() {}
func (*NewAddressRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
func (*NewAddressRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
type NewAddressResponse struct {
Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
@ -136,7 +157,7 @@ type NewAddressResponse struct {
func (m *NewAddressResponse) Reset() { *m = NewAddressResponse{} }
func (m *NewAddressResponse) String() string { return proto.CompactTextString(m) }
func (*NewAddressResponse) ProtoMessage() {}
func (*NewAddressResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
func (*NewAddressResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
type ConnectPeerRequest struct {
Addr *LightningAddress `protobuf:"bytes,1,opt,name=addr" json:"addr,omitempty"`
@ -145,7 +166,7 @@ type ConnectPeerRequest struct {
func (m *ConnectPeerRequest) Reset() { *m = ConnectPeerRequest{} }
func (m *ConnectPeerRequest) String() string { return proto.CompactTextString(m) }
func (*ConnectPeerRequest) ProtoMessage() {}
func (*ConnectPeerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
func (*ConnectPeerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
func (m *ConnectPeerRequest) GetAddr() *LightningAddress {
if m != nil {
@ -161,7 +182,7 @@ type ConnectPeerResponse struct {
func (m *ConnectPeerResponse) Reset() { *m = ConnectPeerResponse{} }
func (m *ConnectPeerResponse) String() string { return proto.CompactTextString(m) }
func (*ConnectPeerResponse) ProtoMessage() {}
func (*ConnectPeerResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
func (*ConnectPeerResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
type HTLC struct {
Id int64 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
@ -173,7 +194,7 @@ type HTLC struct {
func (m *HTLC) Reset() { *m = HTLC{} }
func (m *HTLC) String() string { return proto.CompactTextString(m) }
func (*HTLC) ProtoMessage() {}
func (*HTLC) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
func (*HTLC) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
type ActiveChannel struct {
// TODO(roasbeef): make channel points a string everywhere in rpc?
@ -190,7 +211,7 @@ type ActiveChannel struct {
func (m *ActiveChannel) Reset() { *m = ActiveChannel{} }
func (m *ActiveChannel) String() string { return proto.CompactTextString(m) }
func (*ActiveChannel) ProtoMessage() {}
func (*ActiveChannel) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
func (*ActiveChannel) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
func (m *ActiveChannel) GetPendingHtlcs() []*HTLC {
if m != nil {
@ -215,7 +236,7 @@ type Peer struct {
func (m *Peer) Reset() { *m = Peer{} }
func (m *Peer) String() string { return proto.CompactTextString(m) }
func (*Peer) ProtoMessage() {}
func (*Peer) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
func (*Peer) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
func (m *Peer) GetChannels() []*ActiveChannel {
if m != nil {
@ -230,7 +251,7 @@ type ListPeersRequest struct {
func (m *ListPeersRequest) Reset() { *m = ListPeersRequest{} }
func (m *ListPeersRequest) String() string { return proto.CompactTextString(m) }
func (*ListPeersRequest) ProtoMessage() {}
func (*ListPeersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
func (*ListPeersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
type ListPeersResponse struct {
Peers []*Peer `protobuf:"bytes,1,rep,name=peers" json:"peers,omitempty"`
@ -239,7 +260,7 @@ type ListPeersResponse struct {
func (m *ListPeersResponse) Reset() { *m = ListPeersResponse{} }
func (m *ListPeersResponse) String() string { return proto.CompactTextString(m) }
func (*ListPeersResponse) ProtoMessage() {}
func (*ListPeersResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
func (*ListPeersResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
func (m *ListPeersResponse) GetPeers() []*Peer {
if m != nil {
@ -260,7 +281,7 @@ type OpenChannelRequest struct {
func (m *OpenChannelRequest) Reset() { *m = OpenChannelRequest{} }
func (m *OpenChannelRequest) String() string { return proto.CompactTextString(m) }
func (*OpenChannelRequest) ProtoMessage() {}
func (*OpenChannelRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
func (*OpenChannelRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
func (m *OpenChannelRequest) GetTargetNode() *LightningAddress {
if m != nil {
@ -276,7 +297,7 @@ type OpenChannelResponse struct {
func (m *OpenChannelResponse) Reset() { *m = OpenChannelResponse{} }
func (m *OpenChannelResponse) String() string { return proto.CompactTextString(m) }
func (*OpenChannelResponse) ProtoMessage() {}
func (*OpenChannelResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
func (*OpenChannelResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
func (m *OpenChannelResponse) GetChannelPoint() *ChannelPoint {
if m != nil {
@ -294,7 +315,7 @@ type CloseChannelRequest struct {
func (m *CloseChannelRequest) Reset() { *m = CloseChannelRequest{} }
func (m *CloseChannelRequest) String() string { return proto.CompactTextString(m) }
func (*CloseChannelRequest) ProtoMessage() {}
func (*CloseChannelRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
func (*CloseChannelRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
func (m *CloseChannelRequest) GetChannelPoint() *ChannelPoint {
if m != nil {
@ -310,7 +331,7 @@ type CloseChannelResponse struct {
func (m *CloseChannelResponse) Reset() { *m = CloseChannelResponse{} }
func (m *CloseChannelResponse) String() string { return proto.CompactTextString(m) }
func (*CloseChannelResponse) ProtoMessage() {}
func (*CloseChannelResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
func (*CloseChannelResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
type WalletBalanceRequest struct {
WitnessOnly bool `protobuf:"varint,1,opt,name=witness_only" json:"witness_only,omitempty"`
@ -319,7 +340,7 @@ type WalletBalanceRequest struct {
func (m *WalletBalanceRequest) Reset() { *m = WalletBalanceRequest{} }
func (m *WalletBalanceRequest) String() string { return proto.CompactTextString(m) }
func (*WalletBalanceRequest) ProtoMessage() {}
func (*WalletBalanceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
func (*WalletBalanceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
type WalletBalanceResponse struct {
Balance float64 `protobuf:"fixed64,1,opt,name=balance" json:"balance,omitempty"`
@ -328,13 +349,15 @@ type WalletBalanceResponse struct {
func (m *WalletBalanceResponse) Reset() { *m = WalletBalanceResponse{} }
func (m *WalletBalanceResponse) String() string { return proto.CompactTextString(m) }
func (*WalletBalanceResponse) ProtoMessage() {}
func (*WalletBalanceResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
func (*WalletBalanceResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
func init() {
proto.RegisterType((*ChannelPoint)(nil), "lnrpc.ChannelPoint")
proto.RegisterType((*LightningAddress)(nil), "lnrpc.LightningAddress")
proto.RegisterType((*SendManyRequest)(nil), "lnrpc.SendManyRequest")
proto.RegisterType((*SendManyResponse)(nil), "lnrpc.SendManyResponse")
proto.RegisterType((*SendCoinsRequest)(nil), "lnrpc.SendCoinsRequest")
proto.RegisterType((*SendCoinsResponse)(nil), "lnrpc.SendCoinsResponse")
proto.RegisterType((*NewAddressRequest)(nil), "lnrpc.NewAddressRequest")
proto.RegisterType((*NewAddressResponse)(nil), "lnrpc.NewAddressResponse")
proto.RegisterType((*ConnectPeerRequest)(nil), "lnrpc.ConnectPeerRequest")
@ -364,13 +387,14 @@ const _ = grpc.SupportPackageIsVersion2
// Client API for Lightning service
type LightningClient interface {
WalletBalance(ctx context.Context, in *WalletBalanceRequest, opts ...grpc.CallOption) (*WalletBalanceResponse, error)
SendMany(ctx context.Context, in *SendManyRequest, opts ...grpc.CallOption) (*SendManyResponse, error)
SendCoins(ctx context.Context, in *SendCoinsRequest, opts ...grpc.CallOption) (*SendCoinsResponse, error)
NewAddress(ctx context.Context, in *NewAddressRequest, opts ...grpc.CallOption) (*NewAddressResponse, error)
ConnectPeer(ctx context.Context, in *ConnectPeerRequest, opts ...grpc.CallOption) (*ConnectPeerResponse, error)
ListPeers(ctx context.Context, in *ListPeersRequest, opts ...grpc.CallOption) (*ListPeersResponse, error)
OpenChannel(ctx context.Context, in *OpenChannelRequest, opts ...grpc.CallOption) (*OpenChannelResponse, error)
CloseChannel(ctx context.Context, in *CloseChannelRequest, opts ...grpc.CallOption) (*CloseChannelResponse, error)
WalletBalance(ctx context.Context, in *WalletBalanceRequest, opts ...grpc.CallOption) (*WalletBalanceResponse, error)
}
type lightningClient struct {
@ -381,6 +405,15 @@ func NewLightningClient(cc *grpc.ClientConn) LightningClient {
return &lightningClient{cc}
}
func (c *lightningClient) WalletBalance(ctx context.Context, in *WalletBalanceRequest, opts ...grpc.CallOption) (*WalletBalanceResponse, error) {
out := new(WalletBalanceResponse)
err := grpc.Invoke(ctx, "/lnrpc.Lightning/WalletBalance", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *lightningClient) SendMany(ctx context.Context, in *SendManyRequest, opts ...grpc.CallOption) (*SendManyResponse, error) {
out := new(SendManyResponse)
err := grpc.Invoke(ctx, "/lnrpc.Lightning/SendMany", in, out, c.cc, opts...)
@ -390,6 +423,15 @@ func (c *lightningClient) SendMany(ctx context.Context, in *SendManyRequest, opt
return out, nil
}
func (c *lightningClient) SendCoins(ctx context.Context, in *SendCoinsRequest, opts ...grpc.CallOption) (*SendCoinsResponse, error) {
out := new(SendCoinsResponse)
err := grpc.Invoke(ctx, "/lnrpc.Lightning/SendCoins", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *lightningClient) NewAddress(ctx context.Context, in *NewAddressRequest, opts ...grpc.CallOption) (*NewAddressResponse, error) {
out := new(NewAddressResponse)
err := grpc.Invoke(ctx, "/lnrpc.Lightning/NewAddress", in, out, c.cc, opts...)
@ -435,31 +477,41 @@ func (c *lightningClient) CloseChannel(ctx context.Context, in *CloseChannelRequ
return out, nil
}
func (c *lightningClient) WalletBalance(ctx context.Context, in *WalletBalanceRequest, opts ...grpc.CallOption) (*WalletBalanceResponse, error) {
out := new(WalletBalanceResponse)
err := grpc.Invoke(ctx, "/lnrpc.Lightning/WalletBalance", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// Server API for Lightning service
type LightningServer interface {
WalletBalance(context.Context, *WalletBalanceRequest) (*WalletBalanceResponse, error)
SendMany(context.Context, *SendManyRequest) (*SendManyResponse, error)
SendCoins(context.Context, *SendCoinsRequest) (*SendCoinsResponse, error)
NewAddress(context.Context, *NewAddressRequest) (*NewAddressResponse, error)
ConnectPeer(context.Context, *ConnectPeerRequest) (*ConnectPeerResponse, error)
ListPeers(context.Context, *ListPeersRequest) (*ListPeersResponse, error)
OpenChannel(context.Context, *OpenChannelRequest) (*OpenChannelResponse, error)
CloseChannel(context.Context, *CloseChannelRequest) (*CloseChannelResponse, error)
WalletBalance(context.Context, *WalletBalanceRequest) (*WalletBalanceResponse, error)
}
func RegisterLightningServer(s *grpc.Server, srv LightningServer) {
s.RegisterService(&_Lightning_serviceDesc, srv)
}
func _Lightning_WalletBalance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(WalletBalanceRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(LightningServer).WalletBalance(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/lnrpc.Lightning/WalletBalance",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(LightningServer).WalletBalance(ctx, req.(*WalletBalanceRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Lightning_SendMany_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SendManyRequest)
if err := dec(in); err != nil {
@ -478,6 +530,24 @@ func _Lightning_SendMany_Handler(srv interface{}, ctx context.Context, dec func(
return interceptor(ctx, in, info, handler)
}
func _Lightning_SendCoins_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SendCoinsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(LightningServer).SendCoins(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/lnrpc.Lightning/SendCoins",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(LightningServer).SendCoins(ctx, req.(*SendCoinsRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Lightning_NewAddress_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(NewAddressRequest)
if err := dec(in); err != nil {
@ -568,32 +638,22 @@ func _Lightning_CloseChannel_Handler(srv interface{}, ctx context.Context, dec f
return interceptor(ctx, in, info, handler)
}
func _Lightning_WalletBalance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(WalletBalanceRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(LightningServer).WalletBalance(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/lnrpc.Lightning/WalletBalance",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(LightningServer).WalletBalance(ctx, req.(*WalletBalanceRequest))
}
return interceptor(ctx, in, info, handler)
}
var _Lightning_serviceDesc = grpc.ServiceDesc{
ServiceName: "lnrpc.Lightning",
HandlerType: (*LightningServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "WalletBalance",
Handler: _Lightning_WalletBalance_Handler,
},
{
MethodName: "SendMany",
Handler: _Lightning_SendMany_Handler,
},
{
MethodName: "SendCoins",
Handler: _Lightning_SendCoins_Handler,
},
{
MethodName: "NewAddress",
Handler: _Lightning_NewAddress_Handler,
@ -614,75 +674,73 @@ var _Lightning_serviceDesc = grpc.ServiceDesc{
MethodName: "CloseChannel",
Handler: _Lightning_CloseChannel_Handler,
},
{
MethodName: "WalletBalance",
Handler: _Lightning_WalletBalance_Handler,
},
},
Streams: []grpc.StreamDesc{},
}
var fileDescriptor0 = []byte{
// 961 bytes of a gzipped FileDescriptorProto
// 998 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x94, 0x56, 0xdd, 0x6e, 0xdb, 0x36,
0x14, 0x9e, 0x63, 0x3b, 0xb1, 0x8f, 0xec, 0x24, 0xa6, 0x9d, 0x46, 0xd5, 0x3a, 0xa0, 0x20, 0xd6,
0x2e, 0x18, 0x0a, 0x0f, 0x70, 0x77, 0x31, 0xb4, 0x40, 0x01, 0x37, 0x09, 0x96, 0xad, 0x5d, 0x1b,
0x2c, 0x1e, 0x8a, 0x5d, 0x11, 0xb2, 0xc4, 0xc4, 0x42, 0x65, 0x52, 0x13, 0xa9, 0xa4, 0xde, 0x03,
0xec, 0x19, 0xf6, 0x3e, 0xbb, 0xdf, 0x93, 0xec, 0x21, 0x46, 0x52, 0x94, 0x25, 0xff, 0xe4, 0xa2,
0x97, 0x3a, 0xfc, 0x78, 0xf8, 0x7d, 0xe7, 0x7c, 0xe7, 0xd8, 0xd0, 0x4e, 0x93, 0x60, 0x98, 0xa4,
0x5c, 0x72, 0xd4, 0x8c, 0x99, 0xfa, 0xc0, 0x2f, 0xa0, 0x73, 0x3a, 0xf3, 0x19, 0xa3, 0xf1, 0x25,
0x8f, 0x98, 0x44, 0x03, 0xe8, 0x5c, 0x67, 0x2c, 0x8c, 0xd8, 0x0d, 0x91, 0x9f, 0xa2, 0xd0, 0xad,
0x3d, 0xae, 0x9d, 0x74, 0x74, 0x94, 0x67, 0x32, 0xc9, 0x24, 0x89, 0x58, 0x48, 0x3f, 0xb9, 0x3b,
0x2a, 0xda, 0xc5, 0xdf, 0xc3, 0xe1, 0xdb, 0xe8, 0x66, 0x26, 0x99, 0x42, 0x8f, 0xc3, 0x30, 0xa5,
0x42, 0x20, 0x04, 0x90, 0x64, 0xd3, 0x37, 0x74, 0x71, 0xe1, 0x8b, 0x99, 0xb9, 0xdd, 0x46, 0x1d,
0x68, 0xcc, 0xb8, 0x90, 0xe6, 0x56, 0x1b, 0xff, 0x55, 0x83, 0x83, 0x2b, 0xca, 0xc2, 0x5f, 0x7c,
0xb6, 0xf8, 0x95, 0xfe, 0x91, 0x51, 0x21, 0xd1, 0x2b, 0xe8, 0xe8, 0x04, 0x13, 0x3e, 0x9e, 0xf3,
0x8c, 0x49, 0x75, 0xaf, 0x7e, 0xe2, 0x8c, 0x4e, 0x86, 0x86, 0xe3, 0x70, 0x0d, 0x3d, 0xac, 0x42,
0xcf, 0x99, 0x4c, 0x17, 0xde, 0x73, 0xe8, 0x6d, 0x04, 0x91, 0x03, 0xf5, 0x8f, 0x74, 0x61, 0x39,
0x74, 0xa1, 0x79, 0xeb, 0xc7, 0x19, 0x35, 0x24, 0xea, 0x2f, 0x76, 0x7e, 0xa8, 0xe1, 0xc7, 0x70,
0x58, 0x66, 0x16, 0x09, 0x67, 0x82, 0x6a, 0xaa, 0x4b, 0xd9, 0x6d, 0xfc, 0x77, 0x0d, 0x7a, 0xef,
0xe8, 0x9d, 0xd5, 0x56, 0x90, 0x1d, 0x29, 0xcc, 0x22, 0xa1, 0x06, 0xb3, 0x3f, 0xfa, 0xda, 0x92,
0xdc, 0xc0, 0x0d, 0xed, 0xe7, 0x44, 0x61, 0xf1, 0x7b, 0x70, 0x2a, 0x9f, 0xe8, 0x18, 0xfa, 0x1f,
0x7e, 0x9a, 0xbc, 0x3b, 0xbf, 0xba, 0x22, 0x97, 0xbf, 0xbd, 0x7e, 0x73, 0xfe, 0x3b, 0xb9, 0x18,
0x5f, 0x5d, 0x1c, 0x7e, 0x81, 0x1e, 0x00, 0x52, 0xd1, 0xc9, 0xf9, 0xd9, 0x4a, 0xbc, 0x86, 0x0e,
0xc0, 0xa9, 0x06, 0x76, 0xf0, 0x13, 0x05, 0xac, 0xbc, 0x68, 0xe9, 0x1f, 0xc0, 0x9e, 0x9f, 0x87,
0xac, 0x82, 0x97, 0x80, 0x4e, 0xb9, 0xea, 0x6e, 0x20, 0x2f, 0x29, 0x4d, 0x0b, 0x05, 0x4f, 0xa0,
0xa1, 0x61, 0x06, 0xe3, 0x8c, 0x8e, 0xad, 0x82, 0xf5, 0x5e, 0xe2, 0xa7, 0xd0, 0x5f, 0xb9, 0x5c,
0x3e, 0x92, 0xa8, 0x6f, 0x62, 0xcb, 0xd4, 0xc4, 0x67, 0xd0, 0xb8, 0x98, 0xbc, 0x3d, 0x55, 0xad,
0xdf, 0xb1, 0xb1, 0x3a, 0xda, 0x87, 0x5d, 0x3f, 0xef, 0xa5, 0x29, 0x38, 0xea, 0x41, 0x7b, 0xa6,
0x1c, 0x41, 0x62, 0x1e, 0x7c, 0x74, 0xeb, 0xc6, 0x54, 0xaa, 0x25, 0x92, 0x93, 0x4c, 0xb8, 0x0d,
0xf5, 0xd9, 0xc2, 0xff, 0xd6, 0xa0, 0x3b, 0x0e, 0x64, 0x74, 0x4b, 0xad, 0x21, 0xf5, 0x9d, 0x94,
0xce, 0xb9, 0xa4, 0xc5, 0x53, 0x6d, 0x74, 0x04, 0xdd, 0x20, 0x3f, 0x25, 0x89, 0xf6, 0x6b, 0xee,
0x29, 0x74, 0x08, 0xad, 0xc0, 0x4f, 0xfc, 0x20, 0x92, 0x0b, 0x93, 0xbc, 0xae, 0x81, 0xea, 0x29,
0x3f, 0x26, 0x53, 0x3f, 0xf6, 0x59, 0x40, 0xcd, 0x23, 0x75, 0x55, 0xdf, 0x7d, 0x9b, 0xb2, 0x88,
0x37, 0x4d, 0xfc, 0x21, 0xf4, 0x32, 0xa5, 0x4d, 0xca, 0x98, 0x86, 0x64, 0x4a, 0xf3, 0xa3, 0x5d,
0x73, 0x84, 0xa1, 0x9b, 0xd0, 0x7c, 0x22, 0x66, 0x32, 0x0e, 0x84, 0xbb, 0x67, 0xcc, 0xe9, 0xd8,
0xaa, 0x19, 0xe5, 0x7d, 0x70, 0x58, 0x36, 0x27, 0x59, 0x12, 0xfa, 0x92, 0x0a, 0xb7, 0xa5, 0x2e,
0x36, 0xf0, 0x3f, 0x35, 0x68, 0xe8, 0xc2, 0xe9, 0xe9, 0x89, 0x8b, 0xda, 0x96, 0x52, 0x2a, 0x65,
0xd4, 0x22, 0x9a, 0xd5, 0xe6, 0xd5, 0x0d, 0x42, 0x15, 0x74, 0xba, 0x50, 0xf9, 0x88, 0xa0, 0x4a,
0xa9, 0x16, 0xd0, 0x28, 0x63, 0x29, 0x0d, 0x6e, 0x0d, 0xf9, 0x86, 0x56, 0x2f, 0x7c, 0x99, 0xa3,
0x72, 0xce, 0x36, 0x62, 0x30, 0x7b, 0x26, 0xa2, 0x92, 0x47, 0x6c, 0xaa, 0x1a, 0x12, 0x1a, 0x76,
0x2d, 0xf4, 0x54, 0x95, 0x2c, 0xaf, 0xa4, 0x70, 0xdb, 0x46, 0xd1, 0xc0, 0x2a, 0x5a, 0x69, 0x02,
0x46, 0x7a, 0xc8, 0x85, 0x71, 0x40, 0xe1, 0x6c, 0xfc, 0x1d, 0xf4, 0x2a, 0x31, 0x6b, 0x0b, 0x0f,
0x9a, 0x5a, 0x8f, 0xb0, 0xc3, 0x5b, 0xd4, 0x47, 0x83, 0x74, 0x29, 0xd0, 0x7b, 0x55, 0x45, 0x9b,
0xb4, 0xf0, 0xa1, 0xea, 0x86, 0xf4, 0xd3, 0x1b, 0x2a, 0xc9, 0x8a, 0xa1, 0xd0, 0x33, 0x70, 0x6c,
0x9c, 0xf1, 0x30, 0x1f, 0xd9, 0xfb, 0x6d, 0x8a, 0x1e, 0xc1, 0x20, 0x6f, 0x75, 0xb1, 0xb8, 0xac,
0xf1, 0x72, 0x23, 0x7c, 0x05, 0x47, 0xb6, 0xe3, 0x6b, 0xc7, 0xb9, 0x21, 0x8e, 0xe1, 0x20, 0xe0,
0xf3, 0x79, 0x24, 0x44, 0xc4, 0x19, 0x11, 0xd1, 0x9f, 0x85, 0x23, 0x94, 0xf9, 0x74, 0x4b, 0x03,
0xce, 0xae, 0x85, 0xa9, 0x6a, 0x17, 0x8f, 0xa1, 0xbf, 0x22, 0xc2, 0x0a, 0xff, 0x76, 0xdd, 0x93,
0xf9, 0x58, 0xf5, 0x2d, 0xdf, 0xea, 0x7a, 0xc5, 0x89, 0x1a, 0xa9, 0x98, 0x0b, 0xba, 0x56, 0x88,
0xcf, 0x48, 0xa1, 0x1d, 0x20, 0xa3, 0x39, 0x25, 0x71, 0x34, 0x8f, 0x8a, 0xe9, 0x52, 0xf6, 0xf5,
0xe3, 0x98, 0xdf, 0x91, 0x6b, 0x9e, 0x06, 0x94, 0x04, 0xfa, 0x09, 0xa3, 0xbf, 0x85, 0xbf, 0x81,
0xc1, 0xea, 0x8b, 0xe5, 0x14, 0x8b, 0x2c, 0x08, 0x8a, 0x55, 0xd1, 0xc2, 0xcf, 0x60, 0xf0, 0x41,
0x25, 0xa1, 0xf2, 0x75, 0x3e, 0x19, 0x05, 0x37, 0xe5, 0xde, 0xbb, 0x48, 0x32, 0x05, 0x24, 0x9c,
0xc5, 0x0b, 0x8b, 0x3e, 0x81, 0xa3, 0x35, 0x74, 0x99, 0xb7, 0x18, 0x2d, 0x8d, 0xac, 0x8d, 0xfe,
0xab, 0x43, 0x7b, 0xd9, 0x33, 0xf4, 0x12, 0x5a, 0xc5, 0xd2, 0x45, 0x0f, 0xb6, 0xef, 0x77, 0xef,
0x78, 0x23, 0x6e, 0x73, 0x8f, 0x01, 0xca, 0xa5, 0x87, 0xdc, 0xfb, 0x36, 0xaf, 0xf7, 0x70, 0xcb,
0x89, 0x4d, 0x71, 0x06, 0x4e, 0x65, 0xa7, 0xa1, 0x02, 0xb9, 0xb9, 0x24, 0x3d, 0x6f, 0xdb, 0x91,
0xcd, 0xf2, 0x4a, 0x4b, 0xb2, 0x03, 0x80, 0x4a, 0x63, 0xae, 0x8e, 0x89, 0xe7, 0x6e, 0x1e, 0x94,
0x2c, 0x2a, 0x4e, 0x5a, 0xb2, 0xd8, 0x1c, 0x91, 0x25, 0x8b, 0x6d, 0xc6, 0xfb, 0x51, 0xfd, 0x76,
0x57, 0x5a, 0x8b, 0x96, 0x8c, 0x37, 0x1d, 0xe6, 0x7d, 0xb9, 0xf5, 0xcc, 0x26, 0xfa, 0x19, 0xba,
0x2b, 0xcd, 0x44, 0x05, 0x7a, 0x9b, 0x21, 0xbc, 0x47, 0xdb, 0x0f, 0xf3, 0x5c, 0xd3, 0x5d, 0xf3,
0xf7, 0xe2, 0xf9, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x90, 0xc6, 0xa9, 0x9d, 0x6b, 0x08, 0x00,
0x00,
0x14, 0x9e, 0x63, 0x3b, 0xb1, 0x8f, 0xed, 0x24, 0xa6, 0x9d, 0xc6, 0x75, 0x3b, 0xa0, 0x23, 0xd6,
0x2e, 0x18, 0x0a, 0x6f, 0x70, 0x77, 0x31, 0xb4, 0x40, 0x01, 0x37, 0x09, 0x96, 0xad, 0x5d, 0x1b,
0x2c, 0x1e, 0x8a, 0x5d, 0x11, 0xb2, 0xc4, 0xc4, 0x42, 0x65, 0x52, 0x33, 0xa9, 0xa4, 0xde, 0x03,
0xec, 0x19, 0xf6, 0x10, 0x7b, 0x8b, 0xdd, 0xef, 0x99, 0x76, 0x48, 0x51, 0x96, 0xfc, 0xd3, 0x8b,
0x5d, 0xf2, 0xf0, 0x3b, 0x3f, 0xdf, 0xe1, 0x77, 0x8e, 0x04, 0xf5, 0x79, 0xec, 0x0f, 0xe2, 0xb9,
0xd4, 0x92, 0x54, 0x23, 0x81, 0x07, 0xfa, 0x1c, 0x9a, 0xa7, 0x53, 0x4f, 0x08, 0x1e, 0x5d, 0xca,
0x50, 0x68, 0xd2, 0x85, 0xe6, 0x75, 0x22, 0x82, 0x50, 0xdc, 0x30, 0xfd, 0x31, 0x0c, 0x7a, 0xa5,
0x47, 0xa5, 0x93, 0xa6, 0xb1, 0xca, 0x44, 0xc7, 0x89, 0x66, 0xa1, 0x08, 0xf8, 0xc7, 0xde, 0x0e,
0x5a, 0x5b, 0xf4, 0x3b, 0x38, 0x7c, 0x13, 0xde, 0x4c, 0xb5, 0x40, 0xf4, 0x28, 0x08, 0xe6, 0x5c,
0x29, 0x42, 0x00, 0xe2, 0x64, 0xf2, 0x9a, 0x2f, 0x2e, 0x3c, 0x35, 0xb5, 0xde, 0x75, 0xd2, 0x84,
0xca, 0x54, 0x2a, 0x6d, 0xbd, 0xea, 0xf4, 0xcf, 0x12, 0x1c, 0x5c, 0x71, 0x11, 0xfc, 0xec, 0x89,
0xc5, 0x2f, 0xfc, 0xf7, 0x84, 0x2b, 0x4d, 0x5e, 0x42, 0xd3, 0x04, 0x18, 0xcb, 0xd1, 0x4c, 0x26,
0x42, 0xa3, 0x5f, 0xf9, 0xa4, 0x31, 0x3c, 0x19, 0xd8, 0x1a, 0x07, 0x6b, 0xe8, 0x41, 0x11, 0x7a,
0x2e, 0xf4, 0x7c, 0xd1, 0x7f, 0x06, 0xed, 0x0d, 0x23, 0x69, 0x40, 0xf9, 0x03, 0x5f, 0xb8, 0x1a,
0x5a, 0x50, 0xbd, 0xf5, 0xa2, 0x84, 0xdb, 0x22, 0xca, 0xcf, 0x77, 0xbe, 0x2f, 0xd1, 0x47, 0x70,
0x98, 0x47, 0x56, 0xb1, 0x14, 0x8a, 0x9b, 0x52, 0x97, 0xb4, 0xeb, 0xf4, 0xdb, 0x14, 0x71, 0x8a,
0x9d, 0x51, 0x59, 0xa9, 0x88, 0xf0, 0x30, 0x95, 0x0b, 0xbb, 0x0f, 0xbb, 0x5e, 0x5a, 0xb2, 0x8d,
0x4b, 0xbf, 0x80, 0x76, 0xc1, 0x63, 0x6b, 0xd0, 0xbf, 0x4a, 0xd0, 0x7e, 0xcb, 0xef, 0x5c, 0xc3,
0xb2, 0xb0, 0x43, 0xc4, 0x2c, 0x62, 0x6e, 0x31, 0xfb, 0xc3, 0x2f, 0x1d, 0xf3, 0x0d, 0xdc, 0xc0,
0x1d, 0xc7, 0x88, 0xa5, 0xef, 0xa0, 0x51, 0x38, 0x92, 0x63, 0xe8, 0xbc, 0xff, 0x71, 0xfc, 0xf6,
0xfc, 0xea, 0x8a, 0x5d, 0xfe, 0xfa, 0xea, 0xf5, 0xf9, 0x6f, 0xec, 0x62, 0x74, 0x75, 0x71, 0xf8,
0x19, 0xb9, 0x07, 0x04, 0xad, 0xe3, 0xf3, 0xb3, 0x15, 0x7b, 0x89, 0x1c, 0x40, 0xa3, 0x68, 0xd8,
0xa1, 0x8f, 0x11, 0x58, 0xc8, 0xe8, 0xca, 0x3f, 0x80, 0x3d, 0x2f, 0x35, 0x39, 0x06, 0x2f, 0x80,
0x9c, 0x4a, 0x94, 0x8c, 0xaf, 0x2f, 0x39, 0x9f, 0x67, 0x0c, 0x1e, 0x17, 0x1a, 0xd3, 0x18, 0x1e,
0x3b, 0x06, 0xeb, 0x02, 0xa1, 0x4f, 0xa0, 0xb3, 0xe2, 0x9c, 0x27, 0x89, 0xf1, 0xcc, 0x5c, 0x9b,
0xaa, 0xf4, 0x0c, 0x2a, 0x17, 0xe3, 0x37, 0xa7, 0xa8, 0xa7, 0x1d, 0x67, 0x2b, 0xaf, 0x77, 0x9b,
0xb4, 0xa1, 0x3e, 0x45, 0x99, 0xb1, 0x48, 0xfa, 0x1f, 0x7a, 0x65, 0xab, 0x54, 0x7c, 0x67, 0x2d,
0x59, 0xa2, 0x7a, 0x15, 0x3c, 0xd6, 0xe8, 0xbf, 0x25, 0x68, 0x8d, 0x7c, 0x1d, 0xde, 0x72, 0xa7,
0x72, 0xe3, 0x33, 0xe7, 0x33, 0xa9, 0x79, 0x96, 0xaa, 0x4e, 0x8e, 0xa0, 0xe5, 0xa7, 0xb7, 0x2c,
0x36, 0x43, 0x90, 0x0a, 0x95, 0x1c, 0x42, 0xcd, 0xf7, 0x62, 0xcf, 0x0f, 0xf5, 0xc2, 0x06, 0x2f,
0x1b, 0x20, 0xa6, 0xf2, 0x22, 0x36, 0xf1, 0x22, 0x4f, 0xf8, 0xdc, 0x26, 0x29, 0x63, 0x7f, 0xf7,
0x5d, 0xc8, 0xcc, 0x5e, 0xb5, 0xf6, 0xfb, 0xd0, 0x4e, 0x90, 0x9b, 0xd6, 0x11, 0x0f, 0xd8, 0x84,
0xa7, 0x57, 0xbb, 0xf6, 0x8a, 0x42, 0x2b, 0xe6, 0xe9, 0x98, 0x4d, 0x75, 0xe4, 0xab, 0xde, 0x9e,
0x55, 0x7c, 0xc3, 0x75, 0xcd, 0x32, 0xef, 0x40, 0x43, 0x24, 0x33, 0x96, 0xc4, 0x81, 0xa7, 0xb9,
0xea, 0xd5, 0xd0, 0xb1, 0x42, 0xff, 0x29, 0x41, 0xc5, 0x34, 0xce, 0x8c, 0x64, 0x94, 0xf5, 0x36,
0xa7, 0x52, 0x68, 0xa3, 0x21, 0x51, 0x2d, 0x3e, 0x5e, 0xd9, 0x22, 0xb0, 0xa1, 0x93, 0x05, 0xc6,
0x63, 0x8a, 0x23, 0x53, 0x43, 0xa0, 0x92, 0xdb, 0xe6, 0xdc, 0xbf, 0xb5, 0xc5, 0x57, 0x0c, 0x7b,
0xe5, 0xe9, 0x14, 0x95, 0xd6, 0xec, 0x2c, 0x16, 0xb3, 0x67, 0x2d, 0x18, 0x3c, 0x14, 0x13, 0x7c,
0x90, 0xc0, 0x56, 0x57, 0x23, 0x4f, 0xb0, 0x65, 0x69, 0x27, 0x55, 0xaf, 0x6e, 0x19, 0x75, 0x1d,
0xa3, 0x95, 0x47, 0xa0, 0xc4, 0x6c, 0x0e, 0x65, 0x15, 0x90, 0x29, 0x9b, 0x7e, 0x03, 0xed, 0x82,
0xcd, 0xc9, 0xa2, 0x0f, 0x55, 0xc3, 0x47, 0xb9, 0x8d, 0x90, 0xf5, 0xc7, 0x80, 0x4c, 0x2b, 0xc8,
0x3b, 0xec, 0xa2, 0x0b, 0x9a, 0xe9, 0x10, 0x5f, 0x43, 0x7b, 0xf3, 0x1b, 0xae, 0xd9, 0x8a, 0xa0,
0xc8, 0x53, 0x68, 0x38, 0xbb, 0x90, 0x41, 0xba, 0x07, 0x3e, 0x2d, 0x53, 0xf2, 0x10, 0xba, 0xe9,
0x53, 0x67, 0xdb, 0xd0, 0x09, 0x2f, 0x15, 0xc2, 0xe7, 0x70, 0xe4, 0x5e, 0x7c, 0xed, 0x3a, 0x15,
0xc4, 0x31, 0x1c, 0xf8, 0x72, 0x36, 0x0b, 0x95, 0x0a, 0xa5, 0x60, 0x2a, 0xfc, 0x23, 0x53, 0x04,
0x8a, 0xcf, 0x3c, 0xa9, 0x2f, 0xc5, 0xb5, 0xb2, 0x5d, 0x6d, 0xd1, 0x11, 0x74, 0x56, 0x48, 0x38,
0xe2, 0x5f, 0xaf, 0x6b, 0x32, 0x1d, 0xab, 0x8e, 0xab, 0xb7, 0xb8, 0xb3, 0x69, 0x8c, 0x23, 0x15,
0x49, 0xc5, 0xd7, 0x1a, 0xf1, 0x3f, 0x42, 0x18, 0x05, 0xe8, 0x70, 0xc6, 0x59, 0x14, 0xce, 0xc2,
0x6c, 0xba, 0x50, 0xbe, 0x5e, 0x14, 0xc9, 0x3b, 0x76, 0x2d, 0xe7, 0x3e, 0x67, 0xbe, 0x49, 0x61,
0xf9, 0xd7, 0xe8, 0x57, 0xd0, 0x5d, 0xcd, 0x98, 0x4f, 0xb1, 0x4a, 0x7c, 0x3f, 0x5b, 0x15, 0x35,
0xfa, 0x14, 0xba, 0xef, 0x31, 0x08, 0xd7, 0xaf, 0xd2, 0xc9, 0xc8, 0x6a, 0x43, 0xf5, 0xde, 0x85,
0x5a, 0x20, 0x90, 0x49, 0x11, 0x2d, 0x1c, 0xfa, 0x04, 0x8e, 0xd6, 0xd0, 0x79, 0xdc, 0x6c, 0xb4,
0x0c, 0xb2, 0x34, 0xfc, 0xbb, 0x02, 0xf5, 0xe5, 0x9b, 0x91, 0x9f, 0xa0, 0xb5, 0xe2, 0x47, 0x1e,
0x38, 0x8e, 0xdb, 0x72, 0xf7, 0x1f, 0x6e, 0xbf, 0x74, 0xa9, 0x5e, 0x40, 0x2d, 0xfb, 0x2a, 0x90,
0x7b, 0xdb, 0x3f, 0x40, 0xfd, 0xe3, 0x0d, 0xbb, 0x73, 0x7e, 0x09, 0xf5, 0xe5, 0xfa, 0x27, 0x45,
0x54, 0xf1, 0x13, 0xd2, 0xef, 0x6d, 0x5e, 0x38, 0xff, 0x11, 0x40, 0xbe, 0x80, 0x49, 0xef, 0x53,
0x5f, 0x81, 0xfe, 0xfd, 0x2d, 0x37, 0x2e, 0xc4, 0x19, 0x34, 0x0a, 0xfb, 0x95, 0x64, 0xc8, 0xcd,
0x85, 0xdd, 0xef, 0x6f, 0xbb, 0xca, 0x89, 0x2c, 0x87, 0x91, 0xe4, 0x43, 0xb2, 0x3a, 0xb2, 0x4b,
0x22, 0x9b, 0x73, 0x8b, 0x55, 0x14, 0x54, 0xbd, 0xac, 0x62, 0x73, 0x5c, 0x97, 0x55, 0x6c, 0x1b,
0x82, 0x1f, 0xf0, 0xe7, 0xa4, 0x20, 0x33, 0xb2, 0xac, 0x78, 0x53, 0xed, 0xfd, 0x07, 0x5b, 0xef,
0xd2, 0x40, 0x93, 0x5d, 0xfb, 0xcf, 0xf3, 0xec, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x71, 0x0f,
0xf3, 0x8a, 0x00, 0x09, 0x00, 0x00,
}

@ -3,8 +3,9 @@ syntax = "proto3";
package lnrpc;
service Lightning {
rpc WalletBalance(WalletBalanceRequest) returns (WalletBalanceResponse);
rpc SendMany(SendManyRequest) returns (SendManyResponse);
rpc SendCoins(SendCoinsRequest) returns (SendCoinsResponse);
rpc NewAddress(NewAddressRequest) returns (NewAddressResponse);
rpc ConnectPeer(ConnectPeerRequest) returns (ConnectPeerResponse);
@ -13,7 +14,6 @@ service Lightning {
rpc OpenChannel(OpenChannelRequest) returns (OpenChannelResponse);
rpc CloseChannel(CloseChannelRequest) returns (CloseChannelResponse);
rpc WalletBalance(WalletBalanceRequest) returns (WalletBalanceResponse);
}
message ChannelPoint {
@ -33,6 +33,14 @@ message SendManyResponse {
string txid = 1;
}
message SendCoinsRequest {
string addr = 1;
int64 amount = 2;
}
message SendCoinsResponse {
string txid = 1;
}
message NewAddressRequest {
enum AddressType {
WITNESS_PUBKEY_HASH = 0;