multi: move mockWalletController, mockSecretKeyRing to lntest/mock
This commit is contained in:
parent
49d8f04197
commit
3fa5d042c9
@ -299,8 +299,8 @@ func createTestFundingManager(t *testing.T, privKey *btcec.PrivateKey,
|
|||||||
publTxChan := make(chan *wire.MsgTx, 1)
|
publTxChan := make(chan *wire.MsgTx, 1)
|
||||||
shutdownChan := make(chan struct{})
|
shutdownChan := make(chan struct{})
|
||||||
|
|
||||||
wc := &mockWalletController{
|
wc := &mock.WalletController{
|
||||||
rootKey: alicePrivKey,
|
RootKey: alicePrivKey,
|
||||||
}
|
}
|
||||||
signer := &mock.SingleSigner{
|
signer := &mock.SingleSigner{
|
||||||
Privkey: alicePrivKey,
|
Privkey: alicePrivKey,
|
||||||
@ -326,8 +326,8 @@ func createTestFundingManager(t *testing.T, privKey *btcec.PrivateKey,
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
keyRing := &mockSecretKeyRing{
|
keyRing := &mock.SecretKeyRing{
|
||||||
rootKey: alicePrivKey,
|
RootKey: alicePrivKey,
|
||||||
}
|
}
|
||||||
|
|
||||||
lnw, err := createTestWallet(
|
lnw, err := createTestWallet(
|
||||||
@ -3014,7 +3014,7 @@ func TestFundingManagerFundAll(t *testing.T) {
|
|||||||
Value: btcutil.Amount(
|
Value: btcutil.Amount(
|
||||||
0.05 * btcutil.SatoshiPerBitcoin,
|
0.05 * btcutil.SatoshiPerBitcoin,
|
||||||
),
|
),
|
||||||
PkScript: coinPkScript,
|
PkScript: mock.CoinPkScript,
|
||||||
OutPoint: wire.OutPoint{
|
OutPoint: wire.OutPoint{
|
||||||
Hash: chainhash.Hash{},
|
Hash: chainhash.Hash{},
|
||||||
Index: 0,
|
Index: 0,
|
||||||
@ -3025,7 +3025,7 @@ func TestFundingManagerFundAll(t *testing.T) {
|
|||||||
Value: btcutil.Amount(
|
Value: btcutil.Amount(
|
||||||
0.06 * btcutil.SatoshiPerBitcoin,
|
0.06 * btcutil.SatoshiPerBitcoin,
|
||||||
),
|
),
|
||||||
PkScript: coinPkScript,
|
PkScript: mock.CoinPkScript,
|
||||||
OutPoint: wire.OutPoint{
|
OutPoint: wire.OutPoint{
|
||||||
Hash: chainhash.Hash{},
|
Hash: chainhash.Hash{},
|
||||||
Index: 1,
|
Index: 1,
|
||||||
@ -3059,7 +3059,7 @@ func TestFundingManagerFundAll(t *testing.T) {
|
|||||||
alice, bob := setupFundingManagers(t)
|
alice, bob := setupFundingManagers(t)
|
||||||
defer tearDownFundingManagers(t, alice, bob)
|
defer tearDownFundingManagers(t, alice, bob)
|
||||||
|
|
||||||
alice.fundingMgr.cfg.Wallet.WalletController.(*mockWalletController).utxos = allCoins
|
alice.fundingMgr.cfg.Wallet.WalletController.(*mock.WalletController).Utxos = allCoins
|
||||||
|
|
||||||
// We will consume the channel updates as we go, so no
|
// We will consume the channel updates as we go, so no
|
||||||
// buffering is needed.
|
// buffering is needed.
|
||||||
|
56
lntest/mock/secretkeyring.go
Normal file
56
lntest/mock/secretkeyring.go
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
package mock
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/btcsuite/btcd/btcec"
|
||||||
|
|
||||||
|
"github.com/lightningnetwork/lnd/keychain"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SecretKeyRing is a mock implementation of the SecretKeyRing interface.
|
||||||
|
type SecretKeyRing struct {
|
||||||
|
RootKey *btcec.PrivateKey
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeriveNextKey currently returns dummy values.
|
||||||
|
func (s *SecretKeyRing) DeriveNextKey(keyFam keychain.KeyFamily) (
|
||||||
|
keychain.KeyDescriptor, error) {
|
||||||
|
|
||||||
|
return keychain.KeyDescriptor{
|
||||||
|
PubKey: s.RootKey.PubKey(),
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeriveKey currently returns dummy values.
|
||||||
|
func (s *SecretKeyRing) DeriveKey(keyLoc keychain.KeyLocator) (keychain.KeyDescriptor,
|
||||||
|
error) {
|
||||||
|
return keychain.KeyDescriptor{
|
||||||
|
PubKey: s.RootKey.PubKey(),
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// DerivePrivKey currently returns dummy values.
|
||||||
|
func (s *SecretKeyRing) DerivePrivKey(keyDesc keychain.KeyDescriptor) (*btcec.PrivateKey,
|
||||||
|
error) {
|
||||||
|
return s.RootKey, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ECDH currently returns dummy values.
|
||||||
|
func (s *SecretKeyRing) ECDH(_ keychain.KeyDescriptor, pubKey *btcec.PublicKey) ([32]byte,
|
||||||
|
error) {
|
||||||
|
|
||||||
|
return [32]byte{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SignDigest signs the passed digest and ignores the KeyDescriptor.
|
||||||
|
func (s *SecretKeyRing) SignDigest(_ keychain.KeyDescriptor,
|
||||||
|
digest [32]byte) (*btcec.Signature, error) {
|
||||||
|
|
||||||
|
return s.RootKey.Sign(digest[:])
|
||||||
|
}
|
||||||
|
|
||||||
|
// SignDigestCompact signs the passed digest.
|
||||||
|
func (s *SecretKeyRing) SignDigestCompact(_ keychain.KeyDescriptor,
|
||||||
|
digest [32]byte) ([]byte, error) {
|
||||||
|
|
||||||
|
return btcec.SignCompact(btcec.S256(), s.RootKey, digest[:], true)
|
||||||
|
}
|
182
lntest/mock/walletcontroller.go
Normal file
182
lntest/mock/walletcontroller.go
Normal file
@ -0,0 +1,182 @@
|
|||||||
|
package mock
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/hex"
|
||||||
|
"sync/atomic"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/btcsuite/btcd/btcec"
|
||||||
|
"github.com/btcsuite/btcd/chaincfg"
|
||||||
|
"github.com/btcsuite/btcd/chaincfg/chainhash"
|
||||||
|
"github.com/btcsuite/btcd/wire"
|
||||||
|
"github.com/btcsuite/btcutil"
|
||||||
|
"github.com/btcsuite/btcwallet/wallet/txauthor"
|
||||||
|
"github.com/btcsuite/btcwallet/wtxmgr"
|
||||||
|
|
||||||
|
"github.com/lightningnetwork/lnd/lnwallet"
|
||||||
|
"github.com/lightningnetwork/lnd/lnwallet/chainfee"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
CoinPkScript, _ = hex.DecodeString("001431df1bde03c074d0cf21ea2529427e1499b8f1de")
|
||||||
|
)
|
||||||
|
|
||||||
|
// WalletController is a mock implementation of the WalletController
|
||||||
|
// interface. It let's us mock the interaction with the bitcoin network.
|
||||||
|
type WalletController struct {
|
||||||
|
RootKey *btcec.PrivateKey
|
||||||
|
PublishedTransactions chan *wire.MsgTx
|
||||||
|
index uint32
|
||||||
|
Utxos []*lnwallet.Utxo
|
||||||
|
}
|
||||||
|
|
||||||
|
// BackEnd returns "mock" to signify a mock wallet controller.
|
||||||
|
func (w *WalletController) BackEnd() string {
|
||||||
|
return "mock"
|
||||||
|
}
|
||||||
|
|
||||||
|
// FetchInputInfo will be called to get info about the inputs to the funding
|
||||||
|
// transaction.
|
||||||
|
func (w *WalletController) FetchInputInfo(
|
||||||
|
prevOut *wire.OutPoint) (*lnwallet.Utxo, error) {
|
||||||
|
|
||||||
|
utxo := &lnwallet.Utxo{
|
||||||
|
AddressType: lnwallet.WitnessPubKey,
|
||||||
|
Value: 10 * btcutil.SatoshiPerBitcoin,
|
||||||
|
PkScript: []byte("dummy"),
|
||||||
|
Confirmations: 1,
|
||||||
|
OutPoint: *prevOut,
|
||||||
|
}
|
||||||
|
return utxo, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ConfirmedBalance currently returns dummy values.
|
||||||
|
func (w *WalletController) ConfirmedBalance(confs int32) (btcutil.Amount, error) {
|
||||||
|
return 0, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewAddress is called to get new addresses for delivery, change etc.
|
||||||
|
func (w *WalletController) NewAddress(addrType lnwallet.AddressType,
|
||||||
|
change bool) (btcutil.Address, error) {
|
||||||
|
|
||||||
|
addr, _ := btcutil.NewAddressPubKey(
|
||||||
|
w.RootKey.PubKey().SerializeCompressed(), &chaincfg.MainNetParams,
|
||||||
|
)
|
||||||
|
return addr, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// LastUnusedAddress currently returns dummy values.
|
||||||
|
func (w *WalletController) LastUnusedAddress(addrType lnwallet.AddressType) (
|
||||||
|
btcutil.Address, error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsOurAddress currently returns a dummy value.
|
||||||
|
func (w *WalletController) IsOurAddress(a btcutil.Address) bool {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// SendOutputs currently returns dummy values.
|
||||||
|
func (w *WalletController) SendOutputs(outputs []*wire.TxOut,
|
||||||
|
_ chainfee.SatPerKWeight, _ string) (*wire.MsgTx, error) {
|
||||||
|
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateSimpleTx currently returns dummy values.
|
||||||
|
func (w *WalletController) CreateSimpleTx(outputs []*wire.TxOut,
|
||||||
|
_ chainfee.SatPerKWeight, _ bool) (*txauthor.AuthoredTx, error) {
|
||||||
|
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListUnspentWitness is called by the wallet when doing coin selection. We just
|
||||||
|
// need one unspent for the funding transaction.
|
||||||
|
func (w *WalletController) ListUnspentWitness(minconfirms,
|
||||||
|
maxconfirms int32) ([]*lnwallet.Utxo, error) {
|
||||||
|
|
||||||
|
// If the mock already has a list of utxos, return it.
|
||||||
|
if w.Utxos != nil {
|
||||||
|
return w.Utxos, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Otherwise create one to return.
|
||||||
|
utxo := &lnwallet.Utxo{
|
||||||
|
AddressType: lnwallet.WitnessPubKey,
|
||||||
|
Value: btcutil.Amount(10 * btcutil.SatoshiPerBitcoin),
|
||||||
|
PkScript: CoinPkScript,
|
||||||
|
OutPoint: wire.OutPoint{
|
||||||
|
Hash: chainhash.Hash{},
|
||||||
|
Index: w.index,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
atomic.AddUint32(&w.index, 1)
|
||||||
|
var ret []*lnwallet.Utxo
|
||||||
|
ret = append(ret, utxo)
|
||||||
|
return ret, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListTransactionDetails currently returns dummy values.
|
||||||
|
func (w *WalletController) ListTransactionDetails(_,
|
||||||
|
_ int32) ([]*lnwallet.TransactionDetail, error) {
|
||||||
|
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// LockOutpoint currently does nothing.
|
||||||
|
func (w *WalletController) LockOutpoint(o wire.OutPoint) {}
|
||||||
|
|
||||||
|
// UnlockOutpoint currently does nothing.
|
||||||
|
func (w *WalletController) UnlockOutpoint(o wire.OutPoint) {}
|
||||||
|
|
||||||
|
// LeaseOutput returns the current time and a nil error.
|
||||||
|
func (w *WalletController) LeaseOutput(wtxmgr.LockID, wire.OutPoint) (time.Time,
|
||||||
|
error) {
|
||||||
|
|
||||||
|
return time.Now(), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ReleaseOutput currently does nothing.
|
||||||
|
func (w *WalletController) ReleaseOutput(wtxmgr.LockID, wire.OutPoint) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// PublishTransaction sends a transaction to the PublishedTransactions chan.
|
||||||
|
func (w *WalletController) PublishTransaction(tx *wire.MsgTx, _ string) error {
|
||||||
|
w.PublishedTransactions <- tx
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// LabelTransaction currently does nothing.
|
||||||
|
func (w *WalletController) LabelTransaction(_ chainhash.Hash, _ string,
|
||||||
|
_ bool) error {
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SubscribeTransactions currently does nothing.
|
||||||
|
func (w *WalletController) SubscribeTransactions() (lnwallet.TransactionSubscription,
|
||||||
|
error) {
|
||||||
|
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsSynced currently returns dummy values.
|
||||||
|
func (w *WalletController) IsSynced() (bool, int64, error) {
|
||||||
|
return true, int64(0), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetRecoveryInfo currently returns dummy values.
|
||||||
|
func (w *WalletController) GetRecoveryInfo() (bool, float64, error) {
|
||||||
|
return true, float64(1), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Start currently does nothing.
|
||||||
|
func (w *WalletController) Start() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Stop currently does nothing.
|
||||||
|
func (w *WalletController) Stop() error {
|
||||||
|
return nil
|
||||||
|
}
|
177
mock.go
177
mock.go
@ -1,27 +1,14 @@
|
|||||||
package lnd
|
package lnd
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/hex"
|
|
||||||
"sync"
|
"sync"
|
||||||
"sync/atomic"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/btcsuite/btcd/btcec"
|
|
||||||
"github.com/btcsuite/btcd/chaincfg"
|
"github.com/btcsuite/btcd/chaincfg"
|
||||||
"github.com/btcsuite/btcd/chaincfg/chainhash"
|
"github.com/btcsuite/btcd/chaincfg/chainhash"
|
||||||
"github.com/btcsuite/btcd/wire"
|
"github.com/btcsuite/btcd/wire"
|
||||||
"github.com/btcsuite/btcutil"
|
|
||||||
"github.com/btcsuite/btcwallet/wallet/txauthor"
|
|
||||||
"github.com/btcsuite/btcwallet/wtxmgr"
|
|
||||||
|
|
||||||
"github.com/lightningnetwork/lnd/chainntnfs"
|
"github.com/lightningnetwork/lnd/chainntnfs"
|
||||||
"github.com/lightningnetwork/lnd/keychain"
|
|
||||||
"github.com/lightningnetwork/lnd/lnwallet"
|
"github.com/lightningnetwork/lnd/lnwallet"
|
||||||
"github.com/lightningnetwork/lnd/lnwallet/chainfee"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
coinPkScript, _ = hex.DecodeString("001431df1bde03c074d0cf21ea2529427e1499b8f1de")
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// The block height returned by the mock BlockChainIO's GetBestBlock.
|
// The block height returned by the mock BlockChainIO's GetBestBlock.
|
||||||
@ -169,167 +156,3 @@ func (*mockChainIO) GetBlockHash(blockHeight int64) (*chainhash.Hash, error) {
|
|||||||
func (*mockChainIO) GetBlock(blockHash *chainhash.Hash) (*wire.MsgBlock, error) {
|
func (*mockChainIO) GetBlock(blockHash *chainhash.Hash) (*wire.MsgBlock, error) {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// mockWalletController is used by the LightningWallet, and let us mock the
|
|
||||||
// interaction with the bitcoin network.
|
|
||||||
type mockWalletController struct {
|
|
||||||
rootKey *btcec.PrivateKey
|
|
||||||
publishedTransactions chan *wire.MsgTx
|
|
||||||
index uint32
|
|
||||||
utxos []*lnwallet.Utxo
|
|
||||||
}
|
|
||||||
|
|
||||||
// BackEnd returns "mock" to signify a mock wallet controller.
|
|
||||||
func (*mockWalletController) BackEnd() string {
|
|
||||||
return "mock"
|
|
||||||
}
|
|
||||||
|
|
||||||
// FetchInputInfo will be called to get info about the inputs to the funding
|
|
||||||
// transaction.
|
|
||||||
func (*mockWalletController) FetchInputInfo(
|
|
||||||
prevOut *wire.OutPoint) (*lnwallet.Utxo, error) {
|
|
||||||
utxo := &lnwallet.Utxo{
|
|
||||||
AddressType: lnwallet.WitnessPubKey,
|
|
||||||
Value: 10 * btcutil.SatoshiPerBitcoin,
|
|
||||||
PkScript: []byte("dummy"),
|
|
||||||
Confirmations: 1,
|
|
||||||
OutPoint: *prevOut,
|
|
||||||
}
|
|
||||||
return utxo, nil
|
|
||||||
}
|
|
||||||
func (*mockWalletController) ConfirmedBalance(confs int32) (btcutil.Amount, error) {
|
|
||||||
return 0, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewAddress is called to get new addresses for delivery, change etc.
|
|
||||||
func (m *mockWalletController) NewAddress(addrType lnwallet.AddressType,
|
|
||||||
change bool) (btcutil.Address, error) {
|
|
||||||
addr, _ := btcutil.NewAddressPubKey(
|
|
||||||
m.rootKey.PubKey().SerializeCompressed(), &chaincfg.MainNetParams)
|
|
||||||
return addr, nil
|
|
||||||
}
|
|
||||||
func (*mockWalletController) LastUnusedAddress(addrType lnwallet.AddressType) (
|
|
||||||
btcutil.Address, error) {
|
|
||||||
return nil, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*mockWalletController) IsOurAddress(a btcutil.Address) bool {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*mockWalletController) SendOutputs(outputs []*wire.TxOut,
|
|
||||||
_ chainfee.SatPerKWeight, _ string) (*wire.MsgTx, error) {
|
|
||||||
|
|
||||||
return nil, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*mockWalletController) CreateSimpleTx(outputs []*wire.TxOut,
|
|
||||||
_ chainfee.SatPerKWeight, _ bool) (*txauthor.AuthoredTx, error) {
|
|
||||||
|
|
||||||
return nil, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListUnspentWitness is called by the wallet when doing coin selection. We just
|
|
||||||
// need one unspent for the funding transaction.
|
|
||||||
func (m *mockWalletController) ListUnspentWitness(minconfirms,
|
|
||||||
maxconfirms int32) ([]*lnwallet.Utxo, error) {
|
|
||||||
|
|
||||||
// If the mock already has a list of utxos, return it.
|
|
||||||
if m.utxos != nil {
|
|
||||||
return m.utxos, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Otherwise create one to return.
|
|
||||||
utxo := &lnwallet.Utxo{
|
|
||||||
AddressType: lnwallet.WitnessPubKey,
|
|
||||||
Value: btcutil.Amount(10 * btcutil.SatoshiPerBitcoin),
|
|
||||||
PkScript: coinPkScript,
|
|
||||||
OutPoint: wire.OutPoint{
|
|
||||||
Hash: chainhash.Hash{},
|
|
||||||
Index: m.index,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
atomic.AddUint32(&m.index, 1)
|
|
||||||
var ret []*lnwallet.Utxo
|
|
||||||
ret = append(ret, utxo)
|
|
||||||
return ret, nil
|
|
||||||
}
|
|
||||||
func (*mockWalletController) ListTransactionDetails(_, _ int32) ([]*lnwallet.TransactionDetail, error) {
|
|
||||||
return nil, nil
|
|
||||||
}
|
|
||||||
func (*mockWalletController) LockOutpoint(o wire.OutPoint) {}
|
|
||||||
func (*mockWalletController) UnlockOutpoint(o wire.OutPoint) {}
|
|
||||||
|
|
||||||
func (*mockWalletController) LeaseOutput(wtxmgr.LockID, wire.OutPoint) (time.Time, error) {
|
|
||||||
return time.Now(), nil
|
|
||||||
}
|
|
||||||
func (*mockWalletController) ReleaseOutput(wtxmgr.LockID, wire.OutPoint) error {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *mockWalletController) PublishTransaction(tx *wire.MsgTx, _ string) error {
|
|
||||||
m.publishedTransactions <- tx
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *mockWalletController) LabelTransaction(_ chainhash.Hash, _ string,
|
|
||||||
_ bool) error {
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*mockWalletController) SubscribeTransactions() (lnwallet.TransactionSubscription, error) {
|
|
||||||
return nil, nil
|
|
||||||
}
|
|
||||||
func (*mockWalletController) IsSynced() (bool, int64, error) {
|
|
||||||
return true, int64(0), nil
|
|
||||||
}
|
|
||||||
func (*mockWalletController) GetRecoveryInfo() (bool, float64, error) {
|
|
||||||
return true, float64(1), nil
|
|
||||||
}
|
|
||||||
func (*mockWalletController) Start() error {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (*mockWalletController) Stop() error {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
type mockSecretKeyRing struct {
|
|
||||||
rootKey *btcec.PrivateKey
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *mockSecretKeyRing) DeriveNextKey(keyFam keychain.KeyFamily) (keychain.KeyDescriptor, error) {
|
|
||||||
return keychain.KeyDescriptor{
|
|
||||||
PubKey: m.rootKey.PubKey(),
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *mockSecretKeyRing) DeriveKey(keyLoc keychain.KeyLocator) (keychain.KeyDescriptor, error) {
|
|
||||||
return keychain.KeyDescriptor{
|
|
||||||
PubKey: m.rootKey.PubKey(),
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *mockSecretKeyRing) DerivePrivKey(keyDesc keychain.KeyDescriptor) (*btcec.PrivateKey, error) {
|
|
||||||
return m.rootKey, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *mockSecretKeyRing) ECDH(_ keychain.KeyDescriptor,
|
|
||||||
pubKey *btcec.PublicKey) ([32]byte, error) {
|
|
||||||
|
|
||||||
return [32]byte{}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *mockSecretKeyRing) SignDigest(_ keychain.KeyDescriptor,
|
|
||||||
digest [32]byte) (*btcec.Signature, error) {
|
|
||||||
|
|
||||||
return m.rootKey.Sign(digest[:])
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *mockSecretKeyRing) SignDigestCompact(_ keychain.KeyDescriptor,
|
|
||||||
digest [32]byte) ([]byte, error) {
|
|
||||||
|
|
||||||
return btcec.SignCompact(btcec.S256(), m.rootKey, digest[:], true)
|
|
||||||
}
|
|
||||||
|
|
||||||
var _ keychain.SecretKeyRing = (*mockSecretKeyRing)(nil)
|
|
||||||
|
@ -12,12 +12,9 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/btcsuite/btcd/btcec"
|
"github.com/btcsuite/btcd/btcec"
|
||||||
"github.com/btcsuite/btcd/chaincfg"
|
|
||||||
"github.com/btcsuite/btcd/chaincfg/chainhash"
|
"github.com/btcsuite/btcd/chaincfg/chainhash"
|
||||||
"github.com/btcsuite/btcd/wire"
|
"github.com/btcsuite/btcd/wire"
|
||||||
"github.com/btcsuite/btcutil"
|
"github.com/btcsuite/btcutil"
|
||||||
"github.com/btcsuite/btcwallet/wallet/txauthor"
|
|
||||||
"github.com/btcsuite/btcwallet/wtxmgr"
|
|
||||||
"github.com/lightningnetwork/lnd/chainntnfs"
|
"github.com/lightningnetwork/lnd/chainntnfs"
|
||||||
"github.com/lightningnetwork/lnd/channeldb"
|
"github.com/lightningnetwork/lnd/channeldb"
|
||||||
"github.com/lightningnetwork/lnd/htlcswitch"
|
"github.com/lightningnetwork/lnd/htlcswitch"
|
||||||
@ -125,120 +122,6 @@ func (*mockChainIO) GetBlock(blockHash *chainhash.Hash) (*wire.MsgBlock, error)
|
|||||||
|
|
||||||
var _ lnwallet.BlockChainIO = (*mockChainIO)(nil)
|
var _ lnwallet.BlockChainIO = (*mockChainIO)(nil)
|
||||||
|
|
||||||
type mockWalletController struct {
|
|
||||||
rootKey *btcec.PrivateKey
|
|
||||||
publishedTxns chan *wire.MsgTx
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*mockWalletController) FetchInputInfo(prevOut *wire.OutPoint) (
|
|
||||||
*lnwallet.Utxo, error) {
|
|
||||||
|
|
||||||
return nil, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*mockWalletController) ConfirmedBalance(confs int32) (btcutil.Amount,
|
|
||||||
error) {
|
|
||||||
|
|
||||||
return 0, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *mockWalletController) NewAddress(addrType lnwallet.AddressType,
|
|
||||||
change bool) (btcutil.Address, error) {
|
|
||||||
|
|
||||||
addr, _ := btcutil.NewAddressPubKey(
|
|
||||||
m.rootKey.PubKey().SerializeCompressed(), &chaincfg.MainNetParams,
|
|
||||||
)
|
|
||||||
return addr, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*mockWalletController) LastUnusedAddress(addrType lnwallet.AddressType) (
|
|
||||||
btcutil.Address, error) {
|
|
||||||
|
|
||||||
return nil, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*mockWalletController) IsOurAddress(a btcutil.Address) bool {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*mockWalletController) SendOutputs(outputs []*wire.TxOut,
|
|
||||||
feeRate chainfee.SatPerKWeight, label string) (*wire.MsgTx, error) {
|
|
||||||
|
|
||||||
return nil, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*mockWalletController) CreateSimpleTx(outputs []*wire.TxOut,
|
|
||||||
feeRate chainfee.SatPerKWeight, dryRun bool) (*txauthor.AuthoredTx, error) {
|
|
||||||
|
|
||||||
return nil, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*mockWalletController) ListUnspentWitness(minconfirms,
|
|
||||||
maxconfirms int32) ([]*lnwallet.Utxo, error) {
|
|
||||||
|
|
||||||
return nil, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*mockWalletController) ListTransactionDetails(startHeight,
|
|
||||||
endHeight int32) ([]*lnwallet.TransactionDetail, error) {
|
|
||||||
|
|
||||||
return nil, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*mockWalletController) LockOutpoint(o wire.OutPoint) {}
|
|
||||||
|
|
||||||
func (*mockWalletController) UnlockOutpoint(o wire.OutPoint) {}
|
|
||||||
|
|
||||||
func (m *mockWalletController) PublishTransaction(tx *wire.MsgTx,
|
|
||||||
label string) error {
|
|
||||||
m.publishedTxns <- tx
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*mockWalletController) LabelTransaction(hash chainhash.Hash,
|
|
||||||
label string, overwrite bool) error {
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*mockWalletController) SubscribeTransactions() (
|
|
||||||
lnwallet.TransactionSubscription, error) {
|
|
||||||
|
|
||||||
return nil, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*mockWalletController) IsSynced() (bool, int64, error) {
|
|
||||||
return false, 0, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*mockWalletController) Start() error {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*mockWalletController) Stop() error {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*mockWalletController) BackEnd() string {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*mockWalletController) LeaseOutput(wtxmgr.LockID,
|
|
||||||
wire.OutPoint) (time.Time, error) {
|
|
||||||
|
|
||||||
return time.Now(), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*mockWalletController) ReleaseOutput(wtxmgr.LockID, wire.OutPoint) error {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*mockWalletController) GetRecoveryInfo() (bool, float64, error) {
|
|
||||||
return false, 0, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
var _ lnwallet.WalletController = (*mockWalletController)(nil)
|
|
||||||
|
|
||||||
type mockNotifier struct {
|
type mockNotifier struct {
|
||||||
confChannel chan *chainntnfs.TxConfirmation
|
confChannel chan *chainntnfs.TxConfirmation
|
||||||
}
|
}
|
||||||
@ -535,9 +418,9 @@ func createTestPeer(notifier chainntnfs.ChainNotifier,
|
|||||||
bestHeight: broadcastHeight,
|
bestHeight: broadcastHeight,
|
||||||
}
|
}
|
||||||
wallet := &lnwallet.LightningWallet{
|
wallet := &lnwallet.LightningWallet{
|
||||||
WalletController: &mockWalletController{
|
WalletController: &mock.WalletController{
|
||||||
rootKey: aliceKeyPriv,
|
RootKey: aliceKeyPriv,
|
||||||
publishedTxns: publTx,
|
PublishedTransactions: publTx,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user