Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ava-labs/subnet-evm
Launch your own EVM as an Avalanche Subnet
https://github.com/ava-labs/subnet-evm
avalanche blockchain ethereum evm
Last synced: about 13 hours ago
JSON representation
Launch your own EVM as an Avalanche Subnet
- Host: GitHub
- URL: https://github.com/ava-labs/subnet-evm
- Owner: ava-labs
- License: lgpl-3.0
- Created: 2021-12-15T20:28:29.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2024-12-03T01:01:37.000Z (10 days ago)
- Last Synced: 2024-12-03T17:02:58.087Z (10 days ago)
- Topics: avalanche, blockchain, ethereum, evm
- Language: Go
- Homepage: https://docs.avax.network/subnets/create-a-fuji-subnet
- Size: 263 MB
- Stars: 246
- Watchers: 21
- Forks: 229
- Open Issues: 91
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- License: COPYING
- Codeowners: .github/CODEOWNERS
- Security: SECURITY.md
- Authors: AUTHORS
Awesome Lists containing this project
- best-of-crypto - GitHub - 18% open · ⏱️ 05.06.2024): (Others)
README
# Subnet EVM
[![Build + Test + Release](https://github.com/ava-labs/subnet-evm/actions/workflows/lint-tests-release.yml/badge.svg)](https://github.com/ava-labs/subnet-evm/actions/workflows/lint-tests-release.yml)
[![CodeQL](https://github.com/ava-labs/subnet-evm/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/ava-labs/subnet-evm/actions/workflows/codeql-analysis.yml)[Avalanche](https://docs.avax.network/overview/getting-started/avalanche-platform) is a network composed of multiple blockchains.
Each blockchain is an instance of a Virtual Machine (VM), much like an object in an object-oriented language is an instance of a class.
That is, the VM defines the behavior of the blockchain.Subnet EVM is the [Virtual Machine (VM)](https://docs.avax.network/learn/virtual-machines) that defines the Subnet Contract Chains. Subnet EVM is a simplified version of [Coreth VM (C-Chain)](https://github.com/ava-labs/coreth).
This chain implements the Ethereum Virtual Machine and supports Solidity smart contracts as well as most other Ethereum client functionality.
## Building
The Subnet EVM runs in a separate process from the main AvalancheGo process and communicates with it over a local gRPC connection.
### AvalancheGo Compatibility
```text
[v0.6.0] [email protected] (Protocol Version: 33)
[v0.6.1] [email protected] (Protocol Version: 33)
[v0.6.2] [email protected] (Protocol Version: 34)
[v0.6.3] [email protected] (Protocol Version: 35)
[v0.6.4] [email protected] (Protocol Version: 35)
[v0.6.5] [email protected] (Protocol Version: 35)
[v0.6.6] [email protected] (Protocol Version: 35)
[v0.6.7] [email protected] (Protocol Version: 35)
[v0.6.8] [email protected] (Protocol Version: 36)
[v0.6.9] [email protected] (Protocol Version: 37)
[v0.6.10] [email protected] (Protocol Version: 37)
[v0.6.11] [email protected] (Protocol Version: 37)
[v0.6.12] [email protected]/v1.12.0 (Protocol Version: 38)
[v0.7.0] [email protected] (Protocol Version: 38)
```## API
The Subnet EVM supports the following API namespaces:
- `eth`
- `personal`
- `txpool`
- `debug`Only the `eth` namespace is enabled by default.
Subnet EVM is a simplified version of [Coreth VM (C-Chain)](https://github.com/ava-labs/coreth).
Full documentation for the C-Chain's API can be found [here](https://docs.avax.network/apis/avalanchego/apis/c-chain).## Compatibility
The Subnet EVM is compatible with almost all Ethereum tooling, including [Remix](https://docs.avax.network/build/dapp/smart-contracts/remix-deploy), [Metamask](https://docs.avax.network/build/dapp/chain-settings), and [Foundry](https://docs.avax.network/build/dapp/smart-contracts/toolchains/foundry).
## Differences Between Subnet EVM and Coreth
- Added configurable fees and gas limits in genesis
- Merged Avalanche hardforks into the single "Subnet EVM" hardfork
- Removed Atomic Txs and Shared Memory
- Removed Multicoin Contract and State## Block Format
To support these changes, there have been a number of changes to the SubnetEVM block format compared to what exists on the C-Chain and Ethereum. Here we list the changes to the block format as compared to Ethereum.
### Block Header
- `BaseFee`: Added by EIP-1559 to represent the base fee of the block (present in Ethereum as of EIP-1559)
- `BlockGasCost`: surcharge for producing a block faster than the target rate## Create an EVM Subnet on a Local Network
### Clone Subnet-evm
First install Go 1.22.8 or later. Follow the instructions [here](https://go.dev/doc/install). You can verify by running `go version`.
Set `$GOPATH` environment variable properly for Go to look for Go Workspaces. Please read [this](https://go.dev/doc/code) for details. You can verify by running `echo $GOPATH`.
As a few software will be installed into `$GOPATH/bin`, please make sure that `$GOPATH/bin` is in your `$PATH`, otherwise, you may get error running the commands below.
Download the `subnet-evm` repository into your `$GOPATH`:
```sh
cd $GOPATH
mkdir -p src/github.com/ava-labs
cd src/github.com/ava-labs
git clone [email protected]:ava-labs/subnet-evm.git
cd subnet-evm
```This will clone and checkout to `master` branch.
### Run Local Network
To run a local network, it is recommended to use the [avalanche-cli](https://github.com/ava-labs/avalanche-cli#avalanche-cli) to set up an instance of Subnet-EVM on a local Avalanche Network.
There are two options when using the Avalanche-CLI:
1. Use an official Subnet-EVM release: https://docs.avax.network/subnets/build-first-subnet
2. Build and deploy a locally built (and optionally modified) version of Subnet-EVM: https://docs.avax.network/subnets/create-custom-subnet