"github.com/bytom/account"
"github.com/bytom/blockchain/pseudohsm"
"github.com/bytom/blockchain/txbuilder"
- cfg "github.com/bytom/config"
"github.com/bytom/consensus"
"github.com/bytom/crypto/ed25519/chainkd"
"github.com/bytom/database/leveldb"
"github.com/bytom/protocol/vm"
)
-// Mock transaction pool
-func MockTxPool() *protocol.TxPool {
- return protocol.NewTxPool()
-}
+const (
+ vmVersion = 1
+ assetVersion = 1
+)
-func MockChain(testDB dbm.DB) (*protocol.Chain, error) {
+// MockChain mock chain with genesis block
+func MockChain(testDB dbm.DB) (*protocol.Chain, *leveldb.Store, *protocol.TxPool, error) {
store := leveldb.NewStore(testDB)
- txPool := MockTxPool()
- genesisBlock := cfg.GenerateGenesisBlock()
- chain, err := protocol.NewChain(genesisBlock.Hash(), store, txPool)
- if err != nil {
- return nil, err
- }
- return chain, nil
+ txPool := protocol.NewTxPool(store)
+ chain, err := protocol.NewChain(store, txPool)
+ return chain, store, txPool, err
}
+// MockUTXO mock a utxo
func MockUTXO(controlProg *account.CtrlProgram) *account.UTXO {
utxo := &account.UTXO{}
utxo.OutputID = bc.Hash{V0: 1}
return utxo
}
+// MockTx mock a tx
func MockTx(utxo *account.UTXO, testAccount *account.Account) (*txbuilder.Template, *types.TxData, error) {
txInput, sigInst, err := account.UtxoToInputs(testAccount.Signer, utxo)
if err != nil {
return b.Build()
}
+// MockSign sign a tx
func MockSign(tpl *txbuilder.Template, hsm *pseudohsm.HSM, password string) (bool, error) {
- err := txbuilder.Sign(nil, tpl, nil, password, func(_ context.Context, xpub chainkd.XPub, path [][]byte, data [32]byte, password string) ([]byte, error) {
+ err := txbuilder.Sign(nil, tpl, password, func(_ context.Context, xpub chainkd.XPub, path [][]byte, data [32]byte, password string) ([]byte, error) {
return hsm.XSign(xpub, path, data[:], password)
})
if err != nil {
return txbuilder.SignProgress(tpl), nil
}
-// Mock block
+// MockBlock mock a block
func MockBlock() *bc.Block {
return &bc.Block{
BlockHeader: &bc.BlockHeader{Height: 1},