From a5f3c9148901d4c0c975bcc56a16653bc68cc035 Mon Sep 17 00:00:00 2001 From: Kirill Date: Mon, 10 Apr 2023 23:25:20 +0100 Subject: [PATCH] Merge `eth-prover-0.2.2` branch (#891) * `EthProver`: fix log_index conversion. * `EthProver`: update res file. --- contracts/near/eth-prover/src/lib.rs | 4 +++- contracts/near/res/eth_prover.wasm | Bin 170421 -> 170818 bytes 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/contracts/near/eth-prover/src/lib.rs b/contracts/near/eth-prover/src/lib.rs index 4a90dc87..5b1b14bc 100644 --- a/contracts/near/eth-prover/src/lib.rs +++ b/contracts/near/eth-prover/src/lib.rs @@ -1,5 +1,6 @@ use admin_controlled::Mask; use borsh::{BorshDeserialize, BorshSerialize}; +use core::convert::TryFrom; use eth_types::*; use near_sdk::{env, ext_contract, near_bindgen, Gas, PanicOnDefault, PromiseOrValue}; use rlp::Rlp; @@ -112,7 +113,8 @@ impl EthProver { let header: BlockHeader = rlp::decode(header_data.as_slice()).unwrap(); // Verify log_entry included in receipt - assert_eq!(receipt.logs[log_index as usize], log_entry); + let log_index_usize = usize::try_from(log_index).expect("Invalid log_index"); + assert_eq!(receipt.logs[log_index_usize], log_entry); // Verify receipt included into header let data = diff --git a/contracts/near/res/eth_prover.wasm b/contracts/near/res/eth_prover.wasm index c0f3c42041fa2a845842f24f8b40f0c35fb8ae37..f839f476c5443d73e10d4d1895080f9d1de43671 100755 GIT binary patch delta 19188 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 delta 18895 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