7 dbm "github.com/tendermint/tmlibs/db"
9 "github.com/bytom/account"
10 "github.com/bytom/blockchain/pseudohsm"
11 "github.com/bytom/blockchain/txbuilder"
12 "github.com/bytom/consensus"
13 "github.com/bytom/crypto/ed25519/chainkd"
14 "github.com/bytom/database/leveldb"
15 "github.com/bytom/protocol"
16 "github.com/bytom/protocol/bc"
17 "github.com/bytom/protocol/bc/types"
18 "github.com/bytom/protocol/vm"
21 // Mock transaction pool
22 func MockTxPool() *protocol.TxPool {
23 return protocol.NewTxPool()
26 func MockChain(testDB dbm.DB) (*protocol.Chain, error) {
27 store := leveldb.NewStore(testDB)
28 txPool := MockTxPool()
29 chain, err := protocol.NewChain(store, txPool)
36 func MockUTXO(controlProg *account.CtrlProgram) *account.UTXO {
37 utxo := &account.UTXO{}
38 utxo.OutputID = bc.Hash{V0: 1}
39 utxo.SourceID = bc.Hash{V0: 2}
40 utxo.AssetID = *consensus.BTMAssetID
41 utxo.Amount = 1000000000
43 utxo.ControlProgram = controlProg.ControlProgram
44 utxo.AccountID = controlProg.AccountID
45 utxo.Address = controlProg.Address
46 utxo.ControlProgramIndex = controlProg.KeyIndex
50 func MockTx(utxo *account.UTXO, testAccount *account.Account) (*txbuilder.Template, *types.TxData, error) {
51 txInput, sigInst, err := account.UtxoToInputs(testAccount.Signer, utxo)
56 b := txbuilder.NewBuilder(time.Now())
57 b.AddInput(txInput, sigInst)
58 out := types.NewTxOutput(*consensus.BTMAssetID, 100, []byte{byte(vm.OP_FAIL)})
63 func MockSign(tpl *txbuilder.Template, hsm *pseudohsm.HSM, password string) (bool, error) {
64 err := txbuilder.Sign(nil, tpl, nil, password, func(_ context.Context, xpub chainkd.XPub, path [][]byte, data [32]byte, password string) ([]byte, error) {
65 return hsm.XSign(xpub, path, data[:], password)
70 return txbuilder.SignProgress(tpl), nil
74 func MockBlock() *bc.Block {
76 BlockHeader: &bc.BlockHeader{Height: 1},