Skip to content

Commit

Permalink
README: update release information (paritytech#348)
Browse files Browse the repository at this point in the history
* README: update release information

* Move badge to the end of line to make it nicer
  • Loading branch information
sorpaas authored Apr 8, 2021
1 parent eb771d2 commit badebc9
Showing 1 changed file with 62 additions and 36 deletions.
98 changes: 62 additions & 36 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)

0 comments on commit badebc9

Please sign in to comment.