multi: add confirmation target to loop in

pull/179/head
carla 4 years ago
parent f726fc2bc8
commit fc99c8b320
No known key found for this signature in database
GPG Key ID: 4CA7FE54A6213C91

@ -18,12 +18,29 @@ var (
Usage: "the pubkey of the last hop to use for this swap",
}
confTargetFlag = cli.Uint64Flag{
Name: "conf_target",
Usage: "the target number of blocks the on-chain " +
"htlc broadcast by the swap client should " +
"confirm within",
}
loopInCommand = cli.Command{
Name: "in",
Usage: "perform an on-chain to off-chain swap (loop in)",
ArgsUsage: "amt",
Description: `
Send the amount in satoshis specified by the amt argument off-chain.`,
Send the amount in satoshis specified by the amt argument
off-chain.
By default the swap client will create and broadcast the
on-chain htlc. The fee priority of this transaction can
optionally be set using the conf_target flag.
The external flag can be set to publish the on chain htlc
independently. Note that this flag cannot be set with the
conf_target flag.
`,
Flags: []cli.Flag{
cli.Uint64Flag{
Name: "amt",
@ -33,6 +50,7 @@ var (
Name: "external",
Usage: "expect htlc to be published externally",
},
confTargetFlag,
lastHopFlag,
},
Action: loopIn,
@ -66,10 +84,21 @@ func loopIn(ctx *cli.Context) error {
defer cleanup()
external := ctx.Bool("external")
htlcConfTarget := int32(ctx.Uint64(confTargetFlag.Name))
// External and confirmation target are mutually exclusive; either the
// on chain htlc is being externally broadcast, or we are creating the
// on chain htlc with a desired confirmation target. Fail if both are
// set.
if external && htlcConfTarget != 0 {
return fmt.Errorf("external and conf_target both set")
}
quote, err := client.GetLoopInQuote(
context.Background(),
&looprpc.QuoteRequest{
Amt: int64(amt),
ConfTarget: htlcConfTarget,
ExternalHtlc: external,
},
)
@ -96,10 +125,11 @@ func loopIn(ctx *cli.Context) error {
}
req := &looprpc.LoopInRequest{
Amt: int64(amt),
MaxMinerFee: int64(limits.maxMinerFee),
MaxSwapFee: int64(limits.maxSwapFee),
ExternalHtlc: external,
Amt: int64(amt),
MaxMinerFee: int64(limits.maxMinerFee),
MaxSwapFee: int64(limits.maxSwapFee),
ExternalHtlc: external,
HtlcConfTarget: htlcConfTarget,
}
if ctx.IsSet(lastHopFlag.Name) {

@ -22,15 +22,8 @@ var quoteInCommand = cli.Command{
Usage: "get a quote for the cost of a loop in swap",
ArgsUsage: "amt",
Description: "Allows to determine the cost of a swap up front",
Flags: []cli.Flag{
cli.Uint64Flag{
Name: "conf_target",
Usage: "the target number of blocks the on-chain " +
"htlc broadcast by the swap client should " +
"confirm within",
},
},
Action: quoteIn,
Flags: []cli.Flag{confTargetFlag},
Action: quoteIn,
}
func quoteIn(ctx *cli.Context) error {

@ -361,9 +361,16 @@ func (s *swapClientServer) GetLoopInQuote(ctx context.Context,
log.Infof("Loop in quote request received")
htlcConfTarget, err := validateLoopInRequest(
req.ConfTarget, req.ExternalHtlc,
)
if err != nil {
return nil, err
}
quote, err := s.impl.LoopInQuote(ctx, &loop.LoopInQuoteRequest{
Amount: btcutil.Amount(req.Amt),
HtlcConfTarget: loop.DefaultHtlcConfTarget,
HtlcConfTarget: htlcConfTarget,
ExternalHtlc: req.ExternalHtlc,
})
if err != nil {
@ -381,11 +388,18 @@ func (s *swapClientServer) LoopIn(ctx context.Context,
log.Infof("Loop in request received")
htlcConfTarget, err := validateLoopInRequest(
in.HtlcConfTarget, in.ExternalHtlc,
)
if err != nil {
return nil, err
}
req := &loop.LoopInRequest{
Amount: btcutil.Amount(in.Amt),
MaxMinerFee: btcutil.Amount(in.MaxMinerFee),
MaxSwapFee: btcutil.Amount(in.MaxSwapFee),
HtlcConfTarget: loop.DefaultHtlcConfTarget,
HtlcConfTarget: htlcConfTarget,
ExternalHtlc: in.ExternalHtlc,
}
if in.LastHop != nil {
@ -489,3 +503,22 @@ func validateConfTarget(target, defaultTarget int32) (int32, error) {
return target, nil
}
}
// validateLoopInRequest fails if the mutually exclusive conf target and
// external parameters are both set.
func validateLoopInRequest(htlcConfTarget int32, external bool) (int32, error) {
// If the htlc is going to be externally set, the htlcConfTarget should
// not be set, because it has no relevance when the htlc is external.
if external && htlcConfTarget != 0 {
return 0, errors.New("external and htlc conf target cannot " +
"both be set")
}
// If the htlc is being externally published, we do not need to set a
// confirmation target.
if external {
return 0, nil
}
return validateConfTarget(htlcConfTarget, loop.DefaultHtlcConfTarget)
}

@ -1,6 +1,10 @@
package loopd
import "testing"
import (
"testing"
"github.com/lightninglabs/loop"
)
// TestValidateConfTarget tests all failure and success cases for our conf
// target validation function, including the case where we replace a zero
@ -70,3 +74,72 @@ func TestValidateConfTarget(t *testing.T) {
})
}
}
// TestValidateLoopInRequest tests validation of loop in requests.
func TestValidateLoopInRequest(t *testing.T) {
tests := []struct {
name string
external bool
confTarget int32
expectErr bool
expectedTarget int32
}{
{
name: "external and htlc conf set",
external: true,
confTarget: 1,
expectErr: true,
expectedTarget: 0,
},
{
name: "external and no conf",
external: true,
confTarget: 0,
expectErr: false,
expectedTarget: 0,
},
{
name: "not external, zero conf",
external: false,
confTarget: 0,
expectErr: false,
expectedTarget: loop.DefaultHtlcConfTarget,
},
{
name: "not external, bad conf",
external: false,
confTarget: 1,
expectErr: true,
expectedTarget: 0,
},
{
name: "not external, ok conf",
external: false,
confTarget: 5,
expectErr: false,
expectedTarget: 5,
},
}
for _, test := range tests {
test := test
t.Run(test.name, func(t *testing.T) {
external := test.external
conf, err := validateLoopInRequest(
test.confTarget, external,
)
haveErr := err != nil
if haveErr != test.expectErr {
t.Fatalf("expected err: %v, got: %v",
test.expectErr, err)
}
if conf != test.expectedTarget {
t.Fatalf("expected: %v, got: %v",
test.expectedTarget, conf)
}
})
}
}

@ -291,7 +291,10 @@ type LoopInRequest struct {
//*
//If external_htlc is true, we expect the htlc to be published by an external
//actor.
ExternalHtlc bool `protobuf:"varint,5,opt,name=external_htlc,json=externalHtlc,proto3" json:"external_htlc,omitempty"`
ExternalHtlc bool `protobuf:"varint,5,opt,name=external_htlc,json=externalHtlc,proto3" json:"external_htlc,omitempty"`
//*
//The number of blocks that the on chain htlc should confirm within.
HtlcConfTarget int32 `protobuf:"varint,6,opt,name=htlc_conf_target,json=htlcConfTarget,proto3" json:"htlc_conf_target,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -357,6 +360,13 @@ func (m *LoopInRequest) GetExternalHtlc() bool {
return false
}
func (m *LoopInRequest) GetHtlcConfTarget() int32 {
if m != nil {
return m.HtlcConfTarget
}
return 0
}
type SwapResponse struct {
//*
//Swap identifier to track status in the update stream that is returned from
@ -1170,97 +1180,98 @@ func init() {
func init() { proto.RegisterFile("client.proto", fileDescriptor_014de31d7ac8c57c) }
var fileDescriptor_014de31d7ac8c57c = []byte{
// 1435 bytes of a gzipped FileDescriptorProto
// 1448 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0xcb, 0x6e, 0xdb, 0x46,
0x14, 0x0d, 0x25, 0xd9, 0x92, 0xae, 0x28, 0x8a, 0x1e, 0x27, 0xb6, 0xac, 0x36, 0x88, 0xc3, 0x36,
0xad, 0xe3, 0x45, 0xd4, 0x38, 0xab, 0x06, 0x45, 0x01, 0x47, 0x56, 0x62, 0x19, 0x7e, 0x95, 0x92,
0x03, 0x24, 0x1b, 0x66, 0x2c, 0x8e, 0x2d, 0xa2, 0x22, 0x87, 0xe1, 0x8c, 0x12, 0x1b, 0x41, 0x36,
0xfd, 0x85, 0xee, 0xba, 0xec, 0xa6, 0xeb, 0xae, 0xfb, 0x19, 0xfd, 0x85, 0x7e, 0x42, 0xb7, 0x05,
0x8a, 0x79, 0x88, 0x22, 0x2d, 0x3b, 0x8b, 0xec, 0xc4, 0x33, 0x67, 0xce, 0x5c, 0xde, 0xc7, 0x19,
0x0a, 0xcc, 0xe1, 0x38, 0x20, 0x11, 0x7f, 0x14, 0x27, 0x94, 0x53, 0x54, 0x1e, 0x53, 0x1a, 0x27,
0xf1, 0xb0, 0xf5, 0xe5, 0x39, 0xa5, 0xe7, 0x63, 0xd2, 0xc6, 0x71, 0xd0, 0xc6, 0x51, 0x44, 0x39,
0xe6, 0x01, 0x8d, 0x98, 0xa2, 0x39, 0xbf, 0x15, 0xc1, 0xda, 0xa7, 0x34, 0x3e, 0x9a, 0x70, 0x97,
0xbc, 0x9d, 0x10, 0xc6, 0x91, 0x0d, 0x45, 0x1c, 0xf2, 0xa6, 0xb1, 0x6e, 0x6c, 0x14, 0x5d, 0xf1,
0x13, 0x21, 0x28, 0xf9, 0x84, 0xf1, 0x66, 0x61, 0xdd, 0xd8, 0xa8, 0xba, 0xf2, 0x37, 0x6a, 0xc3,
0xed, 0x10, 0x5f, 0x78, 0xec, 0x3d, 0x8e, 0xbd, 0x84, 0x4e, 0x78, 0x10, 0x9d, 0x7b, 0x67, 0x84,
0x34, 0x8b, 0x72, 0xdb, 0x52, 0x88, 0x2f, 0xfa, 0xef, 0x71, 0xec, 0xaa, 0x95, 0xe7, 0x84, 0xa0,
0x27, 0xb0, 0x22, 0x36, 0xc4, 0x09, 0x89, 0xf1, 0x65, 0x6e, 0x4b, 0x49, 0x6e, 0x59, 0x0e, 0xf1,
0xc5, 0xb1, 0x5c, 0xcc, 0x6c, 0x5a, 0x07, 0x33, 0x3d, 0x45, 0x50, 0x17, 0x24, 0x15, 0xb4, 0xba,
0x60, 0x7c, 0x0d, 0x56, 0x46, 0x56, 0x04, 0xbe, 0x28, 0x39, 0x66, 0x2a, 0xb7, 0x1d, 0x72, 0xe4,
0x40, 0x5d, 0xb0, 0xc2, 0x20, 0x22, 0x89, 0x14, 0x2a, 0x4b, 0x52, 0x2d, 0xc4, 0x17, 0x07, 0x02,
0x13, 0x4a, 0x1b, 0x60, 0x8b, 0x9c, 0x79, 0x74, 0xc2, 0xbd, 0xe1, 0x08, 0x47, 0x11, 0x19, 0x37,
0x2b, 0xeb, 0xc6, 0x46, 0xc9, 0xb5, 0xc6, 0x2a, 0x43, 0x1d, 0x85, 0xa2, 0x4d, 0x58, 0x62, 0xef,
0x09, 0x89, 0xbd, 0x21, 0x8d, 0xce, 0x3c, 0x8e, 0x93, 0x73, 0xc2, 0x9b, 0xd5, 0x75, 0x63, 0x63,
0xc1, 0x6d, 0xc8, 0x85, 0x0e, 0x8d, 0xce, 0x06, 0x12, 0x46, 0x4f, 0x61, 0x4d, 0x46, 0x1f, 0x4f,
0x4e, 0xc7, 0xc1, 0x50, 0xe6, 0xde, 0xf3, 0x09, 0xf6, 0xc7, 0x41, 0x44, 0x9a, 0x20, 0xe5, 0x57,
0x05, 0xe1, 0x78, 0xb6, 0xbe, 0xa3, 0x97, 0x9d, 0x3f, 0x0c, 0xa8, 0x8b, 0xe2, 0xf4, 0xa2, 0x9b,
0x6b, 0x73, 0x35, 0x43, 0x85, 0xb9, 0x0c, 0xcd, 0xbd, 0x7b, 0x71, 0xfe, 0xdd, 0xd7, 0xa0, 0x32,
0xc6, 0x8c, 0x7b, 0x23, 0x1a, 0xcb, 0x72, 0x98, 0x6e, 0x59, 0x3c, 0xef, 0xd2, 0x18, 0x7d, 0x05,
0x75, 0x72, 0xc1, 0x49, 0x12, 0xe1, 0xb1, 0x37, 0xe2, 0xe3, 0xa1, 0xac, 0x41, 0xc5, 0x35, 0xa7,
0xe0, 0x2e, 0x1f, 0x0f, 0x9d, 0x37, 0x60, 0xca, 0x72, 0x13, 0x16, 0xd3, 0x88, 0x11, 0x84, 0xa0,
0x10, 0xf8, 0x32, 0xcc, 0xea, 0xb3, 0x42, 0xd3, 0x70, 0x0b, 0x81, 0x2f, 0xce, 0x08, 0x7c, 0xef,
0xf4, 0x92, 0x13, 0x26, 0x43, 0x30, 0xdd, 0x72, 0xe0, 0x3f, 0x13, 0x8f, 0xe8, 0x3e, 0x98, 0x42,
0xda, 0xc3, 0xbe, 0x9f, 0x10, 0xc6, 0x74, 0xa3, 0xd5, 0x04, 0xb6, 0xad, 0x20, 0xc7, 0x06, 0xeb,
0x80, 0x46, 0x01, 0xa7, 0x89, 0xce, 0x85, 0xf3, 0x5f, 0x01, 0x40, 0x1c, 0xda, 0xe7, 0x98, 0x4f,
0xd8, 0xb5, 0x6d, 0x2b, 0x82, 0x28, 0xdc, 0x18, 0x44, 0x2d, 0x1f, 0xc4, 0x03, 0x28, 0xf1, 0xcb,
0x58, 0xa5, 0xc7, 0xda, 0x5a, 0x7a, 0xa4, 0x07, 0xe8, 0x91, 0x38, 0x63, 0x70, 0x19, 0x13, 0x57,
0x2e, 0xa3, 0x0d, 0x58, 0x60, 0x1c, 0x73, 0xd5, 0xb6, 0xd6, 0x16, 0xca, 0xf1, 0x44, 0x2c, 0xc4,
0x55, 0x04, 0xf4, 0x2d, 0x34, 0x82, 0x28, 0xe0, 0x81, 0x2a, 0x3a, 0x0f, 0xc2, 0x69, 0xff, 0x5a,
0x33, 0x78, 0x10, 0x84, 0xaa, 0xf3, 0x44, 0xf6, 0x27, 0xb1, 0x8f, 0x39, 0x51, 0x4c, 0xd5, 0xc5,
0x96, 0xc0, 0x4f, 0x24, 0x2c, 0x99, 0x57, 0x13, 0x55, 0x9e, 0x4b, 0x14, 0xba, 0x07, 0xb5, 0x21,
0x65, 0xdc, 0x63, 0x24, 0x79, 0x47, 0x12, 0xd9, 0xc1, 0x45, 0x17, 0x04, 0xd4, 0x97, 0x88, 0xd0,
0x90, 0x04, 0x1a, 0x0d, 0x47, 0x38, 0x88, 0x64, 0xe3, 0x16, 0x5d, 0xb9, 0xe9, 0x48, 0x41, 0xa2,
0xe6, 0x8a, 0x72, 0x76, 0xa6, 0x38, 0xa0, 0x66, 0x4a, 0x72, 0x34, 0xe6, 0x20, 0xb0, 0xf7, 0x03,
0xc6, 0xc5, 0x6b, 0xb3, 0x69, 0x4d, 0x7e, 0x84, 0xa5, 0x0c, 0xa6, 0x9b, 0xe1, 0x21, 0x2c, 0x88,
0xf6, 0x64, 0x4d, 0x63, 0xbd, 0xb8, 0x51, 0xdb, 0x5a, 0x9e, 0xcb, 0xd8, 0x84, 0xb9, 0x8a, 0xe1,
0xdc, 0x87, 0x86, 0x00, 0x7b, 0xd1, 0x19, 0x9d, 0xb6, 0xbc, 0x95, 0xb6, 0x92, 0x29, 0x2a, 0xe8,
0x58, 0x60, 0x0e, 0x48, 0x12, 0xa6, 0x47, 0x7e, 0x84, 0xba, 0x7e, 0xd6, 0xc7, 0x7d, 0x03, 0x8d,
0x30, 0x88, 0xd4, 0x44, 0xe0, 0x90, 0x4e, 0x22, 0xae, 0xd3, 0x5e, 0x0f, 0x83, 0x48, 0xa8, 0x6f,
0x4b, 0x50, 0xf2, 0xa6, 0x93, 0xa3, 0x79, 0x8b, 0x9a, 0xa7, 0x86, 0x47, 0xf1, 0xf6, 0x4a, 0x15,
0xc3, 0x2e, 0xec, 0x95, 0x2a, 0x05, 0xbb, 0xb8, 0x57, 0xaa, 0x14, 0xed, 0xd2, 0x5e, 0xa9, 0x52,
0xb2, 0x17, 0xf6, 0x4a, 0x95, 0xb2, 0x5d, 0x71, 0x7e, 0x37, 0xc0, 0xfc, 0x69, 0x42, 0x39, 0xb9,
0x79, 0x44, 0x65, 0x45, 0x66, 0x46, 0x51, 0x90, 0x46, 0x01, 0xc3, 0x99, 0x47, 0xcc, 0x8d, 0x58,
0x71, 0x7e, 0xc4, 0x3e, 0x6d, 0x24, 0xa5, 0x4f, 0x1b, 0xc9, 0x9f, 0x06, 0xd4, 0x75, 0x90, 0x3a,
0x49, 0x6b, 0x50, 0x49, 0x2d, 0x43, 0x85, 0x5a, 0x66, 0xda, 0x2f, 0xee, 0x02, 0x64, 0xdc, 0x54,
0xf9, 0x49, 0x35, 0x4e, 0xad, 0xf4, 0x0b, 0xa8, 0x5e, 0xb5, 0x92, 0x4a, 0x38, 0xf5, 0x11, 0xe9,
0x8c, 0x22, 0x48, 0x7c, 0x19, 0x92, 0x88, 0x7b, 0xf2, 0xda, 0x50, 0x86, 0xd2, 0x90, 0xc1, 0x29,
0x7c, 0x47, 0x24, 0xea, 0x2e, 0xc0, 0x70, 0xcc, 0xdf, 0x79, 0x3e, 0x19, 0x73, 0x2c, 0x4b, 0xb4,
0xe0, 0x56, 0x05, 0xb2, 0x23, 0x00, 0xa7, 0x01, 0xf5, 0x01, 0xfd, 0x99, 0x44, 0x69, 0xa1, 0x7f,
0x00, 0x6b, 0x0a, 0xe8, 0x97, 0xd8, 0x84, 0x45, 0x2e, 0x11, 0xdd, 0x59, 0xb3, 0x59, 0xdc, 0x67,
0x98, 0x4b, 0xb2, 0xab, 0x19, 0xce, 0x5f, 0x05, 0xa8, 0xa6, 0xa8, 0xc8, 0xf8, 0x29, 0x66, 0xc4,
0x0b, 0xf1, 0x10, 0x27, 0x94, 0x46, 0xba, 0xbf, 0x4c, 0x01, 0x1e, 0x68, 0x4c, 0x0c, 0xca, 0xf4,
0x3d, 0x46, 0x98, 0x8d, 0x64, 0x2a, 0x4c, 0xb7, 0xa6, 0xb1, 0x5d, 0xcc, 0x46, 0xe8, 0x21, 0xd8,
0x53, 0x4a, 0x9c, 0x90, 0x20, 0xc4, 0xe7, 0x44, 0x7b, 0x5b, 0x43, 0xe3, 0xc7, 0x1a, 0x16, 0x43,
0xae, 0xba, 0xcc, 0x8b, 0x71, 0xe0, 0x7b, 0x21, 0xc3, 0x5c, 0xdf, 0x7c, 0x96, 0xc2, 0x8f, 0x71,
0xe0, 0x1f, 0x30, 0xcc, 0xd1, 0x63, 0xb8, 0x93, 0xb9, 0x1e, 0x33, 0x74, 0xd5, 0xc6, 0x28, 0x49,
0xef, 0xc7, 0x74, 0xcb, 0x7d, 0x30, 0x85, 0x6b, 0x78, 0xc3, 0x84, 0x60, 0x4e, 0x7c, 0xdd, 0xc8,
0x35, 0x81, 0x75, 0x14, 0x84, 0x9a, 0x50, 0x26, 0x17, 0x71, 0x90, 0x10, 0x5f, 0xba, 0x46, 0xc5,
0x9d, 0x3e, 0x8a, 0xcd, 0x8c, 0xd3, 0x04, 0x9f, 0x13, 0x2f, 0xc2, 0x21, 0x91, 0x96, 0x51, 0x75,
0x6b, 0x1a, 0x3b, 0xc4, 0x21, 0xd9, 0x7c, 0x00, 0x95, 0xa9, 0x0d, 0x22, 0x13, 0x2a, 0xfb, 0x47,
0x47, 0xc7, 0xde, 0xd1, 0xc9, 0xc0, 0xbe, 0x85, 0x6a, 0x50, 0x96, 0x4f, 0xbd, 0x43, 0xdb, 0xd8,
0x64, 0x50, 0x4d, 0x5d, 0x10, 0xd5, 0xa1, 0xda, 0x3b, 0xec, 0x0d, 0x7a, 0xdb, 0x83, 0xee, 0x8e,
0x7d, 0x0b, 0xdd, 0x81, 0xa5, 0x63, 0xb7, 0xdb, 0x3b, 0xd8, 0x7e, 0xd1, 0xf5, 0xdc, 0xee, 0xcb,
0xee, 0xf6, 0x7e, 0x77, 0xc7, 0x36, 0x10, 0x02, 0x6b, 0x77, 0xb0, 0xdf, 0xf1, 0x8e, 0x4f, 0x9e,
0xed, 0xf7, 0xfa, 0xbb, 0xdd, 0x1d, 0xbb, 0x20, 0x34, 0xfb, 0x27, 0x9d, 0x4e, 0xb7, 0xdf, 0xb7,
0x8b, 0x08, 0x60, 0xf1, 0xf9, 0x76, 0x4f, 0x90, 0x4b, 0x68, 0x19, 0x1a, 0xbd, 0xc3, 0x97, 0x47,
0xbd, 0x4e, 0xd7, 0xeb, 0x77, 0x07, 0x03, 0x01, 0x2e, 0x6c, 0xfd, 0xbb, 0xa8, 0xee, 0x81, 0x8e,
0xfc, 0xfc, 0x41, 0x2e, 0x94, 0xf5, 0x07, 0x0d, 0x5a, 0x9d, 0xf5, 0x43, 0xee, 0x13, 0xa7, 0x75,
0x27, 0x67, 0x41, 0xd3, 0x7e, 0x72, 0x56, 0x7f, 0xf9, 0xfb, 0x9f, 0x5f, 0x0b, 0x4b, 0x8e, 0xd9,
0x7e, 0xf7, 0xb8, 0x2d, 0x18, 0x6d, 0x3a, 0xe1, 0x4f, 0x8d, 0x4d, 0x74, 0x04, 0x8b, 0xea, 0x1e,
0x46, 0x2b, 0x39, 0xc9, 0xf4, 0x62, 0xbe, 0x49, 0x71, 0x45, 0x2a, 0xda, 0x4e, 0x2d, 0x55, 0x0c,
0x22, 0x21, 0xf8, 0x3d, 0x94, 0xf5, 0x6d, 0x96, 0x09, 0x32, 0x7f, 0xbf, 0xb5, 0xae, 0xf3, 0xc9,
0xef, 0x0c, 0xf4, 0x1a, 0xaa, 0xa9, 0xc5, 0xa2, 0xb5, 0x59, 0x38, 0x57, 0xac, 0xb8, 0xd5, 0xba,
0x6e, 0x29, 0x1f, 0x16, 0xb2, 0xd2, 0xb0, 0xa4, 0xfd, 0xa2, 0x13, 0x55, 0x66, 0x61, 0xbf, 0xa8,
0x99, 0x3b, 0x3e, 0xe3, 0xc8, 0xd7, 0x06, 0xe6, 0xb4, 0xa4, 0xe4, 0x6d, 0x84, 0x72, 0x92, 0xed,
0x0f, 0x81, 0xff, 0x11, 0xbd, 0x02, 0x53, 0x17, 0x40, 0x3a, 0x35, 0x9a, 0x25, 0x2b, 0xeb, 0xe4,
0xad, 0x95, 0xab, 0xb0, 0x8e, 0x76, 0x5e, 0x9a, 0x4e, 0x78, 0x9b, 0x4b, 0x29, 0x2f, 0x95, 0x96,
0xfe, 0x96, 0x91, 0xce, 0x9a, 0x72, 0x46, 0x3a, 0x67, 0x83, 0xce, 0xba, 0x94, 0x6e, 0xa1, 0x66,
0x4e, 0xfa, 0xad, 0xe0, 0xb4, 0x3f, 0xe0, 0x90, 0x7f, 0x44, 0xaf, 0xc1, 0x7a, 0x41, 0xb8, 0x2a,
0xf6, 0x67, 0x45, 0xbf, 0x26, 0x8f, 0x58, 0x46, 0x4b, 0x99, 0x16, 0xd0, 0xc1, 0xbf, 0xc9, 0x68,
0x7f, 0x56, 0xf8, 0xf7, 0xa4, 0xf6, 0x1a, 0x5a, 0xcd, 0x6a, 0x67, 0xa3, 0x7f, 0x05, 0x75, 0x71,
0xc2, 0xd4, 0xf7, 0x58, 0xa6, 0x7f, 0x73, 0xe6, 0xda, 0x5a, 0x9d, 0xc3, 0xf3, 0x33, 0x81, 0x1a,
0xf2, 0x08, 0x86, 0x79, 0x5b, 0x19, 0xea, 0xe9, 0xa2, 0xfc, 0x03, 0xf1, 0xe4, 0xff, 0x00, 0x00,
0x00, 0xff, 0xff, 0x47, 0xdd, 0x3b, 0x05, 0x77, 0x0c, 0x00, 0x00,
0x14, 0x0d, 0x25, 0x59, 0x8f, 0x2b, 0x8a, 0xa2, 0xc7, 0x89, 0x2d, 0xab, 0x0d, 0xe2, 0xb0, 0x4d,
0xeb, 0x78, 0x11, 0x35, 0xce, 0xaa, 0x41, 0x51, 0xc0, 0x91, 0x95, 0x58, 0x86, 0x5f, 0xa5, 0xe4,
0x00, 0xc9, 0x86, 0x19, 0x8b, 0x63, 0x9b, 0xa8, 0xc8, 0x61, 0x38, 0xa3, 0xc4, 0x46, 0x90, 0x4d,
0x7f, 0xa1, 0xbb, 0x2e, 0xfb, 0x07, 0x5d, 0xf7, 0x2b, 0x8a, 0xfe, 0x42, 0x3f, 0xa1, 0xdb, 0x02,
0xc5, 0x3c, 0x44, 0x91, 0x96, 0x9d, 0x45, 0x76, 0xe6, 0x99, 0x33, 0x67, 0xee, 0xdc, 0xc7, 0x19,
0x19, 0xcc, 0xd1, 0x38, 0x20, 0x11, 0x7f, 0x14, 0x27, 0x94, 0x53, 0x54, 0x19, 0x53, 0x1a, 0x27,
0xf1, 0xa8, 0xfd, 0xe5, 0x19, 0xa5, 0x67, 0x63, 0xd2, 0xc1, 0x71, 0xd0, 0xc1, 0x51, 0x44, 0x39,
0xe6, 0x01, 0x8d, 0x98, 0xa2, 0x39, 0xbf, 0x15, 0xc1, 0xda, 0xa3, 0x34, 0x3e, 0x9c, 0x70, 0x97,
0xbc, 0x9d, 0x10, 0xc6, 0x91, 0x0d, 0x45, 0x1c, 0xf2, 0x96, 0xb1, 0x66, 0xac, 0x17, 0x5d, 0xf1,
0x27, 0x42, 0x50, 0xf2, 0x09, 0xe3, 0xad, 0xc2, 0x9a, 0xb1, 0x5e, 0x73, 0xe5, 0xdf, 0xa8, 0x03,
0xb7, 0x43, 0x7c, 0xe1, 0xb1, 0xf7, 0x38, 0xf6, 0x12, 0x3a, 0xe1, 0x41, 0x74, 0xe6, 0x9d, 0x12,
0xd2, 0x2a, 0xca, 0x6d, 0x8b, 0x21, 0xbe, 0x18, 0xbc, 0xc7, 0xb1, 0xab, 0x56, 0x9e, 0x13, 0x82,
0x9e, 0xc0, 0xb2, 0xd8, 0x10, 0x27, 0x24, 0xc6, 0x97, 0xb9, 0x2d, 0x25, 0xb9, 0x65, 0x29, 0xc4,
0x17, 0x47, 0x72, 0x31, 0xb3, 0x69, 0x0d, 0xcc, 0xf4, 0x14, 0x41, 0x5d, 0x90, 0x54, 0xd0, 0xea,
0x82, 0xf1, 0x35, 0x58, 0x19, 0x59, 0x11, 0x78, 0x59, 0x72, 0xcc, 0x54, 0x6e, 0x2b, 0xe4, 0xc8,
0x81, 0x86, 0x60, 0x85, 0x41, 0x44, 0x12, 0x29, 0x54, 0x91, 0xa4, 0x7a, 0x88, 0x2f, 0xf6, 0x05,
0x26, 0x94, 0xd6, 0xc1, 0x16, 0x39, 0xf3, 0xe8, 0x84, 0x7b, 0xa3, 0x73, 0x1c, 0x45, 0x64, 0xdc,
0xaa, 0xae, 0x19, 0xeb, 0x25, 0xd7, 0x1a, 0xab, 0x0c, 0x75, 0x15, 0x8a, 0x36, 0x60, 0x91, 0xbd,
0x27, 0x24, 0xf6, 0x46, 0x34, 0x3a, 0xf5, 0x38, 0x4e, 0xce, 0x08, 0x6f, 0xd5, 0xd6, 0x8c, 0xf5,
0x05, 0xb7, 0x29, 0x17, 0xba, 0x34, 0x3a, 0x1d, 0x4a, 0x18, 0x3d, 0x85, 0x55, 0x19, 0x7d, 0x3c,
0x39, 0x19, 0x07, 0x23, 0x99, 0x7b, 0xcf, 0x27, 0xd8, 0x1f, 0x07, 0x11, 0x69, 0x81, 0x94, 0x5f,
0x11, 0x84, 0xa3, 0xd9, 0xfa, 0xb6, 0x5e, 0x76, 0xfe, 0x32, 0xa0, 0x21, 0x8a, 0xd3, 0x8f, 0x6e,
0xae, 0xcd, 0xd5, 0x0c, 0x15, 0xe6, 0x32, 0x34, 0x77, 0xf7, 0xe2, 0xfc, 0xdd, 0x57, 0xa1, 0x3a,
0xc6, 0x8c, 0x7b, 0xe7, 0x34, 0x96, 0xe5, 0x30, 0xdd, 0x8a, 0xf8, 0xde, 0xa1, 0x31, 0xfa, 0x0a,
0x1a, 0xe4, 0x82, 0x93, 0x24, 0xc2, 0x63, 0xef, 0x9c, 0x8f, 0x47, 0xb2, 0x06, 0x55, 0xd7, 0x9c,
0x82, 0x3b, 0x7c, 0x3c, 0x12, 0xb9, 0x13, 0x6b, 0xb9, 0x84, 0x94, 0x65, 0x42, 0x2c, 0x81, 0xcf,
0xf2, 0xe1, 0xbc, 0x01, 0x53, 0x36, 0x06, 0x61, 0x31, 0x8d, 0x18, 0x41, 0x08, 0x0a, 0x81, 0x2f,
0x2f, 0x54, 0x7b, 0x56, 0x68, 0x19, 0x6e, 0x21, 0xf0, 0x45, 0x34, 0x81, 0xef, 0x9d, 0x5c, 0x72,
0xc2, 0x64, 0xb0, 0xa6, 0x5b, 0x09, 0xfc, 0x67, 0xe2, 0x13, 0xdd, 0x07, 0x53, 0x1e, 0x84, 0x7d,
0x3f, 0x21, 0x8c, 0xe9, 0x96, 0xac, 0x0b, 0x6c, 0x4b, 0x41, 0x8e, 0x0d, 0xd6, 0x3e, 0x8d, 0x02,
0x4e, 0x13, 0x9d, 0x35, 0xe7, 0xbf, 0x02, 0x80, 0x38, 0x74, 0xc0, 0x31, 0x9f, 0xb0, 0x6b, 0x1b,
0x5c, 0x04, 0x51, 0xb8, 0x31, 0x88, 0x7a, 0x3e, 0x88, 0x07, 0x50, 0xe2, 0x97, 0xb1, 0x4a, 0xa4,
0xb5, 0xb9, 0xf8, 0x48, 0x8f, 0xda, 0x23, 0x71, 0xc6, 0xf0, 0x32, 0x26, 0xae, 0x5c, 0x46, 0xeb,
0xb0, 0xc0, 0x38, 0xe6, 0xaa, 0xc1, 0xad, 0x4d, 0x94, 0xe3, 0x89, 0x58, 0x88, 0xab, 0x08, 0xe8,
0x5b, 0x68, 0x06, 0x51, 0xc0, 0x03, 0xd5, 0x1e, 0x3c, 0x08, 0xa7, 0x9d, 0x6e, 0xcd, 0xe0, 0x61,
0x10, 0xaa, 0x1e, 0x15, 0x75, 0x9a, 0xc4, 0x3e, 0xe6, 0x44, 0x31, 0x55, 0xbf, 0x5b, 0x02, 0x3f,
0x96, 0xb0, 0x64, 0x5e, 0x4d, 0x54, 0x65, 0x2e, 0x51, 0xe8, 0x1e, 0xd4, 0x47, 0x94, 0x71, 0x8f,
0x91, 0xe4, 0x1d, 0x49, 0x64, 0xaf, 0x17, 0x5d, 0x10, 0xd0, 0x40, 0x22, 0x42, 0x43, 0x12, 0x68,
0x34, 0x3a, 0xc7, 0x41, 0x24, 0x5b, 0xbc, 0xe8, 0xca, 0x4d, 0x87, 0x0a, 0x12, 0xdd, 0xa1, 0x28,
0xa7, 0xa7, 0x8a, 0x03, 0x6a, 0xfa, 0x24, 0x47, 0x63, 0x0e, 0x02, 0x7b, 0x2f, 0x60, 0x5c, 0x5c,
0x9b, 0x4d, 0x6b, 0xf2, 0x23, 0x2c, 0x66, 0x30, 0xdd, 0x0c, 0x0f, 0x61, 0x41, 0x34, 0x32, 0x6b,
0x19, 0x6b, 0xc5, 0xf5, 0xfa, 0xe6, 0xd2, 0x5c, 0xc6, 0x26, 0xcc, 0x55, 0x0c, 0xe7, 0x3e, 0x34,
0x05, 0xd8, 0x8f, 0x4e, 0xe9, 0x74, 0x38, 0xac, 0xb4, 0x95, 0x4c, 0x51, 0x41, 0xc7, 0x02, 0x73,
0x48, 0x92, 0x30, 0x3d, 0xf2, 0x23, 0x34, 0xf4, 0xb7, 0x3e, 0xee, 0x1b, 0x68, 0x86, 0x41, 0xa4,
0x66, 0x07, 0x87, 0x74, 0x12, 0x71, 0x9d, 0xf6, 0x46, 0x18, 0x44, 0x42, 0x7d, 0x4b, 0x82, 0x92,
0x37, 0x9d, 0x31, 0xcd, 0x2b, 0x6b, 0x9e, 0x1a, 0x33, 0xc5, 0xdb, 0x2d, 0x55, 0x0d, 0xbb, 0xb0,
0x5b, 0xaa, 0x16, 0xec, 0xe2, 0x6e, 0xa9, 0x5a, 0xb4, 0x4b, 0xbb, 0xa5, 0x6a, 0xc9, 0x5e, 0xd8,
0x2d, 0x55, 0x2b, 0x76, 0xd5, 0xf9, 0xdd, 0x00, 0xf3, 0xa7, 0x09, 0xe5, 0xe4, 0xe6, 0x61, 0x96,
0x15, 0x99, 0x4d, 0x50, 0x41, 0x4e, 0x10, 0x8c, 0x66, 0x6e, 0x32, 0x37, 0x8c, 0xc5, 0x6b, 0x86,
0xf1, 0x93, 0x96, 0x53, 0xfa, 0xb4, 0xe5, 0xfc, 0x61, 0x40, 0x43, 0x07, 0xa9, 0x93, 0xb4, 0x0a,
0xd5, 0xd4, 0x5c, 0x54, 0xa8, 0x15, 0xa6, 0x9d, 0xe5, 0x2e, 0x40, 0xc6, 0x77, 0x95, 0xf3, 0xd4,
0xe2, 0xd4, 0x74, 0xbf, 0x80, 0xda, 0x55, 0xd3, 0xa9, 0x86, 0x53, 0xc7, 0x91, 0x1e, 0x2a, 0x82,
0xc4, 0x97, 0x21, 0x89, 0xb8, 0x27, 0x1f, 0x18, 0x65, 0x3d, 0x4d, 0x19, 0x9c, 0xc2, 0xb7, 0x45,
0xa2, 0xee, 0x02, 0x8c, 0xc6, 0xfc, 0x9d, 0xe7, 0x93, 0x31, 0xc7, 0xb2, 0x44, 0x0b, 0x6e, 0x4d,
0x20, 0xdb, 0x02, 0x70, 0x9a, 0xd0, 0x18, 0xd2, 0x9f, 0x49, 0x94, 0x16, 0xfa, 0x07, 0xb0, 0xa6,
0x80, 0xbe, 0xc4, 0x06, 0x94, 0xb9, 0x44, 0x74, 0x67, 0xcd, 0x66, 0x71, 0x8f, 0x61, 0x2e, 0xc9,
0xae, 0x66, 0x38, 0x7f, 0x16, 0xa0, 0x96, 0xa2, 0x22, 0xe3, 0x27, 0x98, 0x11, 0x2f, 0xc4, 0x23,
0x9c, 0x50, 0x1a, 0xe9, 0xfe, 0x32, 0x05, 0xb8, 0xaf, 0x31, 0x31, 0x28, 0xd3, 0x7b, 0x9c, 0x63,
0x76, 0x2e, 0x53, 0x61, 0xba, 0x75, 0x8d, 0xed, 0x60, 0x76, 0x8e, 0x1e, 0x82, 0x3d, 0xa5, 0xc4,
0x09, 0x09, 0x42, 0x7c, 0x46, 0xb4, 0xb7, 0x35, 0x35, 0x7e, 0xa4, 0x61, 0x31, 0xe4, 0xaa, 0xcb,
0xbc, 0x18, 0x07, 0xbe, 0x17, 0x32, 0xcc, 0xf5, 0x1b, 0x69, 0x29, 0xfc, 0x08, 0x07, 0xfe, 0x3e,
0xc3, 0x1c, 0x3d, 0x86, 0x3b, 0x99, 0x87, 0x34, 0x43, 0x57, 0x6d, 0x8c, 0x92, 0xf4, 0x25, 0x4d,
0xb7, 0xdc, 0x07, 0x53, 0xb8, 0x86, 0x37, 0x4a, 0x08, 0xe6, 0xc4, 0xd7, 0x8d, 0x5c, 0x17, 0x58,
0x57, 0x41, 0xa8, 0x05, 0x15, 0x72, 0x11, 0x07, 0x09, 0xf1, 0xa5, 0x6b, 0x54, 0xdd, 0xe9, 0xa7,
0xd8, 0xcc, 0x38, 0x4d, 0xf0, 0x19, 0xf1, 0x22, 0x1c, 0x12, 0x69, 0x19, 0x35, 0xb7, 0xae, 0xb1,
0x03, 0x1c, 0x92, 0x8d, 0x07, 0x50, 0x9d, 0xda, 0x20, 0x32, 0xa1, 0xba, 0x77, 0x78, 0x78, 0xe4,
0x1d, 0x1e, 0x0f, 0xed, 0x5b, 0xa8, 0x0e, 0x15, 0xf9, 0xd5, 0x3f, 0xb0, 0x8d, 0x0d, 0x06, 0xb5,
0xd4, 0x05, 0x51, 0x03, 0x6a, 0xfd, 0x83, 0xfe, 0xb0, 0xbf, 0x35, 0xec, 0x6d, 0xdb, 0xb7, 0xd0,
0x1d, 0x58, 0x3c, 0x72, 0x7b, 0xfd, 0xfd, 0xad, 0x17, 0x3d, 0xcf, 0xed, 0xbd, 0xec, 0x6d, 0xed,
0xf5, 0xb6, 0x6d, 0x03, 0x21, 0xb0, 0x76, 0x86, 0x7b, 0x5d, 0xef, 0xe8, 0xf8, 0xd9, 0x5e, 0x7f,
0xb0, 0xd3, 0xdb, 0xb6, 0x0b, 0x42, 0x73, 0x70, 0xdc, 0xed, 0xf6, 0x06, 0x03, 0xbb, 0x88, 0x00,
0xca, 0xcf, 0xb7, 0xfa, 0x82, 0x5c, 0x42, 0x4b, 0xd0, 0xec, 0x1f, 0xbc, 0x3c, 0xec, 0x77, 0x7b,
0xde, 0xa0, 0x37, 0x1c, 0x0a, 0x70, 0x61, 0xf3, 0xdf, 0xb2, 0x7a, 0x07, 0xba, 0xf2, 0x87, 0x12,
0x72, 0xa1, 0xa2, 0x7f, 0xfa, 0xa0, 0x95, 0x59, 0x3f, 0xe4, 0x7e, 0x0c, 0xb5, 0xef, 0xe4, 0x2c,
0x68, 0xda, 0x4f, 0xce, 0xca, 0x2f, 0x7f, 0xff, 0xf3, 0x6b, 0x61, 0xd1, 0x31, 0x3b, 0xef, 0x1e,
0x77, 0x04, 0xa3, 0x43, 0x27, 0xfc, 0xa9, 0xb1, 0x81, 0x0e, 0xa1, 0xac, 0x5e, 0x6c, 0xb4, 0x9c,
0x93, 0x4c, 0x9f, 0xf0, 0x9b, 0x14, 0x97, 0xa5, 0xa2, 0xed, 0xd4, 0x53, 0xc5, 0x20, 0x12, 0x82,
0xdf, 0x43, 0x45, 0xbf, 0x66, 0x99, 0x20, 0xf3, 0xef, 0x5b, 0xfb, 0x3a, 0x9f, 0xfc, 0xce, 0x40,
0xaf, 0xa1, 0x96, 0x5a, 0x2c, 0x5a, 0x9d, 0x85, 0x73, 0xc5, 0x8a, 0xdb, 0xed, 0xeb, 0x96, 0xf2,
0x61, 0x21, 0x2b, 0x0d, 0x4b, 0xda, 0x2f, 0x3a, 0x56, 0x65, 0x16, 0xf6, 0x8b, 0x5a, 0xb9, 0xe3,
0x33, 0x8e, 0x7c, 0x6d, 0x60, 0x4e, 0x5b, 0x4a, 0xde, 0x46, 0x28, 0x27, 0xd9, 0xf9, 0x10, 0xf8,
0x1f, 0xd1, 0x2b, 0x30, 0x75, 0x01, 0xa4, 0x53, 0xa3, 0x59, 0xb2, 0xb2, 0x4e, 0xde, 0x5e, 0xbe,
0x0a, 0xeb, 0x68, 0xe7, 0xa5, 0xe9, 0x84, 0x77, 0xb8, 0x94, 0xf2, 0x52, 0x69, 0xe9, 0x6f, 0x19,
0xe9, 0xac, 0x29, 0x67, 0xa4, 0x73, 0x36, 0xe8, 0xac, 0x49, 0xe9, 0x36, 0x6a, 0xe5, 0xa4, 0xdf,
0x0a, 0x4e, 0xe7, 0x03, 0x0e, 0xf9, 0x47, 0xf4, 0x1a, 0xac, 0x17, 0x84, 0xab, 0x62, 0x7f, 0x56,
0xf4, 0xab, 0xf2, 0x88, 0x25, 0xb4, 0x98, 0x69, 0x01, 0x1d, 0xfc, 0x9b, 0x8c, 0xf6, 0x67, 0x85,
0x7f, 0x4f, 0x6a, 0xaf, 0xa2, 0x95, 0xac, 0x76, 0x36, 0xfa, 0x57, 0xd0, 0x10, 0x27, 0x4c, 0x7d,
0x8f, 0x65, 0xfa, 0x37, 0x67, 0xae, 0xed, 0x95, 0x39, 0x3c, 0x3f, 0x13, 0xa8, 0x29, 0x8f, 0x60,
0x98, 0x77, 0x94, 0xa1, 0x9e, 0x94, 0xe5, 0xbf, 0x1a, 0x4f, 0xfe, 0x0f, 0x00, 0x00, 0xff, 0xff,
0xc7, 0x1e, 0x66, 0x37, 0xa1, 0x0c, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.

@ -219,6 +219,11 @@ message LoopInRequest {
actor.
*/
bool external_htlc = 5;
/**
The number of blocks that the on chain htlc should confirm within.
*/
int32 htlc_conf_target = 6;
}
message SwapResponse {

@ -307,6 +307,11 @@
"type": "boolean",
"format": "boolean",
"description": "*\nIf external_htlc is true, we expect the htlc to be published by an external\nactor."
},
"htlc_conf_target": {
"type": "integer",
"format": "int32",
"description": "*\nThe number of blocks that the on chain htlc should confirm within."
}
}
},

Loading…
Cancel
Save