laconicd-deprecated/x/evm/spec
Federico Kunze 6000ab2098
chore: un-fork from cosmos (#166)
* chore: un-fork from cosmos

* rm LoC
2021-06-22 06:49:18 -04:00
..
01_concepts.md chore: un-fork from cosmos (#166) 2021-06-22 06:49:18 -04:00
02_state.md chore: un-fork from cosmos (#166) 2021-06-22 06:49:18 -04:00
03_state_transitions.md evm: module specification (#538) 2020-12-09 20:11:15 +01:00
04_messages.md chore: un-fork from cosmos (#166) 2021-06-22 06:49:18 -04:00
05_abci.md evm: module specification (#538) 2020-12-09 20:11:15 +01:00
06_events.md evm: module specification (#538) 2020-12-09 20:11:15 +01:00
07_params.md evm: module specification (#538) 2020-12-09 20:11:15 +01:00
README.md evm: module specification (#538) 2020-12-09 20:11:15 +01:00

evm

Abstract

This document defines the specification of the Ethereum Virtual Machine (EVM) as a Cosmos SDK module.

Contents

  1. Concepts
  2. State
  3. State Transitions
  4. Messages
  5. ABCI
  6. Events
  7. Parameters

Module Architecture

NOTE:: If you're not familiar with the overall module structure from the SDK modules, please check this document as prerequisite reading.

evm/
├── client
│   └── cli
│       ├── query.go      # CLI query commands for the module
│       └── tx.go         # CLI transaction commands for the module
├── keeper
│   ├── keeper.go         # ABCI BeginBlock and EndBlock logic
│   ├── keeper.go         # Store keeper that handles the business logic of the module and has access to a specific subtree of the state tree.
│   ├── params.go         # Parameter getter and setter
│   ├── querier.go        # State query functions
│   └── statedb.go        # Functions from types/statedb with a passed in sdk.Context
├── types
│   ├── chain_config.go
│   ├── codec.go          # Type registration for encoding
│   ├── errors.go         # Module-specific errors
│   ├── events.go         # Events exposed to the Tendermint PubSub/Websocket
│   ├── genesis.go        # Genesis state for the module
│   ├── journal.go        # Ethereum Journal of state transitions
│   ├── keys.go           # Store keys and utility functions
│   ├── logs.go           # Types for persisting Ethereum tx logs on state after chain upgrades
│   ├── msg.go            # EVM module transaction messages
│   ├── params.go         # Module parameters that can be customized with governance parameter change proposals
│   ├── state_object.go   # EVM state object
│   ├── statedb.go        # Implementation of the StateDb interface
│   ├── storage.go        # Implementation of the Ethereum state storage map using arrays to prevent non-determinism
│   └── tx_data.go        # Ethereum transaction data types
├── genesis.go            # ABCI InitGenesis and ExportGenesis functionality
├── handler.go            # Message routing
└── module.go             # Module setup for the module manager