loopd: loop in from external address

Allow user to specify that htlc will be published by an external source.
In that case no internal htlc tx will be published.

To facilitate sending to the htlc address, the swap initiation response
is extended with that address.
This commit is contained in:
Joost Jager 2019-03-28 13:29:21 +01:00
parent 8b2da64b0a
commit 2e48ead6d6
No known key found for this signature in database
GPG key ID: A61B9D4C393C59C7
12 changed files with 190 additions and 98 deletions

View file

@ -19,6 +19,10 @@ type LoopInContract struct {
// LoopInChannel is the channel to charge. If zero, any channel may
// be used.
LoopInChannel *uint64
// ExternalHtlc specifies whether the htlc is published by an external
// source.
ExternalHtlc bool
}
// LoopIn is a combination of the contract and the updates.
@ -100,6 +104,10 @@ func serializeLoopInContract(swap *LoopInContract) (
return nil, err
}
if err := binary.Write(&b, byteOrder, swap.ExternalHtlc); err != nil {
return nil, err
}
return b.Bytes(), nil
}
@ -164,5 +172,9 @@ func deserializeLoopInContract(value []byte) (*LoopInContract, error) {
contract.LoopInChannel = &loopInChannel
}
if err := binary.Read(r, byteOrder, &contract.ExternalHtlc); err != nil {
return nil, err
}
return &contract, nil
}

View file

@ -207,6 +207,7 @@ func TestLoopInStore(t *testing.T) {
},
HtlcConfTarget: 2,
LoopInChannel: &loopInChannel,
ExternalHtlc: true,
}
// checkSwap is a test helper function that'll assert the state of a