"fmt"
"io/ioutil"
"os"
+ "path"
"reflect"
- dbm "github.com/tendermint/tmlibs/db"
-
- "github.com/bytom/account"
- "github.com/bytom/asset"
- "github.com/bytom/blockchain/pseudohsm"
- "github.com/bytom/crypto/ed25519/chainkd"
- "github.com/bytom/protocol"
- "github.com/bytom/protocol/bc/types"
- w "github.com/bytom/wallet"
+ "github.com/bytom/bytom/account"
+ "github.com/bytom/bytom/asset"
+ "github.com/bytom/bytom/blockchain/pseudohsm"
+ "github.com/bytom/bytom/blockchain/signers"
+ "github.com/bytom/bytom/crypto/ed25519/chainkd"
+ dbm "github.com/bytom/bytom/database/leveldb"
+ "github.com/bytom/bytom/event"
+ "github.com/bytom/bytom/protocol"
+ "github.com/bytom/bytom/protocol/bc/types"
+ w "github.com/bytom/bytom/wallet"
)
type walletTestConfig struct {
}
func (ctx *walletTestContext) createControlProgram(accountName string, change bool) (*account.CtrlProgram, error) {
- acc, err := ctx.Wallet.AccountMgr.FindByAlias(nil, accountName)
+ acc, err := ctx.Wallet.AccountMgr.FindByAlias(accountName)
if err != nil {
return nil, err
}
- return ctx.Wallet.AccountMgr.CreateAddress(nil, acc.ID, change)
+ return ctx.Wallet.AccountMgr.CreateAddress(acc.ID, change)
}
func (ctx *walletTestContext) getPubkey(keyAlias string) *chainkd.XPub {
}
func (ctx *walletTestContext) createAsset(accountAlias string, assetAlias string) (*asset.Asset, error) {
- acc, err := ctx.Wallet.AccountMgr.FindByAlias(nil, accountAlias)
+ acc, err := ctx.Wallet.AccountMgr.FindByAlias(accountAlias)
if err != nil {
return nil, err
}
- return ctx.Wallet.AssetReg.Define(acc.XPubs, len(acc.XPubs), nil, assetAlias)
+ return ctx.Wallet.AssetReg.Define(acc.XPubs, len(acc.XPubs), nil, 0, assetAlias, nil)
}
func (ctx *walletTestContext) newBlock(txs []*types.Tx, coinbaseAccount string) (*types.Block, error) {
}
func (ctx *walletTestContext) createKey(name string, password string) error {
- _, err := ctx.Wallet.Hsm.XCreate(name, password)
+ _, _, err := ctx.Wallet.Hsm.XCreate(name, password, "en")
return err
}
}
xpubs = append(xpubs, *xpub)
}
- _, err := ctx.Wallet.AccountMgr.Create(nil, xpubs, quorum, name)
+ _, err := ctx.Wallet.AccountMgr.Create(xpubs, quorum, name, signers.BIP0044)
return err
}
}
func (ctx *walletTestContext) getBalance(accountAlias string, assetAlias string) (uint64, error) {
- balances, _ := ctx.Wallet.GetAccountBalances("")
+ balances, _ := ctx.Wallet.GetAccountBalances("", "")
for _, balance := range balances {
if balance.Alias == accountAlias && balance.AssetAlias == assetAlias {
return balance.Amount, nil
func (ctx *walletTestContext) getAccBalances() map[string]map[string]uint64 {
accBalances := make(map[string]map[string]uint64)
- balances, _ := ctx.Wallet.GetAccountBalances("")
+ balances, _ := ctx.Wallet.GetAccountBalances("", "")
for _, balance := range balances {
if accBalance, ok := accBalances[balance.Alias]; ok {
if _, ok := accBalance[balance.AssetAlias]; ok {
return err
}
- db := dbm.NewDB("wallet_test_db", "leveldb", "wallet_test_db")
- defer os.RemoveAll("wallet_test_db")
- chain, _, _, _ := MockChain(db)
- walletDB := dbm.NewDB("wallet", "leveldb", "wallet_db")
- defer os.RemoveAll("wallet_db")
+ db := dbm.NewDB("wallet_test_db", "leveldb", path.Join(dirPath, "wallet_test_db"))
+ chain, _, _, err := MockChain(db)
+ if err != nil {
+ return err
+ }
+ walletDB := dbm.NewDB("wallet", "leveldb", path.Join(dirPath, "wallet_db"))
accountManager := account.NewManager(walletDB, chain)
assets := asset.NewRegistry(walletDB, chain)
- wallet, err := w.NewWallet(walletDB, accountManager, assets, hsm, chain)
+ dispatcher := event.NewDispatcher()
+ wallet, err := w.NewWallet(walletDB, accountManager, assets, hsm, chain, dispatcher, false)
if err != nil {
return err
}
return err
}
- forkedChain, err := declChain("forked_chain", ctx.Chain, rollbackBlock.Height, ctx.Chain.BestBlockHeight()+1)
- defer os.RemoveAll("forked_chain")
+ forkPath, err := ioutil.TempDir(".", "forked_chain")
+ if err != nil {
+ return err
+ }
+
+ forkedChain, err := declChain(forkPath, ctx.Chain, rollbackBlock.Height, ctx.Chain.BestBlockHeight()+1)
+ defer os.RemoveAll(forkPath)
if err != nil {
return err
}