def METHOD_NAME(self):
    block_number = 10
    for i in range(1, block_number):
        chosen_peer = random.randint(0, self.num_nodes - 1)
        block_hash = self.nodes[chosen_peer].generate_empty_blocks(1)
        self.log.info("generate block %s", block_hash)
    wait_for_block_count(self.nodes[0], block_number, timeout=30)
    sync_blocks(self.nodes, timeout=30)
    self.log.info("generated blocks received by all")
    self.stop_node(0, kill=True)
    self.log.info("node 0 stopped")
    block_hash = self.nodes[-1].generate_empty_blocks(1)
    self.log.info("generate block %s", block_hash)
    wait_for_block_count(self.nodes[1], block_number + 1)
    sync_blocks(self.nodes[1:], timeout=30)
    self.log.info("blocks sync success among running nodes")
    self.start_node(0)
    sync_blocks(self.nodes, timeout=30)
    self.log.info("Pass 1")
    for i in range(1, self.num_nodes):
        self.stop_node(i)
    self.log.info("Stopped all other nodes except node 0")
    genesis = self.nodes[0].cfx_getBlockByEpochNumber("0x0", False)["hash"]
    self.nodes[0].add_p2p_connection(P2PInterface(genesis))
    network_thread_start()
    self.nodes[0].p2p.wait_for_status()
    self.log.info("p2p connection to node 0 connected")
    gas_price = 1
    value = 1
    receiver_sk, _ = ec_random_keys()
    sender_key = default_config["GENESIS_PRI_KEY"]
    tx = create_transaction(pri_key=sender_key, receiver=priv_to_addr(receiver_sk), value=value, nonce=0,
                            gas_price=gas_price)
    self.nodes[0].p2p.send_protocol_msg(Transactions(transactions=[tx]))
    self.log.debug("New tx %s: %s send value %d to %s", encode_hex(tx.hash), eth_utils.encode_hex(priv_to_addr(sender_key))[-4:],
                   value, eth_utils.encode_hex(priv_to_addr(receiver_sk))[-4:])
    def check_packed():
        client = RpcClient(self.nodes[0])
        client.generate_block(1)
        return checktx(self.nodes[0], tx.hash_hex())
    wait_until(lambda: check_packed())
    sender_addr = eth_utils.encode_hex(priv_to_addr(sender_key))
    receiver_addr = eth_utils.encode_hex(priv_to_addr(receiver_sk))
    sender_balance = default_config["TOTAL_COIN"] - value - gas_price * 21000
    # Generate 2 * CACHE_INDEX_STRIDE to start evicting anticone cache
    for _ in range(2000):
        self.nodes[0].generate_empty_blocks(1)
    client = RpcClient(self.nodes[0])
    assert_equal(client.get_balance(sender_addr), sender_balance)
    assert_equal(client.get_balance(receiver_addr), value)
    time.sleep(1)
    self.stop_node(0)
    self.start_node(0)
    self.log.info("Wait for node 0 to recover from crash")
    wait_until(lambda: client.get_balance(sender_addr) == sender_balance)
    wait_until(lambda: client.get_balance(receiver_addr) == value)
    self.log.info("Pass 2")