Browse Source

Merge pull request #304 from guggero/user-agent-string

Send user agent string with each swap
Oliver Gugger 3 months ago
committed by GitHub
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 170 additions and 93 deletions
  1. +121
  2. +18
  3. +2
  4. +2
  5. +27

+ 121
- 89
looprpc/server.pb.go View File

@ -174,7 +174,15 @@ type ServerLoopOutRequest struct {
// The requested absolute block height of the on-chain htlc. This is
// subjected to min and max constraints as reported in the LoopOutTerms
// response.
Expiry int32 `protobuf:"varint,6,opt,name=expiry,proto3" json:"expiry,omitempty"`
Expiry int32 `protobuf:"varint,6,opt,name=expiry,proto3" json:"expiry,omitempty"`
// The user agent string that identifies the software running on the user's
// side. This can be changed in the user's client software but it _SHOULD_
// conform to the following pattern:
// Agent-Name/semver-version(/additional-info)
// Examples:
// loopd/v0.10.0-beta/commit=3b635821
// litd/v0.2.0-alpha/commit=326d754
UserAgent string `protobuf:"bytes,7,opt,name=user_agent,json=userAgent,proto3" json:"user_agent,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -247,6 +255,13 @@ func (m *ServerLoopOutRequest) GetExpiry() int32 {
return 0
func (m *ServerLoopOutRequest) GetUserAgent() string {
if m != nil {
return m.UserAgent
return ""
type ServerLoopOutResponse struct {
SwapInvoice string `protobuf:"bytes,1,opt,name=swap_invoice,json=swapInvoice,proto3" json:"swap_invoice,omitempty"`
PrepayInvoice string `protobuf:"bytes,2,opt,name=prepay_invoice,json=prepayInvoice,proto3" json:"prepay_invoice,omitempty"`
@ -598,11 +613,19 @@ type ServerLoopInRequest struct {
SwapInvoice string `protobuf:"bytes,4,opt,name=swap_invoice,json=swapInvoice,proto3" json:"swap_invoice,omitempty"`
LastHop []byte `protobuf:"bytes,5,opt,name=last_hop,json=lastHop,proto3" json:"last_hop,omitempty"`
/// The protocol version that the client adheres to.
ProtocolVersion ProtocolVersion `protobuf:"varint,6,opt,name=protocol_version,json=protocolVersion,proto3,enum=looprpc.ProtocolVersion" json:"protocol_version,omitempty"`
ProbeInvoice string `protobuf:"bytes,7,opt,name=probe_invoice,json=probeInvoice,proto3" json:"probe_invoice,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
ProtocolVersion ProtocolVersion `protobuf:"varint,6,opt,name=protocol_version,json=protocolVersion,proto3,enum=looprpc.ProtocolVersion" json:"protocol_version,omitempty"`
ProbeInvoice string `protobuf:"bytes,7,opt,name=probe_invoice,json=probeInvoice,proto3" json:"probe_invoice,omitempty"`
// The user agent string that identifies the software running on the user's
// side. This can be changed in the user's client software but it _SHOULD_
// conform to the following pattern:
// Agent-Name/semver-version(/additional-info)
// Examples:
// loopd/v0.10.0-beta/commit=3b635821
// litd/v0.2.0-alpha/commit=326d754
UserAgent string `protobuf:"bytes,8,opt,name=user_agent,json=userAgent,proto3" json:"user_agent,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
func (m *ServerLoopInRequest) Reset() { *m = ServerLoopInRequest{} }
@ -679,6 +702,13 @@ func (m *ServerLoopInRequest) GetProbeInvoice() string {
return ""
func (m *ServerLoopInRequest) GetUserAgent() string {
if m != nil {
return m.UserAgent
return ""
type ServerLoopInResponse struct {
ReceiverKey []byte `protobuf:"bytes,1,opt,name=receiver_key,json=receiverKey,proto3" json:"receiver_key,omitempty"`
Expiry int32 `protobuf:"varint,2,opt,name=expiry,proto3" json:"expiry,omitempty"`
@ -1202,89 +1232,91 @@ func init() {
func init() { proto.RegisterFile("server.proto", fileDescriptor_ad098daeda4239f7) }
var fileDescriptor_ad098daeda4239f7 = []byte{
// 1309 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xcd, 0x52, 0xdb, 0xd6,
0x17, 0xff, 0x4b, 0xfe, 0xc2, 0xc7, 0x36, 0x88, 0x9b, 0x84, 0x18, 0x27, 0xe4, 0x6f, 0x94, 0x36,
0xa5, 0x2c, 0x48, 0x26, 0xdd, 0x75, 0xa7, 0xd8, 0x22, 0x68, 0x62, 0x64, 0x57, 0x96, 0x49, 0xb2,
0xba, 0x15, 0xe6, 0x16, 0x34, 0xb5, 0x3e, 0x22, 0xc9, 0x04, 0xa6, 0xab, 0x4e, 0x97, 0x7d, 0x86,
0x6e, 0xfa, 0x02, 0xed, 0xa6, 0x4f, 0xd0, 0x99, 0xbe, 0x41, 0xdf, 0xa7, 0x73, 0xaf, 0xae, 0x6c,
0xc9, 0x16, 0x04, 0x3a, 0x74, 0x67, 0x9d, 0xf3, 0xd3, 0xf9, 0xf8, 0x9d, 0x73, 0x7e, 0x32, 0xd4,
0x43, 0x12, 0x9c, 0x93, 0x60, 0xcf, 0x0f, 0xbc, 0xc8, 0x43, 0x95, 0x89, 0xe7, 0xf9, 0x81, 0x3f,
0x6e, 0x3d, 0x3e, 0xf5, 0xbc, 0xd3, 0x09, 0x79, 0x6e, 0xf9, 0xf6, 0x73, 0xcb, 0x75, 0xbd, 0xc8,
0x8a, 0x6c, 0xcf, 0x0d, 0x63, 0x98, 0xfc, 0xa3, 0x08, 0xf7, 0x87, 0xec, 0xbd, 0x9e, 0xe7, 0xf9,
0xfd, 0x69, 0x64, 0x90, 0x0f, 0x53, 0x12, 0x46, 0x68, 0x1b, 0xea, 0x01, 0x19, 0x13, 0xfb, 0x9c,
0x04, 0xf8, 0x7b, 0x72, 0xd9, 0x14, 0xda, 0xc2, 0x4e, 0xdd, 0xa8, 0x25, 0xb6, 0x37, 0xe4, 0x12,
0x3d, 0x82, 0x6a, 0xf8, 0xd1, 0xf2, 0xf1, 0x99, 0x15, 0x9e, 0x35, 0x45, 0xe6, 0x5f, 0xa1, 0x86,
0x03, 0x2b, 0x3c, 0x43, 0x12, 0x14, 0x2c, 0x27, 0x6a, 0x16, 0xda, 0xc2, 0x4e, 0xd1, 0xa0, 0x3f,
0xd1, 0xd7, 0xb0, 0xc9, 0xe0, 0xfe, 0xf4, 0x78, 0x62, 0x8f, 0x59, 0x15, 0xf8, 0x84, 0x58, 0x27,
0x13, 0xdb, 0x25, 0xcd, 0x62, 0x5b, 0xd8, 0x29, 0x18, 0x0f, 0x29, 0x60, 0x30, 0xf7, 0x77, 0xb9,
0x1b, 0x75, 0x40, 0x62, 0xf5, 0x8e, 0xbd, 0x09, 0x3e, 0x27, 0x41, 0x68, 0x7b, 0x6e, 0xb3, 0xd4,
0x16, 0x76, 0x56, 0x5f, 0x36, 0xf7, 0x78, 0xa3, 0x7b, 0x03, 0x0e, 0x38, 0x8a, 0xfd, 0xc6, 0x9a,
0x9f, 0x35, 0xa0, 0x0d, 0x28, 0x93, 0x0b, 0xdf, 0x0e, 0x2e, 0x9b, 0xe5, 0xb6, 0xb0, 0x53, 0x32,
0xf8, 0x93, 0xfc, 0xa7, 0x00, 0x0f, 0x16, 0x38, 0x08, 0x7d, 0xcf, 0x0d, 0x09, 0x25, 0x81, 0x95,
0x6c, 0xbb, 0xe7, 0x9e, 0x3d, 0x26, 0x8c, 0x84, 0xaa, 0x51, 0xa3, 0x36, 0x2d, 0x36, 0xa1, 0xcf,
0x61, 0xd5, 0x0f, 0x88, 0x6f, 0x5d, 0xce, 0x40, 0x22, 0x03, 0x35, 0x62, 0x6b, 0x02, 0xdb, 0x02,
0x08, 0x89, 0x7b, 0xc2, 0xc9, 0x2c, 0x30, 0xb2, 0xaa, 0xb1, 0x85, 0x52, 0xd9, 0x9a, 0x95, 0x46,
0x89, 0x28, 0xbd, 0x12, 0x9b, 0x42, 0x52, 0x1e, 0xcd, 0x10, 0x4f, 0x16, 0x3b, 0x24, 0x0c, 0xad,
0x53, 0xc2, 0x3a, 0xaf, 0x1a, 0x8d, 0xd8, 0x7a, 0x18, 0x1b, 0xe5, 0xbf, 0x04, 0xd8, 0xcc, 0x74,
0xf1, 0xcd, 0xd4, 0x8b, 0x48, 0x32, 0x4e, 0x3e, 0x0e, 0xe1, 0x86, 0xe3, 0x10, 0x6f, 0x3f, 0x8e,
0xc2, 0xbf, 0x1f, 0x47, 0x31, 0x33, 0x8e, 0x5f, 0x44, 0x40, 0xcb, 0x8d, 0xa0, 0x5d, 0x58, 0x8f,
0xeb, 0xb5, 0x2e, 0x1d, 0xe2, 0x46, 0xf8, 0x84, 0x84, 0x11, 0x1f, 0xc8, 0x1a, 0xab, 0x33, 0xb6,
0x77, 0x69, 0xb7, 0x9b, 0xc0, 0x16, 0x11, 0x7f, 0x47, 0x92, 0x56, 0x2a, 0xf4, 0x79, 0x9f, 0x10,
0xf4, 0x0c, 0x1a, 0x89, 0x0b, 0x07, 0x56, 0x44, 0x58, 0xdd, 0x05, 0x46, 0x78, 0x8d, 0x63, 0x0c,
0x2b, 0x62, 0x03, 0xe3, 0x73, 0xa5, 0xbc, 0x15, 0x19, 0x6f, 0xd5, 0xd8, 0xa2, 0x38, 0x11, 0xda,
0x85, 0x35, 0xc7, 0x76, 0x31, 0x0b, 0x65, 0x39, 0xde, 0xd4, 0x8d, 0xd8, 0x54, 0x8a, 0x2c, 0x50,
0xc3, 0xb1, 0xdd, 0xe1, 0x47, 0xcb, 0x57, 0x98, 0x83, 0x61, 0xad, 0x8b, 0x0c, 0xb6, 0x9c, 0xc2,
0x5a, 0x17, 0x29, 0xec, 0x36, 0xc0, 0x78, 0x12, 0x9d, 0xe3, 0x13, 0x32, 0x89, 0xac, 0x66, 0x65,
0xb6, 0x0c, 0x55, 0x6a, 0xed, 0x52, 0xa3, 0xfc, 0xed, 0xc2, 0x9c, 0x4d, 0x12, 0x38, 0x61, 0x32,
0xe7, 0xbc, 0xc9, 0x08, 0xb7, 0x9c, 0x8c, 0xfc, 0xbb, 0xb0, 0x30, 0x01, 0x96, 0x02, 0x3d, 0x5b,
0xee, 0x39, 0xde, 0xa7, 0x85, 0x7e, 0x9f, 0x2d, 0xf7, 0x2b, 0x72, 0x5c, 0xa6, 0xd7, 0xcf, 0x60,
0x95, 0xc6, 0x4b, 0xf5, 0x5b, 0x60, 0x8b, 0x50, 0x77, 0x6c, 0xb7, 0x93, 0xb4, 0xcb, 0x50, 0xd6,
0x45, 0x1a, 0x55, 0xe4, 0x28, 0xeb, 0x62, 0x86, 0x92, 0x7f, 0x16, 0xe1, 0xde, 0xbc, 0x64, 0xcd,
0x4d, 0xf8, 0xc8, 0xde, 0x9d, 0xb0, 0x78, 0x77, 0xb7, 0x94, 0xb0, 0x45, 0x3d, 0x28, 0x2e, 0xeb,
0xc1, 0x26, 0xac, 0x4c, 0xac, 0x30, 0xc2, 0x67, 0x9e, 0xcf, 0x36, 0xa2, 0x6e, 0x54, 0xe8, 0xf3,
0x81, 0xe7, 0xe7, 0xce, 0xa6, 0x7c, 0xdb, 0xab, 0x79, 0x0a, 0x0d, 0x3f, 0xf0, 0x8e, 0xc9, 0xac,
0x86, 0x0a, 0xab, 0xa1, 0xce, 0x8c, 0xbc, 0x08, 0xf9, 0x22, 0x2d, 0xea, 0x94, 0x8c, 0xb9, 0x9e,
0x7d, 0x4a, 0xd4, 0xe7, 0x57, 0x29, 0xa6, 0xaf, 0x32, 0x47, 0x85, 0x0a, 0x79, 0x2a, 0xf4, 0x01,
0x9a, 0xe9, 0xcc, 0x9f, 0xd0, 0xa0, 0x3c, 0x46, 0xc4, 0xdb, 0x6e, 0xeb, 0xdf, 0x19, 0xe1, 0x9b,
0xe5, 0xe4, 0x2d, 0xa7, 0xa5, 0x40, 0xf8, 0x84, 0x14, 0x88, 0xf9, 0x52, 0x90, 0x73, 0xeb, 0xc5,
0x5b, 0xdc, 0x7a, 0xe9, 0xaa, 0x5b, 0xdf, 0xca, 0xdc, 0x7a, 0xfc, 0x4d, 0x4a, 0xdd, 0x39, 0xce,
0x52, 0x79, 0xf7, 0x67, 0x3e, 0x86, 0xf5, 0xa5, 0x04, 0x77, 0x7d, 0xe4, 0xf2, 0x4f, 0x02, 0xb4,
0x33, 0x5a, 0x32, 0x98, 0x86, 0x67, 0x83, 0x80, 0xd8, 0x8e, 0x75, 0x4a, 0xee, 0xb2, 0x1d, 0xd4,
0x82, 0x15, 0x9f, 0xc7, 0x4d, 0x4e, 0x39, 0x79, 0x96, 0x9f, 0xc2, 0xf6, 0x35, 0x45, 0xc4, 0xab,
0x22, 0xff, 0x00, 0x0f, 0x87, 0xd3, 0xe3, 0x70, 0x1c, 0xd8, 0xc7, 0x64, 0xe4, 0x9f, 0x58, 0x11,
0xb9, 0x53, 0xbe, 0xaf, 0x15, 0x1b, 0x39, 0x82, 0xff, 0xcf, 0x92, 0xf3, 0x22, 0x67, 0x35, 0xcc,
0xaf, 0x37, 0xb2, 0x1d, 0x12, 0x46, 0x96, 0xe3, 0x63, 0x37, 0xe4, 0xeb, 0x5c, 0x9b, 0xd9, 0xf4,
0x10, 0xed, 0x41, 0x29, 0x8c, 0x92, 0x55, 0x4e, 0x17, 0x17, 0x77, 0x4f, 0xe7, 0x32, 0xa4, 0x7e,
0x23, 0x86, 0xc9, 0x21, 0x3c, 0xc9, 0x64, 0xd5, 0xdc, 0xff, 0x3e, 0xe9, 0xee, 0xaf, 0x02, 0xac,
0x2d, 0x90, 0x85, 0x00, 0xca, 0x3d, 0xf5, 0xb5, 0xd2, 0x79, 0x2f, 0xfd, 0x0f, 0x21, 0x58, 0x3d,
0x1c, 0xf5, 0x4c, 0x0d, 0xf7, 0xfa, 0xfd, 0x01, 0xee, 0x8f, 0x4c, 0x49, 0x40, 0x9b, 0xf0, 0x40,
0x57, 0x4c, 0xed, 0x48, 0xc5, 0x43, 0xf5, 0xf5, 0x5b, 0xcd, 0x8c, 0x7d, 0x9a, 0x2e, 0x89, 0xa8,
0x05, 0x1b, 0x03, 0x43, 0xd5, 0x0e, 0x95, 0xd7, 0x2a, 0x1e, 0x8c, 0x86, 0x07, 0xf3, 0xd7, 0x0a,
0xa8, 0x09, 0xf7, 0x47, 0x43, 0xd5, 0xc0, 0xea, 0xbb, 0x81, 0x66, 0xbc, 0x9f, 0x7b, 0x8a, 0xa8,
0x06, 0x95, 0x03, 0xb3, 0xd7, 0xc1, 0x47, 0x2f, 0xa5, 0x12, 0x5a, 0x87, 0x46, 0x2a, 0xa3, 0xa6,
0x4b, 0xe5, 0xdd, 0x3f, 0x44, 0x58, 0x5b, 0xa8, 0x1f, 0x35, 0xa0, 0xaa, 0xe9, 0x9a, 0xa9, 0x29,
0xa6, 0xda, 0x8d, 0xeb, 0x64, 0x21, 0x06, 0xa3, 0x57, 0x3d, 0x6d, 0x78, 0xa0, 0x76, 0x25, 0x81,
0x86, 0x1d, 0x8e, 0x3a, 0x1d, 0x75, 0x38, 0x94, 0x44, 0x0a, 0xd8, 0x57, 0xb4, 0x9e, 0xda, 0xc5,
0x23, 0xfd, 0x8d, 0xde, 0x7f, 0xab, 0x4b, 0x85, 0x94, 0x4d, 0xef, 0x63, 0xfa, 0xba, 0x54, 0x44,
0x4f, 0xa0, 0xc5, 0x6d, 0x9a, 0x7e, 0xa4, 0xf4, 0xb4, 0x2e, 0x73, 0x60, 0xe5, 0xb0, 0x3f, 0xd2,
0x4d, 0xa9, 0x84, 0x1e, 0x43, 0x93, 0xfb, 0xfb, 0xfb, 0xfb, 0xb8, 0x73, 0xa0, 0x68, 0x3a, 0x36,
0xb5, 0x43, 0x95, 0x76, 0x52, 0x4e, 0x45, 0x4c, 0x6c, 0x15, 0xda, 0x37, 0xb7, 0x0d, 0xdf, 0x2a,
0x03, 0xdc, 0x55, 0x95, 0x6e, 0x4f, 0xd3, 0x55, 0x69, 0x05, 0x3d, 0x82, 0x87, 0xdc, 0x33, 0xaf,
0xbd, 0xa3, 0x98, 0x5a, 0x5f, 0x97, 0xaa, 0xe8, 0x01, 0xac, 0xf3, 0x18, 0xa9, 0xa6, 0x00, 0x6d,
0x00, 0x1a, 0xe9, 0xea, 0xbb, 0x81, 0xda, 0x31, 0xd5, 0x2e, 0xa6, 0xaf, 0x8f, 0x0c, 0x55, 0xaa,
0xcd, 0x08, 0xe8, 0xf4, 0xf5, 0x7d, 0xcd, 0x38, 0x54, 0xbb, 0x52, 0xfd, 0xe5, 0x6f, 0x65, 0x00,
0xc6, 0x18, 0xe3, 0x0e, 0xf5, 0xa1, 0x9e, 0xf9, 0x0f, 0x21, 0x2f, 0x2c, 0x47, 0xce, 0x7f, 0x98,
0xd6, 0xa3, 0x6b, 0x30, 0xa8, 0x0f, 0xab, 0x3a, 0xf9, 0xc8, 0x4d, 0x34, 0x11, 0xda, 0xca, 0x87,
0x27, 0xd1, 0x9e, 0x5c, 0xe5, 0xe6, 0x0b, 0x3e, 0x81, 0x7b, 0x39, 0xa2, 0x80, 0xbe, 0xcc, 0x7f,
0x2d, 0x47, 0xbd, 0x5a, 0xbb, 0x37, 0x81, 0xf2, 0x6c, 0x73, 0x3e, 0xe2, 0x7f, 0xb5, 0x57, 0xf0,
0x91, 0xfe, 0x6e, 0x5e, 0xc5, 0x47, 0x1c, 0xa0, 0x07, 0xb5, 0xb4, 0x7c, 0x6f, 0xe7, 0x60, 0xb3,
0xdf, 0x8e, 0x56, 0xeb, 0x6a, 0x08, 0xea, 0x41, 0x83, 0xb3, 0xab, 0x31, 0xb1, 0x47, 0x8f, 0x73,
0xc1, 0x49, 0xa8, 0xad, 0x2b, 0xbc, 0xbc, 0x59, 0x33, 0xa9, 0x2d, 0x2e, 0x35, 0xbf, 0xb6, 0x4c,
0xab, 0xf2, 0x75, 0x10, 0x1e, 0xf5, 0x34, 0x25, 0xd3, 0x59, 0xa5, 0x44, 0xed, 0xf9, 0xeb, 0xf9,
0x42, 0xde, 0xda, 0x59, 0x46, 0xe4, 0xab, 0xed, 0x0b, 0x01, 0x11, 0xd8, 0xc8, 0x17, 0xc7, 0x1b,
0xe4, 0xf9, 0x22, 0x3f, 0xcf, 0x92, 0xbe, 0xbe, 0x10, 0x8e, 0xcb, 0xec, 0x3b, 0xf1, 0xd5, 0x3f,
0x01, 0x00, 0x00, 0xff, 0xff, 0x9d, 0x77, 0x98, 0xf6, 0xc0, 0x0f, 0x00, 0x00,
// 1336 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0x4f, 0x73, 0xda, 0x46,
0x14, 0xaf, 0xc4, 0x1f, 0x9b, 0x07, 0xd8, 0xf2, 0x26, 0x71, 0x30, 0x89, 0x53, 0xac, 0x34, 0x29,
0xf5, 0xc1, 0xc9, 0xa4, 0xb7, 0xde, 0x14, 0x90, 0x63, 0x4d, 0xb0, 0xa0, 0x02, 0x9c, 0xe4, 0xb4,
0x5d, 0xe3, 0xad, 0xad, 0x29, 0x48, 0x8a, 0x24, 0x1c, 0x7b, 0x7a, 0xec, 0xe7, 0xe8, 0x4c, 0xa7,
0xc7, 0x5e, 0xda, 0x4b, 0x3f, 0x41, 0x67, 0xfa, 0x0d, 0xfa, 0x7d, 0x3a, 0xbb, 0x5a, 0x81, 0x04,
0xb2, 0x13, 0x77, 0xdc, 0x1b, 0x7a, 0xef, 0xb7, 0xef, 0xcf, 0xef, 0xbd, 0xfd, 0x2d, 0x50, 0x09,
0xa8, 0x7f, 0x4e, 0xfd, 0x3d, 0xcf, 0x77, 0x43, 0x17, 0xad, 0x8c, 0x5d, 0xd7, 0xf3, 0xbd, 0x51,
0xfd, 0xe1, 0xa9, 0xeb, 0x9e, 0x8e, 0xe9, 0x33, 0xe2, 0xd9, 0xcf, 0x88, 0xe3, 0xb8, 0x21, 0x09,
0x6d, 0xd7, 0x09, 0x22, 0x98, 0xfa, 0x8b, 0x0c, 0x77, 0xfb, 0xfc, 0x5c, 0xc7, 0x75, 0xbd, 0xee,
0x34, 0xb4, 0xe8, 0xfb, 0x29, 0x0d, 0x42, 0xb4, 0x03, 0x15, 0x9f, 0x8e, 0xa8, 0x7d, 0x4e, 0x7d,
0xfc, 0x03, 0xbd, 0xac, 0x49, 0x0d, 0xa9, 0x59, 0xb1, 0xca, 0xb1, 0xed, 0x35, 0xbd, 0x44, 0x0f,
0xa0, 0x14, 0x7c, 0x20, 0x1e, 0x3e, 0x23, 0xc1, 0x59, 0x4d, 0xe6, 0xfe, 0x55, 0x66, 0x38, 0x20,
0xc1, 0x19, 0x52, 0x20, 0x47, 0x26, 0x61, 0x2d, 0xd7, 0x90, 0x9a, 0x79, 0x8b, 0xfd, 0x44, 0xdf,
0xc0, 0x16, 0x87, 0x7b, 0xd3, 0xe3, 0xb1, 0x3d, 0xe2, 0x55, 0xe0, 0x13, 0x4a, 0x4e, 0xc6, 0xb6,
0x43, 0x6b, 0xf9, 0x86, 0xd4, 0xcc, 0x59, 0xf7, 0x19, 0xa0, 0x37, 0xf7, 0xb7, 0x85, 0x1b, 0xb5,
0x40, 0xe1, 0xf5, 0x8e, 0xdc, 0x31, 0x3e, 0xa7, 0x7e, 0x60, 0xbb, 0x4e, 0xad, 0xd0, 0x90, 0x9a,
0x6b, 0x2f, 0x6a, 0x7b, 0xa2, 0xd1, 0xbd, 0x9e, 0x00, 0x1c, 0x45, 0x7e, 0x6b, 0xdd, 0x4b, 0x1b,
0xd0, 0x26, 0x14, 0xe9, 0x85, 0x67, 0xfb, 0x97, 0xb5, 0x62, 0x43, 0x6a, 0x16, 0x2c, 0xf1, 0x85,
0xb6, 0x01, 0xa6, 0x01, 0xf5, 0x31, 0x39, 0xa5, 0x4e, 0x58, 0x5b, 0x69, 0x48, 0xcd, 0x92, 0x55,
0x62, 0x16, 0x8d, 0x19, 0xd4, 0xbf, 0x24, 0xb8, 0xb7, 0x40, 0x51, 0xe0, 0xb9, 0x4e, 0x40, 0x19,
0x47, 0xbc, 0x23, 0xdb, 0x39, 0x77, 0xed, 0x11, 0xe5, 0x1c, 0x95, 0xac, 0x32, 0xb3, 0x19, 0x91,
0x09, 0x3d, 0x81, 0x35, 0xcf, 0xa7, 0x1e, 0xb9, 0x9c, 0x81, 0x64, 0x0e, 0xaa, 0x46, 0xd6, 0x18,
0xb6, 0x0d, 0x10, 0x50, 0xe7, 0x44, 0x70, 0x9d, 0xe3, 0x5c, 0x96, 0x22, 0x0b, 0x63, 0xba, 0x3e,
0xab, 0x9c, 0xf1, 0x54, 0x78, 0x29, 0xd7, 0xa4, 0x59, 0xf5, 0x4f, 0x60, 0x2d, 0x1a, 0x3c, 0x9e,
0xd0, 0x20, 0x20, 0xa7, 0x94, 0x13, 0x53, 0xb2, 0xaa, 0x91, 0xf5, 0x30, 0x32, 0xaa, 0x7f, 0x4b,
0xb0, 0x95, 0xea, 0xe2, 0xdb, 0xa9, 0x1b, 0xd2, 0x78, 0xda, 0x62, 0x5a, 0xd2, 0x27, 0x4e, 0x4b,
0xbe, 0xf9, 0xb4, 0x72, 0xff, 0x7d, 0x5a, 0xf9, 0xe4, 0xb4, 0xd4, 0x9f, 0x65, 0x40, 0xcb, 0x8d,
0xa0, 0x5d, 0xd8, 0x88, 0xea, 0x25, 0x97, 0x13, 0xea, 0x84, 0xf8, 0x84, 0x06, 0xa1, 0x18, 0xc8,
0x3a, 0xaf, 0x33, 0xb2, 0xb7, 0x59, 0xb7, 0x5b, 0xc0, 0xf7, 0x14, 0x7f, 0x4f, 0xe3, 0x56, 0x56,
0xd8, 0xf7, 0x3e, 0xa5, 0xe8, 0x29, 0x54, 0x63, 0x17, 0xf6, 0x49, 0x48, 0x79, 0xdd, 0x39, 0x4e,
0x78, 0x59, 0x60, 0x2c, 0x12, 0xf2, 0x81, 0x89, 0xb9, 0x32, 0xde, 0xf2, 0x9c, 0xb7, 0x52, 0x64,
0xd1, 0x26, 0x21, 0xda, 0x85, 0xf5, 0x89, 0xed, 0x60, 0x1e, 0x8a, 0x4c, 0xdc, 0xa9, 0x13, 0xf2,
0xa9, 0xe4, 0x79, 0xa0, 0xea, 0xc4, 0x76, 0xfa, 0x1f, 0x88, 0xa7, 0x71, 0x07, 0xc7, 0x92, 0x8b,
0x14, 0xb6, 0x98, 0xc0, 0x92, 0x8b, 0x04, 0x76, 0x07, 0x60, 0x34, 0x0e, 0xcf, 0xf1, 0x09, 0x1d,
0x87, 0x84, 0xaf, 0x6a, 0xb4, 0x0c, 0x25, 0x66, 0x6d, 0x33, 0xa3, 0xfa, 0xdd, 0xc2, 0x9c, 0x07,
0xd4, 0x9f, 0x04, 0xf1, 0x9c, 0xb3, 0x26, 0x23, 0xdd, 0x70, 0x32, 0xea, 0x1f, 0xd2, 0xc2, 0x04,
0x78, 0x0a, 0xf4, 0x74, 0xb9, 0xe7, 0x68, 0x9f, 0x16, 0xfa, 0x7d, 0xba, 0xdc, 0xaf, 0x2c, 0x70,
0xa9, 0x5e, 0xbf, 0x80, 0x35, 0x16, 0x2f, 0xd1, 0x6f, 0x8e, 0x2f, 0x42, 0x65, 0x62, 0x3b, 0xad,
0xb8, 0x5d, 0x8e, 0x22, 0x17, 0x49, 0x54, 0x5e, 0xa0, 0xc8, 0xc5, 0x0c, 0xa5, 0xfe, 0x26, 0xc3,
0x9d, 0x79, 0xc9, 0x86, 0x13, 0xf3, 0x91, 0xbe, 0x77, 0xd2, 0xe2, 0xbd, 0xbb, 0xa1, 0xc2, 0x2d,
0xea, 0x41, 0x7e, 0x59, 0x0f, 0xb6, 0x60, 0x75, 0x4c, 0x82, 0x10, 0x9f, 0xb9, 0x1e, 0xdf, 0x88,
0x8a, 0xb5, 0xc2, 0xbe, 0x0f, 0x5c, 0x2f, 0x73, 0x36, 0xc5, 0x9b, 0xde, 0x9a, 0xc7, 0x50, 0xf5,
0x7c, 0xf7, 0x98, 0xce, 0x6a, 0x88, 0xe4, 0xac, 0xc2, 0x8d, 0x09, 0xb5, 0x49, 0x08, 0xde, 0xea,
0xa2, 0xe0, 0x5d, 0x24, 0x9f, 0x04, 0xc6, 0xd5, 0x5c, 0xee, 0x3e, 0xf6, 0x24, 0xcc, 0x2f, 0xad,
0x9c, 0x92, 0xd8, 0x65, 0x91, 0xca, 0x65, 0x89, 0xd4, 0x7b, 0xa8, 0x25, 0x33, 0x7f, 0x44, 0xa2,
0xb2, 0x08, 0x93, 0x6f, 0xba, 0xcc, 0xff, 0xa4, 0x74, 0x71, 0x96, 0x53, 0xb4, 0x9c, 0x54, 0x0a,
0xe9, 0x23, 0x4a, 0x21, 0x67, 0x2b, 0x45, 0x86, 0x14, 0xe4, 0x6f, 0x20, 0x05, 0x85, 0xab, 0xa4,
0x60, 0x3b, 0x25, 0x05, 0xd1, 0x8b, 0x96, 0x90, 0x01, 0x9c, 0xa6, 0xf2, 0xf6, 0x55, 0x60, 0x04,
0x1b, 0x4b, 0x09, 0x6e, 0x5b, 0x03, 0xd4, 0x9f, 0x24, 0x68, 0xa4, 0xa4, 0xa6, 0x37, 0x0d, 0xce,
0x7a, 0x3e, 0xb5, 0x27, 0xe4, 0x94, 0xde, 0x66, 0x3b, 0xa8, 0x0e, 0xab, 0x9e, 0x88, 0x1b, 0xdf,
0xf4, 0xf8, 0x5b, 0x7d, 0x0c, 0x3b, 0xd7, 0x14, 0x11, 0xad, 0x8a, 0xfa, 0x23, 0xdc, 0xef, 0x4f,
0x8f, 0x83, 0x91, 0x6f, 0x1f, 0xd3, 0xa1, 0x77, 0x42, 0x42, 0x7a, 0xab, 0x7c, 0x5f, 0xab, 0x45,
0x6a, 0x08, 0x9f, 0xcf, 0x92, 0x8b, 0x22, 0x67, 0x35, 0xcc, 0x6f, 0x6f, 0x68, 0x4f, 0x68, 0x10,
0x92, 0x89, 0x87, 0x9d, 0x40, 0xac, 0x73, 0x79, 0x66, 0x33, 0x03, 0xb4, 0x07, 0x85, 0x20, 0x8c,
0x57, 0x39, 0x59, 0x5c, 0xd4, 0x3d, 0x9b, 0x4b, 0x9f, 0xf9, 0xad, 0x08, 0xa6, 0x06, 0xf0, 0x28,
0x95, 0xd5, 0x70, 0xfe, 0xff, 0xa4, 0xbb, 0xbf, 0x4a, 0xb0, 0xbe, 0x40, 0x16, 0x02, 0x28, 0x76,
0xf4, 0x57, 0x5a, 0xeb, 0x9d, 0xf2, 0x19, 0x42, 0xb0, 0x76, 0x38, 0xec, 0x0c, 0x0c, 0xdc, 0xe9,
0x76, 0x7b, 0xb8, 0x3b, 0x1c, 0x28, 0x12, 0xda, 0x82, 0x7b, 0xa6, 0x36, 0x30, 0x8e, 0x74, 0xdc,
0xd7, 0x5f, 0xbd, 0x31, 0x06, 0x91, 0xcf, 0x30, 0x15, 0x19, 0xd5, 0x61, 0xb3, 0x67, 0xe9, 0xc6,
0xa1, 0xf6, 0x4a, 0xc7, 0xbd, 0x61, 0xff, 0x60, 0x7e, 0x2c, 0x87, 0x6a, 0x70, 0x77, 0xd8, 0xd7,
0x2d, 0xac, 0xbf, 0xed, 0x19, 0xd6, 0xbb, 0xb9, 0x27, 0x8f, 0xca, 0xb0, 0x72, 0x30, 0xe8, 0xb4,
0xf0, 0xd1, 0x0b, 0xa5, 0x80, 0x36, 0xa0, 0x9a, 0xc8, 0x68, 0x98, 0x4a, 0x71, 0xf7, 0x4f, 0x19,
0xd6, 0x17, 0xea, 0x47, 0x55, 0x28, 0x19, 0xa6, 0x31, 0x30, 0xb4, 0x81, 0xde, 0x8e, 0xea, 0xe4,
0x21, 0x7a, 0xc3, 0x97, 0x1d, 0xa3, 0x7f, 0xa0, 0xb7, 0x15, 0x89, 0x85, 0xed, 0x0f, 0x5b, 0x2d,
0xbd, 0xdf, 0x57, 0x64, 0x06, 0xd8, 0xd7, 0x8c, 0x8e, 0xde, 0xc6, 0x43, 0xf3, 0xb5, 0xd9, 0x7d,
0x63, 0x2a, 0xb9, 0x84, 0xcd, 0xec, 0x62, 0x76, 0x5c, 0xc9, 0xa3, 0x47, 0x50, 0x17, 0x36, 0xc3,
0x3c, 0xd2, 0x3a, 0x46, 0x9b, 0x3b, 0xb0, 0x76, 0xd8, 0x1d, 0x9a, 0x03, 0xa5, 0x80, 0x1e, 0x42,
0x4d, 0xf8, 0xbb, 0xfb, 0xfb, 0xb8, 0x75, 0xa0, 0x19, 0x26, 0x1e, 0x18, 0x87, 0x3a, 0xeb, 0xa4,
0x98, 0x88, 0x18, 0xdb, 0x56, 0x58, 0xdf, 0xc2, 0xd6, 0x7f, 0xa3, 0xf5, 0x70, 0x5b, 0xd7, 0xda,
0x1d, 0xc3, 0xd4, 0x95, 0x55, 0xf4, 0x00, 0xee, 0x0b, 0xcf, 0xbc, 0xf6, 0x96, 0x36, 0x30, 0xba,
0xa6, 0x52, 0x42, 0xf7, 0x60, 0x43, 0xc4, 0x48, 0x34, 0x05, 0x68, 0x13, 0xd0, 0xd0, 0xd4, 0xdf,
0xf6, 0xf4, 0xd6, 0x40, 0x6f, 0x63, 0x76, 0x7c, 0x68, 0xe9, 0x4a, 0x79, 0x46, 0x40, 0xab, 0x6b,
0xee, 0x1b, 0xd6, 0xa1, 0xde, 0x56, 0x2a, 0x2f, 0x7e, 0x2f, 0x02, 0x70, 0xc6, 0x38, 0x77, 0xa8,
0x0b, 0x95, 0xd4, 0x5f, 0x0c, 0x75, 0x61, 0x39, 0x32, 0xfe, 0xe2, 0xd4, 0x1f, 0x5c, 0x83, 0x41,
0x5d, 0x58, 0x33, 0xe9, 0x07, 0x61, 0x62, 0x89, 0xd0, 0x76, 0x36, 0x3c, 0x8e, 0xf6, 0xe8, 0x2a,
0xb7, 0x58, 0xf0, 0x31, 0xdc, 0xc9, 0x10, 0x05, 0xf4, 0x55, 0xf6, 0xb1, 0x0c, 0xf5, 0xaa, 0xef,
0x7e, 0x0a, 0x54, 0x64, 0x9b, 0xf3, 0x11, 0xfd, 0xe9, 0xbd, 0x82, 0x8f, 0xe4, 0xbb, 0x79, 0x15,
0x1f, 0x51, 0x80, 0x0e, 0x94, 0x93, 0xf2, 0xbd, 0x93, 0x81, 0x4d, 0xbf, 0x1d, 0xf5, 0xfa, 0xd5,
0x10, 0xd4, 0x81, 0xaa, 0x60, 0xd7, 0xe0, 0x62, 0x8f, 0x1e, 0x66, 0x82, 0xe3, 0x50, 0xdb, 0x57,
0x78, 0x45, 0xb3, 0x83, 0xb8, 0xb6, 0xa8, 0xd4, 0xec, 0xda, 0x52, 0xad, 0xaa, 0xd7, 0x41, 0x44,
0xd4, 0xd3, 0x84, 0x4c, 0xa7, 0x95, 0x12, 0x35, 0xe6, 0xc7, 0xb3, 0x85, 0xbc, 0xde, 0x5c, 0x46,
0x64, 0xab, 0xed, 0x73, 0x09, 0x51, 0xd8, 0xcc, 0x16, 0xc7, 0x4f, 0xc8, 0xf3, 0x65, 0x76, 0x9e,
0x25, 0x7d, 0x7d, 0x2e, 0x1d, 0x17, 0xf9, 0x3b, 0xf1, 0xf5, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff,
0xbd, 0x37, 0x63, 0xb1, 0xfe, 0x0f, 0x00, 0x00,
// Reference imports to suppress errors if they are not otherwise used.

+ 18
- 0
looprpc/server.proto View File

@ -83,6 +83,15 @@ message ServerLoopOutRequest {
// subjected to min and max constraints as reported in the LoopOutTerms
// response.
int32 expiry = 6;
// The user agent string that identifies the software running on the user's
// side. This can be changed in the user's client software but it _SHOULD_
// conform to the following pattern:
// Agent-Name/semver-version(/additional-info)
// Examples:
// loopd/v0.10.0-beta/commit=3b635821
// litd/v0.2.0-alpha/commit=326d754
string user_agent = 7;
message ServerLoopOutResponse {
@ -163,6 +172,15 @@ message ServerLoopInRequest {
ProtocolVersion protocol_version = 6;
string probe_invoice = 7;
// The user agent string that identifies the software running on the user's
// side. This can be changed in the user's client software but it _SHOULD_
// conform to the following pattern:
// Agent-Name/semver-version(/additional-info)
// Examples:
// loopd/v0.10.0-beta/commit=3b635821
// litd/v0.2.0-alpha/commit=326d754
string user_agent = 8;
message ServerLoopInResponse {

+ 2
- 0 View File

@ -17,6 +17,8 @@ This file tracks release notes for the loop client.
to replenish multiple channels via a single Loop In request and a single on-chain htlc.
This has to potential to greatly reduce chain fee costs. Note that it is not yet possible
to select specific peers to loop in through.
* The daemon now sends a user agent string with each swap. This allows
developers to identify their fork or custom implementation of the loop client.
##### Updated Swap Suggestions
* The swap suggestions endpoint has been updated to be fee-aware. Swaps that

+ 2
- 0
swap_server_client.go View File

@ -233,6 +233,7 @@ func (s *grpcSwapServerClient) NewLoopOutSwap(ctx context.Context,
SwapPublicationDeadline: swapPublicationDeadline.Unix(),
ProtocolVersion: loopdb.CurrentRPCProtocolVersion,
Expiry: expiry,
UserAgent: UserAgent(),
if err != nil {
@ -287,6 +288,7 @@ func (s *grpcSwapServerClient) NewLoopInSwap(ctx context.Context,
SwapInvoice: swapInvoice,
ProtocolVersion: loopdb.CurrentRPCProtocolVersion,
ProbeInvoice: probeInvoice,
UserAgent: UserAgent(),
if lastHop != nil {
req.LastHop = lastHop[:]

+ 27
- 4
version.go View File

@ -29,11 +29,37 @@ const (
// appPreRelease MUST only contain characters from semanticAlphabet per
// the semantic versioning spec.
appPreRelease = "beta"
// defaultAgentName is the default name of the software that is added as
// the first part of the user agent string.
defaultAgentName = "loopd"
// AgentName stores the name of the software that is added as the first part of
// the user agent string. This defaults to the value "loopd" when being run as
// a standalone component but can be overwritten by LiT for example when loopd
// is integrated into the UI.
var AgentName = defaultAgentName
// Version returns the application version as a properly formed string per the
// semantic versioning 2.0.0 spec (
// semantic versioning 2.0.0 spec ( and the commit it was
// built on.
func Version() string {
// Append commit hash of current build to version.
return fmt.Sprintf("%s commit=%s", semanticVersion(), Commit)
// UserAgent returns the full user agent string that identifies the software
// that is submitting swaps to the loop server.
func UserAgent() string {
// Assemble full string, including the commit hash of current build.
return fmt.Sprintf(
"%s/v%s/commit=%s", AgentName, semanticVersion(), Commit,
// semanticVersion returns the SemVer part of the version.
func semanticVersion() string {
// Start with the major, minor, and patch versions.
version := fmt.Sprintf("%d.%d.%d", appMajor, appMinor, appPatch)
@ -46,9 +72,6 @@ func Version() string {
version = fmt.Sprintf("%s-%s", version, preRelease)
// Append commit hash of current build to version.
version = fmt.Sprintf("%s commit=%s", version, Commit)
return version