From ca6545b6eef65881cbb9198352b23a12faacca5f Mon Sep 17 00:00:00 2001 From: 0xfirefist Date: Tue, 9 Jan 2024 22:47:57 +0530 Subject: [PATCH 1/2] bind provider and contract address --- fortuna/Cargo.lock | 2 +- fortuna/Cargo.toml | 2 +- fortuna/src/command/register_provider.rs | 29 ++++++++++++++++-------- fortuna/src/command/run.rs | 2 ++ fortuna/src/state.rs | 5 ++++ 5 files changed, 28 insertions(+), 12 deletions(-) diff --git a/fortuna/Cargo.lock b/fortuna/Cargo.lock index 5e8710e889..f421cf6028 100644 --- a/fortuna/Cargo.lock +++ b/fortuna/Cargo.lock @@ -1486,7 +1486,7 @@ dependencies = [ [[package]] name = "fortuna" -version = "3.1.0" +version = "3.2.0" dependencies = [ "anyhow", "axum", diff --git a/fortuna/Cargo.toml b/fortuna/Cargo.toml index dcd97dde10..e9fa84c05e 100644 --- a/fortuna/Cargo.toml +++ b/fortuna/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fortuna" -version = "3.1.0" +version = "3.2.0" edition = "2021" [dependencies] diff --git a/fortuna/src/command/register_provider.rs b/fortuna/src/command/register_provider.rs index 2850374be9..b59133e53c 100644 --- a/fortuna/src/command/register_provider.rs +++ b/fortuna/src/command/register_provider.rs @@ -8,6 +8,13 @@ use { state::PebbleHashChain, }, anyhow::Result, + ethers::{ + signers::{ + LocalWallet, + Signer, + }, + types::Address, + }, std::sync::Arc, }; @@ -20,22 +27,24 @@ pub struct CommitmentMetadata { /// Register as a randomness provider. This method will generate and commit to a new random /// hash chain from the configured secret & a newly generated random value. pub async fn register_provider(opts: &RegisterProviderOptions) -> Result<()> { - // Initialize a Provider to interface with the EVM contract. - let contract = Arc::new( - SignablePythContract::from_config( - &Config::load(&opts.config.config)?.get_chain_config(&opts.chain_id)?, - &opts.private_key, - ) - .await?, - ); + let chain_config = Config::load(&opts.config.config)?.get_chain_config(&opts.chain_id)?; + // Initialize a Provider to interface with the EVM contract. + let contract = + Arc::new(SignablePythContract::from_config(&chain_config, &opts.private_key).await?); // Create a new random hash chain. let random = rand::random::<[u8; 32]>(); let secret = opts.randomness.load_secret()?; let commitment_length = opts.randomness.chain_length; - let mut chain = - PebbleHashChain::from_config(&secret, &opts.chain_id, &random, commitment_length)?; + let mut chain = PebbleHashChain::from_config( + &secret, + &opts.chain_id, + &opts.private_key.clone().parse::()?.address(), + &chain_config.contract_addr, + &random, + commitment_length, + )?; // Arguments to the contract to register our new provider. let fee_in_wei = opts.fee; diff --git a/fortuna/src/command/run.rs b/fortuna/src/command/run.rs index b88f057357..c95f86b74b 100644 --- a/fortuna/src/command/run.rs +++ b/fortuna/src/command/run.rs @@ -68,6 +68,8 @@ pub async fn run(opts: &RunOptions) -> Result<()> { let hash_chain = PebbleHashChain::from_config( &secret, &chain_id, + &opts.provider, + &chain_config.contract_addr, &metadata.seed, metadata.chain_length, )?; diff --git a/fortuna/src/state.rs b/fortuna/src/state.rs index a05af45b08..f7d654cfe9 100644 --- a/fortuna/src/state.rs +++ b/fortuna/src/state.rs @@ -8,6 +8,7 @@ use { Digest, Keccak256, }, + ethers::types::Address, }; /// A HashChain. @@ -35,12 +36,16 @@ impl PebbleHashChain { pub fn from_config( secret: &str, chain_id: &ChainId, + provider_address: &Address, + contract_address: &Address, random: &[u8; 32], chain_length: u64, ) -> Result { let mut input: Vec = vec![]; input.extend_from_slice(&hex::decode(secret)?); input.extend_from_slice(&chain_id.as_bytes()); + input.extend_from_slice(&provider_address.as_bytes()); + input.extend_from_slice(&contract_address.as_bytes()); input.extend_from_slice(random); let secret: [u8; 32] = Keccak256::digest(input).into(); From 715a8dc4ff0bf173721e48740463ae31f8f4601b Mon Sep 17 00:00:00 2001 From: 0xfirefist Date: Tue, 9 Jan 2024 23:19:11 +0530 Subject: [PATCH 2/2] pre commit --- fortuna/src/state.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fortuna/src/state.rs b/fortuna/src/state.rs index f7d654cfe9..266ccaa241 100644 --- a/fortuna/src/state.rs +++ b/fortuna/src/state.rs @@ -4,11 +4,11 @@ use { ensure, Result, }, + ethers::types::Address, sha3::{ Digest, Keccak256, }, - ethers::types::Address, }; /// A HashChain.