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.
ProtocolVersionMultiLoopIn ProtocolVersion = 6
ProtocolVersionMultiLoopInV2 ProtocolVersion = 7
// ProtocolVersionUnrecorded is set for swaps were created before we
// started saving protocol version with swaps.
ProtocolVersionUnrecorded ProtocolVersion = math.MaxUint32
// CurrentRPCProtocolVersion defines the version of the RPC protocol
// 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
// the internal representation.

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

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

@ -2,6 +2,8 @@ package loop
import (
"context"
"crypto/rand"
"crypto/sha256"
"crypto/tls"
"encoding/hex"
"errors"
@ -14,10 +16,13 @@ import (
"github.com/btcsuite/btcd/btcec"
"github.com/btcsuite/btcutil"
"github.com/lightninglabs/lndclient"
"github.com/lightninglabs/loop/loopdb"
"github.com/lightninglabs/loop/looprpc"
"github.com/lightninglabs/loop/lsat"
"github.com/lightningnetwork/lnd/lnrpc/invoicesrpc"
"github.com/lightningnetwork/lnd/lntypes"
"github.com/lightningnetwork/lnd/lnwire"
"github.com/lightningnetwork/lnd/routing/route"
"github.com/lightningnetwork/lnd/tor"
"google.golang.org/grpc"
@ -79,6 +84,7 @@ type swapServerClient interface {
type grpcSwapServerClient struct {
server looprpc.SwapServerClient
conn *grpc.ClientConn
lnd *lndclient.LndServices
wg sync.WaitGroup
}
@ -117,6 +123,7 @@ func newSwapServerClient(cfg *ClientConfig, lsatStore lsat.Store) (
return &grpcSwapServerClient{
conn: serverConn,
server: server,
lnd: cfg.Lnd,
}, nil
}
@ -202,16 +209,62 @@ func (s *grpcSwapServerClient) GetLoopInQuote(ctx context.Context,
rpcCtx, rpcCancel := context.WithTimeout(ctx, globalCallTimeout)
defer rpcCancel()
quoteResp, err := s.server.LoopInQuote(rpcCtx,
&looprpc.ServerLoopInQuoteRequest{
Amt: uint64(amt),
ProtocolVersion: loopdb.CurrentRPCProtocolVersion,
},
)
quoteReq := &looprpc.ServerLoopInQuoteRequest{
Amt: uint64(amt),
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 {
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{
SwapFee: btcutil.Amount(quoteResp.SwapFee),
CltvDelta: quoteResp.CltvDelta,

Loading…
Cancel
Save