mirror of
https://github.com/paradigmxyz/reth.git
synced 2026-02-14 08:55:01 -05:00
48 lines
1.5 KiB
Rust
48 lines
1.5 KiB
Rust
use crate::utils::eth_payload_attributes;
|
|
use reth_chainspec::{ChainSpecBuilder, MAINNET};
|
|
use reth_e2e_test_utils::{setup, transaction::TransactionTestContext};
|
|
use reth_node_ethereum::EthereumNode;
|
|
use std::sync::Arc;
|
|
|
|
#[tokio::test]
|
|
async fn can_sync() -> eyre::Result<()> {
|
|
reth_tracing::init_test_tracing();
|
|
|
|
let (mut nodes, _tasks, wallet) = setup::<EthereumNode>(
|
|
2,
|
|
Arc::new(
|
|
ChainSpecBuilder::default()
|
|
.chain(MAINNET.chain)
|
|
.genesis(serde_json::from_str(include_str!("../assets/genesis.json")).unwrap())
|
|
.cancun_activated()
|
|
.build(),
|
|
),
|
|
false,
|
|
)
|
|
.await?;
|
|
|
|
let raw_tx = TransactionTestContext::transfer_tx_bytes(1, wallet.inner).await;
|
|
let mut second_node = nodes.pop().unwrap();
|
|
let mut first_node = nodes.pop().unwrap();
|
|
|
|
// Make the first node advance
|
|
let tx_hash = first_node.rpc.inject_tx(raw_tx).await?;
|
|
|
|
// make the node advance
|
|
let (payload, _) = first_node.advance_block(vec![], eth_payload_attributes).await?;
|
|
|
|
let block_hash = payload.block().hash();
|
|
let block_number = payload.block().number;
|
|
|
|
// assert the block has been committed to the blockchain
|
|
first_node.assert_new_block(tx_hash, block_hash, block_number).await?;
|
|
|
|
// only send forkchoice update to second node
|
|
second_node.engine_api.update_forkchoice(block_hash, block_hash).await?;
|
|
|
|
// expect second node advanced via p2p gossip
|
|
second_node.assert_new_block(tx_hash, block_hash, 1).await?;
|
|
|
|
Ok(())
|
|
}
|