Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

L2/deposit rich accounts #2095

Draft
wants to merge 5 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

70 changes: 70 additions & 0 deletions crates/l2/contracts/deployer.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
use bytes::Bytes;
use colored::Colorize;
use ethereum_types::{Address, H160, H256};
use ethrex_common::U256;
use ethrex_l2::utils::config::errors;
use ethrex_l2::utils::config::{read_env_as_lines, read_env_file, write_env};
use ethrex_l2::utils::test_data_io::read_genesis_file;
use ethrex_l2_sdk::calldata::{encode_calldata, Value};
use ethrex_l2_sdk::get_address_from_secret_key;
use ethrex_rpc::clients::eth::{
errors::{CalldataEncodeError, EthClientError},
eth_sender::Overrides,
Expand All @@ -12,6 +15,7 @@ use ethrex_rpc::clients::eth::{
use keccak_hash::keccak;
use secp256k1::SecretKey;
use spinoff::{spinner, spinners, Color, Spinner};
use std::fs;
use std::{
path::{Path, PathBuf},
process::Command,
Expand Down Expand Up @@ -102,6 +106,7 @@ async fn main() -> Result<(), DeployError> {
&setup_result.eth_client,
)
.await?;
make_deposits(bridge_address, &setup_result.eth_client).await;

let env_lines = read_env_as_lines().map_err(DeployError::EnvFileError)?;

Expand Down Expand Up @@ -598,6 +603,71 @@ async fn wait_for_transaction_receipt(
Ok(())
}

async fn make_deposits(bridge: Address, eth_client: &EthClient) {
let genesis = read_genesis_file("../../test_data/genesis-l1.json");
let Ok(pks) = fs::read_to_string("../../test_data/private_keys_l1.txt") else {
return;
};
let private_keys: Vec<String> = pks
.lines()
.filter(|line| !line.trim().is_empty())
.map(|line| line.trim().to_string())
.collect();

for pk in private_keys.iter() {
let pk_str = pk.strip_prefix("0x").unwrap_or(pk);
let Ok(pk_h256) = pk_str.parse::<H256>() else {
continue;
};
let pk_bytes = pk_h256.as_bytes();
let Ok(secret_key) = SecretKey::from_slice(pk_bytes) else {
continue;
};
let Ok(address) = get_address_from_secret_key(&secret_key) else {
continue;
};
let values = vec![Value::Address(address)];
let Ok(calldata) = encode_calldata("deposit(address)", &values) else {
continue;
};
let Some(acc) = genesis.alloc.get(&address) else {
dbg!("No hay address en genesis ⏭️", address);
continue;
};
let value_to_deposit = acc
.balance
.checked_div(U256::from_str("2").unwrap_or(U256::zero()))
.unwrap_or(U256::zero());
let overrides = Overrides {
value: Some(value_to_deposit),
from: Some(address),
gas_limit: Some(21000 * 5),
..Overrides::default()
};

let Ok(build) = eth_client
.build_eip1559_transaction(bridge, address, Bytes::from(calldata), overrides, 1)
.await
else {
continue;
};

match eth_client
.send_eip1559_transaction(&build, &secret_key)
.await
{
Ok(_) => {
dbg!("Se completó deposit", address, value_to_deposit);
}
Err(e) => {
dbg!("Falló el deposit 🚩", address, value_to_deposit);
dbg!(e);
continue;
}
}
}
}

#[allow(clippy::unwrap_used)]
#[allow(clippy::expect_used)]
#[allow(clippy::panic)]
Expand Down
3 changes: 1 addition & 2 deletions crates/l2/proposer/l1_watcher.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ impl L1Watcher {
) -> Result<Self, EthClientError> {
let eth_client = EthClient::new(&eth_config.rpc_url);
let l2_client = EthClient::new("http://localhost:1729");
let last_block_fetched =
let last_block_fetched: U256 =
EthClient::get_last_fetched_l1_block(&eth_client, watcher_config.bridge_address)
.await?
.into();
Expand Down Expand Up @@ -75,7 +75,6 @@ impl L1Watcher {
if logs.is_empty() {
continue;
}

let pending_deposit_logs = self.get_pending_deposit_logs().await?;
let _deposit_txs = self
.process_logs(logs, &pending_deposit_logs, store)
Expand Down
21 changes: 21 additions & 0 deletions test_data/private_keys_l1.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
0xbcdf20249abf0ed6d944c0288fad489e33f66b3960d9e6229c1cd214ed3bbe31
0x39725efee3fb28614de3bacaffe4cc4bd8c436257e2c8bb887c4b5c4be45e76d
0x53321db7c1e331d93a11a41d16f004d7ff63972ec8ec7c25db329728ceeb1710
0xab63b23eb7941c1251757e24b3d2350d2bc05c3c388d06f8fe6feafefb1e8c70
0x5d2344259f42259f82d2c140aa66102ba89b57b4883ee441a8b312622bd42491
0x27515f805127bebad2fb9b183508bdacb8c763da16f54e0678b16e8f28ef3fff
0x7ff1a4c1d57e5e784d327c4c7651e952350bc271f156afb3d00d20f5ef924856
0x3a91003acaf4c21b3953d94fa4a6db694fa69e5242b2e37be05dd82761058899
0xbb1d0f125b4fb2bb173c318cdead45468474ca71474e2247776b2b4c0fa2d3f5
0x850643a0224065ecce3882673c21f56bcf6eef86274cc21cadff15930b59fc8c
0x94eb3102993b41ec55c241060f47daa0f6372e2e3ad7e91612ae36c364042e44
0xdaf15504c22a352648a71ef2926334fe040ac1d5005019e09f6c979808024dc7
0xeaba42282ad33c8ef2524f07277c03a776d98ae19f581990ce75becb7cfa1c23
0x3fd98b5187bf6526734efaa644ffbb4e3670d66f5d0268ce0323ec09124bff61
0x5288e2f440c7f0cb61a9be8afdeb4295f786383f96f5e35eb0c94ef103996b64
0xf296c7802555da2a5a662be70e078cbd38b44f96f8615ae529da41122ce8db05
0xbf3beef3bd999ba9f2451e06936f0423cd62b815c9233dd3bc90f7e02a1e8673
0x6ecadc396415970e91293726c3f5775225440ea0844ae5616135fd10d66b5954
0xa492823c3e193d6c595f37a18e3c06650cf4c74558cc818b16130b293716106f
0xc5114526e042343c6d1899cad05e1c00ba588314de9b96929914ee0df18d46b2
0x04b9f63ecf84210c5366c66d68fa1f5da1fa4f634fad6dfc86178e4d79ff9e59
Loading