mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-22 16:11:08 +00:00
pallet-evm: add support for tuple-based precompile declarations (#6681)
* pallet-evm: add support for tuple-based precompile declarations * Add missing license header * Switch to use impl_for_tuples * Remove unnecessary impl for ()
This commit is contained in:
@@ -21,8 +21,10 @@
|
||||
#![cfg_attr(not(feature = "std"), no_std)]
|
||||
|
||||
mod backend;
|
||||
mod precompiles;
|
||||
mod tests;
|
||||
|
||||
pub use crate::precompiles::{Precompile, Precompiles};
|
||||
pub use crate::backend::{Account, Log, Vicinity, Backend};
|
||||
|
||||
use sp_std::vec::Vec;
|
||||
@@ -175,30 +177,6 @@ impl<H: Hasher<Out=H256>> AddressMapping<AccountId32> for HashedAddressMapping<H
|
||||
}
|
||||
}
|
||||
|
||||
/// Custom precompiles to be used by EVM engine.
|
||||
pub trait Precompiles {
|
||||
/// Try to execute the code address as precompile. If the code address is not
|
||||
/// a precompile or the precompile is not yet available, return `None`.
|
||||
/// Otherwise, calculate the amount of gas needed with given `input` and
|
||||
/// `target_gas`. Return `Some(Ok(status, output, gas_used))` if the execution
|
||||
/// is successful. Otherwise return `Some(Err(_))`.
|
||||
fn execute(
|
||||
address: H160,
|
||||
input: &[u8],
|
||||
target_gas: Option<usize>
|
||||
) -> Option<core::result::Result<(ExitSucceed, Vec<u8>, usize), ExitError>>;
|
||||
}
|
||||
|
||||
impl Precompiles for () {
|
||||
fn execute(
|
||||
_address: H160,
|
||||
_input: &[u8],
|
||||
_target_gas: Option<usize>
|
||||
) -> Option<core::result::Result<(ExitSucceed, Vec<u8>, usize), ExitError>> {
|
||||
None
|
||||
}
|
||||
}
|
||||
|
||||
/// Substrate system chain ID.
|
||||
pub struct SystemChainId;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user