diff --git a/core/executor/src/precompiles/ckb_mbt_verify.rs b/core/executor/src/precompiles/ckb_mbt_verify.rs index 349a6d64f..3e29d3799 100644 --- a/core/executor/src/precompiles/ckb_mbt_verify.rs +++ b/core/executor/src/precompiles/ckb_mbt_verify.rs @@ -66,8 +66,9 @@ impl PrecompileContract for CMBTVerify { } } +#[allow(unused_parens)] fn parse_input(input: &[u8]) -> Result { - ::decode(input).map_err(|_| err!(_, "decode input")) + <(VerifyProofPayload) as AbiDecode>::decode(input).map_err(|_| err!(_, "decode input")) } fn inner_verify_proof(payload: VerifyProofPayload) -> Result<(), PrecompileFailure> { diff --git a/core/executor/src/precompiles/get_header.rs b/core/executor/src/precompiles/get_header.rs index bca27de2b..5a50cdfc7 100644 --- a/core/executor/src/precompiles/get_header.rs +++ b/core/executor/src/precompiles/get_header.rs @@ -1,10 +1,11 @@ -use ethers::abi::AbiDecode; +use ethers::abi::{AbiDecode, AbiEncode}; use evm::executor::stack::{PrecompileFailure, PrecompileOutput}; use evm::{Context, ExitError, ExitSucceed}; use protocol::types::{H160, H256}; use crate::precompiles::{axon_precompile_address, PrecompileContract}; +use crate::system_contract::ckb_light_client::ckb_light_client_abi; use crate::{err, system_contract::ckb_light_client::CkbHeaderReader, CURRENT_HEADER_CELL_ROOT}; #[derive(Default, Clone)] @@ -14,6 +15,7 @@ impl PrecompileContract for GetHeader { const ADDRESS: H160 = axon_precompile_address(0x02); const MIN_GAS: u64 = 42000; + #[allow(unused_parens, clippy::double_parens)] fn exec_fn( input: &[u8], gas_limit: Option, @@ -39,10 +41,13 @@ impl PrecompileContract for GetHeader { return err!("get header return None"); } + let header = + ::decode(header_opt.unwrap()).unwrap(); + Ok(( PrecompileOutput { exit_status: ExitSucceed::Returned, - output: header_opt.unwrap(), + output: AbiEncode::encode((header)), }, gas, ))