chainntnfs/btcdnotify: add chainParams parameter to btcdnotify.New

In this commit, we add the current chain parameters to the BtcdNotifier.
This will be used in a future commit in order to convert outputs scripts
into addresses. This is needed since the btcd backend uses these
addresses to detect whether the script encoded within it was spent by a
transaction in the chain.
This commit is contained in:
Wilmer Paulino 2018-12-06 21:14:02 -08:00
parent 7f644019b8
commit 1ee8d7518c
No known key found for this signature in database
GPG Key ID: 6DF57B9F9514972F
3 changed files with 23 additions and 11 deletions

@ -9,6 +9,7 @@ import (
"time" "time"
"github.com/btcsuite/btcd/btcjson" "github.com/btcsuite/btcd/btcjson"
"github.com/btcsuite/btcd/chaincfg"
"github.com/btcsuite/btcd/chaincfg/chainhash" "github.com/btcsuite/btcd/chaincfg/chainhash"
"github.com/btcsuite/btcd/rpcclient" "github.com/btcsuite/btcd/rpcclient"
"github.com/btcsuite/btcd/wire" "github.com/btcsuite/btcd/wire"
@ -64,7 +65,8 @@ type BtcdNotifier struct {
started int32 // To be used atomically. started int32 // To be used atomically.
stopped int32 // To be used atomically. stopped int32 // To be used atomically.
chainConn *rpcclient.Client chainConn *rpcclient.Client
chainParams *chaincfg.Params
notificationCancels chan interface{} notificationCancels chan interface{}
notificationRegistry chan interface{} notificationRegistry chan interface{}
@ -98,10 +100,13 @@ var _ chainntnfs.ChainNotifier = (*BtcdNotifier)(nil)
// New returns a new BtcdNotifier instance. This function assumes the btcd node // New returns a new BtcdNotifier instance. This function assumes the btcd node
// detailed in the passed configuration is already running, and willing to // detailed in the passed configuration is already running, and willing to
// accept new websockets clients. // accept new websockets clients.
func New(config *rpcclient.ConnConfig, spendHintCache chainntnfs.SpendHintCache, func New(config *rpcclient.ConnConfig, chainParams *chaincfg.Params,
spendHintCache chainntnfs.SpendHintCache,
confirmHintCache chainntnfs.ConfirmHintCache) (*BtcdNotifier, error) { confirmHintCache chainntnfs.ConfirmHintCache) (*BtcdNotifier, error) {
notifier := &BtcdNotifier{ notifier := &BtcdNotifier{
chainParams: chainParams,
notificationCancels: make(chan interface{}), notificationCancels: make(chan interface{}),
notificationRegistry: make(chan interface{}), notificationRegistry: make(chan interface{}),

@ -37,7 +37,7 @@ func setUpNotifier(t *testing.T, h *rpctest.Harness) *BtcdNotifier {
hintCache := initHintCache(t) hintCache := initHintCache(t)
rpcCfg := h.RPCConfig() rpcCfg := h.RPCConfig()
notifier, err := New(&rpcCfg, hintCache, hintCache) notifier, err := New(&rpcCfg, chainntnfs.NetParams, hintCache, hintCache)
if err != nil { if err != nil {
t.Fatalf("unable to create notifier: %v", err) t.Fatalf("unable to create notifier: %v", err)
} }

@ -4,6 +4,7 @@ import (
"errors" "errors"
"fmt" "fmt"
"github.com/btcsuite/btcd/chaincfg"
"github.com/btcsuite/btcd/rpcclient" "github.com/btcsuite/btcd/rpcclient"
"github.com/lightningnetwork/lnd/chainntnfs" "github.com/lightningnetwork/lnd/chainntnfs"
) )
@ -11,30 +12,36 @@ import (
// createNewNotifier creates a new instance of the ChainNotifier interface // createNewNotifier creates a new instance of the ChainNotifier interface
// implemented by BtcdNotifier. // implemented by BtcdNotifier.
func createNewNotifier(args ...interface{}) (chainntnfs.ChainNotifier, error) { func createNewNotifier(args ...interface{}) (chainntnfs.ChainNotifier, error) {
if len(args) != 3 { if len(args) != 4 {
return nil, fmt.Errorf("incorrect number of arguments to "+ return nil, fmt.Errorf("incorrect number of arguments to "+
".New(...), expected 2, instead passed %v", len(args)) ".New(...), expected 4, instead passed %v", len(args))
} }
config, ok := args[0].(*rpcclient.ConnConfig) config, ok := args[0].(*rpcclient.ConnConfig)
if !ok { if !ok {
return nil, errors.New("first argument to btcdnotifier.New " + return nil, errors.New("first argument to btcdnotify.New " +
"is incorrect, expected a *rpcclient.ConnConfig") "is incorrect, expected a *rpcclient.ConnConfig")
} }
spendHintCache, ok := args[1].(chainntnfs.SpendHintCache) chainParams, ok := args[1].(*chaincfg.Params)
if !ok { if !ok {
return nil, errors.New("second argument to btcdnotifier.New " + return nil, errors.New("second argument to btcdnotify.New " +
"is incorrect, expected a *chaincfg.Params")
}
spendHintCache, ok := args[2].(chainntnfs.SpendHintCache)
if !ok {
return nil, errors.New("third argument to btcdnotify.New " +
"is incorrect, expected a chainntnfs.SpendHintCache") "is incorrect, expected a chainntnfs.SpendHintCache")
} }
confirmHintCache, ok := args[2].(chainntnfs.ConfirmHintCache) confirmHintCache, ok := args[3].(chainntnfs.ConfirmHintCache)
if !ok { if !ok {
return nil, errors.New("third argument to btcdnotifier.New " + return nil, errors.New("fourth argument to btcdnotify.New " +
"is incorrect, expected a chainntnfs.ConfirmHintCache") "is incorrect, expected a chainntnfs.ConfirmHintCache")
} }
return New(config, spendHintCache, confirmHintCache) return New(config, chainParams, spendHintCache, confirmHintCache)
} }
// init registers a driver for the BtcdNotifier concrete implementation of the // init registers a driver for the BtcdNotifier concrete implementation of the