diff --git a/README.md b/README.md index 13b64a87898a5..76f2933819999 100644 --- a/README.md +++ b/README.md @@ -12,39 +12,65 @@ The goal of Ethereum compatibility layer is to be able to: where an extra bridge binary is acceptable. * Be able to import state from Ethereum mainnet. -It consists of the following components: - -* **[pallet-evm](https://github.com/paritytech/frontier/tree/master/frame/evm)**: - EVM execution engine for Substrate. -* **[pallet-ethereum](https://github.com/paritytech/frontier/tree/master/frame/ethereum)**: Emulation of full Ethereum block processing. -* **rpc-ethereum**: Compatibility layer for web3 RPC methods. - -## Development notes - -Frontier is still work-in-progress. Below are some notes about the development. - -### Runtime - -A few notes on the EthereumRuntimeApi's runtime implementation requirements: - -- For supporting author rpc call, the FindAuthor trait must be implemented in an -arbitrary struct. This implementation must call the authorities accessor in either -Aura or Babe and convert the authority id response to H160 using -pallet_evm::HashTruncateConvertAccountId::convert_account_id. - -The struct implementing FindAuthor is passed as the FindAuthor associated type's -value for pallet_ethereum. - -An Aura example for this is available in the template's runtime (EthereumFindAuthor). - -- For supporting chain_id rpc call, a u64 ChainId constant must be defined. - -- For supporting gas_price rpc call, FeeCalculator trait must be implemented in an -arbitrary struct. An example FixedGasPrice is available in the template's runtime. - -### Use local version of Substrate - -1. Override your local cargo config to point to your local substrate (pointing to your WIP branch): place `paths = ["path/to/substrate"]` in `~/.cargo/config`. -2. You are good to go. - -Remember to comment out the override after it is done to avoid mysterious build issues on other repo. +## Releases + +### Primitives + +Those are suitable to be included in a runtime. Primitives are structures shared +by higher-level code. + +* `fp-consensus`: Consensus layer primitives. + ![Crates.io](https://img.shields.io/crates/v/fp-consensus) +* `fp-evm`: EVM primitives. ![Crates.io](https://img.shields.io/crates/v/fp-evm) +* `fp-rpc`: RPC primitives. ![Crates.io](https://img.shields.io/crates/v/fp-rpc) +* `fp-storage`: Well-known storage information. + ![Crates.io](https://img.shields.io/crates/v/fp-storage) + +### Pallets + +Those pallets serve as runtime components for projects using Frontier. + +* `pallet-evm`: EVM execution handling. + ![Crates.io](https://img.shields.io/crates/v/pallet-evm) +* `pallet-ethereum`: Ethereum block handling. + ![Crates.io](https://img.shields.io/crates/v/pallet-ethereum) +* `pallet-dynamic-fee`: Extends the fee handling logic so that it can be changed + within the runtime. + ![Crates.io](https://img.shields.io/crates/v/pallet-dynamic-fee) + +### EVM Pallet precompiles + +Those precompiles can be used together with `pallet-evm` for additional +functionalities of the EVM executor. + +* `pallet-evm-precompile-simple`: Four basic precompiles in Ethereum EVMs. + ![Crates.io](https://img.shields.io/crates/v/pallet-evm-precompile-simple) +* `pallet-evm-precompile-blake2`: BLAKE2 precompile. + ![Crates.io](https://img.shields.io/crates/v/pallet-evm-precompile-blake2) +* `pallet-evm-precompile-bn128`: BN128 precompile. + ![Crates.io](https://img.shields.io/crates/v/pallet-evm-precompile-bn128) +* `pallet-evm-precompile-ed25519`: ED25519 precompile. + ![Crates.io](https://img.shields.io/crates/v/pallet-evm-precompile-ed25519) +* `pallet-evm-precompile-modexp`: MODEXP precompile. + ![Crates.io](https://img.shields.io/crates/v/pallet-evm-precompile-modexp) +* `pallet-evm-precompile-sha3fips`: Standard SHA3 precompile. + ![Crates.io](https://img.shields.io/crates/v/pallet-evm-precompile-sha3fips) +* `pallet-evm-precompile-dispatch`: Enable interoperability between EVM + contracts and other Substrate runtime components. + ![Crates.io](https://img.shields.io/crates/v/pallet-evm-precompile-dispatch) + +### Client-side libraries + +Those are libraries that should be used on client-side to enable RPC, block hash +mapping, and other features. + +* `fc-consensus`: Consensus block import. + ![Crates.io](https://img.shields.io/crates/v/fc-consensus) +* `fc-db`: Frontier-specific database backend. + ![Crates.io](https://img.shields.io/crates/v/fc-db) +* `fc-mapping-sync`: Block hash mapping syncing logic. + ![Crates.io](https://img.shields.io/crates/v/fc-mapping-sync) +* `fc-rpc-core`: Core RPC logic. + ![Crates.io](https://img.shields.io/crates/v/fc-rpc-core) +* `fc-rpc`: RPC implementation. + ![Crates.io](https://img.shields.io/crates/v/fc-rpc) \ No newline at end of file