Get desktop application:
View/edit binary Protocol Buffers messages
* Definition of a general-purpose EVM hook.
Used in:
* The specification for the hook.
* Initial storage updates for the hook, if any.
* Specifies storage slot updates via indirection into a Solidity mapping. <p> Concretely, if the Solidity mapping is itself at slot `mapping_slot`, then the * storage slot for key `key` in the mapping is defined by the relationship `key_storage_slot = keccak256(abi.encodePacked(mapping_slot, key))`. <p> This message lets a metaprotocol be specified in terms of changes to a Solidity mapping's entries. If only raw slots could be updated, then a block stream consumer following the metaprotocol would have to invert the Keccak256 hash to determine which mapping entry was being updated, which is not possible.
Used in:
* The slot that corresponds to the Solidity mapping itself. Must use a minimal byte representation (no leading zeros).
* The entries in the mapping at the given slot.
* An entry in a Solidity mapping. Very helpful for protocols that apply `HookStore` to manage the entries of a hook contract's mapping instead its raw storage slots. <p> This is especially attractive when the mapping value itself fits in a single word; for more complicated value storage layouts it becomes necessary to combine the mapping update with additional `EvmHookStorageSlot` updates that specify the complete storage slots of the value type.
Used in:
* The explicit bytes of the mapping entry. Must use a minimal byte representation; may not exceed 32 bytes in length.
* The bytes that are the preimage of the Keccak256 hash that forms the mapping key. May be longer or shorter than 32 bytes and may have leading zeros, since Solidity supports variable-length keys in mappings.
* If the mapping entry is present and non-zero, its value. May not be longer than 32 bytes in length; must use a minimal byte representation (no leading zeros). Leaving this field empty in an update removes the entry from the mapping.
* Shared specifications for an EVM hook. May be used for any extension point.
Used in:
* The source of the EVM bytecode for the hook.
* The id of a contract that implements the extension point API with EVM bytecode.
* A slot in the storage of an EVM hook.
Used in:
* The key of the slot. Must use a minimal byte representation (no leading zeros); may not exceed 32 bytes in length.
* If the slot is present and non-zero, its value. Must use a minimal byte representation (no leading zeros); may not exceed 32 bytes in length Leaving this field empty in an update removes the slot from storage.
* Specifies a key/value pair in the storage of an EVM hook, either by the explicit storage slot contents; or by a combination of a Solidity mapping's slot key and the key into that mapping.
Used in: ,
* An explicit storage slot update.
* Implicit storage slot updates specified as Solidity mapping entries.
* Specifies the creation of a new hook at the given id for the given entity.
Used in:
* The id of the hook's entity.
* The creation details.
* If set, the id of the hook following this one in the owner's doubly-linked list of hooks.
** The details of a hook's creation.
Used in: , , , ,
* The extension point for the hook.
* The id to create the hook at.
* The hook implementation.
* A general-purpose hook programmed in EVM bytecode that may access state or interact with external contracts.
* If set, a key that that can be used to remove or replace the hook; or (if applicable, as with an EVM hook) do transactions that customize the hook.
* Dispatches a hook action to an appropriate service.
Used in:
* The id of the hook to delete.
* Creation details for a new hook.
* Execution details of an existing hook.
* Details the execution of a hook.
Used in:
* The id of the hook's entity.
* The details of the call, including which hook id to call.
** The Hiero extension points that accept a hook.
Used in: ,
* Used to customize an account's allowances during a CryptoTransfer transaction.
* Adds or removes key/value pairs in the storage of an EVM hook. Either the hook owner's key, or its admin key, must sign the transaction.
Used in:
* The id of the EVM hook whose storage is being updated.
* The updates to the storage of the EVM hook.