106f93a1b4
This commit makes the blockcache available to BtcWallet so that any GetBlock call made to BtcWallet is wrapped by the blockcache GetBlock call.
55 lines
1.5 KiB
Go
55 lines
1.5 KiB
Go
package btcwallet
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/btcsuite/btcwallet/chain"
|
|
"github.com/lightningnetwork/lnd/blockcache"
|
|
"github.com/lightningnetwork/lnd/lnwallet"
|
|
)
|
|
|
|
const (
|
|
walletType = "btcwallet"
|
|
)
|
|
|
|
// createNewWallet creates a new instance of BtcWallet given the proper list of
|
|
// initialization parameters. This function is the factory function required to
|
|
// properly create an instance of the lnwallet.WalletDriver struct for
|
|
// BtcWallet.
|
|
func createNewWallet(args ...interface{}) (lnwallet.WalletController, error) {
|
|
if len(args) != 2 {
|
|
return nil, fmt.Errorf("incorrect number of arguments to .New(...), "+
|
|
"expected 2, instead passed %v", len(args))
|
|
}
|
|
|
|
config, ok := args[0].(*Config)
|
|
if !ok {
|
|
return nil, fmt.Errorf("first argument to btcdnotifier.New is " +
|
|
"incorrect, expected a *rpcclient.ConnConfig")
|
|
}
|
|
|
|
blockCache, ok := args[1].(*blockcache.BlockCache)
|
|
if !ok {
|
|
return nil, fmt.Errorf("second argument to btcdnotifier.New is " +
|
|
"incorrect, expected a *blockcache.BlockCache")
|
|
}
|
|
|
|
return New(*config, blockCache)
|
|
}
|
|
|
|
// init registers a driver for the BtcWallet concrete implementation of the
|
|
// lnwallet.WalletController interface.
|
|
func init() {
|
|
// Register the driver.
|
|
driver := &lnwallet.WalletDriver{
|
|
WalletType: walletType,
|
|
New: createNewWallet,
|
|
BackEnds: chain.BackEnds,
|
|
}
|
|
|
|
if err := lnwallet.RegisterWallet(driver); err != nil {
|
|
panic(fmt.Sprintf("failed to register wallet driver '%s': %v",
|
|
walletType, err))
|
|
}
|
|
}
|