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(
-            &ethers::types::transaction::eip2718::TypedTransaction::EcoMobiCoinBehavior(bx),
+            &ethers::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