I didn't post an update last week because I hadn't made much progress on the EPF front and was I busy working on a client for the KZG Ceremony. This week, I have 2 updates:
GetDuties
endpointGetDuties
is an endpoint that I started working on weeks ago, but because there was a bug with the prysm beacon node REST API, I was unable to complete it. Now that the bug has been fixed, I was finally able to merge this PR.
The GetDuties
endpoint aggregates 8 Beacon REST APIs into a single one:
1 call to /eth/v1/validator/duties/attester/{epoch}
1 call to /eth/v1/validator/duties/attester/{epoch+1}
1 call to /eth/v1/validator/duties/proposer/{epoch}
1 call to /eth/v1/validator/duties/proposer/{epoch+1}
1 call to /eth/v1/validator/duties/proposer/{sync}
1 call to /eth/v1/validator/duties/proposer/{sync+1}
1 call to /eth/v1/beacon/states/head/committees?{epoch}
1 call to /eth/v1/beacon/states/head/committees?{epoch+1}
Once all the calls are made, aggregating the information is relatively straightforward. The way the information is presented in the REST API is different from how it is presented in the gRPC API, but with a few hashmaps it's pretty simple to reconstruct it. Because of the high number of Beacon API calls, the tests were the biggest chunk of this work since there are many edge cases are validation cases to test.
This task is unrelated to the EPF, but I was interested in building a client for the KZG Ceremony and use this client to send my own contribution. The client is now mostly done and has the following features:
For the sake of language and framework diversity, I decided to build the client with C++. Current implementations are centered around Go, Rust or JavaScript, so it adds some diversity to the list of clients that people can use.
There are only 5 endpoints remaining! We've come a long way from the start of this project and it's really nice to see that we're probably going to be able to 100% complete this project. 2 of the remaining tasks are on me, and now that my KZG Ceremony client implementation is done, I'll be able to focus more time in the next 2 weeks on those. I think they will also be relatively easy to implement since they are the stream versions of endpoints that have already been implemented (e.g. GetDuties -> StreamDuties
).
Legend:
Symbol | State |
---|---|
Image Not Showing
Possible Reasons
|
Not ready for PR |
Image Not Showing
Possible Reasons
|
PR opened |
Image Not Showing
Possible Reasons
|
Merged into develop |
Done | Owner | Endpoint |
---|---|---|
Image Not Showing
Possible Reasons
|
pavignol | GetDuties |
Image Not Showing
Possible Reasons
|
pavignol | GetBeaconBlock |
Image Not Showing
Possible Reasons
|
pavignol | ProposeBeaconBlock |
Image Not Showing
Possible Reasons
|
pavignol | PrepareBeaconProposer |
Image Not Showing
Possible Reasons
|
pavignol | GetAttestationData |
Image Not Showing
Possible Reasons
|
dhruv | ProposeAttestation |
Image Not Showing
Possible Reasons
|
dhruv | SubmitAggregateSelectionProof |
Image Not Showing
Possible Reasons
|
dhruv | SubmitSignedAggregateSelectionProof |
Image Not Showing
Possible Reasons
|
pavignol | ProposeExit |
Image Not Showing
Possible Reasons
|
pavignol | SubscribeCommitteeSubnets |
Image Not Showing
Possible Reasons
|
manu | SubmitValidatorRegistrations |
Image Not Showing
Possible Reasons
|
manu | ValidatorIndex |
Image Not Showing
Possible Reasons
|
manu | ValidatorStatus |
Image Not Showing
Possible Reasons
|
manu | MultipleValidatorStatus |
Image Not Showing
Possible Reasons
|
pavignol | SubmitSignedContributionAndProof |
Image Not Showing
Possible Reasons
|
manu | SubmitSyncMessage |
Image Not Showing
Possible Reasons
|
dhruv | GetSyncSubcommitteeIndex |
Image Not Showing
Possible Reasons
|
dhruv | GetSyncMessageBlockRoot |
Image Not Showing
Possible Reasons
|
pavignol | StreamDuties |
Image Not Showing
Possible Reasons
|
pavignol | WaitForChainStart |
Image Not Showing
Possible Reasons
|
manu | WaitForActivation |
Image Not Showing
Possible Reasons
|
pavignol | StreamBlocksAltair |
Image Not Showing
Possible Reasons
|
pavignol | DomainData |
Image Not Showing
Possible Reasons
|
manu | GetFeeRecipientByPubKey |
Image Not Showing
Possible Reasons
|
manu | CheckDoppelGanger |
Image Not Showing
Possible Reasons
|
dhruv | GetSyncCommitteeContribution |