From 0579572744dd619ed781f208cb380710fc26c2a7 Mon Sep 17 00:00:00 2001 From: Mateusz Nowakowski Date: Mon, 21 Oct 2024 10:05:02 +0200 Subject: [PATCH] use type prefix when calculating the L2Request hash --- pallets/rolldown/src/messages/eth_abi.rs | 3 +++ pallets/rolldown/src/messages/mod.rs | 22 +++++++++++++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/pallets/rolldown/src/messages/eth_abi.rs b/pallets/rolldown/src/messages/eth_abi.rs index fb70cb598..3c502d3a8 100644 --- a/pallets/rolldown/src/messages/eth_abi.rs +++ b/pallets/rolldown/src/messages/eth_abi.rs @@ -143,6 +143,9 @@ sol! { #[derive(Debug, Eq, PartialEq, Encode, Decode, TypeInfo)] enum Chain{ Ethereum, Arbitrum } + #[derive(Debug, Eq, PartialEq, Encode, Decode, TypeInfo)] + enum L2RequestType{ Withdrawal, Cancel, FailedDepositResolution } + #[derive(Debug)] struct L1Update { Chain chain; diff --git a/pallets/rolldown/src/messages/mod.rs b/pallets/rolldown/src/messages/mod.rs index fbc9610c3..54bef47d0 100644 --- a/pallets/rolldown/src/messages/mod.rs +++ b/pallets/rolldown/src/messages/mod.rs @@ -58,9 +58,25 @@ where impl EthAbi for L2Request { fn abi_encode(&self) -> Vec { match self { - L2Request::FailedDepositResolution(deposit) => deposit.abi_encode(), - L2Request::Cancel(cancel) => cancel.abi_encode(), - L2Request::Withdrawal(withdrawal) => withdrawal.abi_encode(), + L2Request::FailedDepositResolution(deposit) => + eth_abi::L2RequestType::FailedDepositResolution + .abi_encode() + .iter() + .chain(deposit.abi_encode().iter()) + .cloned() + .collect(), + L2Request::Cancel(cancel) => eth_abi::L2RequestType::Cancel + .abi_encode() + .iter() + .chain(cancel.abi_encode().iter()) + .cloned() + .collect(), + L2Request::Withdrawal(withdrawal) => eth_abi::L2RequestType::Withdrawal + .abi_encode() + .iter() + .chain(withdrawal.abi_encode().iter()) + .cloned() + .collect(), } } }