From 4c230911b7062426bc0b61ba5537227d3f2c7186 Mon Sep 17 00:00:00 2001 From: JeromeDeschamps <jerome.deschamps@uca.fr> Date: Thu, 29 Feb 2024 11:52:31 +0100 Subject: [PATCH] Fix behavior sent hash, it failed matching of wallet address because recover sender is based on hash of behavior --- src/utils/miner.rs | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/utils/miner.rs b/src/utils/miner.rs index 4afe052..107a61f 100644 --- a/src/utils/miner.rs +++ b/src/utils/miner.rs @@ -10,6 +10,7 @@ use ethers::{ TransactionRequest, }, }; +use ethers::utils::keccak256; use ethnum::U256; /// Get a RPC Behavior for miner with default values, ready to send. @@ -43,16 +44,16 @@ pub fn get_miner_behavior( _ => U256::from(MEAN_VDF_DIFFICULTY_PER_SEC * 60), }; let behavior_msg = BehaviorMessage{ - chain_id: U64::from(chain_id), - to:Some(to), - timestamp: U64::from(now), - quantity, - input: Bytes::from("0x015d8eb90000000000000000000000000000000000000000000000000000000000878c1c00000000000000000000000000000000000000000000000000000000644662bc0000000000000000000000000000000000000000000000000000001ee24fba17b7e19cc10812911dfa8a438e0a81a9933f843aa5b528899b8d9e221b649ae0df00000000000000000000000000000000000000000000000000000000000000060000000000000000000000007431310e026b69bfc676c0013e12a1a11411eec9000000000000000000000000000000000000000000000000000000000000083400000000000000000000000000000000000000000000000000000000000f4240") }; + chain_id: U64::from(chain_id), + to:Some(to), + timestamp: U64::from(now), + quantity, + input: Bytes::from("0x015d8eb90000000000000000000000000000000000000000000000000000000000878c1c00000000000000000000000000000000000000000000000000000000644662bc0000000000000000000000000000000000000000000000000000001ee24fba17b7e19cc10812911dfa8a438e0a81a9933f843aa5b528899b8d9e221b649ae0df00000000000000000000000000000000000000000000000000000000000000060000000000000000000000007431310e026b69bfc676c0013e12a1a11411eec9000000000000000000000000000000000000000000000000000000000000083400000000000000000000000000000000000000000000000000000000000f4240") }; // let behavior = wallet. let tr = TransactionRequest::new() .to(to) - .value(primitive_types::U256::zero()) + .value(primitive_types::U256::from(quantity.as_u128())) .chain_id(chain_id) .data(behavior_msg.input.0.clone()); @@ -60,17 +61,20 @@ pub fn get_miner_behavior( // wallet.sig let signature = wallet .sign_transaction_sync( - ðers::types::transaction::eip2718::TypedTransaction::EcoMobiCoinBehavior(bx), + ðers::types::transaction::eip2718::TypedTransaction::EcoMobiCoinBehavior(bx.clone()), ) .unwrap(); + let behavior_rlp = bx.rlp(); + let bx_hash: primitive_types::H256 = keccak256(behavior_rlp.as_ref()).into(); + let hash = primitive_types::H256::from(bx_hash); Behavior { message: behavior_msg, v: signature.v.into(), r: H256::from(signature.r).into(), s: H256::from(signature.s).into(), from: wallet.address(), - hash: H256::default().into(), + hash, behavior_index: None, block_number: None, block_hash: None, -- GitLab