Crate evm_coder

source ·
Expand description

§evm-coder

Library for seamless call translation between Rust and Solidity code

By encoding solidity definitions in Rust, this library also provides generation of solidity interfaces for ethereum developers

§Overview

Most of this library functionality shouldn’t be used directly, but via macros

Re-exports§

Modules§

  • Implementation of EVM RLP reader/writer
  • A module for custom signature support.
  • Solidity type definitions (aliases from solidity name to rust type) To be used in solidity_interface definitions, to make sure there is no type conflict between Rust code and generated definitions

Macros§

  • Implement dummy Contract trait, used for tests Allows contract methods to return either T, or Result<T, String> for any T
  • Returns solidity topic (hash) by its textual representation
  • Returns solidity function selector (first 4 bytes of hash) by its textual representation
  • Generate “tests”, which will generate solidity code on execution and print it to stdout Script at .maintain/scripts/generate_api.sh can split this output from test runtime
  • Macro to create signatures of types and functions.

Structs§

Enums§

  • Implementation of ERC165 is implicitly generated for all interfaces in solidity_interface, this structure holds parsed data for ERC165Call subvariant

Traits§

  • Parseable EVM call, this trait should be implemented with solidity_interface macro
  • Type callable with ethereum message, may be implemented by solidity_interface macro on interface implementation, or for externally-owned real EVM contract
  • Contract configuration
  • Implementation of this trait should not be written manually, instead use crate::ToLog proc macros.
  • Only items implementing ToTopic may be used as #[indexed] field in crate::ToLog macro usage.

Type Aliases§

Attribute Macros§

Derive Macros§

  • Macro to include support for structures and enums in Solidity.
  • Derives ToLog for enum