multi: pass shared key to new htlc

TODO - our view etc functions don't have our shared key, find a good way
to get this. A possible solution is just to lazily store it so that we
don't need to call lnd/create a session every time we want to restore
it.
pull/475/head
Carla Kirk-Cohen 2 years ago
parent a2d97d67d5
commit 9d2d5a78d4
No known key found for this signature in database
GPG Key ID: 4CA7FE54A6213C91

@ -195,7 +195,8 @@ func (s *Client) FetchSwaps() ([]*SwapInfo, error) {
htlc, err := swap.NewHtlc(
GetHtlcScriptVersion(swp.Contract.ProtocolVersion),
swp.Contract.CltvExpiry, swp.Contract.SenderKey,
swp.Contract.ReceiverKey, swp.Hash, swap.HtlcP2WSH,
swp.Contract.ReceiverKey, nil,
swp.Hash, swap.HtlcP2WSH,
s.lndServices.ChainParams,
)
if err != nil {
@ -216,8 +217,8 @@ func (s *Client) FetchSwaps() ([]*SwapInfo, error) {
htlcNP2WSH, err := swap.NewHtlc(
GetHtlcScriptVersion(swp.Contract.ProtocolVersion),
swp.Contract.CltvExpiry, swp.Contract.SenderKey,
swp.Contract.ReceiverKey, swp.Hash, swap.HtlcNP2WSH,
s.lndServices.ChainParams,
swp.Contract.ReceiverKey, nil,
swp.Hash, swap.HtlcNP2WSH, s.lndServices.ChainParams,
)
if err != nil {
return nil, err
@ -226,8 +227,8 @@ func (s *Client) FetchSwaps() ([]*SwapInfo, error) {
htlcP2WSH, err := swap.NewHtlc(
GetHtlcScriptVersion(swp.Contract.ProtocolVersion),
swp.Contract.CltvExpiry, swp.Contract.SenderKey,
swp.Contract.ReceiverKey, swp.Hash, swap.HtlcP2WSH,
s.lndServices.ChainParams,
swp.Contract.ReceiverKey, nil,
swp.Hash, swap.HtlcP2WSH, s.lndServices.ChainParams,
)
if err != nil {
return nil, err

@ -284,7 +284,8 @@ func testResume(t *testing.T, confs uint32, expired, preimageRevealed,
scriptVersion := GetHtlcScriptVersion(protocolVersion)
htlc, err := swap.NewHtlc(
scriptVersion, pendingSwap.Contract.CltvExpiry, senderKey,
receiverKey, hash, swap.HtlcP2WSH, &chaincfg.TestNet3Params,
receiverKey, pendingSwap.Contract.SharedKey(), hash,
swap.HtlcP2WSH, &chaincfg.TestNet3Params,
)
require.NoError(t, err)
require.Equal(t, htlc.PkScript, confIntent.PkScript)

@ -54,6 +54,7 @@ func viewOut(swapClient *loop.Client, chainParams *chaincfg.Params) error {
s.Contract.CltvExpiry,
s.Contract.SenderKey,
s.Contract.ReceiverKey,
nil,
s.Hash, swap.HtlcP2WSH, chainParams,
)
if err != nil {
@ -106,6 +107,7 @@ func viewIn(swapClient *loop.Client, chainParams *chaincfg.Params) error {
s.Contract.CltvExpiry,
s.Contract.SenderKey,
s.Contract.ReceiverKey,
nil,
s.Hash, swap.HtlcNP2WSH, chainParams,
)
if err != nil {

@ -76,8 +76,8 @@ func (s *swapKit) getHtlc(outputType swap.HtlcOutputType) (*swap.Htlc, error) {
return swap.NewHtlc(
GetHtlcScriptVersion(s.contract.ProtocolVersion),
s.contract.CltvExpiry, s.contract.SenderKey,
s.contract.ReceiverKey, s.hash, outputType,
s.swapConfig.lnd.ChainParams,
s.contract.ReceiverKey, s.musig2Session.CombinedKey, s.hash,
outputType, s.swapConfig.lnd.ChainParams,
)
}

@ -6,6 +6,7 @@ import (
"errors"
"fmt"
"github.com/btcsuite/btcd/btcec/v2"
"github.com/btcsuite/btcd/btcutil"
"github.com/btcsuite/btcd/chaincfg"
"github.com/btcsuite/btcd/txscript"
@ -14,6 +15,10 @@ import (
"github.com/lightningnetwork/lnd/lntypes"
)
// ErrNoSharedKey is returned when a script version does not support use of a
// shared key.
var ErrNoSharedKey = errors.New("shared key not supported for script version")
// HtlcOutputType defines the output type of the htlc that is published.
type HtlcOutputType uint8
@ -90,7 +95,7 @@ var (
// script size.
QuoteHtlc, _ = NewHtlc(
HtlcV2,
^int32(0), quoteKey, quoteKey, quoteHash, HtlcP2WSH,
^int32(0), quoteKey, quoteKey, nil, quoteHash, HtlcP2WSH,
&chaincfg.MainNetParams,
)
@ -113,7 +118,7 @@ func (h HtlcOutputType) String() string {
// NewHtlc returns a new instance.
func NewHtlc(version ScriptVersion, cltvExpiry int32,
senderKey, receiverKey [33]byte,
senderKey, receiverKey [33]byte, sharedKey *btcec.PublicKey,
hash lntypes.Hash, outputType HtlcOutputType,
chainParams *chaincfg.Params) (*Htlc, error) {
@ -124,11 +129,19 @@ func NewHtlc(version ScriptVersion, cltvExpiry int32,
switch version {
case HtlcV1:
if sharedKey != nil {
return nil, ErrNoSharedKey
}
htlc, err = newHTLCScriptV1(
cltvExpiry, senderKey, receiverKey, hash,
)
case HtlcV2:
if sharedKey != nil {
return nil, ErrNoSharedKey
}
htlc, err = newHTLCScriptV2(
cltvExpiry, senderKey, receiverKey, hash,
)

@ -137,7 +137,7 @@ func TestHtlcV2(t *testing.T) {
// Create the htlc.
htlc, err := NewHtlc(
HtlcV2, testCltvExpiry,
senderKey, receiverKey, hash,
senderKey, receiverKey, nil, hash,
HtlcP2WSH, &chaincfg.MainNetParams,
)
require.NoError(t, err)

Loading…
Cancel
Save