umbracle / eth2-validator Goto Github PK
View Code? Open in Web Editor NEWEth2-validator is an easy to use, performant and flexible Ethereum validator client.
License: Mozilla Public License 2.0
Eth2-validator is an easy to use, performant and flexible Ethereum validator client.
License: Mozilla Public License 2.0
This is a tracking issue to follow the development to support the phase0
fork.
Add a store to save the validators.
Right now the calculation of the domain is hardcoded to either phase0
or altair
. Once the validator has the config.yaml
available #41 it should be possible to calculate the domain depending on the fork.
Add a new e2e deploy
command that deploys an end-to-end devnet.
Right now, all the duties are scheduled for the current starting epoch. However, there are some duties that are available beforehand.
Introduce the Altair
spec structs for BeaconBlock
and update the spec tests accordingly.
The client should be able to export the EIP-3076 slashing protection data for a given validator.
The e2e
framework should be parametrizable to transition forks.
The client should comply with the EIP-3076 slashing conditions.
Add nimbus
client to the e2e
framework.
Add the sync committee aggregator duty from the Altair hard fork.
Initially, the idea was to follow the same pattern as ethgo
in order to test the HTTP client library, this is, to run a real client and make queries to the endpoints. However, it happens to be a bit more complicated in this setting, since some endpoints require building complex logic (outside the scope of the HTTP package itself) to have access to the data. Thus, we need to think about a different strategy.
This repo contains a set of spec tests to test encoding/decoding/hashing of the consensus objects (i.e. BeaconBlock
, BeaconBodyBlock
...).
Right now, the consensus
types have many instances of the type:
type DepositData struct {
Pubkey []byte `json:"pubkey" ssz-size:"48"`
WithdrawalCredentials []byte `json:"withdrawal_credentials" ssz-size:"32"`
Amount uint64 `json:"amount"`
Signature []byte `json:"signature" ssz-size:"96"`
Root [32]byte `ssz:"-"`
}
where Signature
and PubKey
are fixed-size arrays that represent BLS signature and public key. In order to use this structure eventually, those fields have to be converted to golang objects for the blst
library.
Thus, it would be straightforward if we could use the bls
objects directly as a wrapper like:
type DepositData struct {
PubKey bls.PubKey `json:"pubkey"`
...
Signature bls.Signature `json:"signature"`
}
Note that this does not cause any problems to the fastssz
hashing since it already support aliases like this.
The validator client should be able to handle the lifecycle of new validators being tracked: adding, waiting to be ready, exiting...
CI fails randomly on blst
invalid instruction.
The client needs to store the jobs produced by the client, in the case of phase0 this is block productions and attestations.
As of now, the testutil
framework only deploys single node (1 beacon, 1 validator) devnets. The framework should be able to provision and configure multi-node devnets both with the same client and multi-client.
Introduce a new CLI command to load an EIP-3076 file.
Add an integration test that deploys a devnet (with Teku) and runs the validator.
The Duty
object has a state field (Pending, Queued, Confirmed...) which is not being used right now.
On a fresh start, the validator should query the beacon node to download the config.yaml
spec and store it internally. Then, on future interactions it should query the beacon node to check if the spec matches and to refresh it if necessary.
Replace the old go-web3
version with the new ethgo
.
Integrate SyncCommittee
duty from the Altair
fork.
Right now, it is necessary to deploy an eth1
client, deploy the deposit contract and make a deposit transaction before starting the eth2 beacon clients. Though this workflow is required for some types of tests (i.e. validator waiting to be validated), most of the tests would benefit from a genesis state with the validators.
Add a CI step to run the unit tests in the repo.
Add the Attestation aggregate
duty of the phase0
fork.
The validator must notify the beacon node to subscribe to subnets if it is validator for a committee.
In order to aggregate attestation, the validator has to support and manage bitlists. The mock of the library is already there under internal/lib/bitlist
.
The config spec changes after a fork, the client must be able to reload it. The main concern is how to protect the config for the concurrent read/write.
https://ethereum.github.io/keymanager-APIs/
Note that this API is a complement of the internal Grpc server.
Right now, running the simple
set of tests for the beacon chain clients takes a long time since it uses a default config with 12 secondsPerEpoch
and 32 slotPerEpoch
. Those fields should be configurable.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.