7 dbm "github.com/tendermint/tmlibs/db"
9 "github.com/bytom/blockchain/account"
10 "github.com/bytom/blockchain/pseudohsm"
11 "github.com/bytom/blockchain/txbuilder"
12 "github.com/bytom/blockchain/txdb"
13 cfg "github.com/bytom/config"
14 "github.com/bytom/consensus"
15 "github.com/bytom/crypto/ed25519/chainkd"
16 "github.com/bytom/protocol"
17 "github.com/bytom/protocol/bc"
18 "github.com/bytom/protocol/bc/legacy"
19 "github.com/bytom/protocol/vm"
22 // Mock transaction pool
23 func MockTxPool() *protocol.TxPool {
24 return protocol.NewTxPool()
27 func MockChain(testDB dbm.DB) (*protocol.Chain, error) {
28 store := txdb.NewStore(testDB)
29 txPool := MockTxPool()
30 genesisBlock := cfg.GenerateGenesisBlock()
31 chain, err := protocol.NewChain(genesisBlock.Hash(), store, txPool)
38 func MockUTXO(controlProg *account.CtrlProgram) *account.UTXO {
39 utxo := &account.UTXO{}
40 utxo.OutputID = bc.Hash{V0: 1}
41 utxo.SourceID = bc.Hash{V0: 2}
42 utxo.AssetID = *consensus.BTMAssetID
43 utxo.Amount = 1000000000
45 utxo.ControlProgram = controlProg.ControlProgram
46 utxo.AccountID = controlProg.AccountID
47 utxo.Address = controlProg.Address
48 utxo.ControlProgramIndex = controlProg.KeyIndex
52 func MockTx(utxo *account.UTXO, testAccount *account.Account) (*txbuilder.Template, *legacy.TxData, error) {
53 txInput, sigInst, err := account.UtxoToInputs(testAccount.Signer, utxo, nil)
58 b := txbuilder.NewBuilder(time.Now())
59 b.AddInput(txInput, sigInst)
60 out := legacy.NewTxOutput(*consensus.BTMAssetID, 100, []byte{byte(vm.OP_FAIL)}, nil)
65 func MockSign(tpl *txbuilder.Template, hsm *pseudohsm.HSM) error {
66 return txbuilder.Sign(nil, tpl, nil, []string{"password", "password"}, func(_ context.Context, xpub chainkd.XPub, path [][]byte, data [32]byte, password string) ([]byte, error) {
67 sigBytes, err := hsm.XSign(xpub, path, data[:], password)
73 func MockBlock() *bc.Block {
75 BlockHeader: &bc.BlockHeader{Height: 1},