loop-in: await probe from the server on loop-in quote

pull/356/head
Andras Banki-Horvath 3 years ago
parent c9cb57faa2
commit a325afb5c7

@ -39,13 +39,15 @@ const (
// invoice so that the server can perform a multi-path probe. // invoice so that the server can perform a multi-path probe.
ProtocolVersionMultiLoopIn ProtocolVersion = 6 ProtocolVersionMultiLoopIn ProtocolVersion = 6
ProtocolVersionMultiLoopInV2 ProtocolVersion = 7
// ProtocolVersionUnrecorded is set for swaps were created before we // ProtocolVersionUnrecorded is set for swaps were created before we
// started saving protocol version with swaps. // started saving protocol version with swaps.
ProtocolVersionUnrecorded ProtocolVersion = math.MaxUint32 ProtocolVersionUnrecorded ProtocolVersion = math.MaxUint32
// CurrentRPCProtocolVersion defines the version of the RPC protocol // CurrentRPCProtocolVersion defines the version of the RPC protocol
// that is currently supported by the loop client. // that is currently supported by the loop client.
CurrentRPCProtocolVersion = looprpc.ProtocolVersion_MULTI_LOOP_IN CurrentRPCProtocolVersion = looprpc.ProtocolVersion_MULTI_LOOP_IN_V2
// CurrentInternalProtocolVersion defines the RPC current protocol in // CurrentInternalProtocolVersion defines the RPC current protocol in
// the internal representation. // the internal representation.

@ -21,6 +21,7 @@ func TestProtocolVersionSanity(t *testing.T) {
ProtocolVersionUserExpiryLoopOut, ProtocolVersionUserExpiryLoopOut,
ProtocolVersionHtlcV2, ProtocolVersionHtlcV2,
ProtocolVersionMultiLoopIn, ProtocolVersionMultiLoopIn,
ProtocolVersionMultiLoopInV2,
} }
rpcVersions := [...]looprpc.ProtocolVersion{ rpcVersions := [...]looprpc.ProtocolVersion{
@ -31,6 +32,7 @@ func TestProtocolVersionSanity(t *testing.T) {
looprpc.ProtocolVersion_USER_EXPIRY_LOOP_OUT, looprpc.ProtocolVersion_USER_EXPIRY_LOOP_OUT,
looprpc.ProtocolVersion_HTLC_V2, looprpc.ProtocolVersion_HTLC_V2,
looprpc.ProtocolVersion_MULTI_LOOP_IN, looprpc.ProtocolVersion_MULTI_LOOP_IN,
looprpc.ProtocolVersion_MULTI_LOOP_IN_V2,
} }
require.Equal(t, len(versions), len(rpcVersions)) require.Equal(t, len(versions), len(rpcVersions))

@ -54,6 +54,8 @@ const (
// The client creates a probe invoice so that the server can perform a // The client creates a probe invoice so that the server can perform a
// multi-path probe. // multi-path probe.
ProtocolVersion_MULTI_LOOP_IN ProtocolVersion = 6 ProtocolVersion_MULTI_LOOP_IN ProtocolVersion = 6
// The client creates a probe invoice in the loop-in quote.
ProtocolVersion_MULTI_LOOP_IN_V2 ProtocolVersion = 7
) )
var ProtocolVersion_name = map[int32]string{ var ProtocolVersion_name = map[int32]string{
@ -64,6 +66,7 @@ var ProtocolVersion_name = map[int32]string{
4: "USER_EXPIRY_LOOP_OUT", 4: "USER_EXPIRY_LOOP_OUT",
5: "HTLC_V2", 5: "HTLC_V2",
6: "MULTI_LOOP_IN", 6: "MULTI_LOOP_IN",
7: "MULTI_LOOP_IN_V2",
} }
var ProtocolVersion_value = map[string]int32{ var ProtocolVersion_value = map[string]int32{
@ -74,6 +77,7 @@ var ProtocolVersion_value = map[string]int32{
"USER_EXPIRY_LOOP_OUT": 4, "USER_EXPIRY_LOOP_OUT": 4,
"HTLC_V2": 5, "HTLC_V2": 5,
"MULTI_LOOP_IN": 6, "MULTI_LOOP_IN": 6,
"MULTI_LOOP_IN_V2": 7,
} }
func (x ProtocolVersion) String() string { func (x ProtocolVersion) String() string {
@ -770,6 +774,7 @@ type ServerLoopInQuoteRequest struct {
Amt uint64 `protobuf:"varint,1,opt,name=amt,proto3" json:"amt,omitempty"` Amt uint64 `protobuf:"varint,1,opt,name=amt,proto3" json:"amt,omitempty"`
/// The protocol version that the client adheres to. /// The protocol version that the client adheres to.
ProtocolVersion ProtocolVersion `protobuf:"varint,2,opt,name=protocol_version,json=protocolVersion,proto3,enum=looprpc.ProtocolVersion" json:"protocol_version,omitempty"` ProtocolVersion ProtocolVersion `protobuf:"varint,2,opt,name=protocol_version,json=protocolVersion,proto3,enum=looprpc.ProtocolVersion" json:"protocol_version,omitempty"`
ProbeInvoice string `protobuf:"bytes,3,opt,name=probe_invoice,json=probeInvoice,proto3" json:"probe_invoice,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@ -814,6 +819,13 @@ func (m *ServerLoopInQuoteRequest) GetProtocolVersion() ProtocolVersion {
return ProtocolVersion_LEGACY return ProtocolVersion_LEGACY
} }
func (m *ServerLoopInQuoteRequest) GetProbeInvoice() string {
if m != nil {
return m.ProbeInvoice
}
return ""
}
type ServerLoopInQuoteResponse struct { type ServerLoopInQuoteResponse struct {
SwapFee int64 `protobuf:"varint,1,opt,name=swap_fee,json=swapFee,proto3" json:"swap_fee,omitempty"` SwapFee int64 `protobuf:"varint,1,opt,name=swap_fee,json=swapFee,proto3" json:"swap_fee,omitempty"`
SwapFeeRate int64 `protobuf:"varint,2,opt,name=swap_fee_rate,json=swapFeeRate,proto3" json:"swap_fee_rate,omitempty"` // Deprecated: Do not use. SwapFeeRate int64 `protobuf:"varint,2,opt,name=swap_fee_rate,json=swapFeeRate,proto3" json:"swap_fee_rate,omitempty"` // Deprecated: Do not use.
@ -1232,91 +1244,92 @@ func init() {
func init() { proto.RegisterFile("server.proto", fileDescriptor_ad098daeda4239f7) } func init() { proto.RegisterFile("server.proto", fileDescriptor_ad098daeda4239f7) }
var fileDescriptor_ad098daeda4239f7 = []byte{ var fileDescriptor_ad098daeda4239f7 = []byte{
// 1336 bytes of a gzipped FileDescriptorProto // 1350 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0x4f, 0x73, 0xda, 0x46, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0x4f, 0x73, 0xdb, 0xd4,
0x14, 0xaf, 0xc4, 0x1f, 0x9b, 0x07, 0xd8, 0xf2, 0x26, 0x71, 0x30, 0x89, 0x53, 0xac, 0x34, 0x29, 0x17, 0xfd, 0x49, 0xfe, 0x17, 0x5f, 0xdb, 0x89, 0xf2, 0xda, 0xa6, 0x8e, 0xdb, 0xf4, 0xe7, 0xa8,
0xf5, 0xc1, 0xc9, 0xa4, 0xb7, 0xde, 0x14, 0x90, 0x63, 0x4d, 0xb0, 0xa0, 0x02, 0x9c, 0xe4, 0xb4, 0xb4, 0x98, 0x2c, 0xd2, 0x4e, 0xd9, 0xb1, 0x53, 0x6d, 0xa5, 0xd1, 0xd4, 0x91, 0x8d, 0x2c, 0xa7,
0x5d, 0xe3, 0xad, 0xad, 0x29, 0x48, 0x8a, 0x24, 0x1c, 0x7b, 0x7a, 0xec, 0xe7, 0xe8, 0x4c, 0xa7, 0xed, 0xea, 0xa1, 0x38, 0x8f, 0x44, 0x83, 0x2d, 0x09, 0x49, 0x4e, 0x93, 0x61, 0xc9, 0x77, 0x60,
0xc7, 0x5e, 0xda, 0x4b, 0x3f, 0x41, 0x67, 0xfa, 0x0d, 0xfa, 0x7d, 0x3a, 0xbb, 0x5a, 0x81, 0x04, 0xc7, 0x0c, 0x6b, 0x36, 0xb0, 0x61, 0x86, 0x3d, 0x33, 0x7c, 0x03, 0xbe, 0x0f, 0xf3, 0x9e, 0x9e,
0xb2, 0x13, 0x77, 0xdc, 0x1b, 0x7a, 0xef, 0xb7, 0xef, 0xcf, 0xef, 0xbd, 0xfd, 0x2d, 0x50, 0x09, 0x6c, 0xc9, 0x96, 0xd3, 0x06, 0xc2, 0xce, 0x3a, 0xf7, 0xe8, 0xdd, 0x7b, 0xcf, 0xbd, 0x3a, 0xcf,
0xa8, 0x7f, 0x4e, 0xfd, 0x3d, 0xcf, 0x77, 0x43, 0x17, 0xad, 0x8c, 0x5d, 0xd7, 0xf3, 0xbd, 0x51, 0x50, 0x0d, 0x88, 0x7f, 0x41, 0xfc, 0x7d, 0xcf, 0x77, 0x43, 0x17, 0x95, 0xc6, 0xae, 0xeb, 0xf9,
0xfd, 0xe1, 0xa9, 0xeb, 0x9e, 0x8e, 0xe9, 0x33, 0xe2, 0xd9, 0xcf, 0x88, 0xe3, 0xb8, 0x21, 0x09, 0xde, 0xa8, 0xf1, 0xf0, 0xcc, 0x75, 0xcf, 0xc6, 0xe4, 0x99, 0xe5, 0xd9, 0xcf, 0x2c, 0xc7, 0x71,
0x6d, 0xd7, 0x09, 0x22, 0x98, 0xfa, 0x8b, 0x0c, 0x77, 0xfb, 0xfc, 0x5c, 0xc7, 0x75, 0xbd, 0xee, 0x43, 0x2b, 0xb4, 0x5d, 0x27, 0x88, 0x68, 0xf2, 0x4f, 0x22, 0xdc, 0x1d, 0xb0, 0xf7, 0xba, 0xae,
0x34, 0xb4, 0xe8, 0xfb, 0x29, 0x0d, 0x42, 0xb4, 0x03, 0x15, 0x9f, 0x8e, 0xa8, 0x7d, 0x4e, 0x7d, 0xeb, 0xf5, 0xa6, 0xa1, 0x41, 0xbe, 0x9d, 0x92, 0x20, 0x44, 0xbb, 0x50, 0xf5, 0xc9, 0x88, 0xd8,
0xfc, 0x03, 0xbd, 0xac, 0x49, 0x0d, 0xa9, 0x59, 0xb1, 0xca, 0xb1, 0xed, 0x35, 0xbd, 0x44, 0x0f, 0x17, 0xc4, 0xc7, 0xdf, 0x90, 0xab, 0xba, 0xd0, 0x14, 0x5a, 0x55, 0xa3, 0x12, 0x63, 0xaf, 0xc9,
0xa0, 0x14, 0x7c, 0x20, 0x1e, 0x3e, 0x23, 0xc1, 0x59, 0x4d, 0xe6, 0xfe, 0x55, 0x66, 0x38, 0x20, 0x15, 0x7a, 0x00, 0xe5, 0xe0, 0xbd, 0xe5, 0xe1, 0x73, 0x2b, 0x38, 0xaf, 0x8b, 0x2c, 0xbe, 0x46,
0xc1, 0x19, 0x52, 0x20, 0x47, 0x26, 0x61, 0x2d, 0xd7, 0x90, 0x9a, 0x79, 0x8b, 0xfd, 0x44, 0xdf, 0x81, 0x43, 0x2b, 0x38, 0x47, 0x12, 0xe4, 0xac, 0x49, 0x58, 0xcf, 0x35, 0x85, 0x56, 0xde, 0xa0,
0xc0, 0x16, 0x87, 0x7b, 0xd3, 0xe3, 0xb1, 0x3d, 0xe2, 0x55, 0xe0, 0x13, 0x4a, 0x4e, 0xc6, 0xb6, 0x3f, 0xd1, 0x17, 0xb0, 0xcd, 0xe8, 0xde, 0xf4, 0x64, 0x6c, 0x8f, 0x58, 0x15, 0xf8, 0x94, 0x58,
0x43, 0x6b, 0xf9, 0x86, 0xd4, 0xcc, 0x59, 0xf7, 0x19, 0xa0, 0x37, 0xf7, 0xb7, 0x85, 0x1b, 0xb5, 0xa7, 0x63, 0xdb, 0x21, 0xf5, 0x7c, 0x53, 0x68, 0xe5, 0x8c, 0xfb, 0x94, 0xd0, 0x9f, 0xc7, 0x3b,
0x40, 0xe1, 0xf5, 0x8e, 0xdc, 0x31, 0x3e, 0xa7, 0x7e, 0x60, 0xbb, 0x4e, 0xad, 0xd0, 0x90, 0x9a, 0x3c, 0x8c, 0xda, 0x20, 0xb1, 0x7a, 0x47, 0xee, 0x18, 0x5f, 0x10, 0x3f, 0xb0, 0x5d, 0xa7, 0x5e,
0x6b, 0x2f, 0x6a, 0x7b, 0xa2, 0xd1, 0xbd, 0x9e, 0x00, 0x1c, 0x45, 0x7e, 0x6b, 0xdd, 0x4b, 0x1b, 0x68, 0x0a, 0xad, 0xf5, 0x17, 0xf5, 0x7d, 0xde, 0xe8, 0x7e, 0x9f, 0x13, 0x8e, 0xa3, 0xb8, 0xb1,
0xd0, 0x26, 0x14, 0xe9, 0x85, 0x67, 0xfb, 0x97, 0xb5, 0x62, 0x43, 0x6a, 0x16, 0x2c, 0xf1, 0x85, 0xe1, 0xa5, 0x01, 0xb4, 0x05, 0x45, 0x72, 0xe9, 0xd9, 0xfe, 0x55, 0xbd, 0xd8, 0x14, 0x5a, 0x05,
0xb6, 0x01, 0xa6, 0x01, 0xf5, 0x31, 0x39, 0xa5, 0x4e, 0x58, 0x5b, 0x69, 0x48, 0xcd, 0x92, 0x55, 0x83, 0x3f, 0xa1, 0x1d, 0x80, 0x69, 0x40, 0x7c, 0x6c, 0x9d, 0x11, 0x27, 0xac, 0x97, 0x9a, 0x42,
0x62, 0x16, 0x8d, 0x19, 0xd4, 0xbf, 0x24, 0xb8, 0xb7, 0x40, 0x51, 0xe0, 0xb9, 0x4e, 0x40, 0x19, 0xab, 0x6c, 0x94, 0x29, 0xa2, 0x50, 0x40, 0xfe, 0x43, 0x80, 0x7b, 0x0b, 0x12, 0x05, 0x9e, 0xeb,
0x47, 0xbc, 0x23, 0xdb, 0x39, 0x77, 0xed, 0x11, 0xe5, 0x1c, 0x95, 0xac, 0x32, 0xb3, 0x19, 0x91, 0x04, 0x84, 0x6a, 0xc4, 0x3a, 0xb2, 0x9d, 0x0b, 0xd7, 0x1e, 0x11, 0xa6, 0x51, 0xd9, 0xa8, 0x50,
0x09, 0x3d, 0x81, 0x35, 0xcf, 0xa7, 0x1e, 0xb9, 0x9c, 0x81, 0x64, 0x0e, 0xaa, 0x46, 0xd6, 0x18, 0x4c, 0x8b, 0x20, 0xf4, 0x04, 0xd6, 0x3d, 0x9f, 0x78, 0xd6, 0xd5, 0x8c, 0x24, 0x32, 0x52, 0x2d,
0xb6, 0x0d, 0x10, 0x50, 0xe7, 0x44, 0x70, 0x9d, 0xe3, 0x5c, 0x96, 0x22, 0x0b, 0x63, 0xba, 0x3e, 0x42, 0x63, 0xda, 0x0e, 0x40, 0x40, 0x9c, 0x53, 0xae, 0x75, 0x8e, 0x69, 0x59, 0x8e, 0x10, 0xaa,
0xab, 0x9c, 0xf1, 0x54, 0x78, 0x29, 0xd7, 0xa4, 0x59, 0xf5, 0x4f, 0x60, 0x2d, 0x1a, 0x3c, 0x9e, 0x74, 0x63, 0x56, 0x39, 0xd5, 0xa9, 0xf0, 0x52, 0xac, 0x0b, 0xb3, 0xea, 0x9f, 0xc0, 0x7a, 0x34,
0xd0, 0x20, 0x20, 0xa7, 0x94, 0x13, 0x53, 0xb2, 0xaa, 0x91, 0xf5, 0x30, 0x32, 0xaa, 0x7f, 0x4b, 0x78, 0x3c, 0x21, 0x41, 0x60, 0x9d, 0x11, 0x26, 0x4c, 0xd9, 0xa8, 0x45, 0xe8, 0x51, 0x04, 0xca,
0xb0, 0x95, 0xea, 0xe2, 0xdb, 0xa9, 0x1b, 0xd2, 0x78, 0xda, 0x62, 0x5a, 0xd2, 0x27, 0x4e, 0x4b, 0x7f, 0x0a, 0xb0, 0x9d, 0xea, 0xe2, 0xcb, 0xa9, 0x1b, 0x92, 0x78, 0xda, 0x7c, 0x5a, 0xc2, 0x47,
0xbe, 0xf9, 0xb4, 0x72, 0xff, 0x7d, 0x5a, 0xf9, 0xe4, 0xb4, 0xd4, 0x9f, 0x65, 0x40, 0xcb, 0x8d, 0x4e, 0x4b, 0xbc, 0xf9, 0xb4, 0x72, 0xff, 0x7c, 0x5a, 0xf9, 0xe4, 0xb4, 0xe4, 0x1f, 0x45, 0x40,
0xa0, 0x5d, 0xd8, 0x88, 0xea, 0x25, 0x97, 0x13, 0xea, 0x84, 0xf8, 0x84, 0x06, 0xa1, 0x18, 0xc8, 0xcb, 0x8d, 0xa0, 0x3d, 0xd8, 0x8c, 0xea, 0xb5, 0xae, 0x26, 0xc4, 0x09, 0xf1, 0x29, 0x09, 0x42,
0x3a, 0xaf, 0x33, 0xb2, 0xb7, 0x59, 0xb7, 0x5b, 0xc0, 0xf7, 0x14, 0x7f, 0x4f, 0xe3, 0x56, 0x56, 0x3e, 0x90, 0x0d, 0x56, 0x67, 0x84, 0x77, 0x68, 0xb7, 0xdb, 0xc0, 0xf6, 0x14, 0x7f, 0x4d, 0xe2,
0xd8, 0xf7, 0x3e, 0xa5, 0xe8, 0x29, 0x54, 0x63, 0x17, 0xf6, 0x49, 0x48, 0x79, 0xdd, 0x39, 0x4e, 0x56, 0x4a, 0xf4, 0xf9, 0x80, 0x10, 0xf4, 0x14, 0x6a, 0x71, 0x08, 0xfb, 0x56, 0x48, 0x58, 0xdd,
0x78, 0x59, 0x60, 0x2c, 0x12, 0xf2, 0x81, 0x89, 0xb9, 0x32, 0xde, 0xf2, 0x9c, 0xb7, 0x52, 0x64, 0x39, 0x26, 0x78, 0x85, 0x73, 0x0c, 0x2b, 0x64, 0x03, 0xe3, 0x73, 0xa5, 0xba, 0xe5, 0x99, 0x6e,
0xd1, 0x26, 0x21, 0xda, 0x85, 0xf5, 0x89, 0xed, 0x60, 0x1e, 0x8a, 0x4c, 0xdc, 0xa9, 0x13, 0xf2, 0xe5, 0x08, 0x51, 0x26, 0x21, 0xda, 0x83, 0x8d, 0x89, 0xed, 0x60, 0x76, 0x94, 0x35, 0x71, 0xa7,
0xa9, 0xe4, 0x79, 0xa0, 0xea, 0xc4, 0x76, 0xfa, 0x1f, 0x88, 0xa7, 0x71, 0x07, 0xc7, 0x92, 0x8b, 0x4e, 0xc8, 0xa6, 0x92, 0x67, 0x07, 0xd5, 0x26, 0xb6, 0x33, 0x78, 0x6f, 0x79, 0x0a, 0x0b, 0x30,
0x14, 0xb6, 0x98, 0xc0, 0x92, 0x8b, 0x04, 0x76, 0x07, 0x60, 0x34, 0x0e, 0xcf, 0xf1, 0x09, 0x1d, 0xae, 0x75, 0x99, 0xe2, 0x16, 0x13, 0x5c, 0xeb, 0x32, 0xc1, 0xdd, 0x05, 0x18, 0x8d, 0xc3, 0x0b,
0x87, 0x84, 0xaf, 0x6a, 0xb4, 0x0c, 0x25, 0x66, 0x6d, 0x33, 0xa3, 0xfa, 0xdd, 0xc2, 0x9c, 0x07, 0x7c, 0x4a, 0xc6, 0xa1, 0xc5, 0x56, 0x35, 0x5a, 0x86, 0x32, 0x45, 0x3b, 0x14, 0x94, 0xbf, 0x5a,
0xd4, 0x9f, 0x04, 0xf1, 0x9c, 0xb3, 0x26, 0x23, 0xdd, 0x70, 0x32, 0xea, 0x1f, 0xd2, 0xc2, 0x04, 0x98, 0xb3, 0x49, 0xfc, 0x49, 0x10, 0xcf, 0x39, 0x6b, 0x32, 0xc2, 0x0d, 0x27, 0x23, 0xff, 0x2a,
0x78, 0x0a, 0xf4, 0x74, 0xb9, 0xe7, 0x68, 0x9f, 0x16, 0xfa, 0x7d, 0xba, 0xdc, 0xaf, 0x2c, 0x70, 0x2c, 0x4c, 0x80, 0xa5, 0x40, 0x4f, 0x97, 0x7b, 0x8e, 0xf6, 0x69, 0xa1, 0xdf, 0xa7, 0xcb, 0xfd,
0xa9, 0x5e, 0xbf, 0x80, 0x35, 0x16, 0x2f, 0xd1, 0x6f, 0x8e, 0x2f, 0x42, 0x65, 0x62, 0x3b, 0xad, 0x8a, 0x9c, 0x97, 0xea, 0xf5, 0x13, 0x58, 0xa7, 0xe7, 0x25, 0xfa, 0xcd, 0xb1, 0x45, 0xa8, 0x4e,
0xb8, 0x5d, 0x8e, 0x22, 0x17, 0x49, 0x54, 0x5e, 0xa0, 0xc8, 0xc5, 0x0c, 0xa5, 0xfe, 0x26, 0xc3, 0x6c, 0xa7, 0x1d, 0xb7, 0xcb, 0x58, 0xd6, 0x65, 0x92, 0x95, 0xe7, 0x2c, 0xeb, 0x72, 0xc6, 0x92,
0x9d, 0x79, 0xc9, 0x86, 0x13, 0xf3, 0x91, 0xbe, 0x77, 0xd2, 0xe2, 0xbd, 0xbb, 0xa1, 0xc2, 0x2d, 0x7f, 0x16, 0xe1, 0xce, 0xbc, 0x64, 0xcd, 0x89, 0xf5, 0x48, 0x7f, 0x77, 0xc2, 0xe2, 0x77, 0x77,
0xea, 0x41, 0x7e, 0x59, 0x0f, 0xb6, 0x60, 0x75, 0x4c, 0x82, 0x10, 0x9f, 0xb9, 0x1e, 0xdf, 0x88, 0x43, 0x87, 0x5b, 0xf4, 0x83, 0xfc, 0xb2, 0x1f, 0x6c, 0xc3, 0xda, 0xd8, 0x0a, 0x42, 0x7c, 0xee,
0x8a, 0xb5, 0xc2, 0xbe, 0x0f, 0x5c, 0x2f, 0x73, 0x36, 0xc5, 0x9b, 0xde, 0x9a, 0xc7, 0x50, 0xf5, 0x7a, 0x6c, 0x23, 0xaa, 0x46, 0x89, 0x3e, 0x1f, 0xba, 0x5e, 0xe6, 0x6c, 0x8a, 0x37, 0xfd, 0x6a,
0x7c, 0xf7, 0x98, 0xce, 0x6a, 0x88, 0xe4, 0xac, 0xc2, 0x8d, 0x09, 0xb5, 0x49, 0x08, 0xde, 0xea, 0x1e, 0x43, 0xcd, 0xf3, 0xdd, 0x13, 0x32, 0xab, 0x21, 0xb2, 0xb3, 0x2a, 0x03, 0x13, 0x6e, 0x93,
0xa2, 0xe0, 0x5d, 0x24, 0x9f, 0x04, 0xc6, 0xd5, 0x5c, 0xee, 0x3e, 0xf6, 0x24, 0xcc, 0x2f, 0xad, 0x30, 0xbc, 0xb5, 0x45, 0xc3, 0xbb, 0x4c, 0x5e, 0x09, 0x54, 0xab, 0xb9, 0xdd, 0x7d, 0xe8, 0x4a,
0x9c, 0x92, 0xd8, 0x65, 0x91, 0xca, 0x65, 0x89, 0xd4, 0x7b, 0xa8, 0x25, 0x33, 0x7f, 0x44, 0xa2, 0x98, 0x7f, 0xb4, 0x62, 0xca, 0x62, 0x97, 0x4d, 0x2a, 0x97, 0x65, 0x52, 0x3f, 0x08, 0x50, 0x4f,
0xb2, 0x08, 0x93, 0x6f, 0xba, 0xcc, 0xff, 0xa4, 0x74, 0x71, 0x96, 0x53, 0xb4, 0x9c, 0x54, 0x0a, 0xa6, 0xfe, 0x80, 0x47, 0x65, 0x29, 0x26, 0xfe, 0x6b, 0xc5, 0x72, 0xcb, 0x8a, 0xc9, 0x7f, 0xa5,
0xe9, 0x23, 0x4a, 0x21, 0x67, 0x2b, 0x45, 0x86, 0x14, 0xe4, 0x6f, 0x20, 0x05, 0x85, 0xab, 0xa4, 0xdc, 0x73, 0x56, 0x18, 0x17, 0x26, 0xe9, 0x27, 0xc2, 0x07, 0xfc, 0x44, 0xcc, 0xf6, 0x93, 0x0c,
0x60, 0x3b, 0x25, 0x05, 0xd1, 0x8b, 0x96, 0x90, 0x01, 0x9c, 0xa6, 0xf2, 0xf6, 0x55, 0x60, 0x04, 0xc3, 0xc8, 0xdf, 0xc0, 0x30, 0x0a, 0xab, 0x0c, 0x63, 0x27, 0x65, 0x18, 0xd1, 0xbd, 0x97, 0x30,
0x1b, 0x4b, 0x09, 0x6e, 0x5b, 0x03, 0xd4, 0x9f, 0x24, 0x68, 0xa4, 0xa4, 0xa6, 0x37, 0x0d, 0xce, 0x0b, 0x9c, 0xd6, 0xfb, 0xf6, 0xbd, 0x62, 0x04, 0x9b, 0x4b, 0x09, 0x6e, 0xdb, 0x29, 0xe4, 0xef,
0x7a, 0x3e, 0xb5, 0x27, 0xe4, 0x94, 0xde, 0x66, 0x3b, 0xa8, 0x0e, 0xab, 0x9e, 0x88, 0x1b, 0xdf, 0x05, 0x68, 0xa6, 0x0c, 0xa9, 0x3f, 0x0d, 0xce, 0xfb, 0x3e, 0xb1, 0x27, 0xd6, 0x19, 0xb9, 0xcd,
0xf4, 0xf8, 0x5b, 0x7d, 0x0c, 0x3b, 0xd7, 0x14, 0x11, 0xad, 0x8a, 0xfa, 0x23, 0xdc, 0xef, 0x4f, 0x76, 0x50, 0x03, 0xd6, 0x3c, 0x7e, 0x6e, 0xec, 0x07, 0xf1, 0xb3, 0xfc, 0x18, 0x76, 0xaf, 0x29,
0x8f, 0x83, 0x91, 0x6f, 0x1f, 0xd3, 0xa1, 0x77, 0x42, 0x42, 0x7a, 0xab, 0x7c, 0x5f, 0xab, 0x45, 0x22, 0x5a, 0x15, 0xf9, 0x3b, 0xb8, 0x3f, 0x98, 0x9e, 0x04, 0x23, 0xdf, 0x3e, 0x21, 0x43, 0xef,
0x6a, 0x08, 0x9f, 0xcf, 0x92, 0x8b, 0x22, 0x67, 0x35, 0xcc, 0x6f, 0x6f, 0x68, 0x4f, 0x68, 0x10, 0xd4, 0x0a, 0xc9, 0xad, 0xea, 0x7d, 0xad, 0x63, 0xc9, 0x21, 0xfc, 0x7f, 0x96, 0x9c, 0x17, 0x39,
0x92, 0x89, 0x87, 0x9d, 0x40, 0xac, 0x73, 0x79, 0x66, 0x33, 0x03, 0xb4, 0x07, 0x85, 0x20, 0x8c, 0xab, 0x61, 0xfe, 0x8d, 0x87, 0xf6, 0x84, 0x04, 0xa1, 0x35, 0xf1, 0xb0, 0x13, 0xf0, 0x75, 0xae,
0x57, 0x39, 0x59, 0x5c, 0xd4, 0x3d, 0x9b, 0x4b, 0x9f, 0xf9, 0xad, 0x08, 0xa6, 0x06, 0xf0, 0x28, 0xcc, 0x30, 0x3d, 0x40, 0xfb, 0x50, 0x08, 0xc2, 0x78, 0x95, 0x93, 0xc5, 0x45, 0xdd, 0xd3, 0xb9,
0x95, 0xd5, 0x70, 0xfe, 0xff, 0xa4, 0xbb, 0xbf, 0x4a, 0xb0, 0xbe, 0x40, 0x16, 0x02, 0x28, 0x76, 0x0c, 0x68, 0xdc, 0x88, 0x68, 0x72, 0x00, 0x8f, 0x52, 0x59, 0x35, 0xe7, 0xbf, 0x4f, 0xba, 0xf7,
0xf4, 0x57, 0x5a, 0xeb, 0x9d, 0xf2, 0x19, 0x42, 0xb0, 0x76, 0x38, 0xec, 0x0c, 0x0c, 0xdc, 0xe9, 0xbb, 0x00, 0x1b, 0x0b, 0x62, 0x21, 0x80, 0x62, 0x57, 0x7d, 0xa5, 0xb4, 0xdf, 0x49, 0xff, 0x43,
0x76, 0x7b, 0xb8, 0x3b, 0x1c, 0x28, 0x12, 0xda, 0x82, 0x7b, 0xa6, 0x36, 0x30, 0x8e, 0x74, 0xdc, 0x08, 0xd6, 0x8f, 0x86, 0x5d, 0x53, 0xc3, 0xdd, 0x5e, 0xaf, 0x8f, 0x7b, 0x43, 0x53, 0x12, 0xd0,
0xd7, 0x5f, 0xbd, 0x31, 0x06, 0x91, 0xcf, 0x30, 0x15, 0x19, 0xd5, 0x61, 0xb3, 0x67, 0xe9, 0xc6, 0x36, 0xdc, 0xd3, 0x15, 0x53, 0x3b, 0x56, 0xf1, 0x40, 0x7d, 0xf5, 0x46, 0x33, 0xa3, 0x98, 0xa6,
0xa1, 0xf6, 0x4a, 0xc7, 0xbd, 0x61, 0xff, 0x60, 0x7e, 0x2c, 0x87, 0x6a, 0x70, 0x77, 0xd8, 0xd7, 0x4b, 0x22, 0x6a, 0xc0, 0x56, 0xdf, 0x50, 0xb5, 0x23, 0xe5, 0x95, 0x8a, 0xfb, 0xc3, 0xc1, 0xe1,
0x2d, 0xac, 0xbf, 0xed, 0x19, 0xd6, 0xbb, 0xb9, 0x27, 0x8f, 0xca, 0xb0, 0x72, 0x30, 0xe8, 0xb4, 0xfc, 0xb5, 0x1c, 0xaa, 0xc3, 0xdd, 0xe1, 0x40, 0x35, 0xb0, 0xfa, 0xb6, 0xaf, 0x19, 0xef, 0xe6,
0xf0, 0xd1, 0x0b, 0xa5, 0x80, 0x36, 0xa0, 0x9a, 0xc8, 0x68, 0x98, 0x4a, 0x71, 0xf7, 0x4f, 0x19, 0x91, 0x3c, 0xaa, 0x40, 0xe9, 0xd0, 0xec, 0xb6, 0xf1, 0xf1, 0x0b, 0xa9, 0x80, 0x36, 0xa1, 0x96,
0xd6, 0x17, 0xea, 0x47, 0x55, 0x28, 0x19, 0xa6, 0x31, 0x30, 0xb4, 0x81, 0xde, 0x8e, 0xea, 0xe4, 0xc8, 0xa8, 0xe9, 0x52, 0x11, 0xdd, 0x05, 0x29, 0x05, 0x51, 0x62, 0x69, 0xef, 0x37, 0x11, 0x36,
0x21, 0x7a, 0xc3, 0x97, 0x1d, 0xa3, 0x7f, 0xa0, 0xb7, 0x15, 0x89, 0x85, 0xed, 0x0f, 0x5b, 0x2d, 0x16, 0xba, 0x42, 0x35, 0x28, 0x6b, 0xba, 0x66, 0x6a, 0x8a, 0xa9, 0x76, 0xa2, 0xea, 0xd9, 0xc1,
0xbd, 0xdf, 0x57, 0x64, 0x06, 0xd8, 0xd7, 0x8c, 0x8e, 0xde, 0xc6, 0x43, 0xf3, 0xb5, 0xd9, 0x7d, 0xfd, 0xe1, 0xcb, 0xae, 0x36, 0x38, 0x54, 0x3b, 0x92, 0x40, 0x93, 0x0d, 0x86, 0xed, 0xb6, 0x3a,
0x63, 0x2a, 0xb9, 0x84, 0xcd, 0xec, 0x62, 0x76, 0x5c, 0xc9, 0xa3, 0x47, 0x50, 0x17, 0x36, 0xc3, 0x18, 0x48, 0x22, 0x25, 0x1c, 0x28, 0x5a, 0x57, 0xed, 0xe0, 0xa1, 0xfe, 0x5a, 0xef, 0xbd, 0xd1,
0x3c, 0xd2, 0x3a, 0x46, 0x9b, 0x3b, 0xb0, 0x76, 0xd8, 0x1d, 0x9a, 0x03, 0xa5, 0x80, 0x1e, 0x42, 0xa5, 0x5c, 0x02, 0xd3, 0x7b, 0x98, 0xbe, 0x2e, 0xe5, 0xd1, 0x23, 0x68, 0x70, 0x4c, 0xd3, 0x8f,
0x4d, 0xf8, 0xbb, 0xfb, 0xfb, 0xb8, 0x75, 0xa0, 0x19, 0x26, 0x1e, 0x18, 0x87, 0x3a, 0xeb, 0xa4, 0x95, 0xae, 0xd6, 0x61, 0x01, 0xac, 0x1c, 0xf5, 0x86, 0xba, 0x29, 0x15, 0xd0, 0x43, 0xa8, 0xf3,
0x98, 0x88, 0x18, 0xdb, 0x56, 0x58, 0xdf, 0xc2, 0xd6, 0x7f, 0xa3, 0xf5, 0x70, 0x5b, 0xd7, 0xda, 0x78, 0xef, 0xe0, 0x00, 0xb7, 0x0f, 0x15, 0x4d, 0xc7, 0xa6, 0x76, 0xa4, 0xd2, 0xfe, 0x8a, 0x89,
0x1d, 0xc3, 0xd4, 0x95, 0x55, 0xf4, 0x00, 0xee, 0x0b, 0xcf, 0xbc, 0xf6, 0x96, 0x36, 0x30, 0xba, 0x13, 0x63, 0xac, 0x44, 0xd5, 0xe0, 0xd8, 0xe0, 0x8d, 0xd2, 0xc7, 0x1d, 0x55, 0xe9, 0x74, 0x35,
0xa6, 0x52, 0x42, 0xf7, 0x60, 0x43, 0xc4, 0x48, 0x34, 0x05, 0x68, 0x13, 0xd0, 0xd0, 0xd4, 0xdf, 0x5d, 0x95, 0xd6, 0xd0, 0x03, 0xb8, 0xcf, 0x23, 0xf3, 0xda, 0xdb, 0x8a, 0xa9, 0xf5, 0x74, 0xa9,
0xf6, 0xf4, 0xd6, 0x40, 0x6f, 0x63, 0x76, 0x7c, 0x68, 0xe9, 0x4a, 0x79, 0x46, 0x40, 0xab, 0x6b, 0x8c, 0xee, 0xc1, 0x26, 0x3f, 0x23, 0xd1, 0x14, 0xa0, 0x2d, 0x40, 0x43, 0x5d, 0x7d, 0xdb, 0x57,
0xee, 0x1b, 0xd6, 0xa1, 0xde, 0x56, 0x2a, 0x2f, 0x7e, 0x2f, 0x02, 0x70, 0xc6, 0x38, 0x77, 0xa8, 0xdb, 0xa6, 0xda, 0xc1, 0xf4, 0xf5, 0xa1, 0xa1, 0x4a, 0x95, 0x99, 0x00, 0xed, 0x9e, 0x7e, 0xa0,
0x0b, 0x95, 0xd4, 0x5f, 0x0c, 0x75, 0x61, 0x39, 0x32, 0xfe, 0xe2, 0xd4, 0x1f, 0x5c, 0x83, 0x41, 0x19, 0x47, 0x6a, 0x47, 0xaa, 0xbe, 0xf8, 0xa5, 0x08, 0xc0, 0x14, 0x63, 0xda, 0xa1, 0x1e, 0x54,
0x5d, 0x58, 0x33, 0xe9, 0x07, 0x61, 0x62, 0x89, 0xd0, 0x76, 0x36, 0x3c, 0x8e, 0xf6, 0xe8, 0x2a, 0x53, 0x7f, 0x4f, 0xe4, 0x85, 0x95, 0xc9, 0xf8, 0x7b, 0xd4, 0x78, 0x70, 0x0d, 0x07, 0xf5, 0x60,
0xb7, 0x58, 0xf0, 0x31, 0xdc, 0xc9, 0x10, 0x05, 0xf4, 0x55, 0xf6, 0xb1, 0x0c, 0xf5, 0xaa, 0xef, 0x5d, 0x27, 0xef, 0x39, 0x44, 0x13, 0xa1, 0x9d, 0x6c, 0x7a, 0x7c, 0xda, 0xa3, 0x55, 0x61, 0xbe,
0x7e, 0x0a, 0x54, 0x64, 0x9b, 0xf3, 0x11, 0xfd, 0xe9, 0xbd, 0x82, 0x8f, 0xe4, 0xbb, 0x79, 0x15, 0xf6, 0x63, 0xb8, 0x93, 0x61, 0x15, 0xe8, 0xb3, 0xec, 0xd7, 0x32, 0x3c, 0xad, 0xb1, 0xf7, 0x31,
0x1f, 0x51, 0x80, 0x0e, 0x94, 0x93, 0xf2, 0xbd, 0x93, 0x81, 0x4d, 0xbf, 0x1d, 0xf5, 0xfa, 0xd5, 0x54, 0x9e, 0x6d, 0xae, 0x47, 0xf4, 0x87, 0x79, 0x85, 0x1e, 0xc9, 0x2b, 0x77, 0x95, 0x1e, 0xd1,
0x10, 0xd4, 0x81, 0xaa, 0x60, 0xd7, 0xe0, 0x62, 0x8f, 0x1e, 0x66, 0x82, 0xe3, 0x50, 0xdb, 0x57, 0x01, 0x5d, 0xa8, 0x24, 0x4d, 0x7d, 0x37, 0x83, 0x9b, 0xbe, 0x51, 0x1a, 0x8d, 0xd5, 0x14, 0xd4,
0x78, 0x45, 0xb3, 0x83, 0xb8, 0xb6, 0xa8, 0xd4, 0xec, 0xda, 0x52, 0xad, 0xaa, 0xd7, 0x41, 0x44, 0x85, 0x1a, 0x57, 0x57, 0x63, 0x57, 0x00, 0x7a, 0x98, 0x49, 0x8e, 0x8f, 0xda, 0x59, 0x11, 0xe5,
0xd4, 0xd3, 0x84, 0x4c, 0xa7, 0x95, 0x12, 0x35, 0xe6, 0xc7, 0xb3, 0x85, 0xbc, 0xde, 0x5c, 0x46, 0xcd, 0x9a, 0x71, 0x6d, 0x51, 0xa9, 0xd9, 0xb5, 0xa5, 0x5a, 0x95, 0xaf, 0xa3, 0xf0, 0x53, 0xcf,
0x64, 0xab, 0xed, 0x73, 0x09, 0x51, 0xd8, 0xcc, 0x16, 0xc7, 0x4f, 0xc8, 0xf3, 0x65, 0x76, 0x9e, 0x12, 0xe6, 0x9d, 0xf6, 0x4f, 0xd4, 0x9c, 0xbf, 0x9e, 0x6d, 0xef, 0x8d, 0xd6, 0x32, 0x23, 0xdb,
0x25, 0x7d, 0x7d, 0x2e, 0x1d, 0x17, 0xf9, 0x3b, 0xf1, 0xf5, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x83, 0x9f, 0x0b, 0x88, 0xc0, 0x56, 0xb6, 0x65, 0x7e, 0x44, 0x9e, 0x4f, 0xb3, 0xf3, 0x2c, 0xb9,
0xbd, 0x37, 0x63, 0xb1, 0xfe, 0x0f, 0x00, 0x00, 0xee, 0x73, 0xe1, 0xa4, 0xc8, 0x6e, 0x8f, 0xcf, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xa5, 0x3a,
0xa4, 0xc5, 0x3a, 0x10, 0x00, 0x00,
} }
// Reference imports to suppress errors if they are not otherwise used. // Reference imports to suppress errors if they are not otherwise used.

@ -64,6 +64,9 @@ enum ProtocolVersion {
// The client creates a probe invoice so that the server can perform a // The client creates a probe invoice so that the server can perform a
// multi-path probe. // multi-path probe.
MULTI_LOOP_IN = 6; MULTI_LOOP_IN = 6;
// The client creates a probe invoice in the loop-in quote.
MULTI_LOOP_IN_V2 = 7;
} }
message ServerLoopOutRequest { message ServerLoopOutRequest {
@ -197,6 +200,8 @@ message ServerLoopInQuoteRequest {
/// The protocol version that the client adheres to. /// The protocol version that the client adheres to.
ProtocolVersion protocol_version = 2; ProtocolVersion protocol_version = 2;
string probe_invoice = 3;
} }
message ServerLoopInQuoteResponse { message ServerLoopInQuoteResponse {

@ -2,6 +2,8 @@ package loop
import ( import (
"context" "context"
"crypto/rand"
"crypto/sha256"
"crypto/tls" "crypto/tls"
"encoding/hex" "encoding/hex"
"errors" "errors"
@ -14,10 +16,13 @@ import (
"github.com/btcsuite/btcd/btcec" "github.com/btcsuite/btcd/btcec"
"github.com/btcsuite/btcutil" "github.com/btcsuite/btcutil"
"github.com/lightninglabs/lndclient"
"github.com/lightninglabs/loop/loopdb" "github.com/lightninglabs/loop/loopdb"
"github.com/lightninglabs/loop/looprpc" "github.com/lightninglabs/loop/looprpc"
"github.com/lightninglabs/loop/lsat" "github.com/lightninglabs/loop/lsat"
"github.com/lightningnetwork/lnd/lnrpc/invoicesrpc"
"github.com/lightningnetwork/lnd/lntypes" "github.com/lightningnetwork/lnd/lntypes"
"github.com/lightningnetwork/lnd/lnwire"
"github.com/lightningnetwork/lnd/routing/route" "github.com/lightningnetwork/lnd/routing/route"
"github.com/lightningnetwork/lnd/tor" "github.com/lightningnetwork/lnd/tor"
"google.golang.org/grpc" "google.golang.org/grpc"
@ -79,6 +84,7 @@ type swapServerClient interface {
type grpcSwapServerClient struct { type grpcSwapServerClient struct {
server looprpc.SwapServerClient server looprpc.SwapServerClient
conn *grpc.ClientConn conn *grpc.ClientConn
lnd *lndclient.LndServices
wg sync.WaitGroup wg sync.WaitGroup
} }
@ -117,6 +123,7 @@ func newSwapServerClient(cfg *ClientConfig, lsatStore lsat.Store) (
return &grpcSwapServerClient{ return &grpcSwapServerClient{
conn: serverConn, conn: serverConn,
server: server, server: server,
lnd: cfg.Lnd,
}, nil }, nil
} }
@ -202,16 +209,62 @@ func (s *grpcSwapServerClient) GetLoopInQuote(ctx context.Context,
rpcCtx, rpcCancel := context.WithTimeout(ctx, globalCallTimeout) rpcCtx, rpcCancel := context.WithTimeout(ctx, globalCallTimeout)
defer rpcCancel() defer rpcCancel()
quoteResp, err := s.server.LoopInQuote(rpcCtx,
&looprpc.ServerLoopInQuoteRequest{ quoteReq := &looprpc.ServerLoopInQuoteRequest{
Amt: uint64(amt), Amt: uint64(amt),
ProtocolVersion: loopdb.CurrentRPCProtocolVersion, ProtocolVersion: loopdb.CurrentRPCProtocolVersion,
}, }
)
var probeHash lntypes.Hash
if loopdb.CurrentRPCProtocolVersion == looprpc.ProtocolVersion_MULTI_LOOP_IN_V2 {
// Generate random preimage.
var preimage lntypes.Preimage
if _, err := rand.Read(preimage[:]); err != nil {
log.Error("Cannot generate preimage")
}
probeHash := lntypes.Hash(sha256.Sum256(preimage[:]))
log.Infof("Creating quote probe invoice %v", probeHash)
probeInvoice, err := s.lnd.Invoices.AddHoldInvoice(
rpcCtx, &invoicesrpc.AddInvoiceData{
Hash: &probeHash,
Value: lnwire.NewMSatFromSatoshis(amt),
Memo: "loop in quote probe",
Expiry: 3600,
},
)
if err != nil {
return nil, err
}
quoteReq.ProbeInvoice = probeInvoice
}
quoteResp, err := s.server.LoopInQuote(rpcCtx, quoteReq)
if err != nil { if err != nil {
return nil, err return nil, err
} }
if loopdb.CurrentRPCProtocolVersion == looprpc.ProtocolVersion_MULTI_LOOP_IN_V2 {
// Create a cancellable context that is used for monitoring the probe.
probeWaitCtx, probeWaitCancel := context.WithCancel(ctx)
defer probeWaitCancel()
// Launch a goroutine to monitor the probe.
probeResult, err := awaitProbe(probeWaitCtx, *s.lnd, probeHash)
if err != nil {
return nil, fmt.Errorf("loop in quote probe failed: %v", err)
}
// Because the context is cancelled, it is guaranteed that we will be
// able to read from the probeResult channel.
err = <-probeResult
if err != nil {
return nil, fmt.Errorf("probe error: %v", err)
}
}
return &LoopInQuote{ return &LoopInQuote{
SwapFee: btcutil.Amount(quoteResp.SwapFee), SwapFee: btcutil.Amount(quoteResp.SwapFee),
CltvDelta: quoteResp.CltvDelta, CltvDelta: quoteResp.CltvDelta,

Loading…
Cancel
Save