From 660869c13540073505d18f96b02f6da440c0fb63 Mon Sep 17 00:00:00 2001 From: danielhyk1 Date: Mon, 14 Oct 2024 00:19:27 -0700 Subject: [PATCH 1/5] Fix: Random coinbase signer is set as environment variable if none is supplied --- config-backtest-example.toml | 1 + .../src/backtest/backtest_build_block.rs | 7 ++++++- crates/rbuilder/src/backtest/config.rs | 19 +++++++++++++++++++ crates/rbuilder/src/backtest/mod.rs | 1 + 4 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 crates/rbuilder/src/backtest/config.rs diff --git a/config-backtest-example.toml b/config-backtest-example.toml index f789ce939..48defd78e 100644 --- a/config-backtest-example.toml +++ b/config-backtest-example.toml @@ -7,6 +7,7 @@ backtest_fetch_eth_rpc_url = "http://127.0.0.1:8545" backtest_fetch_eth_rpc_parallel = 400 backtest_fetch_output_file = "~/.rbuilder/backtest/main.sqlite" backtest_fetch_mempool_data_dir = "~/.rbuilder/mempool-data" +coinbase_secret_key = "env:COINBASE_SECRET_KEY" sbundle_mergeabe_signers = [] diff --git a/crates/rbuilder/src/backtest/backtest_build_block.rs b/crates/rbuilder/src/backtest/backtest_build_block.rs index 8062f5651..2b4bf3a12 100644 --- a/crates/rbuilder/src/backtest/backtest_build_block.rs +++ b/crates/rbuilder/src/backtest/backtest_build_block.rs @@ -16,6 +16,7 @@ use crate::{ backtest::{ execute::{backtest_prepare_ctx_for_block, BacktestBlockInput}, BlockData, HistoricalDataStorage, + config::add_env_coinbase_signer, }, building::builders::BacktestSimulateBlockInput, live_builder::{base_config::load_config_toml_and_env, cli::LiveBuilderConfig}, @@ -101,6 +102,10 @@ pub async fn run_backtest_build_block() -> eyre:: print_onchain_block_data(tx_sim_results, &orders, &block_data); } + if let Err(_) = config.base_config().coinbase_signer() { + add_env_coinbase_signer(); + } + let BacktestBlockInput { ctx, sim_orders, .. } = backtest_prepare_ctx_for_block( @@ -400,4 +405,4 @@ fn print_onchain_block_data( } } } -} +} \ No newline at end of file diff --git a/crates/rbuilder/src/backtest/config.rs b/crates/rbuilder/src/backtest/config.rs new file mode 100644 index 000000000..2fd2f9cf8 --- /dev/null +++ b/crates/rbuilder/src/backtest/config.rs @@ -0,0 +1,19 @@ +use revm_primitives::hex; +use secp256k1::rand::rngs::OsRng; +use secp256k1::SecretKey; + +use std::env; + +// Generate a random private key +fn generate_private_key() -> String { + let mut rng = OsRng; + let secret_key = SecretKey::new(&mut rng); + let hex_secret_key = hex::encode(secret_key.secret_bytes()); + hex_secret_key +} + +// Add COINBASE_SECRET_KEY as an environment variable during runtime +pub fn add_env_coinbase_signer() { + let private_key = generate_private_key(); + env::set_var("COINBASE_SECRET_KEY", private_key); +} diff --git a/crates/rbuilder/src/backtest/mod.rs b/crates/rbuilder/src/backtest/mod.rs index 21bfb5263..d26ec032f 100644 --- a/crates/rbuilder/src/backtest/mod.rs +++ b/crates/rbuilder/src/backtest/mod.rs @@ -1,5 +1,6 @@ mod backtest_build_block; mod backtest_build_range; +pub mod config; pub mod execute; pub mod fetch; From 278a82390ae1da75b5b281d687fb2608050dd63e Mon Sep 17 00:00:00 2001 From: danielhyk1 Date: Mon, 14 Oct 2024 00:44:12 -0700 Subject: [PATCH 2/5] Clean: consolidate functions --- .../src/backtest/backtest_build_block.rs | 22 ++++++++++++++++--- crates/rbuilder/src/backtest/config.rs | 19 ---------------- crates/rbuilder/src/backtest/mod.rs | 1 - 3 files changed, 19 insertions(+), 23 deletions(-) delete mode 100644 crates/rbuilder/src/backtest/config.rs diff --git a/crates/rbuilder/src/backtest/backtest_build_block.rs b/crates/rbuilder/src/backtest/backtest_build_block.rs index 2b4bf3a12..445153c6f 100644 --- a/crates/rbuilder/src/backtest/backtest_build_block.rs +++ b/crates/rbuilder/src/backtest/backtest_build_block.rs @@ -7,6 +7,8 @@ use ahash::HashMap; use alloy_primitives::utils::format_ether; +use secp256k1::{rand::rngs::OsRng, SecretKey}; +use revm_primitives::hex; use crate::backtest::restore_landed_orders::{ restore_landed_orders, sim_historical_block, ExecutedBlockTx, ExecutedTxs, SimplifiedOrder, @@ -15,8 +17,7 @@ use crate::backtest::OrdersWithTimestamp; use crate::{ backtest::{ execute::{backtest_prepare_ctx_for_block, BacktestBlockInput}, - BlockData, HistoricalDataStorage, - config::add_env_coinbase_signer, + BlockData, HistoricalDataStorage, }, building::builders::BacktestSimulateBlockInput, live_builder::{base_config::load_config_toml_and_env, cli::LiveBuilderConfig}, @@ -24,6 +25,7 @@ use crate::{ utils::timestamp_as_u64, }; use clap::Parser; +use std::env; use std::path::PathBuf; #[derive(Parser, Debug)] @@ -405,4 +407,18 @@ fn print_onchain_block_data( } } } -} \ No newline at end of file +} + +// Generate a random private key +fn generate_private_key() -> String { + let mut rng = OsRng; + let secret_key = SecretKey::new(&mut rng); + let hex_secret_key = hex::encode(secret_key.secret_bytes()); + hex_secret_key +} + +// Add COINBASE_SECRET_KEY as an environment variable during runtime +pub fn add_env_coinbase_signer() { + let private_key = generate_private_key(); + env::set_var("COINBASE_SECRET_KEY", private_key); +} \ No newline at end of file diff --git a/crates/rbuilder/src/backtest/config.rs b/crates/rbuilder/src/backtest/config.rs deleted file mode 100644 index 2fd2f9cf8..000000000 --- a/crates/rbuilder/src/backtest/config.rs +++ /dev/null @@ -1,19 +0,0 @@ -use revm_primitives::hex; -use secp256k1::rand::rngs::OsRng; -use secp256k1::SecretKey; - -use std::env; - -// Generate a random private key -fn generate_private_key() -> String { - let mut rng = OsRng; - let secret_key = SecretKey::new(&mut rng); - let hex_secret_key = hex::encode(secret_key.secret_bytes()); - hex_secret_key -} - -// Add COINBASE_SECRET_KEY as an environment variable during runtime -pub fn add_env_coinbase_signer() { - let private_key = generate_private_key(); - env::set_var("COINBASE_SECRET_KEY", private_key); -} diff --git a/crates/rbuilder/src/backtest/mod.rs b/crates/rbuilder/src/backtest/mod.rs index d26ec032f..21bfb5263 100644 --- a/crates/rbuilder/src/backtest/mod.rs +++ b/crates/rbuilder/src/backtest/mod.rs @@ -1,6 +1,5 @@ mod backtest_build_block; mod backtest_build_range; -pub mod config; pub mod execute; pub mod fetch; From bb171cb38c55b51032892e169c6a3dbb21391998 Mon Sep 17 00:00:00 2001 From: danielhyk1 Date: Mon, 14 Oct 2024 00:49:19 -0700 Subject: [PATCH 3/5] clean: lint check --- crates/rbuilder/src/backtest/backtest_build_block.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/crates/rbuilder/src/backtest/backtest_build_block.rs b/crates/rbuilder/src/backtest/backtest_build_block.rs index 445153c6f..bbd97d407 100644 --- a/crates/rbuilder/src/backtest/backtest_build_block.rs +++ b/crates/rbuilder/src/backtest/backtest_build_block.rs @@ -7,8 +7,8 @@ use ahash::HashMap; use alloy_primitives::utils::format_ether; -use secp256k1::{rand::rngs::OsRng, SecretKey}; use revm_primitives::hex; +use secp256k1::{rand::rngs::OsRng, SecretKey}; use crate::backtest::restore_landed_orders::{ restore_landed_orders, sim_historical_block, ExecutedBlockTx, ExecutedTxs, SimplifiedOrder, @@ -25,8 +25,7 @@ use crate::{ utils::timestamp_as_u64, }; use clap::Parser; -use std::env; -use std::path::PathBuf; +use std::{env, path::PathBuf}; #[derive(Parser, Debug)] struct Cli { @@ -421,4 +420,4 @@ fn generate_private_key() -> String { pub fn add_env_coinbase_signer() { let private_key = generate_private_key(); env::set_var("COINBASE_SECRET_KEY", private_key); -} \ No newline at end of file +} From f2e20e074032090978f34d6620bf3b492363bccf Mon Sep 17 00:00:00 2001 From: danielhyk1 Date: Mon, 14 Oct 2024 00:50:20 -0700 Subject: [PATCH 4/5] clean: lint check --- crates/rbuilder/src/backtest/backtest_build_block.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/rbuilder/src/backtest/backtest_build_block.rs b/crates/rbuilder/src/backtest/backtest_build_block.rs index bbd97d407..3c2488033 100644 --- a/crates/rbuilder/src/backtest/backtest_build_block.rs +++ b/crates/rbuilder/src/backtest/backtest_build_block.rs @@ -17,7 +17,7 @@ use crate::backtest::OrdersWithTimestamp; use crate::{ backtest::{ execute::{backtest_prepare_ctx_for_block, BacktestBlockInput}, - BlockData, HistoricalDataStorage, + BlockData, HistoricalDataStorage, }, building::builders::BacktestSimulateBlockInput, live_builder::{base_config::load_config_toml_and_env, cli::LiveBuilderConfig}, From bebc08fbfc6c726a39c376b649310b684ae4feac Mon Sep 17 00:00:00 2001 From: danielhyk1 Date: Mon, 14 Oct 2024 00:56:48 -0700 Subject: [PATCH 5/5] clean: lint check --- crates/rbuilder/src/backtest/backtest_build_block.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/rbuilder/src/backtest/backtest_build_block.rs b/crates/rbuilder/src/backtest/backtest_build_block.rs index 3c2488033..3c5cb0803 100644 --- a/crates/rbuilder/src/backtest/backtest_build_block.rs +++ b/crates/rbuilder/src/backtest/backtest_build_block.rs @@ -417,7 +417,7 @@ fn generate_private_key() -> String { } // Add COINBASE_SECRET_KEY as an environment variable during runtime -pub fn add_env_coinbase_signer() { +fn add_env_coinbase_signer() { let private_key = generate_private_key(); env::set_var("COINBASE_SECRET_KEY", private_key); }