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
The e2e
framework should be parametrizable to transition forks.
The Duty
object has a state field (Pending, Queued, Confirmed...) which is not being used right now.
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.
Introduce a new CLI command to load an EIP-3076 file.
https://ethereum.github.io/keymanager-APIs/
Note that this API is a complement of the internal Grpc server.
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.
The validator must notify the beacon node to subscribe to subnets if it is validator for a committee.
Right now, all the duties are scheduled for the current starting epoch. However, there are some duties that are available beforehand.
Add the Attestation aggregate
duty of the phase0
fork.
Add the sync committee aggregator duty from the Altair hard fork.
Introduce the Altair
spec structs for BeaconBlock
and update the spec tests accordingly.
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.
Add nimbus
client to the e2e
framework.
The client should be able to export the EIP-3076 slashing protection data for a given validator.
The client should comply with the EIP-3076 slashing conditions.
Add an integration test that deploys a devnet (with Teku) and runs the validator.
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.
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
.
Replace the old go-web3
version with the new ethgo
.
This is a tracking issue to follow the development to support the phase0
fork.
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.
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.
Add a new e2e deploy
command that deploys an end-to-end devnet.
The validator client should be able to handle the lifecycle of new validators being tracked: adding, waiting to be ready, exiting...
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 store to save the validators.
The client needs to store the jobs produced by the client, in the case of phase0 this is block productions and attestations.
This repo contains a set of spec tests to test encoding/decoding/hashing of the consensus objects (i.e. BeaconBlock
, BeaconBodyBlock
...).
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.
Integrate SyncCommittee
duty from the Altair
fork.
Add a CI step to run the unit tests in the repo.
CI fails randomly on blst
invalid instruction.
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.