From: Chengcheng Zhang <943420582@qq.com> Date: Thu, 27 Jun 2019 03:23:11 +0000 (+0800) Subject: update account manager X-Git-Url: http://git.osdn.net/view?p=bytom%2Fvapor.git;a=commitdiff_plain;h=19be1a5f77807de0fcc36ae5c9d681a72b3b8e28 update account manager --- diff --git a/account/accounts.go b/account/accounts.go index 6bec595b..86086a90 100644 --- a/account/accounts.go +++ b/account/accounts.go @@ -18,8 +18,6 @@ import ( "github.com/vapor/crypto" "github.com/vapor/crypto/ed25519/chainkd" "github.com/vapor/crypto/sha3pool" - "github.com/vapor/database" - dbm "github.com/vapor/database/leveldb" "github.com/vapor/errors" "github.com/vapor/protocol" "github.com/vapor/protocol/bc" @@ -83,8 +81,7 @@ type Manager struct { } // NewManager creates a new account manager -func NewManager(accountdb dbm.DB, chain *protocol.Chain) *Manager { - store := database.NewAccountStore(accountdb) +func NewManager(store AccountStorer, chain *protocol.Chain) *Manager { return &Manager{ store: store, chain: chain, diff --git a/account/accounts_test.go b/account/accounts_test.go index 201cc46f..48d80f2f 100644 --- a/account/accounts_test.go +++ b/account/accounts_test.go @@ -180,6 +180,7 @@ func mockAccountManager(t *testing.T) *Manager { testDB := dbm.NewDB("testdb", "memdb", dirPath) dispatcher := event.NewDispatcher() store := database.NewStore(testDB) + accountStore := database.NewAccountStore(testDB) txPool := protocol.NewTxPool(store, dispatcher) config.CommonConfig = config.DefaultConfig() chain, err := protocol.NewChain(store, txPool, dispatcher) @@ -187,7 +188,7 @@ func mockAccountManager(t *testing.T) *Manager { t.Fatal(err) } - return NewManager(testDB, chain) + return NewManager(accountStore, chain) } func (m *Manager) createTestAccount(t testing.TB, alias string, tags map[string]interface{}) *Account { diff --git a/node/node.go b/node/node.go index 7e0e8a21..94b11143 100644 --- a/node/node.go +++ b/node/node.go @@ -111,7 +111,8 @@ func NewNode(config *cfg.Config) *Node { if !config.Wallet.Disable { walletDB := dbm.NewDB("wallet", config.DBBackend, config.DBDir()) walletStore := database.NewWalletStore(walletDB) - accounts = account.NewManager(walletDB, chain) + accountStore := database.NewAccountStore(walletDB) + accounts = account.NewManager(accountStore, chain) assets = asset.NewRegistry(walletDB, chain) wallet, err = w.NewWallet(walletStore, accounts, assets, hsm, chain, dispatcher, config.Wallet.TxIndex) if err != nil { diff --git a/test/bench_blockchain_test.go b/test/bench_blockchain_test.go index 0d548feb..092811d5 100644 --- a/test/bench_blockchain_test.go +++ b/test/bench_blockchain_test.go @@ -159,7 +159,7 @@ func InsertChain(chain *protocol.Chain, txPool *protocol.TxPool, txs []*types.Tx } } - block, err := proposal.NewBlockTemplate(chain, txPool, nil, uint64(time.Now().UnixNano() / 1e6)) + block, err := proposal.NewBlockTemplate(chain, txPool, nil, uint64(time.Now().UnixNano()/1e6)) if err != nil { return err } @@ -368,7 +368,8 @@ func SetUtxoView(db dbm.DB, view *state.UtxoViewpoint) error { //-------------------------Mock actual transaction---------------------------------- func MockTxsP2PKH(keyDirPath string, testDB dbm.DB, txNumber, otherAssetNum int) ([]*types.Tx, error) { - accountManager := account.NewManager(testDB, nil) + accountStore := database.NewAccountStore(testDB) + accountManager := account.NewManager(accountStore, nil) hsm, err := pseudohsm.New(keyDirPath) if err != nil { return nil, err @@ -410,7 +411,8 @@ func MockTxsP2PKH(keyDirPath string, testDB dbm.DB, txNumber, otherAssetNum int) } func MockTxsP2SH(keyDirPath string, testDB dbm.DB, txNumber, otherAssetNum int) ([]*types.Tx, error) { - accountManager := account.NewManager(testDB, nil) + accountStore := database.NewAccountStore(testDB) + accountManager := account.NewManager(accountStore, nil) hsm, err := pseudohsm.New(keyDirPath) if err != nil { return nil, err @@ -457,7 +459,8 @@ func MockTxsP2SH(keyDirPath string, testDB dbm.DB, txNumber, otherAssetNum int) } func MockTxsMultiSign(keyDirPath string, testDB dbm.DB, txNumber, otherAssetNum int) ([]*types.Tx, error) { - accountManager := account.NewManager(testDB, nil) + accountStore := database.NewAccountStore(testDB) + accountManager := account.NewManager(accountStore, nil) hsm, err := pseudohsm.New(keyDirPath) if err != nil { return nil, err diff --git a/test/integration/standard_transaction_test.go b/test/integration/standard_transaction_test.go index 69a67a08..a82961db 100644 --- a/test/integration/standard_transaction_test.go +++ b/test/integration/standard_transaction_test.go @@ -32,7 +32,8 @@ func TestP2PKH(t *testing.T) { t.Fatal(err) } - accountManager := account.NewManager(testDB, chain) + accountStore := database.NewAccountStore(testDB) + accountManager := account.NewManager(accountStore, chain) hsm, err := pseudohsm.New(dirPath) if err != nil { t.Fatal(err) @@ -83,7 +84,8 @@ func TestBip0032P2PKH(t *testing.T) { t.Fatal(err) } - accountManager := account.NewManager(testDB, chain) + accountStore := database.NewAccountStore(testDB) + accountManager := account.NewManager(accountStore, chain) hsm, err := pseudohsm.New(dirPath) if err != nil { t.Fatal(err) @@ -147,7 +149,8 @@ func TestP2SH(t *testing.T) { t.Fatal(err) } - accountManager := account.NewManager(testDB, chain) + accountStore := database.NewAccountStore(testDB) + accountManager := account.NewManager(accountStore, chain) hsm, err := pseudohsm.New(dirPath) if err != nil { t.Fatal(err) @@ -208,7 +211,8 @@ func TestBip0032P2SH(t *testing.T) { t.Fatal(err) } - accountManager := account.NewManager(testDB, chain) + accountStore := database.NewAccountStore(testDB) + accountManager := account.NewManager(accountStore, chain) hsm, err := pseudohsm.New(dirPath) if err != nil { t.Fatal(err) @@ -281,7 +285,8 @@ func TestMutilNodeSign(t *testing.T) { t.Fatal(err) } - accountManager := account.NewManager(testDB, chain) + accountStore := database.NewAccountStore(testDB) + accountManager := account.NewManager(accountStore, chain) hsm, err := pseudohsm.New(dirPath) if err != nil { t.Fatal(err) @@ -352,7 +357,8 @@ func TestBip0032MutilNodeSign(t *testing.T) { t.Fatal(err) } - accountManager := account.NewManager(testDB, chain) + accountStore := database.NewAccountStore(testDB) + accountManager := account.NewManager(accountStore, chain) hsm, err := pseudohsm.New(dirPath) if err != nil { t.Fatal(err) diff --git a/test/performance/mining_test.go b/test/performance/mining_test.go index 87390082..0f3f0d66 100644 --- a/test/performance/mining_test.go +++ b/test/performance/mining_test.go @@ -6,6 +6,7 @@ import ( "time" "github.com/vapor/account" + "github.com/vapor/database" dbm "github.com/vapor/database/leveldb" "github.com/vapor/proposal" "github.com/vapor/test" @@ -20,10 +21,11 @@ func BenchmarkNewBlockTpl(b *testing.B) { if err != nil { b.Fatal(err) } - accountManager := account.NewManager(testDB, chain) + accountStore := database.NewAccountStore(testDB) + accountManager := account.NewManager(accountStore, chain) b.ResetTimer() for i := 0; i < b.N; i++ { - proposal.NewBlockTemplate(chain, txPool, accountManager, uint64(time.Now().UnixNano() / 1e6)) + proposal.NewBlockTemplate(chain, txPool, accountManager, uint64(time.Now().UnixNano()/1e6)) } } diff --git a/test/wallet_test_util.go b/test/wallet_test_util.go index 50636f36..570aeccc 100644 --- a/test/wallet_test_util.go +++ b/test/wallet_test_util.go @@ -243,7 +243,8 @@ func (cfg *walletTestConfig) Run() error { } walletDB := dbm.NewDB("wallet", "leveldb", path.Join(dirPath, "wallet_db")) walletStore := database.NewWalletStore(walletDB) - accountManager := account.NewManager(walletDB, chain) + accountStore := database.NewAccountStore(walletDB) + accountManager := account.NewManager(accountStore, chain) assets := asset.NewRegistry(walletDB, chain) dispatcher := event.NewDispatcher() wallet, err := w.NewWallet(walletStore, accountManager, assets, hsm, chain, dispatcher, false) diff --git a/wallet/recovery_test.go b/wallet/recovery_test.go index dc5eedc7..9074466e 100644 --- a/wallet/recovery_test.go +++ b/wallet/recovery_test.go @@ -148,7 +148,8 @@ func TestXPubsRecoveryLock(t *testing.T) { t.Fatal(err) } - acctMgr := account.NewManager(testDB, nil) + acctStore := database.NewAccountStore(testDB) + acctMgr := account.NewManager(acctStore, nil) recoveryMgr := newRecoveryManager(testStore, acctMgr) recoveryMgr.state = newRecoveryState() recoveryMgr.state.XPubs = []chainkd.XPub{xpub.XPub} @@ -198,7 +199,8 @@ func TestExtendScanAddresses(t *testing.T) { t.Fatal(err) } - acctMgr := account.NewManager(testDB, nil) + acctStore := database.NewAccountStore(testDB) + acctMgr := account.NewManager(acctStore, nil) recoveryMgr := newRecoveryManager(testStore, acctMgr) acc1 := &account.Account{ID: "testA", Alias: "test1", Signer: &signers.Signer{XPubs: []chainkd.XPub{xpub.XPub}, KeyIndex: 1, DeriveRule: signers.BIP0044}} acc2 := &account.Account{ID: "testB", Alias: "test2"} @@ -255,9 +257,11 @@ func TestRecoveryFromXPubs(t *testing.T) { t.Fatal(err) } - acctMgr := account.NewManager(testDB, nil) + acctStore := database.NewAccountStore(testDB) + acctMgr := account.NewManager(acctStore, nil) txs, err := MockTxsP2PKH(acctMgr, xpub.XPub, false) - recAcctMgr := account.NewManager(recoveryDB, nil) + recActStore := database.NewAccountStore(recoveryDB) + recAcctMgr := account.NewManager(recActStore, nil) recoveryMgr := newRecoveryManager(recoveryStore, recAcctMgr) cases := []struct { @@ -330,7 +334,8 @@ func TestRecoveryByRescanAccount(t *testing.T) { t.Fatal(err) } - acctMgr := account.NewManager(testDB, nil) + acctStore := database.NewAccountStore(testDB) + acctMgr := account.NewManager(acctStore, nil) txs, err := MockTxsP2PKH(acctMgr, xpub.XPub, true) if err != nil { t.Fatal("recovery by rescan account err:", err) @@ -341,7 +346,8 @@ func TestRecoveryByRescanAccount(t *testing.T) { t.Fatal("recovery by rescan account err:", err) } - recAcctMgr := account.NewManager(recoveryDB, nil) + recActStore := database.NewAccountStore(recoveryDB) + recAcctMgr := account.NewManager(recActStore, nil) for _, acct := range allAccounts { if err := recAcctMgr.SaveAccount(acct); err != nil { t.Fatal("recovery by rescan account err:", err) @@ -424,7 +430,8 @@ func TestReportFound(t *testing.T) { t.Fatal(err) } - acctMgr := account.NewManager(testDB, nil) + acctStore := database.NewAccountStore(testDB) + acctMgr := account.NewManager(acctStore, nil) recoveryMgr := newRecoveryManager(testStore, acctMgr) acc1 := &account.Account{ID: "testA", Alias: "test1", Signer: &signers.Signer{XPubs: []chainkd.XPub{xpub1.XPub}, KeyIndex: 1, DeriveRule: signers.BIP0044}} acc2 := &account.Account{ID: "testB", Alias: "test2", Signer: &signers.Signer{XPubs: []chainkd.XPub{xpub2.XPub}, KeyIndex: 1, DeriveRule: signers.BIP0032}} @@ -509,7 +516,8 @@ func TestLoadStatusInfo(t *testing.T) { t.Fatal(err) } - acctMgr := account.NewManager(testDB, nil) + acctStore := database.NewAccountStore(testDB) + acctMgr := account.NewManager(acctStore, nil) recoveryMgr := newRecoveryManager(testStore, acctMgr) // StatusInit init recovery status manager. recoveryMgr.state = newRecoveryState() @@ -574,7 +582,8 @@ func TestLock(t *testing.T) { testStore := database.NewWalletStore(testDB) defer os.RemoveAll("temp") - acctMgr := account.NewManager(testDB, nil) + acctStore := database.NewAccountStore(testDB) + acctMgr := account.NewManager(acctStore, nil) recoveryMgr := newRecoveryManager(testStore, acctMgr) if !recoveryMgr.tryStartXPubsRec() { t.Fatal("recovery manager try lock test err") @@ -633,7 +642,8 @@ func TestContractIndexResidue(t *testing.T) { } contractIndexResidue := uint64(5) - acctMgr := account.NewManager(testDB, nil) + acctStore := database.NewAccountStore(testDB) + acctMgr := account.NewManager(acctStore, nil) recoveryMgr := newRecoveryManager(testStore, acctMgr) acct := &account.Account{ID: "testA", Alias: "test1", Signer: &signers.Signer{XPubs: []chainkd.XPub{xpub1.XPub}, KeyIndex: 1, DeriveRule: signers.BIP0044}} diff --git a/wallet/unconfirmed_test.go b/wallet/unconfirmed_test.go index 3ca5ca3f..2abdff10 100644 --- a/wallet/unconfirmed_test.go +++ b/wallet/unconfirmed_test.go @@ -31,7 +31,8 @@ func TestWalletUnconfirmedTxs(t *testing.T) { testStore := database.NewWalletStore(testDB) defer os.RemoveAll("temp") - accountManager := account.NewManager(testDB, nil) + accountStore := database.NewAccountStore(testDB) + accountManager := account.NewManager(accountStore, nil) hsm, err := pseudohsm.New(dirPath) if err != nil { t.Fatal(err) diff --git a/wallet/utxo_test.go b/wallet/utxo_test.go index ad14a7a8..75ddc607 100644 --- a/wallet/utxo_test.go +++ b/wallet/utxo_test.go @@ -197,7 +197,8 @@ func TestGetAccountUtxos(t *testing.T) { testDB.Set([]byte(k), data) } - w.AccountMgr = account.NewManager(testDB, nil) + acccountStore := database.NewAccountStore(testDB) + w.AccountMgr = account.NewManager(acccountStore, nil) w.AccountMgr.AddUnconfirmedUtxo(c.unconfirmedUtxos) gotUtxos := w.GetAccountUtxos("", c.id, c.unconfirmed, c.isSmartContract, false) if !testutil.DeepEqual(gotUtxos, c.wantUtxos) { diff --git a/wallet/wallet_test.go b/wallet/wallet_test.go index 7f04e5ba..c199d9e9 100644 --- a/wallet/wallet_test.go +++ b/wallet/wallet_test.go @@ -134,7 +134,8 @@ func TestWalletUpdate(t *testing.T) { t.Fatal(err) } - accountManager := account.NewManager(testDB, chain) + accountStore := database.NewAccountStore(testDB) + accountManager := account.NewManager(accountStore, chain) hsm, err := pseudohsm.New(dirPath) if err != nil { t.Fatal(err) @@ -283,7 +284,8 @@ func TestMemPoolTxQueryLoop(t *testing.T) { t.Fatal(err) } - accountManager := account.NewManager(testDB, chain) + accountStore := database.NewAccountStore(testDB) + accountManager := account.NewManager(accountStore, chain) hsm, err := pseudohsm.New(dirPath) if err != nil { t.Fatal(err)