fix: node and sequencer startup

This commit is contained in:
Oleksandr Pravdyvyi 2025-07-28 16:31:43 +03:00
parent 6d947710d1
commit d181ce73e6
No known key found for this signature in database
GPG Key ID: 9F8955C63C443871
3 changed files with 109 additions and 1 deletions

View File

@ -0,0 +1,17 @@
{
"home": ".",
"override_rust_log": null,
"sequencer_addr": "http://127.0.0.1:3040",
"seq_poll_timeout_secs": 10,
"port": 3041,
"gas_config": {
"gas_fee_per_byte_deploy": 100,
"gas_fee_per_input_buffer_runtime": 1000,
"gas_fee_per_byte_runtime": 10,
"gas_cost_runtime": 100,
"gas_cost_deploy": 1000,
"gas_limit_deploy": 30000000,
"gas_limit_runtime": 30000000
},
"shapshot_frequency_in_blocks": 10
}

View File

@ -0,0 +1,19 @@
{
"home": ".",
"override_rust_log": null,
"genesis_id": 1,
"is_genesis_random": true,
"max_num_tx_in_block": 20,
"block_create_timeout_millis": 10000,
"port": 3040,
"initial_accounts": [
{
"addr": "bfd91e6703273a115ad7f099ef32f621243be69369d00ddef5d3a25117d09a8c",
"balance": 10
},
{
"addr": "20573479053979b98d2ad09ef31a0750f22c77709bed51c4e64946bd1e376f31",
"balance": 100
}
]
}

View File

@ -1,5 +1,77 @@
use std::{path::PathBuf, sync::Arc};
use anyhow::Result;
use clap::Parser;
use common::rpc_primitives::RpcConfig;
use log::info;
use node_core::NodeCore;
use sequencer_core::SequencerCore;
use tokio::{sync::Mutex, task::JoinHandle};
#[derive(Parser, Debug)]
#[clap(version)]
struct Args {
/// Path to configs
home_dir: PathBuf,
}
pub async fn main_tests_runner() -> Result<()> {
Ok(())
env_logger::init();
let args = Args::parse();
let Args { home_dir } = args;
let sequencer_config = sequencer_runner::config::from_file(home_dir.join("sequencer_config.json"))?;
let node_config = node_runner::config::from_file(home_dir.join("node_config.json"))?;
let block_timeout = sequencer_config.block_create_timeout_millis;
let sequencer_port = sequencer_config.port;
let sequencer_core = SequencerCore::start_from_config(sequencer_config);
info!("Sequencer core set up");
let seq_core_wrapped = Arc::new(Mutex::new(sequencer_core));
let http_server = sequencer_rpc::new_http_server(RpcConfig::with_port(sequencer_port), seq_core_wrapped.clone())?;
info!("HTTP server started");
let _http_server_handle = http_server.handle();
tokio::spawn(http_server);
info!("Starting main sequencer loop");
let _sequencer_loop_handle: JoinHandle<Result<()>> = tokio::spawn(async move {
loop {
tokio::time::sleep(std::time::Duration::from_millis(block_timeout)).await;
info!("Collecting transactions from mempool, block creation");
let id = {
let mut state = seq_core_wrapped.lock().await;
state.produce_new_block_with_mempool_transactions()?
};
info!("Block with id {id} created");
info!("Waiting for new transactions");
}
});
let node_port = node_config.port;
let node_core = NodeCore::start_from_config_update_chain(node_config.clone()).await?;
let wrapped_node_core = Arc::new(Mutex::new(node_core));
let http_server = node_rpc::new_http_server(
RpcConfig::with_port(node_port),
node_config.clone(),
wrapped_node_core.clone(),
)?;
info!("HTTP server started");
let _http_server_handle = http_server.handle();
tokio::spawn(http_server);
#[allow(clippy::empty_loop)]
loop {}
}