pub struct registerSstoreHookCall {
pub target: Address,
pub callback: FixedBytes<4>,
}Expand description
Registers a callback invoked after each SSTORE against target’s effective storage account,
including when its code runs by delegatecall.
The callback must have the signature function(address,bytes32,bytes32,bytes32) external.
Registering another callback for the same target and access kind replaces it. Registration
survives EVM reverts, while callback state follows the enclosing EVM context and rolls back
with it. Callback reverts propagate through the storage operation. Hooks are suppressed in
the callback and its entire call subtree. The callback must authenticate
msg.sender == address(vm) to prevent external spoofing. Callback execution is hidden from
mocks, expectations, log recording, and storage-access recording. It does not inherit
staticness. The callback runs as an ordinary call frame and consumes one of the 1024
protocol call-depth slots; a store at the maximum legal call depth can have its callback
rejected as too deep, propagating as a failure of the store.
Function with signature registerSstoreHook(address,bytes4) and selector 0xe0c3bdd9.
function registerSstoreHook(address target, bytes4 callback) external;Fields§
§target: Address§callback: FixedBytes<4>Trait Implementations§
Source§impl Clone for registerSstoreHookCall
impl Clone for registerSstoreHookCall
Source§fn clone(&self) -> registerSstoreHookCall
fn clone(&self) -> registerSstoreHookCall
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for registerSstoreHookCall
impl Debug for registerSstoreHookCall
Source§impl JsonAbiExt for registerSstoreHookCall
impl JsonAbiExt for registerSstoreHookCall
Source§impl SolCall for registerSstoreHookCall
impl SolCall for registerSstoreHookCall
Source§const SIGNATURE: &'static str = "registerSstoreHook(address,bytes4)"
const SIGNATURE: &'static str = "registerSstoreHook(address,bytes4)"
Source§type Parameters<'a> = (Address, FixedBytes<4>)
type Parameters<'a> = (Address, FixedBytes<4>)
Source§type Token<'a> = <<registerSstoreHookCall as SolCall>::Parameters<'a> as SolType>::Token<'a>
type Token<'a> = <<registerSstoreHookCall as SolCall>::Parameters<'a> as SolType>::Token<'a>
Source§type Return = registerSstoreHookReturn
type Return = registerSstoreHookReturn
Source§type ReturnTuple<'a> = ()
type ReturnTuple<'a> = ()
Source§type ReturnToken<'a> = <<registerSstoreHookCall as SolCall>::ReturnTuple<'a> as SolType>::Token<'a>
type ReturnToken<'a> = <<registerSstoreHookCall as SolCall>::ReturnTuple<'a> as SolType>::Token<'a>
Source§fn new<'a>(tuple: <Self::Parameters<'a> as SolType>::RustType) -> Self
fn new<'a>(tuple: <Self::Parameters<'a> as SolType>::RustType) -> Self
Source§fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_>
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_>
Source§fn abi_decode_returns(data: &[u8]) -> Result<Self::Return>
fn abi_decode_returns(data: &[u8]) -> Result<Self::Return>
Source§fn abi_decode_returns_validate(data: &[u8]) -> Result<Self::Return>
fn abi_decode_returns_validate(data: &[u8]) -> Result<Self::Return>
§fn abi_encoded_size(&self) -> usize
fn abi_encoded_size(&self) -> usize
§fn abi_decode_raw(data: &[u8]) -> Result<Self, Error>
fn abi_decode_raw(data: &[u8]) -> Result<Self, Error>
§fn abi_decode_raw_validate(data: &[u8]) -> Result<Self, Error>
fn abi_decode_raw_validate(data: &[u8]) -> Result<Self, Error>
§fn abi_decode(data: &[u8]) -> Result<Self, Error>
fn abi_decode(data: &[u8]) -> Result<Self, Error>
§fn abi_decode_validate(data: &[u8]) -> Result<Self, Error>
fn abi_decode_validate(data: &[u8]) -> Result<Self, Error>
§fn abi_encode_raw(&self, out: &mut Vec<u8>)
fn abi_encode_raw(&self, out: &mut Vec<u8>)
§fn abi_encode(&self) -> Vec<u8> ⓘ
fn abi_encode(&self) -> Vec<u8> ⓘ
§fn abi_encode_returns(ret: &Self::Return) -> Vec<u8> ⓘ
fn abi_encode_returns(ret: &Self::Return) -> Vec<u8> ⓘ
Auto Trait Implementations§
impl Freeze for registerSstoreHookCall
impl RefUnwindSafe for registerSstoreHookCall
impl Send for registerSstoreHookCall
impl Sync for registerSstoreHookCall
impl Unpin for registerSstoreHookCall
impl UnsafeUnpin for registerSstoreHookCall
impl UnwindSafe for registerSstoreHookCall
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 24 bytes