Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: Query CL capability #1533

Open
yorickdowne opened this issue Jul 29, 2024 · 4 comments
Open

Feature: Query CL capability #1533

yorickdowne opened this issue Jul 29, 2024 · 4 comments
Labels
enhancement New feature or request

Comments

@yorickdowne
Copy link
Contributor

Is your feature request related to a problem? Please describe.

Consensus Layer clients might not implement new REST API endpoints at the same time. For example, Nimbus didn’t implement /eth/v2/beacon/blinded_block until July 2024.

As a result, block production with SSV and a pure Nimbus cluster failed.

Describe the solution you'd like

Query the available endpoints / CL capabilities on startup. Vouch code can be used as inspiration, as it does that.

Then either use the capabilities as discovered or, if a missing capability is mandatory, fail with a clear error message.

Describe alternatives you've considered

Robust QA to make sure SSV works with all CLs. The trouble is that this is hard to handle when new CLs come on the market, like Grandine and Lambda. Querying capabilities doesn’t replace QA, but it does provide a baseline that makes the QA job easier.

@yorickdowne yorickdowne added the enhancement New feature or request label Jul 29, 2024
@y0sher
Copy link
Contributor

y0sher commented Jul 29, 2024

@yorickdowne , thanks for opening this issue.
It's indeed a good idea, it will be released in next version!

@moshe-blox
Copy link
Contributor

moshe-blox commented Aug 6, 2024

@yorickdowne

i think this is a good idea, however i'm unsure we can confirm support for a route such as SubmitBlindedBeaconBlock which requires POSTing an actual block.

of course we can send an empty POST request and fail if we get back a 404, but i'm afraid some Beacon nodes would (incorrectly) return a 404 just because there was no block in the request, rather than because they don't support this route altogether

@yorickdowne
Copy link
Contributor Author

Yeah that’s a good point. You could supplement with better error reporting. It took too long to know that the missed blocks were due to a missing endpoint. Logging more of the response on failure … code and message really … may have pinpointed that sooner

@y0sher
Copy link
Contributor

y0sher commented Oct 9, 2024

@yorickdowne , From looking into the capabilities endpoint of beacon nodes, it only returns a list of supported forks (e.g capable of Capella, Deneb etc..).
There is no way to just query for the supported endpoints.

The only options which sounds cumbersome and complex is to try to call all endpoints at the beginning and crush if any is 404.

Indeed we need to change some logs to be clear errors, the case of a not functioning endpoint is none of them.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants