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