From 8e316a893222179ea52516e03273251d31e6b356 Mon Sep 17 00:00:00 2001 From: Lucas Rack Date: Wed, 18 Jun 2025 16:37:36 -0300 Subject: [PATCH 01/31] Init --- sdk/examples/deploy_contract_with_keystore.rs | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 sdk/examples/deploy_contract_with_keystore.rs diff --git a/sdk/examples/deploy_contract_with_keystore.rs b/sdk/examples/deploy_contract_with_keystore.rs new file mode 100644 index 0000000..9df13b9 --- /dev/null +++ b/sdk/examples/deploy_contract_with_keystore.rs @@ -0,0 +1,30 @@ +use ethrex_rpc::EthClient; +use rex_sdk::keystore::{create_new_keystore, load_keystore_from_path}; + +//Habría que codear un contrato de ejemplo en solidity +// con una función que recupere al signer dado un mensaje y una firma y lo emita en un log + +#[tokio::main] +async fn main() -> Result<(), Box> { + // Create a keystore. + create_new_keystore(None, Some("ContractKeystore"), "LambdaClass")?; + // Load the private key from the keystore. + let private_key = load_keystore_from_path(None, "ContractKeystore", "LambdaClass")?; + + // Connect the client to a node + let mut client = EthClient::new("127.0.0.1:8545"); + + // Deploy a contract. + + // Get the current block (for later). + + // Prepare the calldata to call the contract function that emits a log. + + // Call the contract signing with the private key and wait for its receipt. + + // Get the new current block. + + // Get the emitted logs using the current block and the previous current block. + + Ok(()) +} From 7c9e1b3682cdb36c021d3788737c68032602410d Mon Sep 17 00:00:00 2001 From: Lucas Rack Date: Wed, 18 Jun 2025 17:19:43 -0300 Subject: [PATCH 02/31] Add solidity contract --- sdk/examples/contracts/recoverSigner.sol | 25 +++++++++++++++++++ sdk/examples/deploy_contract_with_keystore.rs | 22 +++++++++++++--- 2 files changed, 43 insertions(+), 4 deletions(-) create mode 100644 sdk/examples/contracts/recoverSigner.sol diff --git a/sdk/examples/contracts/recoverSigner.sol b/sdk/examples/contracts/recoverSigner.sol new file mode 100644 index 0000000..3b9965b --- /dev/null +++ b/sdk/examples/contracts/recoverSigner.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.7; + +import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; +import "@openzeppelin/contracts/utils/Address.sol"; + +contract RecoverSigner { + using ECDSA for bytes32; + using Address for address; + + event RecoveredSigner( + address signer + ); + + function recoverSigner ( + bytes32 message, + bytes memory signature + ) public { + bytes32 hash = message.toEthSignedMessageHash(); + address signer = hash.recover(signature); + emit RecoveredSigner( + signer + ); + } +} diff --git a/sdk/examples/deploy_contract_with_keystore.rs b/sdk/examples/deploy_contract_with_keystore.rs index 9df13b9..7497504 100644 --- a/sdk/examples/deploy_contract_with_keystore.rs +++ b/sdk/examples/deploy_contract_with_keystore.rs @@ -1,6 +1,9 @@ -use ethrex_rpc::EthClient; -use rex_sdk::keystore::{create_new_keystore, load_keystore_from_path}; - +use ethrex_common::{H160, H256}; +use rex_sdk::client::EthClient; +use rex_sdk::{ + keystore::{create_new_keystore, load_keystore_from_path}, + sign::sign_hash, +}; //Habría que codear un contrato de ejemplo en solidity // con una función que recupere al signer dado un mensaje y una firma y lo emita en un log @@ -8,23 +11,34 @@ use rex_sdk::keystore::{create_new_keystore, load_keystore_from_path}; async fn main() -> Result<(), Box> { // Create a keystore. create_new_keystore(None, Some("ContractKeystore"), "LambdaClass")?; + // Load the private key from the keystore. let private_key = load_keystore_from_path(None, "ContractKeystore", "LambdaClass")?; // Connect the client to a node - let mut client = EthClient::new("127.0.0.1:8545"); + let client = EthClient::new("127.0.0.1:8545"); // Deploy a contract. + // client.deploy(deployer, deployer_private_key, init_code, overrides); // Get the current block (for later). + let from_block = client.get_block_number().await?; // Prepare the calldata to call the contract function that emits a log. + let _msg = sign_hash(H256::random(), private_key); // Call the contract signing with the private key and wait for its receipt. + //client.call(); // Get the new current block. + let to_block = client.get_block_number().await?; // Get the emitted logs using the current block and the previous current block. + let logs = client + .get_logs_from_signature(from_block, to_block, H160::zero(), "dsadasdas") + .await?; + + println!("Logs: {:?}", logs); Ok(()) } From 619d44752cbdc2016f4ed905331e79d3dc40a0ab Mon Sep 17 00:00:00 2001 From: Lucas Rack Date: Wed, 18 Jun 2025 18:03:04 -0300 Subject: [PATCH 03/31] Deploy contract --- sdk/examples/contracts/recoverSigner.sol | 20 +++++++++++-------- sdk/examples/deploy_contract_with_keystore.rs | 11 ++++++++-- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/sdk/examples/contracts/recoverSigner.sol b/sdk/examples/contracts/recoverSigner.sol index 3b9965b..906230d 100644 --- a/sdk/examples/contracts/recoverSigner.sol +++ b/sdk/examples/contracts/recoverSigner.sol @@ -1,25 +1,29 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.7; +import "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol"; import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; import "@openzeppelin/contracts/utils/Address.sol"; contract RecoverSigner { - using ECDSA for bytes32; + using MessageHashUtils for bytes32; using Address for address; - + event RecoveredSigner( address signer ); - - function recoverSigner ( + + function recoverSigner( bytes32 message, bytes memory signature ) public { bytes32 hash = message.toEthSignedMessageHash(); - address signer = hash.recover(signature); - emit RecoveredSigner( - signer - ); + address signer = ECDSA.recover(hash, signature); + emit RecoveredSigner(signer); } } + +// generate binary: +// npm init -y +// npm install @openzeppelin/contracts +// solc --bin recoverSigner.sol --base-path . --include-path node_modules/ diff --git a/sdk/examples/deploy_contract_with_keystore.rs b/sdk/examples/deploy_contract_with_keystore.rs index 7497504..d5c56ff 100644 --- a/sdk/examples/deploy_contract_with_keystore.rs +++ b/sdk/examples/deploy_contract_with_keystore.rs @@ -1,9 +1,13 @@ use ethrex_common::{H160, H256}; use rex_sdk::client::EthClient; +use rex_sdk::client::eth::get_address_from_secret_key; use rex_sdk::{ keystore::{create_new_keystore, load_keystore_from_path}, sign::sign_hash, }; + +const RPC_URL: &str = "https://ethereum-holesky-rpc.publicnode.com"; + //Habría que codear un contrato de ejemplo en solidity // con una función que recupere al signer dado un mensaje y una firma y lo emita en un log @@ -16,10 +20,13 @@ async fn main() -> Result<(), Box> { let private_key = load_keystore_from_path(None, "ContractKeystore", "LambdaClass")?; // Connect the client to a node - let client = EthClient::new("127.0.0.1:8545"); + let client = EthClient::new(RPC_URL); + + // Get address from private key + let address = get_address_from_secret_key(&private_key)?; // Deploy a contract. - // client.deploy(deployer, deployer_private_key, init_code, overrides); + client.deploy(address, private_key, init_code, overrides); // Get the current block (for later). let from_block = client.get_block_number().await?; From e2652f197c555b23b0857daf23e8406fbb7c2e15 Mon Sep 17 00:00:00 2001 From: Lucas Rack Date: Wed, 18 Jun 2025 19:01:39 -0300 Subject: [PATCH 04/31] Try deploy contract --- sdk/examples/deploy_contract_with_keystore.rs | 71 +++++++++++++++---- 1 file changed, 56 insertions(+), 15 deletions(-) diff --git a/sdk/examples/deploy_contract_with_keystore.rs b/sdk/examples/deploy_contract_with_keystore.rs index d5c56ff..862aa31 100644 --- a/sdk/examples/deploy_contract_with_keystore.rs +++ b/sdk/examples/deploy_contract_with_keystore.rs @@ -1,48 +1,89 @@ -use ethrex_common::{H160, H256}; -use rex_sdk::client::EthClient; +use ethrex_common::{Bytes, H160, H256, U256}; use rex_sdk::client::eth::get_address_from_secret_key; +use rex_sdk::client::{EthClient, Overrides}; use rex_sdk::{ keystore::{create_new_keystore, load_keystore_from_path}, sign::sign_hash, }; +use std::time::{SystemTime, UNIX_EPOCH}; const RPC_URL: &str = "https://ethereum-holesky-rpc.publicnode.com"; -//Habría que codear un contrato de ejemplo en solidity -// con una función que recupere al signer dado un mensaje y una firma y lo emita en un log +fn get_contract_code() -> Result> { + let hex_str = "6080604052348015600e575f5ffd5b506106e68061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c806397aba7f91461002d575b5f5ffd5b6100476004803603810190610042919061051a565b610049565b005b5f6100538361009f565b90505f61006082846100d2565b90507f2fa45e087bb7f6d5a718cfa7af28ee7babd0187f360b2279b874bedf43a7a4e08160405161009191906105b3565b60405180910390a150505050565b5f7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f5281601c52603c5f209050919050565b5f5f5f5f6100e086866100fc565b9250925092506100f08282610151565b82935050505092915050565b5f5f5f604184510361013c575f5f5f602087015192506040870151915060608701515f1a905061012e888285856102b3565b95509550955050505061014a565b5f600285515f1b9250925092505b9250925092565b5f6003811115610164576101636105cc565b5b826003811115610177576101766105cc565b5b03156102af5760016003811115610191576101906105cc565b5b8260038111156101a4576101a36105cc565b5b036101db576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260038111156101ef576101ee6105cc565b5b826003811115610202576102016105cc565b5b0361024657805f1c6040517ffce698f700000000000000000000000000000000000000000000000000000000815260040161023d9190610611565b60405180910390fd5b600380811115610259576102586105cc565b5b82600381111561026c5761026b6105cc565b5b036102ae57806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016102a59190610639565b60405180910390fd5b5b5050565b5f5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c11156102ef575f600385925092509250610390565b5f6001888888886040515f8152602001604052604051610312949392919061066d565b6020604051602081039080840390855afa158015610332573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610383575f60015f5f1b93509350935050610390565b805f5f5f1b935093509350505b9450945094915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b6103bd816103ab565b81146103c7575f5ffd5b50565b5f813590506103d8816103b4565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61042c826103e6565b810181811067ffffffffffffffff8211171561044b5761044a6103f6565b5b80604052505050565b5f61045d61039a565b90506104698282610423565b919050565b5f67ffffffffffffffff821115610488576104876103f6565b5b610491826103e6565b9050602081019050919050565b828183375f83830152505050565b5f6104be6104b98461046e565b610454565b9050828152602081018484840111156104da576104d96103e2565b5b6104e584828561049e565b509392505050565b5f82601f830112610501576105006103de565b5b81356105118482602086016104ac565b91505092915050565b5f5f604083850312156105305761052f6103a3565b5b5f61053d858286016103ca565b925050602083013567ffffffffffffffff81111561055e5761055d6103a7565b5b61056a858286016104ed565b9150509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61059d82610574565b9050919050565b6105ad81610593565b82525050565b5f6020820190506105c65f8301846105a4565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f819050919050565b61060b816105f9565b82525050565b5f6020820190506106245f830184610602565b92915050565b610633816103ab565b82525050565b5f60208201905061064c5f83018461062a565b92915050565b5f60ff82169050919050565b61066781610652565b82525050565b5f6080820190506106805f83018761062a565b61068d602083018661065e565b61069a604083018561062a565b6106a7606083018461062a565b9594505050505056fea2646970667358221220e3eff56ac1443a06452af409dfd79dfd0132a1ec3d4a87fcd0483b1b5da07a1164736f6c634300081d0033"; + let bytes = hex::decode(hex_str)?; + Ok(Bytes::from(bytes)) +} #[tokio::main] async fn main() -> Result<(), Box> { // Create a keystore. - create_new_keystore(None, Some("ContractKeystore"), "LambdaClass")?; + // create_new_keystore(None, Some("ContractKeystore"), "LambdaClass")?; - // Load the private key from the keystore. - let private_key = load_keystore_from_path(None, "ContractKeystore", "LambdaClass")?; + // Load the secret key from the keystore. + let secret_key = load_keystore_from_path(None, "ContractKeystore", "LambdaClass")?; // Connect the client to a node let client = EthClient::new(RPC_URL); - // Get address from private key - let address = get_address_from_secret_key(&private_key)?; - + // Get address from secret key + let address = get_address_from_secret_key(&secret_key)?; + println!("addres {:#x}", address); // Deploy a contract. - client.deploy(address, private_key, init_code, overrides); + let nonce = SystemTime::now() + .duration_since(UNIX_EPOCH) + .unwrap() + .as_secs(); + let (hash, deployed_address) = client + .deploy( + address, + secret_key, + get_contract_code()?, + Overrides { + value: Some(U256::from_dec_str("200000")?), + nonce: Some(nonce), + chain_id: Some(17000), + gas_limit: Some(2000000), + max_fee_per_gas: Some(2000000), + max_priority_fee_per_gas: Some(20000), + ..Default::default() + }, + ) + .await?; + println!("deployed hash {:#x}", hash); + println!("deployed address {:#x}", deployed_address); // Get the current block (for later). let from_block = client.get_block_number().await?; // Prepare the calldata to call the contract function that emits a log. - let _msg = sign_hash(H256::random(), private_key); + let _msg = sign_hash(H256::random(), secret_key); - // Call the contract signing with the private key and wait for its receipt. - //client.call(); + let calldata = Bytes::new(); + // Call the contract signing with the private key and wait for its receipt. + let response = client + .call( + deployed_address, + calldata, + Overrides { + value: Some(U256::from_dec_str("200000")?), + nonce: Some(0), + chain_id: Some(17000), + gas_limit: Some(2000000), + max_fee_per_gas: Some(2000000), + max_priority_fee_per_gas: Some(20000), + ..Default::default() + }, + ) + .await?; + println!("response {}", response); // Get the new current block. let to_block = client.get_block_number().await?; // Get the emitted logs using the current block and the previous current block. let logs = client - .get_logs_from_signature(from_block, to_block, H160::zero(), "dsadasdas") + .get_logs_from_signature(from_block, to_block, deployed_address, "dsadasdas") .await?; println!("Logs: {:?}", logs); From 55ea9be7af36d32fe283c13300ed8137e3f29704 Mon Sep 17 00:00:00 2001 From: Lucas Rack Date: Thu, 19 Jun 2025 11:57:01 -0300 Subject: [PATCH 05/31] Add transfer --- sdk/examples/deploy_contract_with_keystore.rs | 82 +++++++++++++------ 1 file changed, 59 insertions(+), 23 deletions(-) diff --git a/sdk/examples/deploy_contract_with_keystore.rs b/sdk/examples/deploy_contract_with_keystore.rs index 862aa31..52c654b 100644 --- a/sdk/examples/deploy_contract_with_keystore.rs +++ b/sdk/examples/deploy_contract_with_keystore.rs @@ -4,10 +4,14 @@ use rex_sdk::client::{EthClient, Overrides}; use rex_sdk::{ keystore::{create_new_keystore, load_keystore_from_path}, sign::sign_hash, + transfer, wait_for_transaction_receipt, }; +use secp256k1::SecretKey; +use std::str::FromStr; use std::time::{SystemTime, UNIX_EPOCH}; -const RPC_URL: &str = "https://ethereum-holesky-rpc.publicnode.com"; +const RPC_URL: &str = "http://127.0.0.1:8545"; +const RICH_WALLET_PK: &str = "5d2344259f42259f82d2c140aa66102ba89b57b4883ee441a8b312622bd42491"; fn get_contract_code() -> Result> { let hex_str = "6080604052348015600e575f5ffd5b506106e68061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c806397aba7f91461002d575b5f5ffd5b6100476004803603810190610042919061051a565b610049565b005b5f6100538361009f565b90505f61006082846100d2565b90507f2fa45e087bb7f6d5a718cfa7af28ee7babd0187f360b2279b874bedf43a7a4e08160405161009191906105b3565b60405180910390a150505050565b5f7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f5281601c52603c5f209050919050565b5f5f5f5f6100e086866100fc565b9250925092506100f08282610151565b82935050505092915050565b5f5f5f604184510361013c575f5f5f602087015192506040870151915060608701515f1a905061012e888285856102b3565b95509550955050505061014a565b5f600285515f1b9250925092505b9250925092565b5f6003811115610164576101636105cc565b5b826003811115610177576101766105cc565b5b03156102af5760016003811115610191576101906105cc565b5b8260038111156101a4576101a36105cc565b5b036101db576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260038111156101ef576101ee6105cc565b5b826003811115610202576102016105cc565b5b0361024657805f1c6040517ffce698f700000000000000000000000000000000000000000000000000000000815260040161023d9190610611565b60405180910390fd5b600380811115610259576102586105cc565b5b82600381111561026c5761026b6105cc565b5b036102ae57806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016102a59190610639565b60405180910390fd5b5b5050565b5f5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c11156102ef575f600385925092509250610390565b5f6001888888886040515f8152602001604052604051610312949392919061066d565b6020604051602081039080840390855afa158015610332573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610383575f60015f5f1b93509350935050610390565b805f5f5f1b935093509350505b9450945094915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b6103bd816103ab565b81146103c7575f5ffd5b50565b5f813590506103d8816103b4565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61042c826103e6565b810181811067ffffffffffffffff8211171561044b5761044a6103f6565b5b80604052505050565b5f61045d61039a565b90506104698282610423565b919050565b5f67ffffffffffffffff821115610488576104876103f6565b5b610491826103e6565b9050602081019050919050565b828183375f83830152505050565b5f6104be6104b98461046e565b610454565b9050828152602081018484840111156104da576104d96103e2565b5b6104e584828561049e565b509392505050565b5f82601f830112610501576105006103de565b5b81356105118482602086016104ac565b91505092915050565b5f5f604083850312156105305761052f6103a3565b5b5f61053d858286016103ca565b925050602083013567ffffffffffffffff81111561055e5761055d6103a7565b5b61056a858286016104ed565b9150509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61059d82610574565b9050919050565b6105ad81610593565b82525050565b5f6020820190506105c65f8301846105a4565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f819050919050565b61060b816105f9565b82525050565b5f6020820190506106245f830184610602565b92915050565b610633816103ab565b82525050565b5f60208201905061064c5f83018461062a565b92915050565b5f60ff82169050919050565b61066781610652565b82525050565b5f6080820190506106805f83018761062a565b61068d602083018661065e565b61069a604083018561062a565b6106a7606083018461062a565b9594505050505056fea2646970667358221220e3eff56ac1443a06452af409dfd79dfd0132a1ec3d4a87fcd0483b1b5da07a1164736f6c634300081d0033"; @@ -15,46 +19,78 @@ fn get_contract_code() -> Result> { Ok(Bytes::from(bytes)) } +pub fn get_timestamp_nonce() -> u64 { + SystemTime::now() + .duration_since(UNIX_EPOCH) + .unwrap() + .as_secs() +} + #[tokio::main] async fn main() -> Result<(), Box> { // Create a keystore. - // create_new_keystore(None, Some("ContractKeystore"), "LambdaClass")?; + create_new_keystore(None, Some("ContractKeystore"), "LambdaClass")?; // Load the secret key from the keystore. let secret_key = load_keystore_from_path(None, "ContractKeystore", "LambdaClass")?; - // Connect the client to a node - let client = EthClient::new(RPC_URL); - // Get address from secret key let address = get_address_from_secret_key(&secret_key)?; - println!("addres {:#x}", address); + println!("address {:#x}", address); + + // Connect the client to a node + let eth_client = EthClient::new(RPC_URL); + + // Transfer funds from a rich wallet to the keystore's account + let rich_wallet_pk = SecretKey::from_str(RICH_WALLET_PK)?; + let rich_wallet_address = get_address_from_secret_key(&rich_wallet_pk)?; + let amount = U256::from_dec_str("1000000000000000000").unwrap(); + let nonce = eth_client.get_nonce(rich_wallet_address).await.unwrap(); + let transfer_tx_hash = transfer( + amount, + rich_wallet_address, + address, + rich_wallet_pk, + ð_client, + Overrides { + value: Some(amount), + nonce: Some(nonce), + chain_id: Some(9), + ..Default::default() + }, + ) + .await?; + + let transfer_receipts = + wait_for_transaction_receipt(transfer_tx_hash, ð_client, 10, true).await?; + println!("transfer_receipts: {transfer_receipts:?}"); + // Deploy a contract. - let nonce = SystemTime::now() - .duration_since(UNIX_EPOCH) - .unwrap() - .as_secs(); - let (hash, deployed_address) = client + let (contract_tx_hash, deployed_address) = eth_client .deploy( address, secret_key, get_contract_code()?, Overrides { - value: Some(U256::from_dec_str("200000")?), - nonce: Some(nonce), - chain_id: Some(17000), - gas_limit: Some(2000000), + value: Some(U256::from_dec_str("2000000")?), + nonce: Some(get_timestamp_nonce()), + chain_id: Some(9), + gas_limit: Some(200000000), max_fee_per_gas: Some(2000000), - max_priority_fee_per_gas: Some(20000), + max_priority_fee_per_gas: Some(2000000), ..Default::default() }, ) .await?; - println!("deployed hash {:#x}", hash); - + println!("deployed hash {:#x}", contract_tx_hash); println!("deployed address {:#x}", deployed_address); + + let contract_receipts = + wait_for_transaction_receipt(contract_tx_hash, ð_client, 10, true).await?; + println!("contract_receipts: {contract_receipts:?}"); + // Get the current block (for later). - let from_block = client.get_block_number().await?; + let from_block = eth_client.get_block_number().await?; // Prepare the calldata to call the contract function that emits a log. let _msg = sign_hash(H256::random(), secret_key); @@ -62,7 +98,7 @@ async fn main() -> Result<(), Box> { let calldata = Bytes::new(); // Call the contract signing with the private key and wait for its receipt. - let response = client + eth_client .call( deployed_address, calldata, @@ -77,12 +113,12 @@ async fn main() -> Result<(), Box> { }, ) .await?; - println!("response {}", response); + // Get the new current block. - let to_block = client.get_block_number().await?; + let to_block = eth_client.get_block_number().await?; // Get the emitted logs using the current block and the previous current block. - let logs = client + let logs = eth_client .get_logs_from_signature(from_block, to_block, deployed_address, "dsadasdas") .await?; From 3293c715de81b882cb002a62dcfcaa29601f5b3d Mon Sep 17 00:00:00 2001 From: Lucas Rack Date: Thu, 19 Jun 2025 12:00:10 -0300 Subject: [PATCH 06/31] Fix gas --- sdk/examples/deploy_contract_with_keystore.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/examples/deploy_contract_with_keystore.rs b/sdk/examples/deploy_contract_with_keystore.rs index 52c654b..9ae5c8b 100644 --- a/sdk/examples/deploy_contract_with_keystore.rs +++ b/sdk/examples/deploy_contract_with_keystore.rs @@ -72,10 +72,10 @@ async fn main() -> Result<(), Box> { secret_key, get_contract_code()?, Overrides { - value: Some(U256::from_dec_str("2000000")?), + value: Some(U256::from_dec_str("2000000000")?), nonce: Some(get_timestamp_nonce()), chain_id: Some(9), - gas_limit: Some(200000000), + gas_limit: Some(2000000), max_fee_per_gas: Some(2000000), max_priority_fee_per_gas: Some(2000000), ..Default::default() From 1bfec257e2540c3f8ca8aba1b2965a6e94e8229a Mon Sep 17 00:00:00 2001 From: Lucas Rack Date: Thu, 19 Jun 2025 14:18:36 -0300 Subject: [PATCH 07/31] Add call params and example --- Cargo.lock | 1604 ++++++++++++++++- sdk/Cargo.toml | 6 + sdk/examples/deploy_contract_with_keystore.rs | 65 +- 3 files changed, 1559 insertions(+), 116 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d3021bc..3e83fe3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,16 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + [[package]] name = "addchain" version = "0.2.0" @@ -550,6 +560,15 @@ dependencies = [ "serde", ] +[[package]] +name = "ascii-canvas" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" +dependencies = [ + "term", +] + [[package]] name = "async-trait" version = "0.1.88" @@ -561,6 +580,17 @@ dependencies = [ "syn 2.0.98", ] +[[package]] +name = "async_io_stream" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" +dependencies = [ + "futures", + "pharos", + "rustc_version 0.4.1", +] + [[package]] name = "atomic-waker" version = "1.1.2" @@ -604,10 +634,10 @@ dependencies = [ "bytes", "form_urlencoded", "futures-util", - "http", - "http-body", + "http 1.2.0", + "http-body 1.0.1", "http-body-util", - "hyper", + "hyper 1.6.0", "hyper-util", "itoa", "matchit", @@ -620,7 +650,7 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_urlencoded", - "sync_wrapper", + "sync_wrapper 1.0.2", "tokio", "tower", "tower-layer", @@ -636,13 +666,13 @@ checksum = "df1362f362fd16024ae199c1970ce98f9661bf5ef94b9808fee734bc3698b733" dependencies = [ "bytes", "futures-util", - "http", - "http-body", + "http 1.2.0", + "http-body 1.0.1", "http-body-util", "mime", "pin-project-lite", "rustversion", - "sync_wrapper", + "sync_wrapper 1.0.2", "tower-layer", "tower-service", "tracing", @@ -659,8 +689,8 @@ dependencies = [ "bytes", "futures-util", "headers", - "http", - "http-body", + "http 1.2.0", + "http-body 1.0.1", "http-body-util", "mime", "pin-project-lite", @@ -691,6 +721,12 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + [[package]] name = "base64" version = "0.21.7" @@ -709,6 +745,12 @@ version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c103cbbedac994e292597ab79342dbd5b306a362045095db54917d92a9fdfd92" +[[package]] +name = "bech32" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" + [[package]] name = "bincode" version = "1.3.3" @@ -718,21 +760,42 @@ dependencies = [ "serde", ] +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec 0.6.3", +] + [[package]] name = "bit-set" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" dependencies = [ - "bit-vec", + "bit-vec 0.8.0", ] +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + [[package]] name = "bit-vec" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + [[package]] name = "bitflags" version = "2.8.0" @@ -798,6 +861,16 @@ dependencies = [ "zeroize", ] +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "sha2 0.10.9", + "tinyvec", +] + [[package]] name = "bumpalo" version = "3.17.0" @@ -825,6 +898,26 @@ dependencies = [ "serde", ] +[[package]] +name = "bzip2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.13+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" +dependencies = [ + "cc", + "pkg-config", +] + [[package]] name = "c-kzg" version = "1.0.3" @@ -845,6 +938,32 @@ name = "camino" version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.25", + "serde", + "serde_json", + "thiserror 1.0.69", +] [[package]] name = "cc" @@ -852,6 +971,8 @@ version = "1.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c736e259eea577f443d5c86c304f9f4ae0295c43f3ba05c21f1d66b5f06001af" dependencies = [ + "jobserver", + "libc", "shlex", ] @@ -933,6 +1054,58 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" +[[package]] +name = "coins-bip32" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b6be4a5df2098cd811f3194f64ddb96c267606bffd9689ac7b0160097b01ad3" +dependencies = [ + "bs58", + "coins-core", + "digest 0.10.7", + "hmac 0.12.1", + "k256", + "serde", + "sha2 0.10.9", + "thiserror 1.0.69", +] + +[[package]] +name = "coins-bip39" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db8fba409ce3dc04f7d804074039eb68b960b0829161f8e06c95fea3f122528" +dependencies = [ + "bitvec", + "coins-bip32", + "hmac 0.12.1", + "once_cell", + "pbkdf2 0.12.2", + "rand", + "sha2 0.10.9", + "thiserror 1.0.69", +] + +[[package]] +name = "coins-core" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5286a0843c21f8367f7be734f89df9b822e0321d8bcce8d6e735aadff7d74979" +dependencies = [ + "base64 0.21.7", + "bech32", + "bs58", + "digest 0.10.7", + "generic-array", + "hex", + "ripemd", + "serde", + "serde_derive", + "sha2 0.10.9", + "sha3", + "thiserror 1.0.69", +] + [[package]] name = "colorchoice" version = "1.0.3" @@ -1019,6 +1192,12 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + [[package]] name = "convert_case" version = "0.6.0" @@ -1184,6 +1363,12 @@ dependencies = [ "syn 2.0.98", ] +[[package]] +name = "data-encoding" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" + [[package]] name = "datatest-stable" version = "0.2.10" @@ -1293,6 +1478,15 @@ dependencies = [ "dirs-sys 0.4.1", ] +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys 0.4.1", +] + [[package]] name = "dirs" version = "6.0.0" @@ -1302,6 +1496,16 @@ dependencies = [ "dirs-sys 0.5.0", ] +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + [[package]] name = "dirs-sys" version = "0.4.1" @@ -1326,6 +1530,17 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users 0.4.6", + "winapi", +] + [[package]] name = "displaydoc" version = "0.2.5" @@ -1390,6 +1605,15 @@ dependencies = [ "zeroize", ] +[[package]] +name = "ena" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5" +dependencies = [ + "log", +] + [[package]] name = "encode_unicode" version = "1.0.0" @@ -1405,6 +1629,24 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "enr" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a3d8dc56e02f954cac8eb489772c552c473346fc34f67412bb6244fd647f7e4" +dependencies = [ + "base64 0.21.7", + "bytes", + "hex", + "k256", + "log", + "rand", + "rlp 0.5.2", + "serde", + "sha3", + "zeroize", +] + [[package]] name = "enumn" version = "0.1.14" @@ -1458,7 +1700,7 @@ dependencies = [ "digest 0.10.7", "hex", "hmac 0.12.1", - "pbkdf2", + "pbkdf2 0.11.0", "rand", "scrypt", "serde", @@ -1469,6 +1711,38 @@ dependencies = [ "uuid", ] +[[package]] +name = "ethabi" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" +dependencies = [ + "ethereum-types 0.14.1", + "hex", + "once_cell", + "regex", + "serde", + "serde_json", + "sha3", + "thiserror 1.0.69", + "uint 0.9.5", +] + +[[package]] +name = "ethbloom" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-codec 0.6.0", + "impl-rlp 0.3.0", + "impl-serde 0.4.0", + "scale-info", + "tiny-keccak", +] + [[package]] name = "ethbloom" version = "0.14.1" @@ -1477,25 +1751,289 @@ checksum = "8c321610643004cf908ec0f5f2aa0d8f1f8e14b540562a2887a1111ff1ecbf7b" dependencies = [ "crunchy", "fixed-hash", - "impl-rlp", - "impl-serde", + "impl-rlp 0.4.0", + "impl-serde 0.5.0", "tiny-keccak", ] +[[package]] +name = "ethereum-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +dependencies = [ + "ethbloom 0.13.0", + "fixed-hash", + "impl-codec 0.6.0", + "impl-rlp 0.3.0", + "impl-serde 0.4.0", + "primitive-types 0.12.2", + "scale-info", + "uint 0.9.5", +] + [[package]] name = "ethereum-types" version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ab15ed80916029f878e0267c3a9f92b67df55e79af370bf66199059ae2b4ee3" dependencies = [ - "ethbloom", + "ethbloom 0.14.1", "fixed-hash", - "impl-rlp", - "impl-serde", + "impl-rlp 0.4.0", + "impl-serde 0.5.0", "primitive-types 0.13.1", "uint 0.10.0", ] +[[package]] +name = "ethers" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "816841ea989f0c69e459af1cf23a6b0033b19a55424a1ea3a30099becdb8dec0" +dependencies = [ + "ethers-addressbook", + "ethers-contract", + "ethers-core", + "ethers-etherscan", + "ethers-middleware", + "ethers-providers", + "ethers-signers", + "ethers-solc", +] + +[[package]] +name = "ethers-addressbook" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5495afd16b4faa556c3bba1f21b98b4983e53c1755022377051a975c3b021759" +dependencies = [ + "ethers-core", + "once_cell", + "serde", + "serde_json", +] + +[[package]] +name = "ethers-contract" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fceafa3578c836eeb874af87abacfb041f92b4da0a78a5edd042564b8ecdaaa" +dependencies = [ + "const-hex", + "ethers-contract-abigen", + "ethers-contract-derive", + "ethers-core", + "ethers-providers", + "futures-util", + "once_cell", + "pin-project", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "ethers-contract-abigen" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04ba01fbc2331a38c429eb95d4a570166781f14290ef9fdb144278a90b5a739b" +dependencies = [ + "Inflector", + "const-hex", + "dunce", + "ethers-core", + "ethers-etherscan", + "eyre", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "reqwest 0.11.27", + "serde", + "serde_json", + "syn 2.0.98", + "toml", + "walkdir", +] + +[[package]] +name = "ethers-contract-derive" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87689dcabc0051cde10caaade298f9e9093d65f6125c14575db3fd8c669a168f" +dependencies = [ + "Inflector", + "const-hex", + "ethers-contract-abigen", + "ethers-core", + "proc-macro2", + "quote", + "serde_json", + "syn 2.0.98", +] + +[[package]] +name = "ethers-core" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d80cc6ad30b14a48ab786523af33b37f28a8623fc06afd55324816ef18fb1f" +dependencies = [ + "arrayvec", + "bytes", + "cargo_metadata", + "chrono", + "const-hex", + "elliptic-curve", + "ethabi", + "generic-array", + "k256", + "num_enum", + "once_cell", + "open-fastrlp", + "rand", + "rlp 0.5.2", + "serde", + "serde_json", + "strum 0.26.3", + "syn 2.0.98", + "tempfile", + "thiserror 1.0.69", + "tiny-keccak", + "unicode-xid", +] + +[[package]] +name = "ethers-etherscan" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e79e5973c26d4baf0ce55520bd732314328cabe53193286671b47144145b9649" +dependencies = [ + "chrono", + "ethers-core", + "reqwest 0.11.27", + "semver 1.0.25", + "serde", + "serde_json", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "ethers-middleware" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48f9fdf09aec667c099909d91908d5eaf9be1bd0e2500ba4172c1d28bfaa43de" +dependencies = [ + "async-trait", + "auto_impl", + "ethers-contract", + "ethers-core", + "ethers-etherscan", + "ethers-providers", + "ethers-signers", + "futures-channel", + "futures-locks", + "futures-util", + "instant", + "reqwest 0.11.27", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tracing", + "tracing-futures", + "url", +] + +[[package]] +name = "ethers-providers" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6434c9a33891f1effc9c75472e12666db2fa5a0fec4b29af6221680a6fe83ab2" +dependencies = [ + "async-trait", + "auto_impl", + "base64 0.21.7", + "bytes", + "const-hex", + "enr", + "ethers-core", + "futures-core", + "futures-timer", + "futures-util", + "hashers", + "http 0.2.12", + "instant", + "jsonwebtoken 8.3.0", + "once_cell", + "pin-project", + "reqwest 0.11.27", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tokio-tungstenite", + "tracing", + "tracing-futures", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "ws_stream_wasm", +] + +[[package]] +name = "ethers-signers" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "228875491c782ad851773b652dd8ecac62cda8571d3bc32a5853644dd26766c2" +dependencies = [ + "async-trait", + "coins-bip32", + "coins-bip39", + "const-hex", + "elliptic-curve", + "eth-keystore", + "ethers-core", + "rand", + "sha2 0.10.9", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "ethers-solc" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66244a771d9163282646dbeffe0e6eca4dda4146b6498644e678ac6089b11edd" +dependencies = [ + "cfg-if", + "const-hex", + "dirs 5.0.1", + "dunce", + "ethers-core", + "glob", + "home", + "md-5", + "num_cpus", + "once_cell", + "path-slash", + "rayon", + "regex", + "semver 1.0.25", + "serde", + "serde_json", + "solang-parser", + "svm-rs", + "thiserror 1.0.69", + "tiny-keccak", + "tokio", + "tracing", + "walkdir", + "yansi", +] + [[package]] name = "ethrex-blockchain" version = "0.1.0" @@ -1522,7 +2060,7 @@ dependencies = [ "bytes", "c-kzg", "crc32fast", - "ethereum-types", + "ethereum-types 0.15.1", "ethrex-rlp", "ethrex-trie", "hex", @@ -1547,12 +2085,12 @@ source = "git+https://github.com/lambdaclass/ethrex#214e3538a6bedec40d1949abd5e0 dependencies = [ "bytes", "envy", - "ethereum-types", + "ethereum-types 0.15.1", "ethrex-rpc", "hex", - "jsonwebtoken", + "jsonwebtoken 9.3.1", "keccak-hash", - "reqwest", + "reqwest 0.12.12", "serde", "serde_json", "sha2 0.10.9", @@ -1570,7 +2108,7 @@ dependencies = [ "bytes", "directories", "envy", - "ethereum-types", + "ethereum-types 0.15.1", "ethrex-blockchain", "ethrex-common", "ethrex-dev", @@ -1583,10 +2121,10 @@ dependencies = [ "ethrex-trie", "ethrex-vm", "hex", - "jsonwebtoken", + "jsonwebtoken 9.3.1", "keccak-hash", "rand", - "reqwest", + "reqwest 0.12.12", "secp256k1", "serde", "serde_json", @@ -1674,7 +2212,7 @@ version = "0.1.0" source = "git+https://github.com/lambdaclass/ethrex#214e3538a6bedec40d1949abd5e06a30482a1848" dependencies = [ "bytes", - "ethereum-types", + "ethereum-types 0.15.1", "hex", "lazy_static", "snap", @@ -1699,12 +2237,12 @@ dependencies = [ "ethrex-storage", "ethrex-vm", "hex", - "jsonwebtoken", + "jsonwebtoken 9.3.1", "k256", "keccak-hash", "libsecp256k1", "rand", - "reqwest", + "reqwest 0.12.12", "secp256k1", "serde", "serde_json", @@ -1724,7 +2262,7 @@ version = "0.1.0" source = "git+https://github.com/lambdaclass/ethrex#214e3538a6bedec40d1949abd5e06a30482a1848" dependencies = [ "bytes", - "ethereum-types", + "ethereum-types 0.15.1", "ethrex-common", "ethrex-rlp", "ethrex-rpc", @@ -1732,7 +2270,7 @@ dependencies = [ "hex", "itertools 0.13.0", "keccak-hash", - "reqwest", + "reqwest 0.12.12", "secp256k1", "serde", "serde_json", @@ -1749,7 +2287,7 @@ dependencies = [ "anyhow", "async-trait", "bytes", - "ethereum-types", + "ethereum-types 0.15.1", "ethrex-common", "ethrex-rlp", "ethrex-trie", @@ -1769,7 +2307,7 @@ dependencies = [ "anyhow", "bytes", "digest 0.10.7", - "ethereum-types", + "ethereum-types 0.15.1", "ethrex-rlp", "hex", "lazy_static", @@ -1790,7 +2328,7 @@ dependencies = [ "bytes", "cfg-if", "derive_more", - "ethereum-types", + "ethereum-types 0.15.1", "ethrex-common", "ethrex-levm", "ethrex-rlp", @@ -1822,7 +2360,7 @@ version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e24cb5a94bcae1e5408b0effca5cd7172ea3c5755049c5f3af4cd283a165298" dependencies = [ - "bit-set", + "bit-set 0.8.0", "regex-automata 0.4.9", "regex-syntax 0.8.5", ] @@ -1896,6 +2434,22 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "flate2" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + [[package]] name = "fnv" version = "1.0.7" @@ -1932,6 +2486,16 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "fs2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "funty" version = "2.0.0" @@ -1986,6 +2550,16 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +[[package]] +name = "futures-locks" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45ec6fe3675af967e67c5536c0b9d44e34e6c52f86bedc4ea49c5317b8e94d06" +dependencies = [ + "futures-channel", + "futures-task", +] + [[package]] name = "futures-macro" version = "0.3.31" @@ -2009,6 +2583,16 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +[[package]] +name = "futures-timer" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" +dependencies = [ + "gloo-timers", + "send_wrapper 0.4.0", +] + [[package]] name = "futures-util" version = "0.3.31" @@ -2027,6 +2611,15 @@ dependencies = [ "slab", ] +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + [[package]] name = "gcd" version = "2.3.0" @@ -2081,6 +2674,18 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" +[[package]] +name = "gloo-timers" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + [[package]] name = "group" version = "0.13.0" @@ -2092,6 +2697,25 @@ dependencies = [ "subtle", ] +[[package]] +name = "h2" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap 2.7.1", + "slab", + "tokio", + "tokio-util", + "tracing", +] + [[package]] name = "h2" version = "0.4.8" @@ -2103,7 +2727,7 @@ dependencies = [ "fnv", "futures-core", "futures-sink", - "http", + "http 1.2.0", "indexmap 2.7.1", "slab", "tokio", @@ -2133,6 +2757,15 @@ dependencies = [ "serde", ] +[[package]] +name = "hashers" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2bca93b15ea5a746f220e56587f71e73c6165eab783df9e26590069953e3c30" +dependencies = [ + "fxhash", +] + [[package]] name = "headers" version = "0.4.0" @@ -2142,7 +2775,7 @@ dependencies = [ "base64 0.21.7", "bytes", "headers-core", - "http", + "http 1.2.0", "httpdate", "mime", "sha1", @@ -2154,7 +2787,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" dependencies = [ - "http", + "http 1.2.0", ] [[package]] @@ -2217,6 +2850,26 @@ dependencies = [ "hmac 0.8.1", ] +[[package]] +name = "home" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + [[package]] name = "http" version = "1.2.0" @@ -2228,6 +2881,17 @@ dependencies = [ "itoa", ] +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http 0.2.12", + "pin-project-lite", +] + [[package]] name = "http-body" version = "1.0.1" @@ -2235,7 +2899,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http", + "http 1.2.0", ] [[package]] @@ -2246,8 +2910,8 @@ checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", "futures-util", - "http", - "http-body", + "http 1.2.0", + "http-body 1.0.1", "pin-project-lite", ] @@ -2263,6 +2927,30 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" +[[package]] +name = "hyper" +version = "0.14.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + [[package]] name = "hyper" version = "1.6.0" @@ -2272,9 +2960,9 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "h2", - "http", - "http-body", + "h2 0.4.8", + "http 1.2.0", + "http-body 1.0.1", "httparse", "httpdate", "itoa", @@ -2284,6 +2972,20 @@ dependencies = [ "want", ] +[[package]] +name = "hyper-rustls" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +dependencies = [ + "futures-util", + "http 0.2.12", + "hyper 0.14.32", + "rustls 0.21.12", + "tokio", + "tokio-rustls 0.24.1", +] + [[package]] name = "hyper-rustls" version = "0.27.5" @@ -2291,13 +2993,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" dependencies = [ "futures-util", - "http", - "hyper", + "http 1.2.0", + "hyper 1.6.0", "hyper-util", - "rustls", + "rustls 0.23.23", "rustls-pki-types", "tokio", - "tokio-rustls", + "tokio-rustls 0.26.1", "tower-service", ] @@ -2309,7 +3011,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper", + "hyper 1.6.0", "hyper-util", "native-tls", "tokio", @@ -2326,9 +3028,9 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http", - "http-body", - "hyper", + "http 1.2.0", + "http-body 1.0.1", + "hyper 1.6.0", "pin-project-lite", "socket2", "tokio", @@ -2522,6 +3224,15 @@ dependencies = [ "parity-scale-codec", ] +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp 0.5.2", +] + [[package]] name = "impl-rlp" version = "0.4.0" @@ -2531,6 +3242,15 @@ dependencies = [ "rlp 0.6.1", ] +[[package]] +name = "impl-serde" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +dependencies = [ + "serde", +] + [[package]] name = "impl-serde" version = "0.5.0" @@ -2588,6 +3308,15 @@ dependencies = [ "generic-array", ] +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + [[package]] name = "ipnet" version = "2.11.0" @@ -2609,6 +3338,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + [[package]] name = "itertools" version = "0.12.1" @@ -2642,6 +3380,15 @@ version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" +[[package]] +name = "jobserver" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +dependencies = [ + "libc", +] + [[package]] name = "js-sys" version = "0.3.77" @@ -2652,6 +3399,20 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "jsonwebtoken" +version = "8.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" +dependencies = [ + "base64 0.21.7", + "pem 1.1.1", + "ring 0.16.20", + "serde", + "serde_json", + "simple_asn1", +] + [[package]] name = "jsonwebtoken" version = "9.3.1" @@ -2660,8 +3421,8 @@ checksum = "5a87cc7a48537badeae96744432de36f4be2b4a34a05a5ef32e9dd8a1c169dde" dependencies = [ "base64 0.22.1", "js-sys", - "pem", - "ring", + "pem 3.0.5", + "ring 0.17.11", "serde", "serde_json", "simple_asn1", @@ -2720,7 +3481,37 @@ dependencies = [ "hex", "sha2 0.10.9", "sp1_bls12_381", - "spin", + "spin 0.9.8", +] + +[[package]] +name = "lalrpop" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" +dependencies = [ + "ascii-canvas", + "bit-set 0.5.3", + "ena", + "itertools 0.11.0", + "lalrpop-util", + "petgraph", + "regex", + "regex-syntax 0.8.5", + "string_cache", + "term", + "tiny-keccak", + "unicode-xid", + "walkdir", +] + +[[package]] +name = "lalrpop-util" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" +dependencies = [ + "regex-automata 0.4.9", ] [[package]] @@ -2740,7 +3531,7 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" dependencies = [ - "spin", + "spin 0.9.8", ] [[package]] @@ -2761,7 +3552,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags", + "bitflags 2.8.0", "libc", ] @@ -2868,6 +3659,16 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest 0.10.7", +] + [[package]] name = "memchr" version = "2.7.4" @@ -2917,6 +3718,12 @@ dependencies = [ "tempfile", ] +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -3028,6 +3835,27 @@ dependencies = [ "libc", ] +[[package]] +name = "num_enum" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.98", +] + [[package]] name = "nybbles" version = "0.3.4" @@ -3060,13 +3888,38 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" +[[package]] +name = "open-fastrlp" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", + "ethereum-types 0.14.1", + "open-fastrlp-derive", +] + +[[package]] +name = "open-fastrlp-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" +dependencies = [ + "bytes", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "openssl" version = "0.10.71" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e14130c6a98cd258fdcb0fb6d744152343ff729cbfcb28c656a9d12b999fbcd" dependencies = [ - "bitflags", + "bitflags 2.8.0", "cfg-if", "foreign-types", "libc", @@ -3300,12 +4153,29 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "password-hash" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" +dependencies = [ + "base64ct", + "rand_core", + "subtle", +] + [[package]] name = "paste" version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "path-slash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42" + [[package]] name = "pbkdf2" version = "0.11.0" @@ -3313,6 +4183,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" dependencies = [ "digest 0.10.7", + "hmac 0.12.1", + "password-hash", + "sha2 0.10.9", +] + +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest 0.10.7", + "hmac 0.12.1", +] + +[[package]] +name = "pem" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +dependencies = [ + "base64 0.13.1", ] [[package]] @@ -3351,6 +4243,88 @@ dependencies = [ "ucd-trie", ] +[[package]] +name = "petgraph" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +dependencies = [ + "fixedbitset", + "indexmap 2.7.1", +] + +[[package]] +name = "pharos" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" +dependencies = [ + "futures", + "rustc_version 0.4.1", +] + +[[package]] +name = "phf" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +dependencies = [ + "phf_macros", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +dependencies = [ + "phf_shared", + "rand", +] + +[[package]] +name = "phf_macros" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + [[package]] name = "pin-project-lite" version = "0.2.16" @@ -3394,6 +4368,22 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "prettyplease" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6837b9e10d61f45f987d50808f83d1ee3d206c66acf650c3e4ae2e1f6ddedf55" +dependencies = [ + "proc-macro2", + "syn 2.0.98", +] + [[package]] name = "primeorder" version = "0.13.6" @@ -3411,6 +4401,9 @@ checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" dependencies = [ "fixed-hash", "impl-codec 0.6.0", + "impl-rlp 0.3.0", + "impl-serde 0.4.0", + "scale-info", "uint 0.9.5", ] @@ -3422,8 +4415,8 @@ checksum = "d15600a7d856470b7d278b3fe0e311fe28c2526348549f8ef2ff7db3299c87f5" dependencies = [ "fixed-hash", "impl-codec 0.7.1", - "impl-rlp", - "impl-serde", + "impl-rlp 0.4.0", + "impl-serde 0.5.0", "uint 0.10.0", ] @@ -3473,9 +4466,9 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" dependencies = [ - "bit-set", - "bit-vec", - "bitflags", + "bit-set 0.8.0", + "bit-vec 0.8.0", + "bitflags 2.8.0", "lazy_static", "num-traits", "rand", @@ -3574,7 +4567,7 @@ version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82b568323e98e49e2a0899dcee453dd679fae22d69adf9b11dd508d1549b7e2f" dependencies = [ - "bitflags", + "bitflags 2.8.0", ] [[package]] @@ -3643,6 +4636,47 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.32", + "hyper-rustls 0.24.2", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls 0.21.12", + "rustls-pemfile 1.0.4", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 0.1.2", + "system-configuration 0.5.1", + "tokio", + "tokio-rustls 0.24.1", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots", + "winreg", +] + [[package]] name = "reqwest" version = "0.12.12" @@ -3654,12 +4688,12 @@ dependencies = [ "encoding_rs", "futures-core", "futures-util", - "h2", - "http", - "http-body", + "h2 0.4.8", + "http 1.2.0", + "http-body 1.0.1", "http-body-util", - "hyper", - "hyper-rustls", + "hyper 1.6.0", + "hyper-rustls 0.27.5", "hyper-tls", "hyper-util", "ipnet", @@ -3670,12 +4704,12 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls-pemfile", + "rustls-pemfile 2.2.0", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper", - "system-configuration", + "sync_wrapper 1.0.2", + "system-configuration 0.6.1", "tokio", "tokio-native-tls", "tower", @@ -3758,7 +4792,7 @@ dependencies = [ "alloy-eip7702", "alloy-primitives", "auto_impl", - "bitflags", + "bitflags 2.8.0", "bitvec", "c-kzg", "cfg-if", @@ -3776,7 +4810,7 @@ dependencies = [ "clap_complete", "colored 3.0.0", "dialoguer", - "dirs", + "dirs 6.0.0", "ethrex-blockchain", "ethrex-common", "ethrex-l2", @@ -3792,7 +4826,7 @@ dependencies = [ "serde", "serde_json", "spinoff", - "strum", + "strum 0.27.1", "tokio", "toml", "tracing", @@ -3805,9 +4839,10 @@ version = "0.1.0" dependencies = [ "clap", "clap_complete", - "dirs", + "dirs 6.0.0", "envy", "eth-keystore", + "ethers", "ethrex-blockchain", "ethrex-common", "ethrex-l2", @@ -3816,11 +4851,11 @@ dependencies = [ "eyre", "hex", "itertools 0.14.0", - "jsonwebtoken", + "jsonwebtoken 9.3.1", "keccak-hash", "log", "rand", - "reqwest", + "reqwest 0.12.12", "secp256k1", "serde", "serde_json", @@ -3841,6 +4876,21 @@ dependencies = [ "subtle", ] +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin 0.5.2", + "untrusted 0.7.1", + "web-sys", + "winapi", +] + [[package]] name = "ring" version = "0.17.11" @@ -3851,7 +4901,7 @@ dependencies = [ "cfg-if", "getrandom 0.2.15", "libc", - "untrusted", + "untrusted 0.9.0", "windows-sys 0.52.0", ] @@ -3871,6 +4921,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" dependencies = [ "bytes", + "rlp-derive", "rustc-hex", ] @@ -3884,6 +4935,17 @@ dependencies = [ "rustc-hex", ] +[[package]] +name = "rlp-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "ruint" version = "1.13.1" @@ -3958,13 +5020,25 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags", + "bitflags 2.8.0", "errno", "libc", "linux-raw-sys", "windows-sys 0.59.0", ] +[[package]] +name = "rustls" +version = "0.21.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +dependencies = [ + "log", + "ring 0.17.11", + "rustls-webpki 0.101.7", + "sct", +] + [[package]] name = "rustls" version = "0.23.23" @@ -3973,11 +5047,20 @@ checksum = "47796c98c480fce5406ef69d1c76378375492c3b0a0de587be0c1d9feb12f395" dependencies = [ "once_cell", "rustls-pki-types", - "rustls-webpki", + "rustls-webpki 0.102.8", "subtle", "zeroize", ] +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + [[package]] name = "rustls-pemfile" version = "2.2.0" @@ -3993,15 +5076,25 @@ version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring 0.17.11", + "untrusted 0.9.0", +] + [[package]] name = "rustls-webpki" version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ - "ring", + "ring 0.17.11", "rustls-pki-types", - "untrusted", + "untrusted 0.9.0", ] [[package]] @@ -4046,6 +5139,30 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "scale-info" +version = "2.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" +dependencies = [ + "cfg-if", + "derive_more", + "parity-scale-codec", + "scale-info-derive", +] + +[[package]] +name = "scale-info-derive" +version = "2.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.98", +] + [[package]] name = "schannel" version = "0.1.27" @@ -4068,11 +5185,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d" dependencies = [ "hmac 0.12.1", - "pbkdf2", + "pbkdf2 0.11.0", "salsa20", "sha2 0.10.9", ] +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring 0.17.11", + "untrusted 0.9.0", +] + [[package]] name = "sec1" version = "0.7.3" @@ -4112,7 +5239,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags", + "bitflags 2.8.0", "core-foundation", "core-foundation-sys", "libc", @@ -4143,6 +5270,9 @@ name = "semver" version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" +dependencies = [ + "serde", +] [[package]] name = "semver-parser" @@ -4153,6 +5283,18 @@ dependencies = [ "pest", ] +[[package]] +name = "send_wrapper" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" + +[[package]] +name = "send_wrapper" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" + [[package]] name = "serde" version = "1.0.218" @@ -4354,6 +5496,12 @@ dependencies = [ "time", ] +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + [[package]] name = "slab" version = "0.4.9" @@ -4388,6 +5536,20 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "solang-parser" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c425ce1c59f4b154717592f0bdf4715c3a1d55058883622d3157e1f0908a5b26" +dependencies = [ + "itertools 0.11.0", + "lalrpop", + "lalrpop-util", + "phf", + "thiserror 1.0.69", + "unicode-xid", +] + [[package]] name = "sp1-lib" version = "4.1.1" @@ -4432,6 +5594,12 @@ dependencies = [ "subtle", ] +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + [[package]] name = "spin" version = "0.9.8" @@ -4471,18 +5639,52 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "string_cache" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" +dependencies = [ + "new_debug_unreachable", + "parking_lot", + "phf_shared", + "precomputed-hash", +] + [[package]] name = "strsim" version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros", +] + [[package]] name = "strum" version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f64def088c51c9510a8579e3c5d67c65349dcf755e5479ad3d010aa6454e2c32" +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.98", +] + [[package]] name = "substrate-bn" version = "0.6.0" @@ -4502,6 +5704,26 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +[[package]] +name = "svm-rs" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11297baafe5fa0c99d5722458eac6a5e25c01eb1b8e5cd137f54079093daa7a4" +dependencies = [ + "dirs 5.0.1", + "fs2", + "hex", + "once_cell", + "reqwest 0.11.27", + "semver 1.0.25", + "serde", + "serde_json", + "sha2 0.10.9", + "thiserror 1.0.69", + "url", + "zip", +] + [[package]] name = "syn" version = "1.0.109" @@ -4536,6 +5758,12 @@ dependencies = [ "syn 2.0.98", ] +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + [[package]] name = "sync_wrapper" version = "1.0.2" @@ -4556,15 +5784,36 @@ dependencies = [ "syn 2.0.98", ] +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys 0.5.0", +] + [[package]] name = "system-configuration" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags", + "bitflags 2.8.0", "core-foundation", - "system-configuration-sys", + "system-configuration-sys 0.6.0", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", ] [[package]] @@ -4597,6 +5846,17 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "term" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" +dependencies = [ + "dirs-next", + "rustversion", + "winapi", +] + [[package]] name = "thiserror" version = "1.0.69" @@ -4711,6 +5971,15 @@ name = "tinyvec" version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" @@ -4751,13 +6020,23 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls 0.21.12", + "tokio", +] + [[package]] name = "tokio-rustls" version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" dependencies = [ - "rustls", + "rustls 0.23.23", "tokio", ] @@ -4772,6 +6051,21 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" +dependencies = [ + "futures-util", + "log", + "rustls 0.21.12", + "tokio", + "tokio-rustls 0.24.1", + "tungstenite", + "webpki-roots", +] + [[package]] name = "tokio-util" version = "0.7.13" @@ -4830,7 +6124,7 @@ dependencies = [ "futures-core", "futures-util", "pin-project-lite", - "sync_wrapper", + "sync_wrapper 1.0.2", "tokio", "tower-layer", "tower-service", @@ -4843,9 +6137,9 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" dependencies = [ - "bitflags", + "bitflags 2.8.0", "bytes", - "http", + "http 1.2.0", "pin-project-lite", "tower-layer", "tower-service", @@ -4896,6 +6190,16 @@ dependencies = [ "valuable", ] +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] + [[package]] name = "tracing-log" version = "0.2.0" @@ -4931,6 +6235,26 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http 0.2.12", + "httparse", + "log", + "rand", + "rustls 0.21.12", + "sha1", + "thiserror 1.0.69", + "url", + "utf-8", +] + [[package]] name = "typenum" version = "1.18.0" @@ -4997,6 +6321,12 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + [[package]] name = "untrusted" version = "0.9.0" @@ -5014,6 +6344,12 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + [[package]] name = "utf16_iter" version = "1.0.5" @@ -5184,6 +6520,12 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "webpki-roots" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" + [[package]] name = "winapi" version = "0.3.9" @@ -5417,13 +6759,23 @@ dependencies = [ "memchr", ] +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + [[package]] name = "wit-bindgen-rt" version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" dependencies = [ - "bitflags", + "bitflags 2.8.0", ] [[package]] @@ -5438,6 +6790,25 @@ version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" +[[package]] +name = "ws_stream_wasm" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c173014acad22e83f16403ee360115b38846fe754e735c5d9d3803fe70c6abc" +dependencies = [ + "async_io_stream", + "futures", + "js-sys", + "log", + "pharos", + "rustc_version 0.4.1", + "send_wrapper 0.6.0", + "thiserror 2.0.11", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "wyz" version = "0.5.1" @@ -5447,6 +6818,12 @@ dependencies = [ "tap", ] +[[package]] +name = "yansi" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" + [[package]] name = "yoke" version = "0.7.5" @@ -5555,6 +6932,26 @@ dependencies = [ "syn 2.0.98", ] +[[package]] +name = "zip" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +dependencies = [ + "aes", + "byteorder", + "bzip2", + "constant_time_eq", + "crc32fast", + "crossbeam-utils", + "flate2", + "hmac 0.12.1", + "pbkdf2 0.11.0", + "sha1", + "time", + "zstd", +] + [[package]] name = "zkvm_interface" version = "0.1.0" @@ -5570,3 +6967,32 @@ dependencies = [ "serde_with", "thiserror 2.0.11", ] + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.15+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/sdk/Cargo.toml b/sdk/Cargo.toml index 54bfb7f..e558516 100644 --- a/sdk/Cargo.toml +++ b/sdk/Cargo.toml @@ -22,6 +22,7 @@ keccak-hash.workspace = true secp256k1.workspace = true eth-keystore = "0.5" rand = "0.8.5" +ethers = "2.0" # Utils hex.workspace = true @@ -51,3 +52,8 @@ path = "./src/sdk.rs" [[example]] name = "simple_usage" path = "./examples/simple_usage.rs" + + +[[example]] +name = "deploy_contract_with_keystore" +path = "./examples/deploy_contract_with_keystore.rs" diff --git a/sdk/examples/deploy_contract_with_keystore.rs b/sdk/examples/deploy_contract_with_keystore.rs index 9ae5c8b..aa6f978 100644 --- a/sdk/examples/deploy_contract_with_keystore.rs +++ b/sdk/examples/deploy_contract_with_keystore.rs @@ -1,4 +1,5 @@ -use ethrex_common::{Bytes, H160, H256, U256}; +use ethers::utils::hex; +use ethrex_common::{Bytes, H256, U256}; use rex_sdk::client::eth::get_address_from_secret_key; use rex_sdk::client::{EthClient, Overrides}; use rex_sdk::{ @@ -8,7 +9,6 @@ use rex_sdk::{ }; use secp256k1::SecretKey; use std::str::FromStr; -use std::time::{SystemTime, UNIX_EPOCH}; const RPC_URL: &str = "http://127.0.0.1:8545"; const RICH_WALLET_PK: &str = "5d2344259f42259f82d2c140aa66102ba89b57b4883ee441a8b312622bd42491"; @@ -19,13 +19,6 @@ fn get_contract_code() -> Result> { Ok(Bytes::from(bytes)) } -pub fn get_timestamp_nonce() -> u64 { - SystemTime::now() - .duration_since(UNIX_EPOCH) - .unwrap() - .as_secs() -} - #[tokio::main] async fn main() -> Result<(), Box> { // Create a keystore. @@ -35,8 +28,8 @@ async fn main() -> Result<(), Box> { let secret_key = load_keystore_from_path(None, "ContractKeystore", "LambdaClass")?; // Get address from secret key - let address = get_address_from_secret_key(&secret_key)?; - println!("address {:#x}", address); + let new_address = get_address_from_secret_key(&secret_key)?; + println!("New address: {:#x}", new_address); // Connect the client to a node let eth_client = EthClient::new(RPC_URL); @@ -49,7 +42,7 @@ async fn main() -> Result<(), Box> { let transfer_tx_hash = transfer( amount, rich_wallet_address, - address, + new_address, rich_wallet_pk, ð_client, Overrides { @@ -61,19 +54,20 @@ async fn main() -> Result<(), Box> { ) .await?; - let transfer_receipts = + let transfer_receipt = wait_for_transaction_receipt(transfer_tx_hash, ð_client, 10, true).await?; - println!("transfer_receipts: {transfer_receipts:?}"); + println!("Transfer Receipt: {transfer_receipt:?}"); // Deploy a contract. + let nonce = eth_client.get_nonce(new_address).await.unwrap(); let (contract_tx_hash, deployed_address) = eth_client .deploy( - address, + new_address, secret_key, get_contract_code()?, Overrides { value: Some(U256::from_dec_str("2000000000")?), - nonce: Some(get_timestamp_nonce()), + nonce: Some(nonce), chain_id: Some(9), gas_limit: Some(2000000), max_fee_per_gas: Some(2000000), @@ -82,30 +76,41 @@ async fn main() -> Result<(), Box> { }, ) .await?; - println!("deployed hash {:#x}", contract_tx_hash); - println!("deployed address {:#x}", deployed_address); - let contract_receipts = + println!("Contract deployment tx hash: {contract_tx_hash:#x}"); + println!("Contract deployment address: {deployed_address:#x}"); + + let contract_deploy_receipt = wait_for_transaction_receipt(contract_tx_hash, ð_client, 10, true).await?; - println!("contract_receipts: {contract_receipts:?}"); + println!("Contract deployment receipt: {contract_deploy_receipt:?}"); // Get the current block (for later). let from_block = eth_client.get_block_number().await?; // Prepare the calldata to call the contract function that emits a log. - let _msg = sign_hash(H256::random(), secret_key); + let function_selector = + ðers::utils::keccak256("recoverSigner(bytes32,bytes)".as_bytes())[..4]; + + let message = H256::random(); + let signature = sign_hash(message, secret_key); - let calldata = Bytes::new(); + let encoded_params = ethers::abi::encode(&[ + ethers::abi::Token::FixedBytes(message.as_bytes().to_vec()), + ethers::abi::Token::Bytes(signature), + ]); + + let mut calldata = function_selector.to_vec(); + calldata.extend_from_slice(&encoded_params); // Call the contract signing with the private key and wait for its receipt. - eth_client + let response = eth_client .call( deployed_address, - calldata, + Bytes::from(calldata), Overrides { - value: Some(U256::from_dec_str("200000")?), + value: Some(U256::from_dec_str("2000000")?), nonce: Some(0), - chain_id: Some(17000), + chain_id: Some(9), gas_limit: Some(2000000), max_fee_per_gas: Some(2000000), max_priority_fee_per_gas: Some(20000), @@ -114,12 +119,18 @@ async fn main() -> Result<(), Box> { ) .await?; + println!("Call response: {response}"); // Get the new current block. let to_block = eth_client.get_block_number().await?; // Get the emitted logs using the current block and the previous current block. let logs = eth_client - .get_logs_from_signature(from_block, to_block, deployed_address, "dsadasdas") + .get_logs_from_signature( + from_block, + to_block, + deployed_address, + "recoverSigner(bytes32,bytes)", + ) .await?; println!("Logs: {:?}", logs); From e25a6094128ed81679f32df671a086d68d85d1f0 Mon Sep 17 00:00:00 2001 From: Lucas Rack Date: Thu, 19 Jun 2025 14:43:54 -0300 Subject: [PATCH 08/31] Add git ignore --- .gitignore | 4 ++++ sdk/examples/deploy_contract_with_keystore.rs | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 6e771f8..c791b3b 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,7 @@ target/ # and can be added to the global gitignore or merged into this file. For a more nuclear # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ + +sdk/examples/contracts/package.json +sdk/examples/contracts/package-lock.json +sdk/examples/contracts/node_modules/ diff --git a/sdk/examples/deploy_contract_with_keystore.rs b/sdk/examples/deploy_contract_with_keystore.rs index aa6f978..20ecf8d 100644 --- a/sdk/examples/deploy_contract_with_keystore.rs +++ b/sdk/examples/deploy_contract_with_keystore.rs @@ -14,7 +14,7 @@ const RPC_URL: &str = "http://127.0.0.1:8545"; const RICH_WALLET_PK: &str = "5d2344259f42259f82d2c140aa66102ba89b57b4883ee441a8b312622bd42491"; fn get_contract_code() -> Result> { - let hex_str = "6080604052348015600e575f5ffd5b506106e68061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c806397aba7f91461002d575b5f5ffd5b6100476004803603810190610042919061051a565b610049565b005b5f6100538361009f565b90505f61006082846100d2565b90507f2fa45e087bb7f6d5a718cfa7af28ee7babd0187f360b2279b874bedf43a7a4e08160405161009191906105b3565b60405180910390a150505050565b5f7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f5281601c52603c5f209050919050565b5f5f5f5f6100e086866100fc565b9250925092506100f08282610151565b82935050505092915050565b5f5f5f604184510361013c575f5f5f602087015192506040870151915060608701515f1a905061012e888285856102b3565b95509550955050505061014a565b5f600285515f1b9250925092505b9250925092565b5f6003811115610164576101636105cc565b5b826003811115610177576101766105cc565b5b03156102af5760016003811115610191576101906105cc565b5b8260038111156101a4576101a36105cc565b5b036101db576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260038111156101ef576101ee6105cc565b5b826003811115610202576102016105cc565b5b0361024657805f1c6040517ffce698f700000000000000000000000000000000000000000000000000000000815260040161023d9190610611565b60405180910390fd5b600380811115610259576102586105cc565b5b82600381111561026c5761026b6105cc565b5b036102ae57806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016102a59190610639565b60405180910390fd5b5b5050565b5f5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c11156102ef575f600385925092509250610390565b5f6001888888886040515f8152602001604052604051610312949392919061066d565b6020604051602081039080840390855afa158015610332573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610383575f60015f5f1b93509350935050610390565b805f5f5f1b935093509350505b9450945094915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b6103bd816103ab565b81146103c7575f5ffd5b50565b5f813590506103d8816103b4565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61042c826103e6565b810181811067ffffffffffffffff8211171561044b5761044a6103f6565b5b80604052505050565b5f61045d61039a565b90506104698282610423565b919050565b5f67ffffffffffffffff821115610488576104876103f6565b5b610491826103e6565b9050602081019050919050565b828183375f83830152505050565b5f6104be6104b98461046e565b610454565b9050828152602081018484840111156104da576104d96103e2565b5b6104e584828561049e565b509392505050565b5f82601f830112610501576105006103de565b5b81356105118482602086016104ac565b91505092915050565b5f5f604083850312156105305761052f6103a3565b5b5f61053d858286016103ca565b925050602083013567ffffffffffffffff81111561055e5761055d6103a7565b5b61056a858286016104ed565b9150509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61059d82610574565b9050919050565b6105ad81610593565b82525050565b5f6020820190506105c65f8301846105a4565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f819050919050565b61060b816105f9565b82525050565b5f6020820190506106245f830184610602565b92915050565b610633816103ab565b82525050565b5f60208201905061064c5f83018461062a565b92915050565b5f60ff82169050919050565b61066781610652565b82525050565b5f6080820190506106805f83018761062a565b61068d602083018661065e565b61069a604083018561062a565b6106a7606083018461062a565b9594505050505056fea2646970667358221220e3eff56ac1443a06452af409dfd79dfd0132a1ec3d4a87fcd0483b1b5da07a1164736f6c634300081d0033"; + let hex_str = "6080604052348015600e575f5ffd5b506106e68061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c806397aba7f91461002d575b5f5ffd5b6100476004803603810190610042919061051a565b610049565b005b5f6100538361009f565b90505f61006082846100d2565b90507f2fa45e087bb7f6d5a718cfa7af28ee7babd0187f360b2279b874bedf43a7a4e08160405161009191906105b3565b60405180910390a150505050565b5f7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f5281601c52603c5f209050919050565b5f5f5f5f6100e086866100fc565b9250925092506100f08282610151565b82935050505092915050565b5f5f5f604184510361013c575f5f5f602087015192506040870151915060608701515f1a905061012e888285856102b3565b95509550955050505061014a565b5f600285515f1b9250925092505b9250925092565b5f6003811115610164576101636105cc565b5b826003811115610177576101766105cc565b5b03156102af5760016003811115610191576101906105cc565b5b8260038111156101a4576101a36105cc565b5b036101db576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260038111156101ef576101ee6105cc565b5b826003811115610202576102016105cc565b5b0361024657805f1c6040517ffce698f700000000000000000000000000000000000000000000000000000000815260040161023d9190610611565b60405180910390fd5b600380811115610259576102586105cc565b5b82600381111561026c5761026b6105cc565b5b036102ae57806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016102a59190610639565b60405180910390fd5b5b5050565b5f5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c11156102ef575f600385925092509250610390565b5f6001888888886040515f8152602001604052604051610312949392919061066d565b6020604051602081039080840390855afa158015610332573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610383575f60015f5f1b93509350935050610390565b805f5f5f1b935093509350505b9450945094915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b6103bd816103ab565b81146103c7575f5ffd5b50565b5f813590506103d8816103b4565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61042c826103e6565b810181811067ffffffffffffffff8211171561044b5761044a6103f6565b5b80604052505050565b5f61045d61039a565b90506104698282610423565b919050565b5f67ffffffffffffffff821115610488576104876103f6565b5b610491826103e6565b9050602081019050919050565b828183375f83830152505050565b5f6104be6104b98461046e565b610454565b9050828152602081018484840111156104da576104d96103e2565b5b6104e584828561049e565b509392505050565b5f82601f830112610501576105006103de565b5b81356105118482602086016104ac565b91505092915050565b5f5f604083850312156105305761052f6103a3565b5b5f61053d858286016103ca565b925050602083013567ffffffffffffffff81111561055e5761055d6103a7565b5b61056a858286016104ed565b9150509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61059d82610574565b9050919050565b6105ad81610593565b82525050565b5f6020820190506105c65f8301846105a4565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f819050919050565b61060b816105f9565b82525050565b5f6020820190506106245f830184610602565b92915050565b610633816103ab565b82525050565b5f60208201905061064c5f83018461062a565b92915050565b5f60ff82169050919050565b61066781610652565b82525050565b5f6080820190506106805f83018761062a565b61068d602083018661065e565b61069a604083018561062a565b6106a7606083018461062a565b9594505050505056fea2646970667358221220548f6fa6b1abdcb9c06fe5862d66fcd598129414b89af5c6a237be9cacf7121064736f6c634300081d0033"; let bytes = hex::decode(hex_str)?; Ok(Bytes::from(bytes)) } From b3900ba8c0b2b17ab2efcd0312a519f94ed07382 Mon Sep 17 00:00:00 2001 From: Lucas Rack Date: Thu, 19 Jun 2025 16:32:17 -0300 Subject: [PATCH 09/31] Change call data --- sdk/examples/deploy_contract_with_keystore.rs | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/sdk/examples/deploy_contract_with_keystore.rs b/sdk/examples/deploy_contract_with_keystore.rs index 20ecf8d..2576abe 100644 --- a/sdk/examples/deploy_contract_with_keystore.rs +++ b/sdk/examples/deploy_contract_with_keystore.rs @@ -1,5 +1,5 @@ -use ethers::utils::hex; use ethrex_common::{Bytes, H256, U256}; +use rex_sdk::calldata::{Value, encode_calldata}; use rex_sdk::client::eth::get_address_from_secret_key; use rex_sdk::client::{EthClient, Overrides}; use rex_sdk::{ @@ -88,19 +88,26 @@ async fn main() -> Result<(), Box> { let from_block = eth_client.get_block_number().await?; // Prepare the calldata to call the contract function that emits a log. - let function_selector = - ðers::utils::keccak256("recoverSigner(bytes32,bytes)".as_bytes())[..4]; let message = H256::random(); let signature = sign_hash(message, secret_key); - let encoded_params = ethers::abi::encode(&[ - ethers::abi::Token::FixedBytes(message.as_bytes().to_vec()), - ethers::abi::Token::Bytes(signature), - ]); + // let encoded_params = ethers::abi::encode(&[ + // ethers::abi::Token::FixedBytes(message.to_vec()), + // ethers::abi::Token::Bytes(signature), + // ]); - let mut calldata = function_selector.to_vec(); - calldata.extend_from_slice(&encoded_params); + // let mut calldata = function_selector.to_vec(); + // calldata.extend_from_slice(&encoded_params); + + let raw_function_signature = "recoverSigner(bytes32,bytes)"; + + let arguments = vec![ + Value::FixedBytes(Bytes::from(message.to_fixed_bytes().to_vec())), + Value::Bytes(Bytes::from(signature)), + ]; + + let calldata = encode_calldata(raw_function_signature, &arguments).unwrap(); // Call the contract signing with the private key and wait for its receipt. let response = eth_client From d714e989ac326de7e3cae1a6b4007126a360da39 Mon Sep 17 00:00:00 2001 From: Lucas Rack Date: Thu, 19 Jun 2025 16:35:42 -0300 Subject: [PATCH 10/31] Remove comment --- sdk/examples/deploy_contract_with_keystore.rs | 9 --------- 1 file changed, 9 deletions(-) diff --git a/sdk/examples/deploy_contract_with_keystore.rs b/sdk/examples/deploy_contract_with_keystore.rs index 2576abe..3440944 100644 --- a/sdk/examples/deploy_contract_with_keystore.rs +++ b/sdk/examples/deploy_contract_with_keystore.rs @@ -88,18 +88,9 @@ async fn main() -> Result<(), Box> { let from_block = eth_client.get_block_number().await?; // Prepare the calldata to call the contract function that emits a log. - let message = H256::random(); let signature = sign_hash(message, secret_key); - // let encoded_params = ethers::abi::encode(&[ - // ethers::abi::Token::FixedBytes(message.to_vec()), - // ethers::abi::Token::Bytes(signature), - // ]); - - // let mut calldata = function_selector.to_vec(); - // calldata.extend_from_slice(&encoded_params); - let raw_function_signature = "recoverSigner(bytes32,bytes)"; let arguments = vec![ From 2d986cb4aab590fe5f4bae683d7e7d72f23301db Mon Sep 17 00:00:00 2001 From: Lucas Rack Date: Thu, 19 Jun 2025 17:32:51 -0300 Subject: [PATCH 11/31] Last commit --- sdk/examples/contracts/recoverSigner.sol | 2 +- sdk/examples/contracts/solc_out/Address.bin | 1 + sdk/examples/contracts/solc_out/ECDSA.bin | 1 + sdk/examples/contracts/solc_out/Errors.bin | 1 + sdk/examples/contracts/solc_out/Math.bin | 1 + sdk/examples/contracts/solc_out/MessageHashUtils.bin | 1 + sdk/examples/contracts/solc_out/Panic.bin | 1 + sdk/examples/contracts/solc_out/RecoverSigner.bin | 1 + sdk/examples/contracts/solc_out/SafeCast.bin | 1 + sdk/examples/contracts/solc_out/SignedMath.bin | 1 + sdk/examples/contracts/solc_out/Strings.bin | 1 + sdk/examples/deploy_contract_with_keystore.rs | 9 +++++++-- 12 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 sdk/examples/contracts/solc_out/Address.bin create mode 100644 sdk/examples/contracts/solc_out/ECDSA.bin create mode 100644 sdk/examples/contracts/solc_out/Errors.bin create mode 100644 sdk/examples/contracts/solc_out/Math.bin create mode 100644 sdk/examples/contracts/solc_out/MessageHashUtils.bin create mode 100644 sdk/examples/contracts/solc_out/Panic.bin create mode 100644 sdk/examples/contracts/solc_out/RecoverSigner.bin create mode 100644 sdk/examples/contracts/solc_out/SafeCast.bin create mode 100644 sdk/examples/contracts/solc_out/SignedMath.bin create mode 100644 sdk/examples/contracts/solc_out/Strings.bin diff --git a/sdk/examples/contracts/recoverSigner.sol b/sdk/examples/contracts/recoverSigner.sol index 906230d..66f80d4 100644 --- a/sdk/examples/contracts/recoverSigner.sol +++ b/sdk/examples/contracts/recoverSigner.sol @@ -26,4 +26,4 @@ contract RecoverSigner { // generate binary: // npm init -y // npm install @openzeppelin/contracts -// solc --bin recoverSigner.sol --base-path . --include-path node_modules/ +// solc --bin recoverSigner.sol --base-path . --include-path node_modules/ -o solc_out --overwrite diff --git a/sdk/examples/contracts/solc_out/Address.bin b/sdk/examples/contracts/solc_out/Address.bin new file mode 100644 index 0000000..2591574 --- /dev/null +++ b/sdk/examples/contracts/solc_out/Address.bin @@ -0,0 +1 @@ +6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220c96a3abc7b1e53e091cd953fb51ec69be036a430329fc6f7875079005959102a64736f6c634300081d0033 \ No newline at end of file diff --git a/sdk/examples/contracts/solc_out/ECDSA.bin b/sdk/examples/contracts/solc_out/ECDSA.bin new file mode 100644 index 0000000..c6ec1f4 --- /dev/null +++ b/sdk/examples/contracts/solc_out/ECDSA.bin @@ -0,0 +1 @@ +6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220156f4ddc399a0a7fdf1c7ee04924188b65e1052911bb6a260b413984005a406364736f6c634300081d0033 \ No newline at end of file diff --git a/sdk/examples/contracts/solc_out/Errors.bin b/sdk/examples/contracts/solc_out/Errors.bin new file mode 100644 index 0000000..bea8723 --- /dev/null +++ b/sdk/examples/contracts/solc_out/Errors.bin @@ -0,0 +1 @@ +6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212203e16264def44762410966563017c88dff15ebc9c10f97c1cd3e4439971ef8f6c64736f6c634300081d0033 \ No newline at end of file diff --git a/sdk/examples/contracts/solc_out/Math.bin b/sdk/examples/contracts/solc_out/Math.bin new file mode 100644 index 0000000..5c777f9 --- /dev/null +++ b/sdk/examples/contracts/solc_out/Math.bin @@ -0,0 +1 @@ +6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212204e8635fb274a8bc0c465f215e293a9dc845dc3c039f4678a1f285cae9a14f2d964736f6c634300081d0033 \ No newline at end of file diff --git a/sdk/examples/contracts/solc_out/MessageHashUtils.bin b/sdk/examples/contracts/solc_out/MessageHashUtils.bin new file mode 100644 index 0000000..de15dd0 --- /dev/null +++ b/sdk/examples/contracts/solc_out/MessageHashUtils.bin @@ -0,0 +1 @@ +6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220e504c4ff794ff03e9cd77f4f6c59d870248475d745e8e4cd8e81108fc9e8f15264736f6c634300081d0033 \ No newline at end of file diff --git a/sdk/examples/contracts/solc_out/Panic.bin b/sdk/examples/contracts/solc_out/Panic.bin new file mode 100644 index 0000000..050a79d --- /dev/null +++ b/sdk/examples/contracts/solc_out/Panic.bin @@ -0,0 +1 @@ +6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220c9819e52b8d01db07ac18154a6cc103a795038d9beb2bf74d25bab0113d7face64736f6c634300081d0033 \ No newline at end of file diff --git a/sdk/examples/contracts/solc_out/RecoverSigner.bin b/sdk/examples/contracts/solc_out/RecoverSigner.bin new file mode 100644 index 0000000..fbc1189 --- /dev/null +++ b/sdk/examples/contracts/solc_out/RecoverSigner.bin @@ -0,0 +1 @@ +6080604052348015600e575f5ffd5b506106e68061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c806397aba7f91461002d575b5f5ffd5b6100476004803603810190610042919061051a565b610049565b005b5f6100538361009f565b90505f61006082846100d2565b90507f2fa45e087bb7f6d5a718cfa7af28ee7babd0187f360b2279b874bedf43a7a4e08160405161009191906105b3565b60405180910390a150505050565b5f7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f5281601c52603c5f209050919050565b5f5f5f5f6100e086866100fc565b9250925092506100f08282610151565b82935050505092915050565b5f5f5f604184510361013c575f5f5f602087015192506040870151915060608701515f1a905061012e888285856102b3565b95509550955050505061014a565b5f600285515f1b9250925092505b9250925092565b5f6003811115610164576101636105cc565b5b826003811115610177576101766105cc565b5b03156102af5760016003811115610191576101906105cc565b5b8260038111156101a4576101a36105cc565b5b036101db576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260038111156101ef576101ee6105cc565b5b826003811115610202576102016105cc565b5b0361024657805f1c6040517ffce698f700000000000000000000000000000000000000000000000000000000815260040161023d9190610611565b60405180910390fd5b600380811115610259576102586105cc565b5b82600381111561026c5761026b6105cc565b5b036102ae57806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016102a59190610639565b60405180910390fd5b5b5050565b5f5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c11156102ef575f600385925092509250610390565b5f6001888888886040515f8152602001604052604051610312949392919061066d565b6020604051602081039080840390855afa158015610332573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610383575f60015f5f1b93509350935050610390565b805f5f5f1b935093509350505b9450945094915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b6103bd816103ab565b81146103c7575f5ffd5b50565b5f813590506103d8816103b4565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61042c826103e6565b810181811067ffffffffffffffff8211171561044b5761044a6103f6565b5b80604052505050565b5f61045d61039a565b90506104698282610423565b919050565b5f67ffffffffffffffff821115610488576104876103f6565b5b610491826103e6565b9050602081019050919050565b828183375f83830152505050565b5f6104be6104b98461046e565b610454565b9050828152602081018484840111156104da576104d96103e2565b5b6104e584828561049e565b509392505050565b5f82601f830112610501576105006103de565b5b81356105118482602086016104ac565b91505092915050565b5f5f604083850312156105305761052f6103a3565b5b5f61053d858286016103ca565b925050602083013567ffffffffffffffff81111561055e5761055d6103a7565b5b61056a858286016104ed565b9150509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61059d82610574565b9050919050565b6105ad81610593565b82525050565b5f6020820190506105c65f8301846105a4565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f819050919050565b61060b816105f9565b82525050565b5f6020820190506106245f830184610602565b92915050565b610633816103ab565b82525050565b5f60208201905061064c5f83018461062a565b92915050565b5f60ff82169050919050565b61066781610652565b82525050565b5f6080820190506106805f83018761062a565b61068d602083018661065e565b61069a604083018561062a565b6106a7606083018461062a565b9594505050505056fea2646970667358221220548f6fa6b1abdcb9c06fe5862d66fcd598129414b89af5c6a237be9cacf7121064736f6c634300081d0033 \ No newline at end of file diff --git a/sdk/examples/contracts/solc_out/SafeCast.bin b/sdk/examples/contracts/solc_out/SafeCast.bin new file mode 100644 index 0000000..3952a12 --- /dev/null +++ b/sdk/examples/contracts/solc_out/SafeCast.bin @@ -0,0 +1 @@ +6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212203f1a009fcc7702087d87122afad8bf35f6335eedff824b438081909ac18829ee64736f6c634300081d0033 \ No newline at end of file diff --git a/sdk/examples/contracts/solc_out/SignedMath.bin b/sdk/examples/contracts/solc_out/SignedMath.bin new file mode 100644 index 0000000..6ae26fa --- /dev/null +++ b/sdk/examples/contracts/solc_out/SignedMath.bin @@ -0,0 +1 @@ +6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220fe19893cb2fcff1d2297568063d34e82795c5d7e5fe664c658829039603d1d8e64736f6c634300081d0033 \ No newline at end of file diff --git a/sdk/examples/contracts/solc_out/Strings.bin b/sdk/examples/contracts/solc_out/Strings.bin new file mode 100644 index 0000000..3a424ce --- /dev/null +++ b/sdk/examples/contracts/solc_out/Strings.bin @@ -0,0 +1 @@ +6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220e1fc0a0593297e8d633d1a029766ae61e438cfc17a72503675bdf4fd06f18f2f64736f6c634300081d0033 \ No newline at end of file diff --git a/sdk/examples/deploy_contract_with_keystore.rs b/sdk/examples/deploy_contract_with_keystore.rs index 3440944..8901fa4 100644 --- a/sdk/examples/deploy_contract_with_keystore.rs +++ b/sdk/examples/deploy_contract_with_keystore.rs @@ -8,8 +8,8 @@ use rex_sdk::{ transfer, wait_for_transaction_receipt, }; use secp256k1::SecretKey; +use std::fs::read_to_string; use std::str::FromStr; - const RPC_URL: &str = "http://127.0.0.1:8545"; const RICH_WALLET_PK: &str = "5d2344259f42259f82d2c140aa66102ba89b57b4883ee441a8b312622bd42491"; @@ -60,11 +60,16 @@ async fn main() -> Result<(), Box> { // Deploy a contract. let nonce = eth_client.get_nonce(new_address).await.unwrap(); + + let bytecode = hex::decode(read_to_string( + "examples/contracts/solc_out/RecoverSigner.bin", + )?)?; + let (contract_tx_hash, deployed_address) = eth_client .deploy( new_address, secret_key, - get_contract_code()?, + Bytes::from(bytecode), Overrides { value: Some(U256::from_dec_str("2000000000")?), nonce: Some(nonce), From 0af470c12cd252931cd946728669564f536c6e54 Mon Sep 17 00:00:00 2001 From: ilitteri Date: Thu, 19 Jun 2025 18:08:48 -0300 Subject: [PATCH 12/31] Untrack `solc_out` --- sdk/examples/contracts/solc_out/Address.bin | 1 - sdk/examples/contracts/solc_out/ECDSA.bin | 1 - sdk/examples/contracts/solc_out/Errors.bin | 1 - sdk/examples/contracts/solc_out/Math.bin | 1 - sdk/examples/contracts/solc_out/MessageHashUtils.bin | 1 - sdk/examples/contracts/solc_out/Panic.bin | 1 - sdk/examples/contracts/solc_out/RecoverSigner.bin | 1 - sdk/examples/contracts/solc_out/SafeCast.bin | 1 - sdk/examples/contracts/solc_out/SignedMath.bin | 1 - sdk/examples/contracts/solc_out/Strings.bin | 1 - 10 files changed, 10 deletions(-) delete mode 100644 sdk/examples/contracts/solc_out/Address.bin delete mode 100644 sdk/examples/contracts/solc_out/ECDSA.bin delete mode 100644 sdk/examples/contracts/solc_out/Errors.bin delete mode 100644 sdk/examples/contracts/solc_out/Math.bin delete mode 100644 sdk/examples/contracts/solc_out/MessageHashUtils.bin delete mode 100644 sdk/examples/contracts/solc_out/Panic.bin delete mode 100644 sdk/examples/contracts/solc_out/RecoverSigner.bin delete mode 100644 sdk/examples/contracts/solc_out/SafeCast.bin delete mode 100644 sdk/examples/contracts/solc_out/SignedMath.bin delete mode 100644 sdk/examples/contracts/solc_out/Strings.bin diff --git a/sdk/examples/contracts/solc_out/Address.bin b/sdk/examples/contracts/solc_out/Address.bin deleted file mode 100644 index 2591574..0000000 --- a/sdk/examples/contracts/solc_out/Address.bin +++ /dev/null @@ -1 +0,0 @@ -6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220c96a3abc7b1e53e091cd953fb51ec69be036a430329fc6f7875079005959102a64736f6c634300081d0033 \ No newline at end of file diff --git a/sdk/examples/contracts/solc_out/ECDSA.bin b/sdk/examples/contracts/solc_out/ECDSA.bin deleted file mode 100644 index c6ec1f4..0000000 --- a/sdk/examples/contracts/solc_out/ECDSA.bin +++ /dev/null @@ -1 +0,0 @@ -6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220156f4ddc399a0a7fdf1c7ee04924188b65e1052911bb6a260b413984005a406364736f6c634300081d0033 \ No newline at end of file diff --git a/sdk/examples/contracts/solc_out/Errors.bin b/sdk/examples/contracts/solc_out/Errors.bin deleted file mode 100644 index bea8723..0000000 --- a/sdk/examples/contracts/solc_out/Errors.bin +++ /dev/null @@ -1 +0,0 @@ -6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212203e16264def44762410966563017c88dff15ebc9c10f97c1cd3e4439971ef8f6c64736f6c634300081d0033 \ No newline at end of file diff --git a/sdk/examples/contracts/solc_out/Math.bin b/sdk/examples/contracts/solc_out/Math.bin deleted file mode 100644 index 5c777f9..0000000 --- a/sdk/examples/contracts/solc_out/Math.bin +++ /dev/null @@ -1 +0,0 @@ -6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212204e8635fb274a8bc0c465f215e293a9dc845dc3c039f4678a1f285cae9a14f2d964736f6c634300081d0033 \ No newline at end of file diff --git a/sdk/examples/contracts/solc_out/MessageHashUtils.bin b/sdk/examples/contracts/solc_out/MessageHashUtils.bin deleted file mode 100644 index de15dd0..0000000 --- a/sdk/examples/contracts/solc_out/MessageHashUtils.bin +++ /dev/null @@ -1 +0,0 @@ -6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220e504c4ff794ff03e9cd77f4f6c59d870248475d745e8e4cd8e81108fc9e8f15264736f6c634300081d0033 \ No newline at end of file diff --git a/sdk/examples/contracts/solc_out/Panic.bin b/sdk/examples/contracts/solc_out/Panic.bin deleted file mode 100644 index 050a79d..0000000 --- a/sdk/examples/contracts/solc_out/Panic.bin +++ /dev/null @@ -1 +0,0 @@ -6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220c9819e52b8d01db07ac18154a6cc103a795038d9beb2bf74d25bab0113d7face64736f6c634300081d0033 \ No newline at end of file diff --git a/sdk/examples/contracts/solc_out/RecoverSigner.bin b/sdk/examples/contracts/solc_out/RecoverSigner.bin deleted file mode 100644 index fbc1189..0000000 --- a/sdk/examples/contracts/solc_out/RecoverSigner.bin +++ /dev/null @@ -1 +0,0 @@ -6080604052348015600e575f5ffd5b506106e68061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c806397aba7f91461002d575b5f5ffd5b6100476004803603810190610042919061051a565b610049565b005b5f6100538361009f565b90505f61006082846100d2565b90507f2fa45e087bb7f6d5a718cfa7af28ee7babd0187f360b2279b874bedf43a7a4e08160405161009191906105b3565b60405180910390a150505050565b5f7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f5281601c52603c5f209050919050565b5f5f5f5f6100e086866100fc565b9250925092506100f08282610151565b82935050505092915050565b5f5f5f604184510361013c575f5f5f602087015192506040870151915060608701515f1a905061012e888285856102b3565b95509550955050505061014a565b5f600285515f1b9250925092505b9250925092565b5f6003811115610164576101636105cc565b5b826003811115610177576101766105cc565b5b03156102af5760016003811115610191576101906105cc565b5b8260038111156101a4576101a36105cc565b5b036101db576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260038111156101ef576101ee6105cc565b5b826003811115610202576102016105cc565b5b0361024657805f1c6040517ffce698f700000000000000000000000000000000000000000000000000000000815260040161023d9190610611565b60405180910390fd5b600380811115610259576102586105cc565b5b82600381111561026c5761026b6105cc565b5b036102ae57806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016102a59190610639565b60405180910390fd5b5b5050565b5f5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c11156102ef575f600385925092509250610390565b5f6001888888886040515f8152602001604052604051610312949392919061066d565b6020604051602081039080840390855afa158015610332573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610383575f60015f5f1b93509350935050610390565b805f5f5f1b935093509350505b9450945094915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b6103bd816103ab565b81146103c7575f5ffd5b50565b5f813590506103d8816103b4565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61042c826103e6565b810181811067ffffffffffffffff8211171561044b5761044a6103f6565b5b80604052505050565b5f61045d61039a565b90506104698282610423565b919050565b5f67ffffffffffffffff821115610488576104876103f6565b5b610491826103e6565b9050602081019050919050565b828183375f83830152505050565b5f6104be6104b98461046e565b610454565b9050828152602081018484840111156104da576104d96103e2565b5b6104e584828561049e565b509392505050565b5f82601f830112610501576105006103de565b5b81356105118482602086016104ac565b91505092915050565b5f5f604083850312156105305761052f6103a3565b5b5f61053d858286016103ca565b925050602083013567ffffffffffffffff81111561055e5761055d6103a7565b5b61056a858286016104ed565b9150509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61059d82610574565b9050919050565b6105ad81610593565b82525050565b5f6020820190506105c65f8301846105a4565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f819050919050565b61060b816105f9565b82525050565b5f6020820190506106245f830184610602565b92915050565b610633816103ab565b82525050565b5f60208201905061064c5f83018461062a565b92915050565b5f60ff82169050919050565b61066781610652565b82525050565b5f6080820190506106805f83018761062a565b61068d602083018661065e565b61069a604083018561062a565b6106a7606083018461062a565b9594505050505056fea2646970667358221220548f6fa6b1abdcb9c06fe5862d66fcd598129414b89af5c6a237be9cacf7121064736f6c634300081d0033 \ No newline at end of file diff --git a/sdk/examples/contracts/solc_out/SafeCast.bin b/sdk/examples/contracts/solc_out/SafeCast.bin deleted file mode 100644 index 3952a12..0000000 --- a/sdk/examples/contracts/solc_out/SafeCast.bin +++ /dev/null @@ -1 +0,0 @@ -6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212203f1a009fcc7702087d87122afad8bf35f6335eedff824b438081909ac18829ee64736f6c634300081d0033 \ No newline at end of file diff --git a/sdk/examples/contracts/solc_out/SignedMath.bin b/sdk/examples/contracts/solc_out/SignedMath.bin deleted file mode 100644 index 6ae26fa..0000000 --- a/sdk/examples/contracts/solc_out/SignedMath.bin +++ /dev/null @@ -1 +0,0 @@ -6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220fe19893cb2fcff1d2297568063d34e82795c5d7e5fe664c658829039603d1d8e64736f6c634300081d0033 \ No newline at end of file diff --git a/sdk/examples/contracts/solc_out/Strings.bin b/sdk/examples/contracts/solc_out/Strings.bin deleted file mode 100644 index 3a424ce..0000000 --- a/sdk/examples/contracts/solc_out/Strings.bin +++ /dev/null @@ -1 +0,0 @@ -6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220e1fc0a0593297e8d633d1a029766ae61e438cfc17a72503675bdf4fd06f18f2f64736f6c634300081d0033 \ No newline at end of file From 8fc17b5c66480104e2b35102c734ff710962c16d Mon Sep 17 00:00:00 2001 From: ilitteri Date: Thu, 19 Jun 2025 18:08:57 -0300 Subject: [PATCH 13/31] Rename contract file --- .../recoverSigner.sol => keystore/contracts/RecoverSigner.sol} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename sdk/examples/{contracts/recoverSigner.sol => keystore/contracts/RecoverSigner.sol} (100%) diff --git a/sdk/examples/contracts/recoverSigner.sol b/sdk/examples/keystore/contracts/RecoverSigner.sol similarity index 100% rename from sdk/examples/contracts/recoverSigner.sol rename to sdk/examples/keystore/contracts/RecoverSigner.sol From 7f2c418c7c436f911a2211398a48e4c9a0675aae Mon Sep 17 00:00:00 2001 From: ilitteri Date: Thu, 19 Jun 2025 18:09:12 -0300 Subject: [PATCH 14/31] Add `.gitignore` to SDK --- sdk/.gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 sdk/.gitignore diff --git a/sdk/.gitignore b/sdk/.gitignore new file mode 100644 index 0000000..6362f16 --- /dev/null +++ b/sdk/.gitignore @@ -0,0 +1,2 @@ +examples/keystore/lib +examples/keystore/solc_out From 09167bd914b378eb14adec82ce95ce40161eab29 Mon Sep 17 00:00:00 2001 From: ilitteri Date: Thu, 19 Jun 2025 18:09:55 -0300 Subject: [PATCH 15/31] Reorder keystore example structure + download deps and compile contract --- sdk/Cargo.toml | 4 +- sdk/examples/deploy_contract_with_keystore.rs | 142 --------- sdk/examples/keystore/main.rs | 274 ++++++++++++++++++ 3 files changed, 276 insertions(+), 144 deletions(-) delete mode 100644 sdk/examples/deploy_contract_with_keystore.rs create mode 100644 sdk/examples/keystore/main.rs diff --git a/sdk/Cargo.toml b/sdk/Cargo.toml index e558516..627b1a6 100644 --- a/sdk/Cargo.toml +++ b/sdk/Cargo.toml @@ -55,5 +55,5 @@ path = "./examples/simple_usage.rs" [[example]] -name = "deploy_contract_with_keystore" -path = "./examples/deploy_contract_with_keystore.rs" +name = "keystore" +path = "./examples/keystore/main.rs" diff --git a/sdk/examples/deploy_contract_with_keystore.rs b/sdk/examples/deploy_contract_with_keystore.rs deleted file mode 100644 index 8901fa4..0000000 --- a/sdk/examples/deploy_contract_with_keystore.rs +++ /dev/null @@ -1,142 +0,0 @@ -use ethrex_common::{Bytes, H256, U256}; -use rex_sdk::calldata::{Value, encode_calldata}; -use rex_sdk::client::eth::get_address_from_secret_key; -use rex_sdk::client::{EthClient, Overrides}; -use rex_sdk::{ - keystore::{create_new_keystore, load_keystore_from_path}, - sign::sign_hash, - transfer, wait_for_transaction_receipt, -}; -use secp256k1::SecretKey; -use std::fs::read_to_string; -use std::str::FromStr; -const RPC_URL: &str = "http://127.0.0.1:8545"; -const RICH_WALLET_PK: &str = "5d2344259f42259f82d2c140aa66102ba89b57b4883ee441a8b312622bd42491"; - -fn get_contract_code() -> Result> { - let hex_str = "6080604052348015600e575f5ffd5b506106e68061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c806397aba7f91461002d575b5f5ffd5b6100476004803603810190610042919061051a565b610049565b005b5f6100538361009f565b90505f61006082846100d2565b90507f2fa45e087bb7f6d5a718cfa7af28ee7babd0187f360b2279b874bedf43a7a4e08160405161009191906105b3565b60405180910390a150505050565b5f7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f5281601c52603c5f209050919050565b5f5f5f5f6100e086866100fc565b9250925092506100f08282610151565b82935050505092915050565b5f5f5f604184510361013c575f5f5f602087015192506040870151915060608701515f1a905061012e888285856102b3565b95509550955050505061014a565b5f600285515f1b9250925092505b9250925092565b5f6003811115610164576101636105cc565b5b826003811115610177576101766105cc565b5b03156102af5760016003811115610191576101906105cc565b5b8260038111156101a4576101a36105cc565b5b036101db576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260038111156101ef576101ee6105cc565b5b826003811115610202576102016105cc565b5b0361024657805f1c6040517ffce698f700000000000000000000000000000000000000000000000000000000815260040161023d9190610611565b60405180910390fd5b600380811115610259576102586105cc565b5b82600381111561026c5761026b6105cc565b5b036102ae57806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016102a59190610639565b60405180910390fd5b5b5050565b5f5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c11156102ef575f600385925092509250610390565b5f6001888888886040515f8152602001604052604051610312949392919061066d565b6020604051602081039080840390855afa158015610332573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610383575f60015f5f1b93509350935050610390565b805f5f5f1b935093509350505b9450945094915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b6103bd816103ab565b81146103c7575f5ffd5b50565b5f813590506103d8816103b4565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61042c826103e6565b810181811067ffffffffffffffff8211171561044b5761044a6103f6565b5b80604052505050565b5f61045d61039a565b90506104698282610423565b919050565b5f67ffffffffffffffff821115610488576104876103f6565b5b610491826103e6565b9050602081019050919050565b828183375f83830152505050565b5f6104be6104b98461046e565b610454565b9050828152602081018484840111156104da576104d96103e2565b5b6104e584828561049e565b509392505050565b5f82601f830112610501576105006103de565b5b81356105118482602086016104ac565b91505092915050565b5f5f604083850312156105305761052f6103a3565b5b5f61053d858286016103ca565b925050602083013567ffffffffffffffff81111561055e5761055d6103a7565b5b61056a858286016104ed565b9150509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61059d82610574565b9050919050565b6105ad81610593565b82525050565b5f6020820190506105c65f8301846105a4565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f819050919050565b61060b816105f9565b82525050565b5f6020820190506106245f830184610602565b92915050565b610633816103ab565b82525050565b5f60208201905061064c5f83018461062a565b92915050565b5f60ff82169050919050565b61066781610652565b82525050565b5f6080820190506106805f83018761062a565b61068d602083018661065e565b61069a604083018561062a565b6106a7606083018461062a565b9594505050505056fea2646970667358221220548f6fa6b1abdcb9c06fe5862d66fcd598129414b89af5c6a237be9cacf7121064736f6c634300081d0033"; - let bytes = hex::decode(hex_str)?; - Ok(Bytes::from(bytes)) -} - -#[tokio::main] -async fn main() -> Result<(), Box> { - // Create a keystore. - create_new_keystore(None, Some("ContractKeystore"), "LambdaClass")?; - - // Load the secret key from the keystore. - let secret_key = load_keystore_from_path(None, "ContractKeystore", "LambdaClass")?; - - // Get address from secret key - let new_address = get_address_from_secret_key(&secret_key)?; - println!("New address: {:#x}", new_address); - - // Connect the client to a node - let eth_client = EthClient::new(RPC_URL); - - // Transfer funds from a rich wallet to the keystore's account - let rich_wallet_pk = SecretKey::from_str(RICH_WALLET_PK)?; - let rich_wallet_address = get_address_from_secret_key(&rich_wallet_pk)?; - let amount = U256::from_dec_str("1000000000000000000").unwrap(); - let nonce = eth_client.get_nonce(rich_wallet_address).await.unwrap(); - let transfer_tx_hash = transfer( - amount, - rich_wallet_address, - new_address, - rich_wallet_pk, - ð_client, - Overrides { - value: Some(amount), - nonce: Some(nonce), - chain_id: Some(9), - ..Default::default() - }, - ) - .await?; - - let transfer_receipt = - wait_for_transaction_receipt(transfer_tx_hash, ð_client, 10, true).await?; - println!("Transfer Receipt: {transfer_receipt:?}"); - - // Deploy a contract. - let nonce = eth_client.get_nonce(new_address).await.unwrap(); - - let bytecode = hex::decode(read_to_string( - "examples/contracts/solc_out/RecoverSigner.bin", - )?)?; - - let (contract_tx_hash, deployed_address) = eth_client - .deploy( - new_address, - secret_key, - Bytes::from(bytecode), - Overrides { - value: Some(U256::from_dec_str("2000000000")?), - nonce: Some(nonce), - chain_id: Some(9), - gas_limit: Some(2000000), - max_fee_per_gas: Some(2000000), - max_priority_fee_per_gas: Some(2000000), - ..Default::default() - }, - ) - .await?; - - println!("Contract deployment tx hash: {contract_tx_hash:#x}"); - println!("Contract deployment address: {deployed_address:#x}"); - - let contract_deploy_receipt = - wait_for_transaction_receipt(contract_tx_hash, ð_client, 10, true).await?; - println!("Contract deployment receipt: {contract_deploy_receipt:?}"); - - // Get the current block (for later). - let from_block = eth_client.get_block_number().await?; - - // Prepare the calldata to call the contract function that emits a log. - let message = H256::random(); - let signature = sign_hash(message, secret_key); - - let raw_function_signature = "recoverSigner(bytes32,bytes)"; - - let arguments = vec![ - Value::FixedBytes(Bytes::from(message.to_fixed_bytes().to_vec())), - Value::Bytes(Bytes::from(signature)), - ]; - - let calldata = encode_calldata(raw_function_signature, &arguments).unwrap(); - - // Call the contract signing with the private key and wait for its receipt. - let response = eth_client - .call( - deployed_address, - Bytes::from(calldata), - Overrides { - value: Some(U256::from_dec_str("2000000")?), - nonce: Some(0), - chain_id: Some(9), - gas_limit: Some(2000000), - max_fee_per_gas: Some(2000000), - max_priority_fee_per_gas: Some(20000), - ..Default::default() - }, - ) - .await?; - - println!("Call response: {response}"); - // Get the new current block. - let to_block = eth_client.get_block_number().await?; - - // Get the emitted logs using the current block and the previous current block. - let logs = eth_client - .get_logs_from_signature( - from_block, - to_block, - deployed_address, - "recoverSigner(bytes32,bytes)", - ) - .await?; - - println!("Logs: {:?}", logs); - - Ok(()) -} diff --git a/sdk/examples/keystore/main.rs b/sdk/examples/keystore/main.rs new file mode 100644 index 0000000..e3c0d1d --- /dev/null +++ b/sdk/examples/keystore/main.rs @@ -0,0 +1,274 @@ +use ethrex_common::{Bytes, H256, U256}; +use rex_sdk::calldata::{Value, encode_calldata}; +use rex_sdk::client::eth::get_address_from_secret_key; +use rex_sdk::client::{EthClient, Overrides}; +use rex_sdk::{ + keystore::{create_new_keystore, load_keystore_from_path}, + sign::sign_hash, + transfer, wait_for_transaction_receipt, +}; +use secp256k1::SecretKey; +use std::fs::read_to_string; +use std::path::PathBuf; +use std::process::{Command, ExitStatus}; +use std::str::FromStr; +const RPC_URL: &str = "http://127.0.0.1:8545"; +const RICH_WALLET_PK: &str = "5d2344259f42259f82d2c140aa66102ba89b57b4883ee441a8b312622bd42491"; + +fn get_contract_code() -> Result> { + let hex_str = "6080604052348015600e575f5ffd5b506106e68061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c806397aba7f91461002d575b5f5ffd5b6100476004803603810190610042919061051a565b610049565b005b5f6100538361009f565b90505f61006082846100d2565b90507f2fa45e087bb7f6d5a718cfa7af28ee7babd0187f360b2279b874bedf43a7a4e08160405161009191906105b3565b60405180910390a150505050565b5f7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f5281601c52603c5f209050919050565b5f5f5f5f6100e086866100fc565b9250925092506100f08282610151565b82935050505092915050565b5f5f5f604184510361013c575f5f5f602087015192506040870151915060608701515f1a905061012e888285856102b3565b95509550955050505061014a565b5f600285515f1b9250925092505b9250925092565b5f6003811115610164576101636105cc565b5b826003811115610177576101766105cc565b5b03156102af5760016003811115610191576101906105cc565b5b8260038111156101a4576101a36105cc565b5b036101db576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260038111156101ef576101ee6105cc565b5b826003811115610202576102016105cc565b5b0361024657805f1c6040517ffce698f700000000000000000000000000000000000000000000000000000000815260040161023d9190610611565b60405180910390fd5b600380811115610259576102586105cc565b5b82600381111561026c5761026b6105cc565b5b036102ae57806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016102a59190610639565b60405180910390fd5b5b5050565b5f5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c11156102ef575f600385925092509250610390565b5f6001888888886040515f8152602001604052604051610312949392919061066d565b6020604051602081039080840390855afa158015610332573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610383575f60015f5f1b93509350935050610390565b805f5f5f1b935093509350505b9450945094915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b6103bd816103ab565b81146103c7575f5ffd5b50565b5f813590506103d8816103b4565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61042c826103e6565b810181811067ffffffffffffffff8211171561044b5761044a6103f6565b5b80604052505050565b5f61045d61039a565b90506104698282610423565b919050565b5f67ffffffffffffffff821115610488576104876103f6565b5b610491826103e6565b9050602081019050919050565b828183375f83830152505050565b5f6104be6104b98461046e565b610454565b9050828152602081018484840111156104da576104d96103e2565b5b6104e584828561049e565b509392505050565b5f82601f830112610501576105006103de565b5b81356105118482602086016104ac565b91505092915050565b5f5f604083850312156105305761052f6103a3565b5b5f61053d858286016103ca565b925050602083013567ffffffffffffffff81111561055e5761055d6103a7565b5b61056a858286016104ed565b9150509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61059d82610574565b9050919050565b6105ad81610593565b82525050565b5f6020820190506105c65f8301846105a4565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f819050919050565b61060b816105f9565b82525050565b5f6020820190506106245f830184610602565b92915050565b610633816103ab565b82525050565b5f60208201905061064c5f83018461062a565b92915050565b5f60ff82169050919050565b61066781610652565b82525050565b5f6080820190506106805f83018761062a565b61068d602083018661065e565b61069a604083018561062a565b6106a7606083018461062a565b9594505050505056fea2646970667358221220548f6fa6b1abdcb9c06fe5862d66fcd598129414b89af5c6a237be9cacf7121064736f6c634300081d0033"; + let bytes = hex::decode(hex_str)?; + Ok(Bytes::from(bytes)) +} + +#[tokio::main] +async fn main() -> Result<(), Box> { + // Download contract deps and compile contract. + setup(); + + // // Create a keystore. + // create_new_keystore(None, Some("ContractKeystore"), "LambdaClass")?; + + // // Load the secret key from the keystore. + // let secret_key = load_keystore_from_path(None, "ContractKeystore", "LambdaClass")?; + + // // Get address from secret key + // let new_address = get_address_from_secret_key(&secret_key)?; + // println!("New address: {:#x}", new_address); + + // // Connect the client to a node + // let eth_client = EthClient::new(RPC_URL); + + // // Transfer funds from a rich wallet to the keystore's account + // let rich_wallet_pk = SecretKey::from_str(RICH_WALLET_PK)?; + // let rich_wallet_address = get_address_from_secret_key(&rich_wallet_pk)?; + // let amount = U256::from_dec_str("1000000000000000000").unwrap(); + // let nonce = eth_client.get_nonce(rich_wallet_address).await.unwrap(); + // let transfer_tx_hash = transfer( + // amount, + // rich_wallet_address, + // new_address, + // rich_wallet_pk, + // ð_client, + // Overrides { + // value: Some(amount), + // nonce: Some(nonce), + // chain_id: Some(9), + // ..Default::default() + // }, + // ) + // .await?; + + // let transfer_receipt = + // wait_for_transaction_receipt(transfer_tx_hash, ð_client, 10, true).await?; + // println!("Transfer Receipt: {transfer_receipt:?}"); + + // // Deploy a contract. + // let nonce = eth_client.get_nonce(new_address).await.unwrap(); + + // let bytecode = hex::decode(read_to_string( + // "examples/contracts/solc_out/RecoverSigner.bin", + // )?)?; + + // let (contract_tx_hash, deployed_address) = eth_client + // .deploy( + // new_address, + // secret_key, + // Bytes::from(bytecode), + // Overrides { + // value: Some(U256::from_dec_str("2000000000")?), + // nonce: Some(nonce), + // chain_id: Some(9), + // gas_limit: Some(2000000), + // max_fee_per_gas: Some(2000000), + // max_priority_fee_per_gas: Some(2000000), + // ..Default::default() + // }, + // ) + // .await?; + + // println!("Contract deployment tx hash: {contract_tx_hash:#x}"); + // println!("Contract deployment address: {deployed_address:#x}"); + + // let contract_deploy_receipt = + // wait_for_transaction_receipt(contract_tx_hash, ð_client, 10, true).await?; + // println!("Contract deployment receipt: {contract_deploy_receipt:?}"); + + // // Get the current block (for later). + // let from_block = eth_client.get_block_number().await?; + + // // Prepare the calldata to call the contract function that emits a log. + // let message = H256::random(); + // let signature = sign_hash(message, secret_key); + + // let raw_function_signature = "recoverSigner(bytes32,bytes)"; + + // let arguments = vec![ + // Value::FixedBytes(Bytes::from(message.to_fixed_bytes().to_vec())), + // Value::Bytes(Bytes::from(signature)), + // ]; + + // let calldata = encode_calldata(raw_function_signature, &arguments).unwrap(); + + // // Call the contract signing with the private key and wait for its receipt. + // let response = eth_client + // .call( + // deployed_address, + // Bytes::from(calldata), + // Overrides { + // value: Some(U256::from_dec_str("2000000")?), + // nonce: Some(0), + // chain_id: Some(9), + // gas_limit: Some(2000000), + // max_fee_per_gas: Some(2000000), + // max_priority_fee_per_gas: Some(20000), + // ..Default::default() + // }, + // ) + // .await?; + + // println!("Call response: {response}"); + // // Get the new current block. + // let to_block = eth_client.get_block_number().await?; + + // // Get the emitted logs using the current block and the previous current block. + // let logs = eth_client + // .get_logs_from_signature( + // from_block, + // to_block, + // deployed_address, + // "recoverSigner(bytes32,bytes)", + // ) + // .await?; + + // println!("Logs: {:?}", logs); + + Ok(()) +} + +fn setup() { + download_contract_deps(); + compile_contracts(); +} + +fn download_contract_deps() { + println!("Downloading contract dependencies"); + + let root_path = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + + let lib_path = root_path.join("examples/keystore/contracts/lib"); + + if !lib_path.exists() { + std::fs::create_dir_all(&lib_path).expect("Failed to create lib directory"); + } + + git_clone( + "https://github.com/OpenZeppelin/openzeppelin-contracts.git", + lib_path + .join("openzeppelin-contracts") + .to_str() + .expect("Failed to get str from path"), + None, + true, + ); + + println!("Contract dependencies downloaded"); +} + +pub fn git_clone(repository_url: &str, outdir: &str, branch: Option<&str>, submodules: bool) { + println!("Cloning repository: {repository_url} into {outdir}"); + + let mut git_cmd = Command::new("git"); + + let git_clone_cmd = git_cmd.arg("clone").arg(repository_url); + + if let Some(branch) = branch { + git_clone_cmd.arg("--branch").arg(branch); + } + + if submodules { + git_clone_cmd.arg("--recurse-submodules"); + } + + git_clone_cmd + .arg(outdir) + .spawn() + .expect("Failed to spawn git clone command") + .wait() + .expect("Failed to wait for git clone command"); + + println!("Repository cloned successfully"); +} + +fn compile_contracts() { + println!("Compiling contracts"); + + let root_path = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + + let contracts_path = root_path.join("examples/keystore/contracts"); + + compile_contract(contracts_path, "RecoverSigner.sol", false); + + println!("Contracts compiled"); +} + +pub fn compile_contract(general_contracts_path: PathBuf, contract_path: &str, runtime_bin: bool) { + let bin_flag = if runtime_bin { + "--bin-runtime" + } else { + "--bin" + }; + + // Both the contract path and the output path are relative to where the Makefile is. + if !Command::new("solc") + .arg(bin_flag) + .arg( + "@openzeppelin/contracts=".to_string() + + general_contracts_path + .join("lib") + .join("openzeppelin-contracts") + .join("lib") + .join("openzeppelin-contracts") + .join("contracts") + .to_str() + .expect("Failed to get str from path"), + ) + .arg( + "@openzeppelin/contracts=".to_string() + + general_contracts_path + .join("lib") + .join("openzeppelin-contracts") + .join("contracts") + .to_str() + .expect("Failed to get str from path"), + ) + .arg( + general_contracts_path + .join(contract_path) + .to_str() + .expect("Failed to get str from path"), + ) + .arg("--via-ir") + .arg("-o") + .arg( + general_contracts_path + .join("solc_out") + .to_str() + .expect("Failed to get str from path"), + ) + .arg("--overwrite") + .arg("--allow-paths") + .arg( + general_contracts_path + .to_str() + .expect("Failed to get str from path"), + ) + .spawn() + .expect("Failed to spawn solc command") + .wait() + .expect("Failed to wait for solc command") + .success() + { + panic!("Failed to compile {contract_path}"); + } +} From 764342f20376712c90730d691dcccbc486761261 Mon Sep 17 00:00:00 2001 From: ilitteri Date: Thu, 19 Jun 2025 18:17:19 -0300 Subject: [PATCH 16/31] Fix transfer impl Previous implementation required the user to set the value to transfer in the overrides. The new one makes use of the `amount` field. --- sdk/src/sdk.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sdk/src/sdk.rs b/sdk/src/sdk.rs index 8de7eb6..175ffb5 100644 --- a/sdk/src/sdk.rs +++ b/sdk/src/sdk.rs @@ -14,16 +14,19 @@ pub mod utils; pub mod l2; pub async fn transfer( - _amount: U256, + amount: U256, from: Address, to: Address, private_key: SecretKey, client: &EthClient, - overrides: Overrides, + mut overrides: Overrides, ) -> Result { + overrides.value = Some(amount); + let tx = client .build_eip1559_transaction(to, from, Default::default(), overrides, 10) .await?; + client.send_eip1559_transaction(&tx, &private_key).await } From 03327f2f8de4925631f49366708a916076edc472 Mon Sep 17 00:00:00 2001 From: ilitteri Date: Thu, 19 Jun 2025 18:26:13 -0300 Subject: [PATCH 17/31] Fix deployment --- sdk/examples/keystore/main.rs | 119 +++++++++++++++------------------- 1 file changed, 51 insertions(+), 68 deletions(-) diff --git a/sdk/examples/keystore/main.rs b/sdk/examples/keystore/main.rs index e3c0d1d..2aa0ac3 100644 --- a/sdk/examples/keystore/main.rs +++ b/sdk/examples/keystore/main.rs @@ -15,80 +15,63 @@ use std::str::FromStr; const RPC_URL: &str = "http://127.0.0.1:8545"; const RICH_WALLET_PK: &str = "5d2344259f42259f82d2c140aa66102ba89b57b4883ee441a8b312622bd42491"; -fn get_contract_code() -> Result> { - let hex_str = "6080604052348015600e575f5ffd5b506106e68061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c806397aba7f91461002d575b5f5ffd5b6100476004803603810190610042919061051a565b610049565b005b5f6100538361009f565b90505f61006082846100d2565b90507f2fa45e087bb7f6d5a718cfa7af28ee7babd0187f360b2279b874bedf43a7a4e08160405161009191906105b3565b60405180910390a150505050565b5f7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f5281601c52603c5f209050919050565b5f5f5f5f6100e086866100fc565b9250925092506100f08282610151565b82935050505092915050565b5f5f5f604184510361013c575f5f5f602087015192506040870151915060608701515f1a905061012e888285856102b3565b95509550955050505061014a565b5f600285515f1b9250925092505b9250925092565b5f6003811115610164576101636105cc565b5b826003811115610177576101766105cc565b5b03156102af5760016003811115610191576101906105cc565b5b8260038111156101a4576101a36105cc565b5b036101db576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260038111156101ef576101ee6105cc565b5b826003811115610202576102016105cc565b5b0361024657805f1c6040517ffce698f700000000000000000000000000000000000000000000000000000000815260040161023d9190610611565b60405180910390fd5b600380811115610259576102586105cc565b5b82600381111561026c5761026b6105cc565b5b036102ae57806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016102a59190610639565b60405180910390fd5b5b5050565b5f5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c11156102ef575f600385925092509250610390565b5f6001888888886040515f8152602001604052604051610312949392919061066d565b6020604051602081039080840390855afa158015610332573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610383575f60015f5f1b93509350935050610390565b805f5f5f1b935093509350505b9450945094915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b6103bd816103ab565b81146103c7575f5ffd5b50565b5f813590506103d8816103b4565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61042c826103e6565b810181811067ffffffffffffffff8211171561044b5761044a6103f6565b5b80604052505050565b5f61045d61039a565b90506104698282610423565b919050565b5f67ffffffffffffffff821115610488576104876103f6565b5b610491826103e6565b9050602081019050919050565b828183375f83830152505050565b5f6104be6104b98461046e565b610454565b9050828152602081018484840111156104da576104d96103e2565b5b6104e584828561049e565b509392505050565b5f82601f830112610501576105006103de565b5b81356105118482602086016104ac565b91505092915050565b5f5f604083850312156105305761052f6103a3565b5b5f61053d858286016103ca565b925050602083013567ffffffffffffffff81111561055e5761055d6103a7565b5b61056a858286016104ed565b9150509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61059d82610574565b9050919050565b6105ad81610593565b82525050565b5f6020820190506105c65f8301846105a4565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f819050919050565b61060b816105f9565b82525050565b5f6020820190506106245f830184610602565b92915050565b610633816103ab565b82525050565b5f60208201905061064c5f83018461062a565b92915050565b5f60ff82169050919050565b61066781610652565b82525050565b5f6080820190506106805f83018761062a565b61068d602083018661065e565b61069a604083018561062a565b6106a7606083018461062a565b9594505050505056fea2646970667358221220548f6fa6b1abdcb9c06fe5862d66fcd598129414b89af5c6a237be9cacf7121064736f6c634300081d0033"; - let bytes = hex::decode(hex_str)?; - Ok(Bytes::from(bytes)) -} - #[tokio::main] async fn main() -> Result<(), Box> { // Download contract deps and compile contract. setup(); - // // Create a keystore. - // create_new_keystore(None, Some("ContractKeystore"), "LambdaClass")?; - - // // Load the secret key from the keystore. - // let secret_key = load_keystore_from_path(None, "ContractKeystore", "LambdaClass")?; - - // // Get address from secret key - // let new_address = get_address_from_secret_key(&secret_key)?; - // println!("New address: {:#x}", new_address); - - // // Connect the client to a node - // let eth_client = EthClient::new(RPC_URL); - - // // Transfer funds from a rich wallet to the keystore's account - // let rich_wallet_pk = SecretKey::from_str(RICH_WALLET_PK)?; - // let rich_wallet_address = get_address_from_secret_key(&rich_wallet_pk)?; - // let amount = U256::from_dec_str("1000000000000000000").unwrap(); - // let nonce = eth_client.get_nonce(rich_wallet_address).await.unwrap(); - // let transfer_tx_hash = transfer( - // amount, - // rich_wallet_address, - // new_address, - // rich_wallet_pk, - // ð_client, - // Overrides { - // value: Some(amount), - // nonce: Some(nonce), - // chain_id: Some(9), - // ..Default::default() - // }, - // ) - // .await?; - - // let transfer_receipt = - // wait_for_transaction_receipt(transfer_tx_hash, ð_client, 10, true).await?; - // println!("Transfer Receipt: {transfer_receipt:?}"); - - // // Deploy a contract. - // let nonce = eth_client.get_nonce(new_address).await.unwrap(); - - // let bytecode = hex::decode(read_to_string( - // "examples/contracts/solc_out/RecoverSigner.bin", - // )?)?; - - // let (contract_tx_hash, deployed_address) = eth_client - // .deploy( - // new_address, - // secret_key, - // Bytes::from(bytecode), - // Overrides { - // value: Some(U256::from_dec_str("2000000000")?), - // nonce: Some(nonce), - // chain_id: Some(9), - // gas_limit: Some(2000000), - // max_fee_per_gas: Some(2000000), - // max_priority_fee_per_gas: Some(2000000), - // ..Default::default() - // }, - // ) - // .await?; + // Create a keystore. + create_new_keystore(None, Some("ContractKeystore"), "LambdaClass")?; + + // Load the secret key from the keystore. + let keystore_secret_key = load_keystore_from_path(None, "ContractKeystore", "LambdaClass")?; + let keystore_address = get_address_from_secret_key(&keystore_secret_key)?; + + println!("Keystore loaded successfully:"); + println!( + "Private Key: 0x{}", + hex::encode(keystore_secret_key.secret_bytes()) + ); + println!("Address: {keystore_address:#x}"); + + // Connect the client to a node + let eth_client = EthClient::new(RPC_URL); + + // Transfer funds from a rich wallet to the keystore's account + let rich_wallet_pk = SecretKey::from_str(RICH_WALLET_PK)?; + let rich_wallet_address = get_address_from_secret_key(&rich_wallet_pk)?; + let amount = U256::from_dec_str("1000000000000000000").expect("Failed to parse amount"); + let transfer_tx_hash = transfer( + amount, + rich_wallet_address, + keystore_address, + rich_wallet_pk, + ð_client, + Overrides::default(), + ) + .await?; + + println!("Transfer tx hash: {transfer_tx_hash:#x}"); + + wait_for_transaction_receipt(transfer_tx_hash, ð_client, 10, true).await?; + + // Deploy a contract. + let bytecode_path = PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("examples/keystore/contracts/solc_out") + .join("RecoverSigner.bin"); + let bytecode = hex::decode(read_to_string(bytecode_path)?)?; + let (contract_tx_hash, deployed_address) = eth_client + .deploy( + keystore_address, + keystore_secret_key, + Bytes::from(bytecode), + Overrides::default(), + ) + .await?; + + println!("Contract deployment tx hash: {contract_tx_hash:#x}"); - // println!("Contract deployment tx hash: {contract_tx_hash:#x}"); - // println!("Contract deployment address: {deployed_address:#x}"); + println!("Contract deployment address: {deployed_address:#x}"); // let contract_deploy_receipt = // wait_for_transaction_receipt(contract_tx_hash, ð_client, 10, true).await?; From 2deb488214744093d126dfc68a6327272cceefbb Mon Sep 17 00:00:00 2001 From: Lucas Rack Date: Mon, 23 Jun 2025 11:08:37 -0300 Subject: [PATCH 18/31] add call --- .gitignore | 4 +- .../keystore/contracts/RecoverSigner.sol | 5 - sdk/examples/keystore/main.rs | 106 +++++++++--------- 3 files changed, 54 insertions(+), 61 deletions(-) diff --git a/.gitignore b/.gitignore index c791b3b..106bbc3 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,4 @@ target/ # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ -sdk/examples/contracts/package.json -sdk/examples/contracts/package-lock.json -sdk/examples/contracts/node_modules/ +sdk/examples/keystore/contracts/solc_out/ diff --git a/sdk/examples/keystore/contracts/RecoverSigner.sol b/sdk/examples/keystore/contracts/RecoverSigner.sol index 66f80d4..8aa2f50 100644 --- a/sdk/examples/keystore/contracts/RecoverSigner.sol +++ b/sdk/examples/keystore/contracts/RecoverSigner.sol @@ -22,8 +22,3 @@ contract RecoverSigner { emit RecoveredSigner(signer); } } - -// generate binary: -// npm init -y -// npm install @openzeppelin/contracts -// solc --bin recoverSigner.sol --base-path . --include-path node_modules/ -o solc_out --overwrite diff --git a/sdk/examples/keystore/main.rs b/sdk/examples/keystore/main.rs index 2aa0ac3..b271b8c 100644 --- a/sdk/examples/keystore/main.rs +++ b/sdk/examples/keystore/main.rs @@ -10,7 +10,7 @@ use rex_sdk::{ use secp256k1::SecretKey; use std::fs::read_to_string; use std::path::PathBuf; -use std::process::{Command, ExitStatus}; +use std::process::Command; use std::str::FromStr; const RPC_URL: &str = "http://127.0.0.1:8545"; const RICH_WALLET_PK: &str = "5d2344259f42259f82d2c140aa66102ba89b57b4883ee441a8b312622bd42491"; @@ -73,58 +73,58 @@ async fn main() -> Result<(), Box> { println!("Contract deployment address: {deployed_address:#x}"); - // let contract_deploy_receipt = - // wait_for_transaction_receipt(contract_tx_hash, ð_client, 10, true).await?; - // println!("Contract deployment receipt: {contract_deploy_receipt:?}"); - - // // Get the current block (for later). - // let from_block = eth_client.get_block_number().await?; - - // // Prepare the calldata to call the contract function that emits a log. - // let message = H256::random(); - // let signature = sign_hash(message, secret_key); - - // let raw_function_signature = "recoverSigner(bytes32,bytes)"; - - // let arguments = vec![ - // Value::FixedBytes(Bytes::from(message.to_fixed_bytes().to_vec())), - // Value::Bytes(Bytes::from(signature)), - // ]; - - // let calldata = encode_calldata(raw_function_signature, &arguments).unwrap(); - - // // Call the contract signing with the private key and wait for its receipt. - // let response = eth_client - // .call( - // deployed_address, - // Bytes::from(calldata), - // Overrides { - // value: Some(U256::from_dec_str("2000000")?), - // nonce: Some(0), - // chain_id: Some(9), - // gas_limit: Some(2000000), - // max_fee_per_gas: Some(2000000), - // max_priority_fee_per_gas: Some(20000), - // ..Default::default() - // }, - // ) - // .await?; - - // println!("Call response: {response}"); - // // Get the new current block. - // let to_block = eth_client.get_block_number().await?; - - // // Get the emitted logs using the current block and the previous current block. - // let logs = eth_client - // .get_logs_from_signature( - // from_block, - // to_block, - // deployed_address, - // "recoverSigner(bytes32,bytes)", - // ) - // .await?; - - // println!("Logs: {:?}", logs); + let contract_deploy_receipt = + wait_for_transaction_receipt(contract_tx_hash, ð_client, 10, true).await?; + println!("Contract deployment receipt: {contract_deploy_receipt:?}"); + + // Get the current block (for later). + let from_block = eth_client.get_block_number().await?; + + // Prepare the calldata to call the contract function that emits a log. + let message = H256::random(); + let signature = sign_hash(message, keystore_secret_key); + + let raw_function_signature = "recoverSigner(bytes32,bytes)"; + + let arguments = vec![ + Value::FixedBytes(Bytes::from(message.to_fixed_bytes().to_vec())), + Value::Bytes(Bytes::from(signature)), + ]; + + let calldata = encode_calldata(raw_function_signature, &arguments).unwrap(); + + // Call the contract signing with the private key and wait for its receipt. + let response = eth_client + .call( + deployed_address, + Bytes::from(calldata), + Overrides { + value: Some(U256::from_dec_str("0")?), + nonce: Some(0), + chain_id: Some(9), + gas_limit: Some(2000000), + max_fee_per_gas: Some(2000000), + max_priority_fee_per_gas: Some(20000), + ..Default::default() + }, + ) + .await?; + + println!("Call response: {response}"); + // Get the new current block. + let to_block = eth_client.get_block_number().await?; + + // Get the emitted logs using the current block and the previous current block. + let logs = eth_client + .get_logs_from_signature( + from_block, + to_block, + deployed_address, + "recoverSigner(bytes32,bytes)", + ) + .await?; + + println!("Logs: {:?}", logs); Ok(()) } From 66382785dd32cb73ab3624cfc7421626567f68cb Mon Sep 17 00:00:00 2001 From: Lucas Rack Date: Mon, 23 Jun 2025 11:37:28 -0300 Subject: [PATCH 19/31] Use send tx --- sdk/examples/keystore/main.rs | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/sdk/examples/keystore/main.rs b/sdk/examples/keystore/main.rs index b271b8c..8c245a3 100644 --- a/sdk/examples/keystore/main.rs +++ b/sdk/examples/keystore/main.rs @@ -93,24 +93,34 @@ async fn main() -> Result<(), Box> { let calldata = encode_calldata(raw_function_signature, &arguments).unwrap(); - // Call the contract signing with the private key and wait for its receipt. - let response = eth_client - .call( + let tx = eth_client + .build_eip1559_transaction( deployed_address, - Bytes::from(calldata), + keystore_address, + calldata.into(), Overrides { value: Some(U256::from_dec_str("0")?), - nonce: Some(0), + nonce: Some(1), chain_id: Some(9), gas_limit: Some(2000000), max_fee_per_gas: Some(2000000), max_priority_fee_per_gas: Some(20000), ..Default::default() }, + 10, ) .await?; - println!("Call response: {response}"); + let sent_tx_hash = eth_client + .send_eip1559_transaction(&tx, &keystore_secret_key) + .await?; + + println!("Tx hash: {sent_tx_hash}"); + + let sent_tx_receipt = + wait_for_transaction_receipt(sent_tx_hash, ð_client, 100, true).await?; + println!("Tx receipt: {sent_tx_receipt:?}"); + // Get the new current block. let to_block = eth_client.get_block_number().await?; @@ -120,11 +130,11 @@ async fn main() -> Result<(), Box> { from_block, to_block, deployed_address, - "recoverSigner(bytes32,bytes)", + "RecoveredSigner(address)", ) .await?; - println!("Logs: {:?}", logs); + println!("Tx Logs: {:?}", logs); Ok(()) } From 0053423e2d0b3d02eee58a6a8c7f909c1001032e Mon Sep 17 00:00:00 2001 From: Lucas Rack Date: Mon, 23 Jun 2025 11:44:09 -0300 Subject: [PATCH 20/31] fix gitignore --- .gitignore | 2 -- sdk/.gitignore | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 106bbc3..6e771f8 100644 --- a/.gitignore +++ b/.gitignore @@ -15,5 +15,3 @@ target/ # and can be added to the global gitignore or merged into this file. For a more nuclear # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ - -sdk/examples/keystore/contracts/solc_out/ diff --git a/sdk/.gitignore b/sdk/.gitignore index 6362f16..841de3d 100644 --- a/sdk/.gitignore +++ b/sdk/.gitignore @@ -1,2 +1,2 @@ -examples/keystore/lib -examples/keystore/solc_out +examples/keystore/contracts/lib +examples/keystore/contracts/solc_out From b3dcd427e6537e4566008640ee2acec2b8e682ab Mon Sep 17 00:00:00 2001 From: Lucas Rack Date: Mon, 23 Jun 2025 12:52:37 -0300 Subject: [PATCH 21/31] Add comments --- sdk/examples/keystore/main.rs | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/sdk/examples/keystore/main.rs b/sdk/examples/keystore/main.rs index 8c245a3..c5d74e3 100644 --- a/sdk/examples/keystore/main.rs +++ b/sdk/examples/keystore/main.rs @@ -12,6 +12,7 @@ use std::fs::read_to_string; use std::path::PathBuf; use std::process::Command; use std::str::FromStr; + const RPC_URL: &str = "http://127.0.0.1:8545"; const RICH_WALLET_PK: &str = "5d2344259f42259f82d2c140aa66102ba89b57b4883ee441a8b312622bd42491"; @@ -27,12 +28,12 @@ async fn main() -> Result<(), Box> { let keystore_secret_key = load_keystore_from_path(None, "ContractKeystore", "LambdaClass")?; let keystore_address = get_address_from_secret_key(&keystore_secret_key)?; - println!("Keystore loaded successfully:"); + println!("\nKeystore loaded successfully:"); println!( - "Private Key: 0x{}", + "\tPrivate Key: 0x{}", hex::encode(keystore_secret_key.secret_bytes()) ); - println!("Address: {keystore_address:#x}"); + println!("\tAddress: {keystore_address:#x}"); // Connect the client to a node let eth_client = EthClient::new(RPC_URL); @@ -51,9 +52,12 @@ async fn main() -> Result<(), Box> { ) .await?; - println!("Transfer tx hash: {transfer_tx_hash:#x}"); + let transfer_receipt = + wait_for_transaction_receipt(transfer_tx_hash, ð_client, 10, true).await?; - wait_for_transaction_receipt(transfer_tx_hash, ð_client, 10, true).await?; + println!("\nFunds transferred successfully:"); + println!("\tTransfer tx hash: {transfer_tx_hash:#x}"); + println!("\tTransfer receipt: {transfer_receipt:?}"); // Deploy a contract. let bytecode_path = PathBuf::from(env!("CARGO_MANIFEST_DIR")) @@ -69,13 +73,13 @@ async fn main() -> Result<(), Box> { ) .await?; - println!("Contract deployment tx hash: {contract_tx_hash:#x}"); - - println!("Contract deployment address: {deployed_address:#x}"); - let contract_deploy_receipt = wait_for_transaction_receipt(contract_tx_hash, ð_client, 10, true).await?; - println!("Contract deployment receipt: {contract_deploy_receipt:?}"); + + println!("\nContract deployed successfully:"); + println!("\tContract deployment tx hash: {contract_tx_hash:#x}"); + println!("\tContract deployment address: {deployed_address:#x}"); + println!("\tContract deployment receipt: {contract_deploy_receipt:?}"); // Get the current block (for later). let from_block = eth_client.get_block_number().await?; @@ -85,12 +89,10 @@ async fn main() -> Result<(), Box> { let signature = sign_hash(message, keystore_secret_key); let raw_function_signature = "recoverSigner(bytes32,bytes)"; - let arguments = vec![ Value::FixedBytes(Bytes::from(message.to_fixed_bytes().to_vec())), Value::Bytes(Bytes::from(signature)), ]; - let calldata = encode_calldata(raw_function_signature, &arguments).unwrap(); let tx = eth_client @@ -115,11 +117,12 @@ async fn main() -> Result<(), Box> { .send_eip1559_transaction(&tx, &keystore_secret_key) .await?; - println!("Tx hash: {sent_tx_hash}"); - let sent_tx_receipt = wait_for_transaction_receipt(sent_tx_hash, ð_client, 100, true).await?; - println!("Tx receipt: {sent_tx_receipt:?}"); + + println!("\nTx sent successfully:"); + println!("\tTx hash: {sent_tx_hash:#x}"); + println!("\tTx receipt: {sent_tx_receipt:?}"); // Get the new current block. let to_block = eth_client.get_block_number().await?; @@ -134,7 +137,7 @@ async fn main() -> Result<(), Box> { ) .await?; - println!("Tx Logs: {:?}", logs); + println!("\tTx Logs: {:?}", logs); Ok(()) } From 2a7b330a4a40096649c3a8a9ef0b9680ebb89720 Mon Sep 17 00:00:00 2001 From: Lucas Rack Date: Mon, 23 Jun 2025 13:00:24 -0300 Subject: [PATCH 22/31] Fix simple usage --- sdk/examples/simple_usage.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/sdk/examples/simple_usage.rs b/sdk/examples/simple_usage.rs index 72eb84e..82cde93 100644 --- a/sdk/examples/simple_usage.rs +++ b/sdk/examples/simple_usage.rs @@ -33,9 +33,7 @@ async fn main() { let account = get_address_from_secret_key(&args.private_key).unwrap(); - let rpc_url = "http://localhost:8545"; - - let eth_client = EthClient::new(rpc_url); + let eth_client = EthClient::new(&args.rpc_url); let account_balance = eth_client.get_balance(account).await.unwrap(); From c11f069818d08f19d26e8432509fdec9bdeb76bb Mon Sep 17 00:00:00 2001 From: Lucas Rack Date: Mon, 23 Jun 2025 13:02:07 -0300 Subject: [PATCH 23/31] Add RPC url --- sdk/examples/keystore/main.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/sdk/examples/keystore/main.rs b/sdk/examples/keystore/main.rs index c5d74e3..ef19d2e 100644 --- a/sdk/examples/keystore/main.rs +++ b/sdk/examples/keystore/main.rs @@ -1,3 +1,4 @@ +use clap::Parser; use ethrex_common::{Bytes, H256, U256}; use rex_sdk::calldata::{Value, encode_calldata}; use rex_sdk::client::eth::get_address_from_secret_key; @@ -7,17 +8,25 @@ use rex_sdk::{ sign::sign_hash, transfer, wait_for_transaction_receipt, }; + use secp256k1::SecretKey; use std::fs::read_to_string; use std::path::PathBuf; use std::process::Command; use std::str::FromStr; -const RPC_URL: &str = "http://127.0.0.1:8545"; const RICH_WALLET_PK: &str = "5d2344259f42259f82d2c140aa66102ba89b57b4883ee441a8b312622bd42491"; +#[derive(Parser)] +struct ExampleArgs { + #[arg(default_value = "http://localhost:8545", env = "RPC_URL")] + rpc_url: String, +} + #[tokio::main] async fn main() -> Result<(), Box> { + let args = ExampleArgs::parse(); + // Download contract deps and compile contract. setup(); @@ -36,7 +45,7 @@ async fn main() -> Result<(), Box> { println!("\tAddress: {keystore_address:#x}"); // Connect the client to a node - let eth_client = EthClient::new(RPC_URL); + let eth_client = EthClient::new(&args.rpc_url); // Transfer funds from a rich wallet to the keystore's account let rich_wallet_pk = SecretKey::from_str(RICH_WALLET_PK)?; From c86157a83d211b7c3c3df29df31d58875b0774cb Mon Sep 17 00:00:00 2001 From: Lucas Rack Date: Mon, 23 Jun 2025 13:13:13 -0300 Subject: [PATCH 24/31] Fix docs --- README.md | 7 ++++--- sdk/examples/keystore/main.rs | 2 +- sdk/examples/simple_usage.rs | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index ba5e038..8b6a9de 100644 --- a/README.md +++ b/README.md @@ -252,19 +252,20 @@ async fn main() { } ``` -#### Running the example +#### Running the examples > [!WARNING] -> Before running the example, make sure you have an Ethereum node running or override the default RPC URL with the `--rpc-url` flag to point to a public node. +> Before running the examples, make sure you have an Ethereum node running or override the default RPC URL with the `--rpc-url` flag to point to a public node. > The account associated to the private key must have some funds in the network you are connecting to. ```Shell cd sdk cargo run --release --example simple_usage -- --private-key --rpc-url +cargo run --release --example keystore -- --rpc-url ``` > [!NOTE] -> You can find the code for this example in `sdk/examples/simple_usage.rs`. +> You can find the code for these examples in `sdk/examples/`. You can find the SDK documentation [here](sdk/README.md). diff --git a/sdk/examples/keystore/main.rs b/sdk/examples/keystore/main.rs index ef19d2e..0ca7dc2 100644 --- a/sdk/examples/keystore/main.rs +++ b/sdk/examples/keystore/main.rs @@ -19,7 +19,7 @@ const RICH_WALLET_PK: &str = "5d2344259f42259f82d2c140aa66102ba89b57b4883ee441a8 #[derive(Parser)] struct ExampleArgs { - #[arg(default_value = "http://localhost:8545", env = "RPC_URL")] + #[arg(long, default_value = "http://localhost:8545", env = "RPC_URL")] rpc_url: String, } diff --git a/sdk/examples/simple_usage.rs b/sdk/examples/simple_usage.rs index 82cde93..0754b68 100644 --- a/sdk/examples/simple_usage.rs +++ b/sdk/examples/simple_usage.rs @@ -12,7 +12,7 @@ use std::str::FromStr; struct SimpleUsageArgs { #[arg(long, value_parser = parse_private_key, env = "PRIVATE_KEY", help = "The private key to derive the address from.")] private_key: SecretKey, - #[arg(default_value = "http://localhost:8545", env = "RPC_URL")] + #[arg(long, default_value = "http://localhost:8545", env = "RPC_URL")] rpc_url: String, } From 5ba6d878e10b082f421022330975b14aad1af2d8 Mon Sep 17 00:00:00 2001 From: Lucas Rack Date: Mon, 23 Jun 2025 13:15:17 -0300 Subject: [PATCH 25/31] Add cargo lock --- Cargo.lock | 7309 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 7309 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index e69de29..037bcd1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -0,0 +1,7309 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "addchain" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2e69442aa5628ea6951fa33e24efe8313f4321a91bd729fc2f75bdfc858570" +dependencies = [ + "num-bigint 0.3.3", + "num-integer", + "num-traits", +] + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "aligned-sdk" +version = "0.1.0" +source = "git+https://github.com/yetanotherco/aligned_layer?rev=124eba82524bd95d1419ace19f8d959c492ffee0#124eba82524bd95d1419ace19f8d959c492ffee0" +dependencies = [ + "ciborium", + "dialoguer", + "ethers", + "futures-util", + "hex", + "lambdaworks-crypto", + "log", + "reqwest 0.12.20", + "serde", + "serde_json", + "serde_repr", + "sha3", + "tokio", + "tokio-tungstenite 0.23.1", + "url", +] + +[[package]] +name = "alloy-consensus" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69e32ef5c74bbeb1733c37f4ac7f866f8c8af208b7b4265e21af609dcac5bd5e" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "alloy-trie", + "auto_impl", + "c-kzg", + "derive_more 1.0.0", + "serde", +] + +[[package]] +name = "alloy-consensus-any" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa13b7b1e1e3fedc42f0728103bfa3b4d566d3d42b606db449504d88dbdbdcf" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-eip2124" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "675264c957689f0fd75f5993a73123c2cc3b5c235a38f5b9037fe6c826bfb2c0" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "crc", + "thiserror 2.0.12", +] + +[[package]] +name = "alloy-eip2930" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0069cf0642457f87a01a014f6dc29d5d893cd4fd8fddf0c3cdfad1bb3ebafc41" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "serde", +] + +[[package]] +name = "alloy-eip7702" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b15b13d38b366d01e818fe8e710d4d702ef7499eacd44926a06171dd9585d0c" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "k256", + "serde", + "thiserror 2.0.12", +] + +[[package]] +name = "alloy-eips" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5591581ca2ab0b3e7226a4047f9a1bfcf431da1d0cce3752fda609fea3c27e37" +dependencies = [ + "alloy-eip2124", + "alloy-eip2930", + "alloy-eip7702", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "auto_impl", + "c-kzg", + "derive_more 1.0.0", + "once_cell", + "serde", + "sha2", +] + +[[package]] +name = "alloy-json-abi" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe6beff64ad0aa6ad1019a3db26fef565aefeb011736150ab73ed3366c3cfd1b" +dependencies = [ + "alloy-primitives", + "alloy-sol-type-parser", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-network-primitives" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a00ce618ae2f78369918be0c20f620336381502c83b6ed62c2f7b2db27698b0" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-primitives" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c77490fe91a0ce933a1f219029521f20fc28c2c0ca95d53fa4da9c00b8d9d4e" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more 2.0.1", + "foldhash", + "hashbrown 0.15.4", + "indexmap 2.9.0", + "itoa", + "k256", + "keccak-asm", + "paste", + "proptest", + "rand 0.8.5", + "ruint", + "rustc-hash", + "serde", + "sha3", + "tiny-keccak", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f70d83b765fdc080dbcd4f4db70d8d23fe4761f2f02ebfa9146b833900634b4" +dependencies = [ + "alloy-rlp-derive", + "arrayvec", + "bytes", +] + +[[package]] +name = "alloy-rlp-derive" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "alloy-rpc-types-eth" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b4dbee4d82f8a22dde18c28257bed759afeae7ba73da4a1479a039fd1445d04" +dependencies = [ + "alloy-consensus", + "alloy-consensus-any", + "alloy-eips", + "alloy-network-primitives", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "alloy-sol-types", + "itertools 0.14.0", + "serde", + "serde_json", + "thiserror 2.0.12", +] + +[[package]] +name = "alloy-rpc-types-trace" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bd951155515fa452a2ca4b5434d4b3ab742bcd3d1d1b9a91704bcef5b8d2604" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-eth", + "alloy-serde", + "serde", + "serde_json", + "thiserror 2.0.12", +] + +[[package]] +name = "alloy-serde" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8732058f5ca28c1d53d241e8504620b997ef670315d7c8afab856b3e3b80d945" +dependencies = [ + "alloy-primitives", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-sol-macro" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e10ae8e9a91d328ae954c22542415303919aabe976fe7a92eb06db1b68fd59f2" +dependencies = [ + "alloy-sol-macro-expander", + "alloy-sol-macro-input", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "alloy-sol-macro-expander" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83ad5da86c127751bc607c174d6c9fe9b85ef0889a9ca0c641735d77d4f98f26" +dependencies = [ + "alloy-sol-macro-input", + "const-hex", + "heck", + "indexmap 2.9.0", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.104", + "syn-solidity", + "tiny-keccak", +] + +[[package]] +name = "alloy-sol-macro-input" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3d30f0d3f9ba3b7686f3ff1de9ee312647aac705604417a2f40c604f409a9e" +dependencies = [ + "const-hex", + "dunce", + "heck", + "macro-string", + "proc-macro2", + "quote", + "syn 2.0.104", + "syn-solidity", +] + +[[package]] +name = "alloy-sol-type-parser" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d162f8524adfdfb0e4bd0505c734c985f3e2474eb022af32eef0d52a4f3935c" +dependencies = [ + "serde", + "winnow", +] + +[[package]] +name = "alloy-sol-types" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d43d5e60466a440230c07761aa67671d4719d46f43be8ea6e7ed334d8db4a9ab" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-macro", + "const-hex", + "serde", +] + +[[package]] +name = "alloy-trie" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d95a94854e420f07e962f7807485856cde359ab99ab6413883e15235ad996e8b" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "arrayvec", + "derive_more 1.0.0", + "nybbles", + "serde", + "smallvec", + "tracing", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anstream" +version = "0.6.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" + +[[package]] +name = "anstyle-parse" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" +dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys 0.59.0", +] + +[[package]] +name = "anyhow" +version = "1.0.98" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint 0.4.6", + "num-traits", + "paste", + "rustc_version 0.3.3", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint 0.4.6", + "num-traits", + "paste", + "rustc_version 0.4.1", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint 0.4.6", +] + +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +dependencies = [ + "serde", +] + +[[package]] +name = "ascii-canvas" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" +dependencies = [ + "term", +] + +[[package]] +name = "async-trait" +version = "0.1.88" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "async_io_stream" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" +dependencies = [ + "futures", + "pharos", + "rustc_version 0.4.1", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "aurora-engine-modexp" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "518bc5745a6264b5fd7b09dffb9667e400ee9e2bbe18555fac75e1fe9afa0df9" +dependencies = [ + "hex", + "num", +] + +[[package]] +name = "auto_impl" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "axum" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5" +dependencies = [ + "axum-core", + "bytes", + "form_urlencoded", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "hyper 1.6.0", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper 1.0.2", + "tokio", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6" +dependencies = [ + "bytes", + "futures-core", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper 1.0.2", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-extra" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45bf463831f5131b7d3c756525b305d40f1185b688565648a92e1392ca35713d" +dependencies = [ + "axum", + "axum-core", + "bytes", + "futures-util", + "headers", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "serde", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "backtrace" +version = "0.3.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets 0.52.6", +] + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" + +[[package]] +name = "bech32" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec 0.6.3", +] + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec 0.8.0", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +dependencies = [ + "serde", +] + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "serde", + "tap", + "wyz", +] + +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq 0.3.1", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bls12_381" +version = "0.8.0" +source = "git+https://github.com/lambdaclass/bls12_381?branch=expose-fp-struct#219174187bd78154cec35b0809799fc2c991a579" +dependencies = [ + "digest 0.10.7", + "ff", + "group", + "pairing", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "blst" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fd49896f12ac9b6dcd7a5998466b9b58263a695a3dd1ecc1aaca2e12a90b080" +dependencies = [ + "cc", + "glob", + "threadpool", + "zeroize", +] + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "sha2", + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee" + +[[package]] +name = "byte-slice-cast" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +dependencies = [ + "serde", +] + +[[package]] +name = "bzip2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.13+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" +dependencies = [ + "cc", + "pkg-config", +] + +[[package]] +name = "c-kzg" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0307f72feab3300336fb803a57134159f6e20139af1357f36c54cb90d8e8928" +dependencies = [ + "blst", + "cc", + "glob", + "hex", + "libc", + "once_cell", + "serde", +] + +[[package]] +name = "camino" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0da45bc31171d8d6960122e222a67740df867c1dd53b4d51caa297084c185cab" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.26", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "cc" +version = "1.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" +dependencies = [ + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" + +[[package]] +name = "chrono" +version = "0.4.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "serde", + "windows-link", +] + +[[package]] +name = "ciborium" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" + +[[package]] +name = "ciborium-ll" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" +dependencies = [ + "ciborium-io", + "half", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "clap" +version = "4.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40b6887a1d8685cebccf115538db5c0efe625ccac9696ad45c409d96566e910f" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0c66c08ce9f0c698cbce5c0279d0bb6ac936d8674174fe48f736533b964f59e" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_complete" +version = "4.5.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aad5b1b4de04fead402672b48897030eec1f3bfe1550776322f59f6d6e6a5677" +dependencies = [ + "clap", +] + +[[package]] +name = "clap_derive" +version = "4.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2c7947ae4cc3d851207c1adb5b5e260ff0cca11446b1d6d1423788e442257ce" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "clap_lex" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" + +[[package]] +name = "coins-bip32" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b6be4a5df2098cd811f3194f64ddb96c267606bffd9689ac7b0160097b01ad3" +dependencies = [ + "bs58", + "coins-core", + "digest 0.10.7", + "hmac", + "k256", + "serde", + "sha2", + "thiserror 1.0.69", +] + +[[package]] +name = "coins-bip39" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db8fba409ce3dc04f7d804074039eb68b960b0829161f8e06c95fea3f122528" +dependencies = [ + "bitvec", + "coins-bip32", + "hmac", + "once_cell", + "pbkdf2 0.12.2", + "rand 0.8.5", + "sha2", + "thiserror 1.0.69", +] + +[[package]] +name = "coins-core" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5286a0843c21f8367f7be734f89df9b822e0321d8bcce8d6e735aadff7d74979" +dependencies = [ + "base64 0.21.7", + "bech32", + "bs58", + "digest 0.10.7", + "generic-array", + "hex", + "ripemd", + "serde", + "serde_derive", + "sha2", + "sha3", + "thiserror 1.0.69", +] + +[[package]] +name = "colorchoice" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" + +[[package]] +name = "colored" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" +dependencies = [ + "lazy_static", + "windows-sys 0.59.0", +] + +[[package]] +name = "colored" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fde0e0ec90c9dfb3b4b1a0891a7dcd0e2bffde2f7efed5fe7c9bb00e5bfb915e" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "concat-kdf" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d72c1252426a83be2092dd5884a5f6e3b8e7180f6891b6263d2c21b92ec8816" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "console" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" +dependencies = [ + "encode_unicode", + "libc", + "once_cell", + "unicode-width", + "windows-sys 0.59.0", +] + +[[package]] +name = "const-hex" +version = "1.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83e22e0ed40b96a48d3db274f72fd365bd78f67af39b6bbd47e8a15e1c6207ff" +dependencies = [ + "cfg-if", + "cpufeatures", + "hex", + "proptest", + "serde", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "const_format" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crunchy" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + +[[package]] +name = "darling" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.104", +] + +[[package]] +name = "darling_macro" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "data-encoding" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" + +[[package]] +name = "datatest-stable" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "833306ca7eec4d95844e65f0d7502db43888c5c1006c6c517e8cf51a27d15431" +dependencies = [ + "camino", + "fancy-regex", + "libtest-mimic", + "walkdir", +] + +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "pem-rfc7468", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +dependencies = [ + "powerfmt", + "serde", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_more" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl 1.0.0", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl 2.0.1", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "syn 2.0.104", + "unicode-xid", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", + "unicode-xid", +] + +[[package]] +name = "dialoguer" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de" +dependencies = [ + "console", + "shell-words", + "tempfile", + "thiserror 1.0.69", + "zeroize", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "directories" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a49173b84e034382284f27f1af4dcbbd231ffa358c0fe316541a7337f376a35" +dependencies = [ + "dirs-sys 0.4.1", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys 0.4.1", +] + +[[package]] +name = "dirs" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" +dependencies = [ + "dirs-sys 0.5.0", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users 0.4.6", + "windows-sys 0.48.0", +] + +[[package]] +name = "dirs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" +dependencies = [ + "libc", + "option-ext", + "redox_users 0.5.0", + "windows-sys 0.60.2", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users 0.4.6", + "winapi", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "dyn-clone" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "signature", + "spki", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff", + "generic-array", + "group", + "hkdf", + "pem-rfc7468", + "pkcs8", + "rand_core 0.6.4", + "sec1", + "subtle", + "zeroize", +] + +[[package]] +name = "ena" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5" +dependencies = [ + "log", +] + +[[package]] +name = "encode_unicode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "enr" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a3d8dc56e02f954cac8eb489772c552c473346fc34f67412bb6244fd647f7e4" +dependencies = [ + "base64 0.21.7", + "bytes", + "hex", + "k256", + "log", + "rand 0.8.5", + "rlp 0.5.2", + "serde", + "sha3", + "zeroize", +] + +[[package]] +name = "enumn" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "envy" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f47e0157f2cb54f5ae1bd371b30a2ae4311e1c028f575cd4e81de7353215965" +dependencies = [ + "serde", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "escape8259" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5692dd7b5a1978a5aeb0ce83b7655c58ca8efdcb79d21036ea249da95afec2c6" + +[[package]] +name = "eth-keystore" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" +dependencies = [ + "aes", + "ctr", + "digest 0.10.7", + "hex", + "hmac", + "pbkdf2 0.11.0", + "rand 0.8.5", + "scrypt", + "serde", + "serde_json", + "sha2", + "sha3", + "thiserror 1.0.69", + "uuid", +] + +[[package]] +name = "ethabi" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" +dependencies = [ + "ethereum-types 0.14.1", + "hex", + "once_cell", + "regex", + "serde", + "serde_json", + "sha3", + "thiserror 1.0.69", + "uint 0.9.5", +] + +[[package]] +name = "ethbloom" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-codec 0.6.0", + "impl-rlp 0.3.0", + "impl-serde 0.4.0", + "scale-info", + "tiny-keccak", +] + +[[package]] +name = "ethbloom" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c321610643004cf908ec0f5f2aa0d8f1f8e14b540562a2887a1111ff1ecbf7b" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-rlp 0.4.0", + "impl-serde 0.5.0", + "tiny-keccak", +] + +[[package]] +name = "ethereum-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +dependencies = [ + "ethbloom 0.13.0", + "fixed-hash", + "impl-codec 0.6.0", + "impl-rlp 0.3.0", + "impl-serde 0.4.0", + "primitive-types 0.12.2", + "scale-info", + "uint 0.9.5", +] + +[[package]] +name = "ethereum-types" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ab15ed80916029f878e0267c3a9f92b67df55e79af370bf66199059ae2b4ee3" +dependencies = [ + "ethbloom 0.14.1", + "fixed-hash", + "impl-rlp 0.4.0", + "impl-serde 0.5.0", + "primitive-types 0.13.1", + "uint 0.10.0", +] + +[[package]] +name = "ethers" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "816841ea989f0c69e459af1cf23a6b0033b19a55424a1ea3a30099becdb8dec0" +dependencies = [ + "ethers-addressbook", + "ethers-contract", + "ethers-core", + "ethers-etherscan", + "ethers-middleware", + "ethers-providers", + "ethers-signers", + "ethers-solc", +] + +[[package]] +name = "ethers-addressbook" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5495afd16b4faa556c3bba1f21b98b4983e53c1755022377051a975c3b021759" +dependencies = [ + "ethers-core", + "once_cell", + "serde", + "serde_json", +] + +[[package]] +name = "ethers-contract" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fceafa3578c836eeb874af87abacfb041f92b4da0a78a5edd042564b8ecdaaa" +dependencies = [ + "const-hex", + "ethers-contract-abigen", + "ethers-contract-derive", + "ethers-core", + "ethers-providers", + "futures-util", + "once_cell", + "pin-project", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "ethers-contract-abigen" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04ba01fbc2331a38c429eb95d4a570166781f14290ef9fdb144278a90b5a739b" +dependencies = [ + "Inflector", + "const-hex", + "dunce", + "ethers-core", + "ethers-etherscan", + "eyre", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "reqwest 0.11.27", + "serde", + "serde_json", + "syn 2.0.104", + "toml", + "walkdir", +] + +[[package]] +name = "ethers-contract-derive" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87689dcabc0051cde10caaade298f9e9093d65f6125c14575db3fd8c669a168f" +dependencies = [ + "Inflector", + "const-hex", + "ethers-contract-abigen", + "ethers-core", + "proc-macro2", + "quote", + "serde_json", + "syn 2.0.104", +] + +[[package]] +name = "ethers-core" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d80cc6ad30b14a48ab786523af33b37f28a8623fc06afd55324816ef18fb1f" +dependencies = [ + "arrayvec", + "bytes", + "cargo_metadata", + "chrono", + "const-hex", + "elliptic-curve", + "ethabi", + "generic-array", + "k256", + "num_enum", + "once_cell", + "open-fastrlp", + "rand 0.8.5", + "rlp 0.5.2", + "serde", + "serde_json", + "strum 0.26.3", + "syn 2.0.104", + "tempfile", + "thiserror 1.0.69", + "tiny-keccak", + "unicode-xid", +] + +[[package]] +name = "ethers-etherscan" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e79e5973c26d4baf0ce55520bd732314328cabe53193286671b47144145b9649" +dependencies = [ + "chrono", + "ethers-core", + "reqwest 0.11.27", + "semver 1.0.26", + "serde", + "serde_json", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "ethers-middleware" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48f9fdf09aec667c099909d91908d5eaf9be1bd0e2500ba4172c1d28bfaa43de" +dependencies = [ + "async-trait", + "auto_impl", + "ethers-contract", + "ethers-core", + "ethers-etherscan", + "ethers-providers", + "ethers-signers", + "futures-channel", + "futures-locks", + "futures-util", + "instant", + "reqwest 0.11.27", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tracing", + "tracing-futures", + "url", +] + +[[package]] +name = "ethers-providers" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6434c9a33891f1effc9c75472e12666db2fa5a0fec4b29af6221680a6fe83ab2" +dependencies = [ + "async-trait", + "auto_impl", + "base64 0.21.7", + "bytes", + "const-hex", + "enr", + "ethers-core", + "futures-channel", + "futures-core", + "futures-timer", + "futures-util", + "hashers", + "http 0.2.12", + "instant", + "jsonwebtoken 8.3.0", + "once_cell", + "pin-project", + "reqwest 0.11.27", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tokio-tungstenite 0.20.1", + "tracing", + "tracing-futures", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "ws_stream_wasm", +] + +[[package]] +name = "ethers-signers" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "228875491c782ad851773b652dd8ecac62cda8571d3bc32a5853644dd26766c2" +dependencies = [ + "async-trait", + "coins-bip32", + "coins-bip39", + "const-hex", + "elliptic-curve", + "eth-keystore", + "ethers-core", + "rand 0.8.5", + "sha2", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "ethers-solc" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66244a771d9163282646dbeffe0e6eca4dda4146b6498644e678ac6089b11edd" +dependencies = [ + "cfg-if", + "const-hex", + "dirs 5.0.1", + "dunce", + "ethers-core", + "glob", + "home", + "md-5", + "num_cpus", + "once_cell", + "path-slash", + "rayon", + "regex", + "semver 1.0.26", + "serde", + "serde_json", + "solang-parser", + "svm-rs", + "thiserror 1.0.69", + "tiny-keccak", + "tokio", + "tracing", + "walkdir", + "yansi", +] + +[[package]] +name = "ethrex-blockchain" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/ethrex?rev=b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce#b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce" +dependencies = [ + "bytes", + "cfg-if", + "ethrex-common", + "ethrex-metrics", + "ethrex-rlp", + "ethrex-storage", + "ethrex-vm", + "k256", + "secp256k1", + "sha3", + "thiserror 2.0.12", + "tokio", + "tracing", +] + +[[package]] +name = "ethrex-common" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/ethrex?rev=b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce#b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce" +dependencies = [ + "bytes", + "c-kzg", + "crc32fast", + "ethereum-types 0.15.1", + "ethrex-rlp", + "ethrex-trie", + "hex", + "k256", + "keccak-hash", + "lazy_static", + "once_cell", + "rayon", + "secp256k1", + "serde", + "serde_json", + "sha3", + "thiserror 2.0.12", + "tinyvec", + "tracing", +] + +[[package]] +name = "ethrex-dev" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/ethrex?rev=b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce#b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce" +dependencies = [ + "bytes", + "envy", + "ethereum-types 0.15.1", + "ethrex-rpc", + "hex", + "jsonwebtoken 9.3.1", + "keccak-hash", + "reqwest 0.12.20", + "serde", + "serde_json", + "sha2", + "thiserror 2.0.12", + "tokio", + "tracing", +] + +[[package]] +name = "ethrex-l2" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/ethrex?rev=b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce#b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce" +dependencies = [ + "aligned-sdk", + "bincode", + "bytes", + "cfg-if", + "directories", + "envy", + "ethereum-types 0.15.1", + "ethers", + "ethrex-blockchain", + "ethrex-common", + "ethrex-dev", + "ethrex-l2-common", + "ethrex-levm", + "ethrex-metrics", + "ethrex-rlp", + "ethrex-rpc", + "ethrex-sdk", + "ethrex-storage", + "ethrex-storage-rollup", + "ethrex-trie", + "ethrex-vm", + "hex", + "jsonwebtoken 9.3.1", + "keccak-hash", + "lazy_static", + "rand 0.8.5", + "reqwest 0.12.20", + "secp256k1", + "serde", + "serde_json", + "serde_with", + "spawned-concurrency", + "spawned-rt", + "thiserror 2.0.12", + "tokio", + "tokio-util", + "tracing", + "zkvm_interface", +] + +[[package]] +name = "ethrex-l2-common" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/ethrex?rev=b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce#b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce" +dependencies = [ + "bytes", + "ethereum-types 0.15.1", + "ethrex-common", + "ethrex-rlp", + "ethrex-storage", + "ethrex-trie", + "ethrex-vm", + "keccak-hash", + "lazy_static", + "serde", + "thiserror 2.0.12", +] + +[[package]] +name = "ethrex-levm" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/ethrex?rev=b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce#b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce" +dependencies = [ + "bls12_381", + "bytes", + "datatest-stable", + "derive_more 1.0.0", + "ethrex-common", + "ethrex-rlp", + "k256", + "keccak-hash", + "kzg-rs", + "lambdaworks-math 0.11.0", + "lazy_static", + "num-bigint 0.4.6", + "p256", + "ripemd", + "secp256k1", + "serde", + "serde_json", + "sha2", + "sha3", + "thiserror 2.0.12", + "walkdir", +] + +[[package]] +name = "ethrex-metrics" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/ethrex?rev=b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce#b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce" +dependencies = [ + "ethrex-common", + "serde", + "serde_json", + "thiserror 2.0.12", +] + +[[package]] +name = "ethrex-p2p" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/ethrex?rev=b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce#b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce" +dependencies = [ + "aes", + "bytes", + "concat-kdf", + "ctr", + "ethereum-types 0.15.1", + "ethrex-blockchain", + "ethrex-common", + "ethrex-rlp", + "ethrex-storage", + "ethrex-trie", + "futures", + "hex", + "hmac", + "k256", + "lazy_static", + "rand 0.8.5", + "serde", + "serde_json", + "sha3", + "snap", + "thiserror 2.0.12", + "tokio", + "tokio-stream", + "tokio-util", + "tracing", +] + +[[package]] +name = "ethrex-rlp" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/ethrex?rev=b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce#b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce" +dependencies = [ + "bytes", + "ethereum-types 0.15.1", + "hex", + "lazy_static", + "snap", + "thiserror 2.0.12", + "tinyvec", +] + +[[package]] +name = "ethrex-rpc" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/ethrex?rev=b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce#b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce" +dependencies = [ + "axum", + "axum-extra", + "bytes", + "cfg-if", + "envy", + "ethereum-types 0.15.1", + "ethrex-blockchain", + "ethrex-common", + "ethrex-p2p", + "ethrex-rlp", + "ethrex-storage", + "ethrex-vm", + "hex", + "jsonwebtoken 9.3.1", + "k256", + "keccak-hash", + "rand 0.8.5", + "reqwest 0.12.20", + "secp256k1", + "serde", + "serde_json", + "sha2", + "sha3", + "thiserror 2.0.12", + "tokio", + "tokio-util", + "tower-http", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "ethrex-sdk" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/ethrex?rev=b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce#b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce" +dependencies = [ + "bytes", + "ethereum-types 0.15.1", + "ethrex-common", + "ethrex-rlp", + "ethrex-rpc", + "eyre", + "hex", + "itertools 0.13.0", + "keccak-hash", + "lazy_static", + "reqwest 0.12.20", + "secp256k1", + "serde", + "serde_json", + "thiserror 2.0.12", + "tokio", + "tracing", +] + +[[package]] +name = "ethrex-storage" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/ethrex?rev=b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce#b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce" +dependencies = [ + "anyhow", + "async-trait", + "bytes", + "ethereum-types 0.15.1", + "ethrex-common", + "ethrex-rlp", + "ethrex-trie", + "hex", + "serde", + "serde_json", + "sha3", + "thiserror 2.0.12", + "tracing", +] + +[[package]] +name = "ethrex-storage-rollup" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/ethrex?rev=b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce#b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce" +dependencies = [ + "anyhow", + "async-trait", + "ethereum-types 0.15.1", + "ethrex-common", + "ethrex-rlp", + "ethrex-storage", + "tracing", +] + +[[package]] +name = "ethrex-trie" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/ethrex?rev=b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce#b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce" +dependencies = [ + "anyhow", + "bytes", + "digest 0.10.7", + "ethereum-types 0.15.1", + "ethrex-rlp", + "hex", + "lazy_static", + "serde", + "serde_json", + "sha3", + "smallvec", + "thiserror 2.0.12", + "tracing", +] + +[[package]] +name = "ethrex-vm" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/ethrex?rev=b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce#b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce" +dependencies = [ + "bincode", + "bytes", + "cfg-if", + "derive_more 1.0.0", + "dyn-clone", + "ethereum-types 0.15.1", + "ethrex-common", + "ethrex-levm", + "ethrex-rlp", + "ethrex-trie", + "hex", + "lazy_static", + "revm", + "revm-inspectors", + "revm-primitives", + "serde", + "sha3", + "thiserror 2.0.12", + "tracing", +] + +[[package]] +name = "eyre" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" +dependencies = [ + "indenter", + "once_cell", +] + +[[package]] +name = "fancy-regex" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e24cb5a94bcae1e5408b0effca5cd7172ea3c5755049c5f3af4cd283a165298" +dependencies = [ + "bit-set 0.8.0", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fastrlp" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "fastrlp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "ff" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +dependencies = [ + "bitvec", + "byteorder", + "ff_derive", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "ff_derive" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f10d12652036b0e99197587c6ba87a8fc3031986499973c030d8b44fcc151b60" +dependencies = [ + "addchain", + "num-bigint 0.3.3", + "num-integer", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand 0.8.5", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "flate2" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fs2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-locks" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45ec6fe3675af967e67c5536c0b9d44e34e6c52f86bedc4ea49c5317b8e94d06" +dependencies = [ + "futures-channel", + "futures-task", +] + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-timer" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" +dependencies = [ + "gloo-timers", + "send_wrapper 0.4.0", +] + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "gcd" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "glob" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" + +[[package]] +name = "gloo-timers" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "h2" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap 2.9.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.3.1", + "indexmap 2.9.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "half" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" +dependencies = [ + "cfg-if", + "crunchy", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" +dependencies = [ + "foldhash", + "serde", +] + +[[package]] +name = "hashers" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2bca93b15ea5a746f220e56587f71e73c6165eab783df9e26590069953e3c30" +dependencies = [ + "fxhash", +] + +[[package]] +name = "headers" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb" +dependencies = [ + "base64 0.22.1", + "bytes", + "headers-core", + "http 1.3.1", + "httpdate", + "mime", + "sha1", +] + +[[package]] +name = "headers-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" +dependencies = [ + "http 1.3.1", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +dependencies = [ + "hmac", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "home" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http 0.2.12", + "pin-project-lite", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.3.1", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http 1.3.1", + "http-body 1.0.1", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "0.14.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2 0.4.10", + "http 1.3.1", + "http-body 1.0.1", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +dependencies = [ + "futures-util", + "http 0.2.12", + "hyper 0.14.32", + "rustls 0.21.12", + "tokio", + "tokio-rustls 0.24.1", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +dependencies = [ + "http 1.3.1", + "hyper 1.6.0", + "hyper-util", + "rustls 0.23.28", + "rustls-pki-types", + "tokio", + "tokio-rustls 0.26.2", + "tower-service", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper 1.6.0", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "hyper 1.6.0", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "system-configuration 0.6.1", + "tokio", + "tower-service", + "tracing", + "windows-registry", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" + +[[package]] +name = "icu_properties" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "potential_utf", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" + +[[package]] +name = "icu_provider" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +dependencies = [ + "displaydoc", + "icu_locale_core", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-codec" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d40b9d5e17727407e55028eafc22b2dc68781786e6d7eb8a21103f5058e3a14" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp 0.5.2", +] + +[[package]] +name = "impl-rlp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54ed8ad1f3877f7e775b8cbf30ed1bd3209a95401817f19a0eb4402d13f8cf90" +dependencies = [ + "rlp 0.6.1", +] + +[[package]] +name = "impl-serde" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-serde" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a143eada6a1ec4aefa5049037a26a6d597bfd64f8c026d07b77133e02b7dd0b" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "indenter" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +dependencies = [ + "equivalent", + "hashbrown 0.15.4", + "serde", +] + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jobserver" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" +dependencies = [ + "getrandom 0.3.3", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "jsonwebtoken" +version = "8.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" +dependencies = [ + "base64 0.21.7", + "pem 1.1.1", + "ring 0.16.20", + "serde", + "serde_json", + "simple_asn1", +] + +[[package]] +name = "jsonwebtoken" +version = "9.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a87cc7a48537badeae96744432de36f4be2b4a34a05a5ef32e9dd8a1c169dde" +dependencies = [ + "base64 0.22.1", + "js-sys", + "pem 3.0.5", + "ring 0.17.14", + "serde", + "serde_json", + "simple_asn1", +] + +[[package]] +name = "k256" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "sha2", + "signature", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "keccak-asm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + +[[package]] +name = "keccak-hash" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e1b8590eb6148af2ea2d75f38e7d29f5ca970d5a4df456b3ef19b8b415d0264" +dependencies = [ + "primitive-types 0.13.1", + "tiny-keccak", +] + +[[package]] +name = "kzg-rs" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9201effeea3fcc93b587904ae2df9ce97e433184b9d6d299e9ebc9830a546636" +dependencies = [ + "ff", + "hex", + "serde_arrays", + "sha2", + "sp1_bls12_381", + "spin 0.9.8", +] + +[[package]] +name = "lalrpop" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" +dependencies = [ + "ascii-canvas", + "bit-set 0.5.3", + "ena", + "itertools 0.11.0", + "lalrpop-util", + "petgraph", + "regex", + "regex-syntax 0.8.5", + "string_cache", + "term", + "tiny-keccak", + "unicode-xid", + "walkdir", +] + +[[package]] +name = "lalrpop-util" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" +dependencies = [ + "regex-automata 0.4.9", +] + +[[package]] +name = "lambdaworks-crypto" +version = "0.12.0" +source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b#5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b" +dependencies = [ + "lambdaworks-math 0.12.0", + "rand 0.8.5", + "rand_chacha 0.3.1", + "serde", + "sha2", + "sha3", +] + +[[package]] +name = "lambdaworks-math" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "708d148956bcdc21ae5c432b4e20bbaa26fd68d5376a3a6c461f41095abea0ba" +dependencies = [ + "rayon", + "serde", + "serde_json", +] + +[[package]] +name = "lambdaworks-math" +version = "0.12.0" +source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b#5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b" +dependencies = [ + "getrandom 0.2.16", + "rand 0.8.5", + "serde", + "serde_json", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin 0.9.8", +] + +[[package]] +name = "libc" +version = "0.2.174" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" + +[[package]] +name = "libm" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.9.1", + "libc", +] + +[[package]] +name = "libtest-mimic" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5297962ef19edda4ce33aaa484386e0a5b3d7f2f4e037cbeee00503ef6b29d33" +dependencies = [ + "anstream", + "anstyle", + "clap", + "escape8259", +] + +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + +[[package]] +name = "litemap" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" + +[[package]] +name = "lock_api" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "macro-string" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "matchit" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" + +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest 0.10.7", +] + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +dependencies = [ + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", +] + +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint 0.4.6", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint 0.4.6", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "nybbles" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8983bb634df7248924ee0c4c3a749609b5abcb082c28fffe3254b3eb3602b307" +dependencies = [ + "const-hex", + "serde", + "smallvec", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" + +[[package]] +name = "open-fastrlp" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", + "ethereum-types 0.14.1", + "open-fastrlp-derive", +] + +[[package]] +name = "open-fastrlp-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" +dependencies = [ + "bytes", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "openssl" +version = "0.10.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" +dependencies = [ + "bitflags 2.9.1", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "openssl-sys" +version = "0.9.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2", +] + +[[package]] +name = "p3-baby-bear" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7521838ecab2ddf4f7bc4ceebad06ec02414729598485c1ada516c39900820e8" +dependencies = [ + "num-bigint 0.4.6", + "p3-field", + "p3-mds", + "p3-poseidon2", + "p3-symmetric", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-dft" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46414daedd796f1eefcdc1811c0484e4bced5729486b6eaba9521c572c76761a" +dependencies = [ + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48948a0516b349e9d1cdb95e7236a6ee010c44e68c5cc78b4b92bf1c4022a0d9" +dependencies = [ + "itertools 0.12.1", + "num-bigint 0.4.6", + "num-traits", + "p3-util", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-matrix" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e4de3f373589477cb735ea58e125898ed20935e03664b4614c7fac258b3c42f" +dependencies = [ + "itertools 0.12.1", + "p3-field", + "p3-maybe-rayon", + "p3-util", + "rand 0.8.5", + "serde", + "tracing", +] + +[[package]] +name = "p3-maybe-rayon" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3968ad1160310296eb04f91a5f4edfa38fe1d6b2b8cd6b5c64e6f9b7370979e" + +[[package]] +name = "p3-mds" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2356b1ed0add6d5dfbf7a338ce534a6fde827374394a52cec16a0840af6e97c9" +dependencies = [ + "itertools 0.12.1", + "p3-dft", + "p3-field", + "p3-matrix", + "p3-symmetric", + "p3-util", + "rand 0.8.5", +] + +[[package]] +name = "p3-poseidon2" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da1eec7e1b6900581bedd95e76e1ef4975608dd55be9872c9d257a8a9651c3a" +dependencies = [ + "gcd", + "p3-field", + "p3-mds", + "p3-symmetric", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edb439bea1d822623b41ff4b51e3309e80d13cadf8b86d16ffd5e6efb9fdc360" +dependencies = [ + "itertools 0.12.1", + "p3-field", + "serde", +] + +[[package]] +name = "p3-util" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c2c2010678b9332b563eaa38364915b585c1a94b5ca61e2c7541c087ddda5c" +dependencies = [ + "serde", +] + +[[package]] +name = "pairing" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fec4625e73cf41ef4bb6846cafa6d44736525f442ba45e407c4a000a13996f" +dependencies = [ + "group", +] + +[[package]] +name = "parity-scale-codec" +version = "3.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "const_format", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "rustversion", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "parking_lot" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "password-hash" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" +dependencies = [ + "base64ct", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "path-slash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42" + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", + "hmac", + "password-hash", + "sha2", +] + +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest 0.10.7", + "hmac", +] + +[[package]] +name = "pem" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +dependencies = [ + "base64 0.13.1", +] + +[[package]] +name = "pem" +version = "3.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38af38e8470ac9dee3ce1bae1af9c1671fffc44ddfd8bd1d0a3445bf349a8ef3" +dependencies = [ + "base64 0.22.1", + "serde", +] + +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pest" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" +dependencies = [ + "memchr", + "thiserror 2.0.12", + "ucd-trie", +] + +[[package]] +name = "petgraph" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +dependencies = [ + "fixedbitset", + "indexmap 2.9.0", +] + +[[package]] +name = "pharos" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" +dependencies = [ + "futures", + "rustc_version 0.4.1", +] + +[[package]] +name = "phf" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +dependencies = [ + "phf_macros", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +dependencies = [ + "phf_shared", + "rand 0.8.5", +] + +[[package]] +name = "phf_macros" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "potential_utf" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "prettyplease" +version = "0.2.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "061c1221631e079b26479d25bbf2275bfe5917ae8419cd7e34f13bfc2aa7539a" +dependencies = [ + "proc-macro2", + "syn 2.0.104", +] + +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", +] + +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash", + "impl-codec 0.6.0", + "impl-rlp 0.3.0", + "impl-serde 0.4.0", + "scale-info", + "uint 0.9.5", +] + +[[package]] +name = "primitive-types" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d15600a7d856470b7d278b3fe0e311fe28c2526348549f8ef2ff7db3299c87f5" +dependencies = [ + "fixed-hash", + "impl-codec 0.7.1", + "impl-rlp 0.4.0", + "impl-serde 0.5.0", + "uint 0.10.0", +] + +[[package]] +name = "proc-macro-crate" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proptest" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f" +dependencies = [ + "bit-set 0.8.0", + "bit-vec 0.8.0", + "bitflags 2.9.1", + "lazy_static", + "num-traits", + "rand 0.9.1", + "rand_chacha 0.9.0", + "rand_xorshift", + "regex-syntax 0.8.5", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", + "serde", +] + +[[package]] +name = "rand" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.16", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.3", +] + +[[package]] +name = "rand_xorshift" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" +dependencies = [ + "rand_core 0.9.3", +] + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" +dependencies = [ + "bitflags 2.9.1", +] + +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom 0.2.16", + "libredox", + "thiserror 1.0.69", +] + +[[package]] +name = "redox_users" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b" +dependencies = [ + "getrandom 0.2.16", + "libredox", + "thiserror 2.0.12", +] + +[[package]] +name = "ref-cast" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.32", + "hyper-rustls 0.24.2", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls 0.21.12", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 0.1.2", + "system-configuration 0.5.1", + "tokio", + "tokio-rustls 0.24.1", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots", + "winreg", +] + +[[package]] +name = "reqwest" +version = "0.12.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eabf4c97d9130e2bf606614eb937e86edac8292eaa6f422f995d7e8de1eb1813" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-core", + "h2 0.4.10", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "hyper 1.6.0", + "hyper-rustls 0.27.7", + "hyper-tls", + "hyper-util", + "js-sys", + "log", + "mime", + "native-tls", + "percent-encoding", + "pin-project-lite", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.2", + "tokio", + "tokio-native-tls", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "revm" +version = "19.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c175ecec83bba464aa8406502fe5bf670491c2ace81a153264891d43bc7fa332" +dependencies = [ + "auto_impl", + "cfg-if", + "dyn-clone", + "revm-interpreter", + "revm-precompile", + "serde", + "serde_json", +] + +[[package]] +name = "revm-inspectors" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d87cdf1c0d878b48423f8a86232950657abaf72a2d0d14af609467542313b1a" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-eth", + "alloy-rpc-types-trace", + "alloy-sol-types", + "anstyle", + "colorchoice", + "revm", + "serde", + "serde_json", + "thiserror 2.0.12", +] + +[[package]] +name = "revm-interpreter" +version = "15.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dcab7ef2064057acfc84731205f4bc77f4ec1b35630800b26ff6a185731c5ab" +dependencies = [ + "revm-primitives", + "serde", +] + +[[package]] +name = "revm-precompile" +version = "16.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99743c3a2cac341084cc15ac74286c4bf34a0941ebf60aa420cfdb9f81f72f9f" +dependencies = [ + "aurora-engine-modexp", + "c-kzg", + "cfg-if", + "k256", + "once_cell", + "revm-primitives", + "ripemd", + "secp256k1", + "sha2", + "substrate-bn", +] + +[[package]] +name = "revm-primitives" +version = "15.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f987564210317706def498421dfba2ae1af64a8edce82c6102758b48133fcb" +dependencies = [ + "alloy-eip2930", + "alloy-eip7702", + "alloy-primitives", + "auto_impl", + "bitflags 2.9.1", + "bitvec", + "c-kzg", + "cfg-if", + "dyn-clone", + "enumn", + "hex", + "serde", +] + +[[package]] +name = "rex" +version = "0.1.0" +dependencies = [ + "clap", + "clap_complete", + "colored 3.0.0", + "dialoguer", + "dirs 6.0.0", + "ethrex-blockchain", + "ethrex-common", + "ethrex-l2", + "ethrex-rlp", + "ethrex-rpc", + "eyre", + "hex", + "itertools 0.14.0", + "keccak-hash", + "log", + "rex-sdk", + "secp256k1", + "serde", + "serde_json", + "spinoff", + "strum 0.27.1", + "tokio", + "toml", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "rex-sdk" +version = "0.1.0" +dependencies = [ + "clap", + "clap_complete", + "dirs 6.0.0", + "envy", + "eth-keystore", + "ethers", + "ethrex-blockchain", + "ethrex-common", + "ethrex-l2", + "ethrex-rlp", + "ethrex-rpc", + "eyre", + "hex", + "itertools 0.14.0", + "jsonwebtoken 9.3.1", + "keccak-hash", + "log", + "rand 0.8.5", + "reqwest 0.12.20", + "secp256k1", + "serde", + "serde_json", + "thiserror 2.0.12", + "tokio", + "toml", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin 0.5.2", + "untrusted 0.7.1", + "web-sys", + "winapi", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.16", + "libc", + "untrusted 0.9.0", + "windows-sys 0.52.0", +] + +[[package]] +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rlp-derive", + "rustc-hex", +] + +[[package]] +name = "rlp" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa24e92bb2a83198bb76d661a71df9f7076b8c420b8696e4d3d97d50d94479e3" +dependencies = [ + "bytes", + "rustc-hex", +] + +[[package]] +name = "rlp-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ruint" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11256b5fe8c68f56ac6f39ef0720e592f33d2367a4782740d9c9142e889c7fb4" +dependencies = [ + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "bytes", + "fastrlp 0.3.1", + "fastrlp 0.4.0", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "parity-scale-codec", + "primitive-types 0.12.2", + "proptest", + "rand 0.8.5", + "rand 0.9.1", + "rlp 0.5.2", + "ruint-macro", + "serde", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" + +[[package]] +name = "rustc-demangle" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver 1.0.26", +] + +[[package]] +name = "rustix" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +dependencies = [ + "bitflags 2.9.1", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustls" +version = "0.21.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +dependencies = [ + "log", + "ring 0.17.14", + "rustls-webpki 0.101.7", + "sct", +] + +[[package]] +name = "rustls" +version = "0.23.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7160e3e10bf4535308537f3c4e1641468cd0e485175d6163087c0393c7d46643" +dependencies = [ + "once_cell", + "rustls-pki-types", + "rustls-webpki 0.103.3", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustls-pki-types" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +dependencies = [ + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring 0.17.14", + "untrusted 0.9.0", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" +dependencies = [ + "ring 0.17.14", + "rustls-pki-types", + "untrusted 0.9.0", +] + +[[package]] +name = "rustversion" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" + +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "salsa20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scale-info" +version = "2.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" +dependencies = [ + "cfg-if", + "derive_more 1.0.0", + "parity-scale-codec", + "scale-info-derive", +] + +[[package]] +name = "scale-info-derive" +version = "2.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "schannel" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scrypt" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d" +dependencies = [ + "hmac", + "pbkdf2 0.11.0", + "salsa20", + "sha2", +] + +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring 0.17.14", + "untrusted 0.9.0", +] + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] + +[[package]] +name = "secp256k1" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9465315bc9d4566e1724f0fffcbcc446268cb522e60f9a27bcded6b19c108113" +dependencies = [ + "rand 0.8.5", + "secp256k1-sys", +] + +[[package]] +name = "secp256k1-sys" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" +dependencies = [ + "cc", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.9.1", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +dependencies = [ + "serde", +] + +[[package]] +name = "semver-parser" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" +dependencies = [ + "pest", +] + +[[package]] +name = "send_wrapper" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" + +[[package]] +name = "send_wrapper" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_arrays" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94a16b99c5ea4fe3daccd14853ad260ec00ea043b2708d1fd1da3106dcd8d9df" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "serde_json" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +dependencies = [ + "indexmap 2.9.0", + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" +dependencies = [ + "itoa", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf65a400f8f66fb7b0552869ad70157166676db75ed8181f8104ea91cf9d0b42" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.9.0", + "schemars", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81679d9ed988d5e9a5e6531dc3f2c28efbd639cbd1dfb628df08edea6004da77" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "sha3-asm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" +dependencies = [ + "cc", + "cfg-if", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] + +[[package]] +name = "simple_asn1" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "thiserror 2.0.12", + "time", +] + +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + +[[package]] +name = "slab" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +dependencies = [ + "serde", +] + +[[package]] +name = "snap" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "solang-parser" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c425ce1c59f4b154717592f0bdf4715c3a1d55058883622d3157e1f0908a5b26" +dependencies = [ + "itertools 0.11.0", + "lalrpop", + "lalrpop-util", + "phf", + "thiserror 1.0.69", + "unicode-xid", +] + +[[package]] +name = "sp1-lib" +version = "5.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0fd8bc101e5603ccf2dc1836ea06410f25ce2298755b2dac626add9be2424b4" +dependencies = [ + "bincode", + "serde", + "sp1-primitives", +] + +[[package]] +name = "sp1-primitives" +version = "5.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "699935774a5131c1a8b371108d0666c0c80c43611045fb77fae43f2f242676d5" +dependencies = [ + "bincode", + "blake3", + "cfg-if", + "hex", + "lazy_static", + "num-bigint 0.4.6", + "p3-baby-bear", + "p3-field", + "p3-poseidon2", + "p3-symmetric", + "serde", + "sha2", +] + +[[package]] +name = "sp1_bls12_381" +version = "0.8.0-sp1-5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac255e1704ebcdeec5e02f6a0ebc4d2e9e6b802161938330b6810c13a610c583" +dependencies = [ + "cfg-if", + "ff", + "group", + "pairing", + "rand_core 0.6.4", + "sp1-lib", + "subtle", +] + +[[package]] +name = "spawned-concurrency" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/spawned.git?tag=v0.1.0-alpha#abd5476b7cc0feeafd96ca79c6844e87702c7f83" +dependencies = [ + "futures", + "spawned-rt", + "tracing", +] + +[[package]] +name = "spawned-rt" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/spawned.git?tag=v0.1.0-alpha#abd5476b7cc0feeafd96ca79c6844e87702c7f83" +dependencies = [ + "tokio", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spinoff" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20aa2ed67fbb202e7b716ff8bfc6571dd9301617767380197d701c31124e88f6" +dependencies = [ + "colored 2.2.0", + "once_cell", + "paste", +] + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "string_cache" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" +dependencies = [ + "new_debug_unreachable", + "parking_lot", + "phf_shared", + "precomputed-hash", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f64def088c51c9510a8579e3c5d67c65349dcf755e5479ad3d010aa6454e2c32" + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.104", +] + +[[package]] +name = "substrate-bn" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b5bbfa79abbae15dd642ea8176a21a635ff3c00059961d1ea27ad04e5b441c" +dependencies = [ + "byteorder", + "crunchy", + "lazy_static", + "rand 0.8.5", + "rustc-hex", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "svm-rs" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11297baafe5fa0c99d5722458eac6a5e25c01eb1b8e5cd137f54079093daa7a4" +dependencies = [ + "dirs 5.0.1", + "fs2", + "hex", + "once_cell", + "reqwest 0.11.27", + "semver 1.0.26", + "serde", + "serde_json", + "sha2", + "thiserror 1.0.69", + "url", + "zip", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn-solidity" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4560533fbd6914b94a8fb5cc803ed6801c3455668db3b810702c57612bac9412" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys 0.5.0", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags 2.9.1", + "core-foundation", + "system-configuration-sys 0.6.0", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tempfile" +version = "3.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +dependencies = [ + "fastrand", + "getrandom 0.3.3", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "term" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" +dependencies = [ + "dirs-next", + "rustversion", + "winapi", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +dependencies = [ + "thiserror-impl 2.0.12", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + +[[package]] +name = "time" +version = "0.3.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" + +[[package]] +name = "time-macros" +version = "0.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls 0.21.12", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +dependencies = [ + "rustls 0.23.28", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" +dependencies = [ + "futures-util", + "log", + "rustls 0.21.12", + "tokio", + "tokio-rustls 0.24.1", + "tungstenite 0.20.1", + "webpki-roots", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6989540ced10490aaf14e6bad2e3d33728a2813310a0c71d1574304c49631cd" +dependencies = [ + "futures-util", + "log", + "native-tls", + "tokio", + "tokio-native-tls", + "tungstenite 0.23.0", +] + +[[package]] +name = "tokio-util" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "futures-util", + "hashbrown 0.15.4", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap 2.9.0", + "serde", + "serde_spanned", + "toml_datetime", + "toml_write", + "winnow", +] + +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 1.0.2", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags 2.9.1", + "bytes", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http 0.2.12", + "httparse", + "log", + "rand 0.8.5", + "rustls 0.21.12", + "sha1", + "thiserror 1.0.69", + "url", + "utf-8", +] + +[[package]] +name = "tungstenite" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e2ce1e47ed2994fd43b04c8f618008d4cabdd5ee34027cf14f9d918edd9c8" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http 1.3.1", + "httparse", + "log", + "native-tls", + "rand 0.8.5", + "sha1", + "thiserror 1.0.69", + "utf-8", +] + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "ucd-trie" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "uint" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "909988d098b2f738727b161a106cfc7cab00c539c2687a8836f8e565976fb53e" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "unicode-width" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom 0.2.16", + "serde", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wait-timeout" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" +dependencies = [ + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.104", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-registry" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3bab093bdd303a1240bb99b8aba8ea8a69ee19d34c9e2ef9594e708a4878820" +dependencies = [ + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + +[[package]] +name = "winnow" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.9.1", +] + +[[package]] +name = "writeable" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" + +[[package]] +name = "ws_stream_wasm" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c173014acad22e83f16403ee360115b38846fe754e735c5d9d3803fe70c6abc" +dependencies = [ + "async_io_stream", + "futures", + "js-sys", + "log", + "pharos", + "rustc_version 0.4.1", + "send_wrapper 0.6.0", + "thiserror 2.0.12", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "yansi" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" + +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "zip" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +dependencies = [ + "aes", + "byteorder", + "bzip2", + "constant_time_eq 0.1.5", + "crc32fast", + "crossbeam-utils", + "flate2", + "hmac", + "pbkdf2 0.11.0", + "sha1", + "time", + "zstd", +] + +[[package]] +name = "zkvm_interface" +version = "0.1.0" +source = "git+https://github.com/lambdaclass/ethrex?rev=b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce#b8c6d1fb5880ae7a3f02d65b9efe50035f3b60ce" +dependencies = [ + "ethrex-blockchain", + "ethrex-common", + "ethrex-l2-common", + "ethrex-rlp", + "ethrex-storage", + "ethrex-trie", + "ethrex-vm", + "keccak-hash", + "kzg-rs", + "serde", + "serde_json", + "serde_with", + "thiserror 2.0.12", +] + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.15+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237" +dependencies = [ + "cc", + "pkg-config", +] From 3afe6b305a5ad7b897fde39dce16227aff31ddec Mon Sep 17 00:00:00 2001 From: Lucas Rack Date: Mon, 23 Jun 2025 14:17:33 -0300 Subject: [PATCH 26/31] Remove dep --- Cargo.lock | 1 - sdk/Cargo.toml | 1 - 2 files changed, 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 037bcd1..c9e091c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4977,7 +4977,6 @@ dependencies = [ "dirs 6.0.0", "envy", "eth-keystore", - "ethers", "ethrex-blockchain", "ethrex-common", "ethrex-l2", diff --git a/sdk/Cargo.toml b/sdk/Cargo.toml index 627b1a6..71e99a9 100644 --- a/sdk/Cargo.toml +++ b/sdk/Cargo.toml @@ -22,7 +22,6 @@ keccak-hash.workspace = true secp256k1.workspace = true eth-keystore = "0.5" rand = "0.8.5" -ethers = "2.0" # Utils hex.workspace = true From 466c0440757d1c042b4efa55d544590e1bd69dd9 Mon Sep 17 00:00:00 2001 From: Lucas Rack Date: Mon, 23 Jun 2025 15:36:52 -0300 Subject: [PATCH 27/31] Recover address --- sdk/examples/keystore/main.rs | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/sdk/examples/keystore/main.rs b/sdk/examples/keystore/main.rs index 0ca7dc2..904be72 100644 --- a/sdk/examples/keystore/main.rs +++ b/sdk/examples/keystore/main.rs @@ -1,5 +1,6 @@ use clap::Parser; -use ethrex_common::{Bytes, H256, U256}; +use ethrex_common::{Bytes, H160, H256, U256}; +use keccak_hash::keccak; use rex_sdk::calldata::{Value, encode_calldata}; use rex_sdk::client::eth::get_address_from_secret_key; use rex_sdk::client::{EthClient, Overrides}; @@ -8,7 +9,6 @@ use rex_sdk::{ sign::sign_hash, transfer, wait_for_transaction_receipt, }; - use secp256k1::SecretKey; use std::fs::read_to_string; use std::path::PathBuf; @@ -95,7 +95,13 @@ async fn main() -> Result<(), Box> { // Prepare the calldata to call the contract function that emits a log. let message = H256::random(); - let signature = sign_hash(message, keystore_secret_key); + let prefix = "\x19Ethereum Signed Message:\n32"; + let mut hash_input = Vec::new(); + hash_input.extend_from_slice(prefix.as_bytes()); + hash_input.extend_from_slice(message.as_bytes()); + let hash = keccak(&hash_input); + + let signature = sign_hash(hash, keystore_secret_key); let raw_function_signature = "recoverSigner(bytes32,bytes)"; let arguments = vec![ @@ -148,6 +154,13 @@ async fn main() -> Result<(), Box> { println!("\tTx Logs: {:?}", logs); + let address_bytes = &logs[0].log.data[logs[0].log.data.len() - 20..]; + let recovered_address = H160::from_str(&hex::encode(address_bytes))?; + assert_eq!(recovered_address, keystore_address); + + println!("\nAddress recovered successfully!"); + println!("\tRecovered address: {recovered_address:#x}"); + Ok(()) } From 9ed9e1fa8209e41424a7a71b382235461f76e6b5 Mon Sep 17 00:00:00 2001 From: Lucas Rack Date: Mon, 23 Jun 2025 15:56:17 -0300 Subject: [PATCH 28/31] Improve comments --- sdk/examples/keystore/main.rs | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/sdk/examples/keystore/main.rs b/sdk/examples/keystore/main.rs index 904be72..f7044e3 100644 --- a/sdk/examples/keystore/main.rs +++ b/sdk/examples/keystore/main.rs @@ -15,10 +15,15 @@ use std::path::PathBuf; use std::process::Command; use std::str::FromStr; -const RICH_WALLET_PK: &str = "5d2344259f42259f82d2c140aa66102ba89b57b4883ee441a8b312622bd42491"; - #[derive(Parser)] struct ExampleArgs { + #[arg( + long, + default_value = "5d2344259f42259f82d2c140aa66102ba89b57b4883ee441a8b312622bd42491", + env = "PRIVATE_KEY", + help = "The private key to derive the address from." + )] + private_key: String, #[arg(long, default_value = "http://localhost:8545", env = "RPC_URL")] rpc_url: String, } @@ -27,14 +32,14 @@ struct ExampleArgs { async fn main() -> Result<(), Box> { let args = ExampleArgs::parse(); - // Download contract deps and compile contract. + // 1. Download contract deps and compile contract. setup(); - // Create a keystore. - create_new_keystore(None, Some("ContractKeystore"), "LambdaClass")?; + // 2. Create a new keystore named "RexTest" in the "ContractKeystores" directory. + create_new_keystore(None, Some("RexTest"), "LambdaClass")?; - // Load the secret key from the keystore. - let keystore_secret_key = load_keystore_from_path(None, "ContractKeystore", "LambdaClass")?; + // 3. Load the keystore with the password. + let keystore_secret_key = load_keystore_from_path(None, "RexTest", "LambdaClass")?; let keystore_address = get_address_from_secret_key(&keystore_secret_key)?; println!("\nKeystore loaded successfully:"); @@ -47,8 +52,8 @@ async fn main() -> Result<(), Box> { // Connect the client to a node let eth_client = EthClient::new(&args.rpc_url); - // Transfer funds from a rich wallet to the keystore's account - let rich_wallet_pk = SecretKey::from_str(RICH_WALLET_PK)?; + // 4. Fund the keystore account. + let rich_wallet_pk = SecretKey::from_str(&args.private_key)?; let rich_wallet_address = get_address_from_secret_key(&rich_wallet_pk)?; let amount = U256::from_dec_str("1000000000000000000").expect("Failed to parse amount"); let transfer_tx_hash = transfer( @@ -68,7 +73,7 @@ async fn main() -> Result<(), Box> { println!("\tTransfer tx hash: {transfer_tx_hash:#x}"); println!("\tTransfer receipt: {transfer_receipt:?}"); - // Deploy a contract. + // 5. Deploy the signer recovery example contract with the keystore account. let bytecode_path = PathBuf::from(env!("CARGO_MANIFEST_DIR")) .join("examples/keystore/contracts/solc_out") .join("RecoverSigner.bin"); @@ -93,7 +98,8 @@ async fn main() -> Result<(), Box> { // Get the current block (for later). let from_block = eth_client.get_block_number().await?; - // Prepare the calldata to call the contract function that emits a log. + // 6. Prepare the calldata to call the example contract. + // i. Prepare a message. let message = H256::random(); let prefix = "\x19Ethereum Signed Message:\n32"; let mut hash_input = Vec::new(); @@ -101,8 +107,10 @@ async fn main() -> Result<(), Box> { hash_input.extend_from_slice(message.as_bytes()); let hash = keccak(&hash_input); + // ii. Sign the hash of the message with the keystore private key. let signature = sign_hash(hash, keystore_secret_key); + // iii. ABI-encode the parameters. let raw_function_signature = "recoverSigner(bytes32,bytes)"; let arguments = vec![ Value::FixedBytes(Bytes::from(message.to_fixed_bytes().to_vec())), @@ -110,6 +118,7 @@ async fn main() -> Result<(), Box> { ]; let calldata = encode_calldata(raw_function_signature, &arguments).unwrap(); + // 7. Prepare and send the transaction for calling the example contract. let tx = eth_client .build_eip1559_transaction( deployed_address, @@ -142,7 +151,7 @@ async fn main() -> Result<(), Box> { // Get the new current block. let to_block = eth_client.get_block_number().await?; - // Get the emitted logs using the current block and the previous current block. + // 8. Get the log emitted by the contract call execution. let logs = eth_client .get_logs_from_signature( from_block, @@ -154,6 +163,7 @@ async fn main() -> Result<(), Box> { println!("\tTx Logs: {:?}", logs); + // 9. Compare it with the expected one. let address_bytes = &logs[0].log.data[logs[0].log.data.len() - 20..]; let recovered_address = H160::from_str(&hex::encode(address_bytes))?; assert_eq!(recovered_address, keystore_address); From ed1f35f203d92c923ba79f54034ab05ae8e54a85 Mon Sep 17 00:00:00 2001 From: Lucas Rack Date: Mon, 23 Jun 2025 16:35:29 -0300 Subject: [PATCH 29/31] add private key in docs --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8b6a9de..ca65276 100644 --- a/README.md +++ b/README.md @@ -261,7 +261,7 @@ async fn main() { ```Shell cd sdk cargo run --release --example simple_usage -- --private-key --rpc-url -cargo run --release --example keystore -- --rpc-url +cargo run --release --example keystore -- --private-key --rpc-url ``` > [!NOTE] From ef901a7cfd91e28838311b5e8933f7dc82c6fc5e Mon Sep 17 00:00:00 2001 From: Lucas Rack Date: Tue, 24 Jun 2025 12:35:50 -0300 Subject: [PATCH 30/31] Have mandatory pk --- sdk/examples/keystore/main.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/sdk/examples/keystore/main.rs b/sdk/examples/keystore/main.rs index f7044e3..72d59d6 100644 --- a/sdk/examples/keystore/main.rs +++ b/sdk/examples/keystore/main.rs @@ -19,7 +19,6 @@ use std::str::FromStr; struct ExampleArgs { #[arg( long, - default_value = "5d2344259f42259f82d2c140aa66102ba89b57b4883ee441a8b312622bd42491", env = "PRIVATE_KEY", help = "The private key to derive the address from." )] From c58dda8a1d098009d6c3f128bce109886b658ed3 Mon Sep 17 00:00:00 2001 From: Lucas Rack Date: Wed, 25 Jun 2025 16:27:51 -0300 Subject: [PATCH 31/31] strip prefix --- sdk/examples/keystore/main.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sdk/examples/keystore/main.rs b/sdk/examples/keystore/main.rs index 72d59d6..51e12fc 100644 --- a/sdk/examples/keystore/main.rs +++ b/sdk/examples/keystore/main.rs @@ -52,7 +52,11 @@ async fn main() -> Result<(), Box> { let eth_client = EthClient::new(&args.rpc_url); // 4. Fund the keystore account. - let rich_wallet_pk = SecretKey::from_str(&args.private_key)?; + let pk = &args + .private_key + .strip_prefix("0x") + .unwrap_or(&args.private_key); + let rich_wallet_pk = SecretKey::from_str(&pk)?; let rich_wallet_address = get_address_from_secret_key(&rich_wallet_pk)?; let amount = U256::from_dec_str("1000000000000000000").expect("Failed to parse amount"); let transfer_tx_hash = transfer(