ecbb245cbf Uptime tracking api (#1374)
* add validator state

* add pausable uptime manager

* remove stuttering name

* rename state listener

* add uptime tracking to VM

* remove unused param

* add wg for update validators

* update state before network shutdown

* restart bootstrapping status in test

* add get validator to state

* rename uptime to validator

* fix mock state

* tests

* Update plugin/evm/validators/state.go

Co-authored-by: Darioush Jalali <[email protected]>
Signed-off-by: Ceyhun Onur <[email protected]>

* use update enum

* Update plugin/evm/validators/state.go

Co-authored-by: Darioush Jalali <[email protected]>
Signed-off-by: Ceyhun Onur <[email protected]>

* Update plugin/evm/validators/state.go

Co-authored-by: Darioush Jalali <[email protected]>
Signed-off-by: Ceyhun Onur <[email protected]>

* respond to comments

* update avalanchego dep branch

* reviews

* reword errs

* fix test changes

* fix upgrades after deactivating latest in context

* use test branch from avalanchego

* use branch commit for ava version

* update e2e ava version

* update avago dep

* remove extra line...

* export struct

* reviews

* conflict fix

* custom err msg

* add listener mock

* bump avago test branch

* remove config

* remove api changes

* Revert "remove api changes"

This reverts commit 8ef763fca65a7144ac35b69889873728d3485558.

* use non-version db for validatorsDB

* remove errs from resume and pause

* check after stopping

* use expectedTime in tests

* reviews

* Update plugin/evm/vm.go

Co-authored-by: Darioush Jalali <[email protected]>
Signed-off-by: Ceyhun Onur <[email protected]>

* fix len

* remove log

* disable validators api by default

* use interfaces from pkgs

* improve comments

* new fields and refactorings

* add new fields

* fix linter

* clarify comments

* update comment

* bump to poc branch

* enable validators API by default

* reviews

* update comment

* update to avago master

---------

Signed-off-by: Ceyhun Onur <[email protected]>
Signed-off-by: Ceyhun Onur <[email protected]>
Co-authored-by: Darioush Jalali <[email protected]>
2024-11-13 22:23:26 +00:00
2022-02-25 13:08:23 -05:00
2024-02-09 11:29:41 +03:00
2024-10-17 16:34:50 +00:00
2024-10-14 12:02:03 +00:00
2024-11-13 22:23:26 +00:00
2024-03-25 15:00:54 -04:00
2024-11-13 22:27:03 +03:00
2024-11-13 22:27:03 +03:00
2023-07-26 09:45:17 -04:00
2024-10-29 12:09:21 +03:00
2021-12-15 12:28:56 -08:00
2024-08-14 06:34:01 -07:00
2022-10-05 15:56:07 -04:00
2021-12-15 12:28:56 -08:00
2024-10-22 06:42:39 -07:00
2022-06-27 15:40:58 -04:00
2024-11-13 22:27:03 +03:00
2024-11-13 22:27:03 +03:00
2021-12-15 12:28:56 -08:00
2024-10-22 06:42:39 -07:00

Subnet EVM

Build + Test + Release CodeQL

Avalanche 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) that defines the Subnet Contract Chains. Subnet EVM is a simplified version of Coreth VM (C-Chain).

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

[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)

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). Full documentation for the C-Chain's API can be found here.

Compatibility

The Subnet EVM is compatible with almost all Ethereum tooling, including Remix, Metamask, and 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. You can verify by running go version.

Set $GOPATH environment variable properly for Go to look for Go Workspaces. Please read this 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:

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 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
S
Description
▼ LUX EVM: Launch your own Ethereum compatible EVM on Lux Network.
Readme
548 MiB
Languages
Go 96.1%
Solidity 1.6%
Shell 1.3%
TypeScript 0.9%
Makefile 0.1%