message: [chain]fix test err.
diff: use super::random_block;
  -use crate::chain::load_genesis_block;
  use crate::{AsyncChain, BlockChain, ChainActor, ChainActorRef, ChainAsyncService};
  use actix::Addr;
  use anyhow::Result;
  +use bus::BusActor;
  use config::NodeConfig;
  use consensus::{dummy::DummyConsensus, Consensus};
  use crypto::{hash::CryptoHash, HashValue};
  @@ -12,6 +12,7 @@ use std::sync::Arc;
  use storage::{memory_storage::MemoryStorage, StarcoinStorage};
  use traits::ChainReader;
  use traits::ChainWriter;
  +use txpool::{CachedSeqNumberClient, SubscribeTxns, TxPool, TxPoolRef};
  use types::block::Block;
  #[test]
  @@ -19,15 +20,23 @@ fn it_works() {
  assert_eq!(2 + 2, 4);
  }
  -fn gen_block_chain_actor() -> ChainActorRef<ChainActor> {
  +fn gen_block_chain_actor(conf: Arc<NodeConfig>) -> ChainActorRef<ChainActor> {
  let repo = Arc::new(MemoryStorage::new());
  let storage = Arc::new(StarcoinStorage::new(repo).unwrap());
  - ChainActor::launch(Arc::new(NodeConfig::default()), storage.clone(), None).unwrap()
  + let bus = BusActor::launch();
  + let seq_number_client = CachedSeqNumberClient::new(storage.clone());
  + let txpool = TxPool::start(seq_number_client);
  + ChainActor::launch(conf, storage.clone(), None, bus, txpool).unwrap()
  }
  async fn gen_head_chain(times: u64) -> ChainActorRef<ChainActor> {
  - let chain = gen_block_chain_actor();
  - let genesis_block = load_genesis_block();
  + let node_config = NodeConfig::default();
  + let (state_root, chain_state_set) = MockExecutor::init_genesis(&node_config.vm).unwrap();
  + let conf = Arc::new(node_config);
  + let chain = gen_block_chain_actor(conf);
  +
  + let genesis_block = Block::genesis_block(HashValue::zero(), state_root, chain_state_set);
  +
  let times = 5;
  let mut parent_hash = genesis_block.header().id();
  if times > 0 {
  @@ -53,7 +62,9 @@ async fn test_block_chain_head() {
  async fn test_block_chain_forks() {
  let times = 5;
  let chain = gen_head_chain(times).await;
  - let genesis_block = load_genesis_block();
  + let node_config = NodeConfig::default();
  + let (state_root, chain_state_set) = MockExecutor::init_genesis(&node_config.vm).unwrap();
  + let genesis_block = Block::genesis_block(HashValue::zero(), state_root, chain_state_set);
  let mut parent_hash = genesis_block.header().id();
  if times > 0 {
  for i in 0..(times + 1) {
  @@ -78,8 +89,13 @@ fn test_chain_apply() -> Result<()> {
  let config = Arc::new(node_config);
  let repo = Arc::new(MemoryStorage::new());
  let storage = Arc::new(StarcoinStorage::new(repo)?);
  + let seq_number_client = CachedSeqNumberClient::new(storage.clone());
  + let txpool = TxPool::start(seq_number_client);
  - let mut block_chain = BlockChain::<MockExecutor, DummyConsensus>::new(config, storage, None)?;
  + let mut block_chain =
  + BlockChain::<MockExecutor, DummyConsensus, StarcoinStorage, TxPoolRef>::new(
  + config, storage, None, txpool,
  + )?;
  let header = block_chain.current_header();
  debug!("genesis header: {:?}", header);
  let block_template = block_chain.create_block_template(vec![])?;
  