-
Notifications
You must be signed in to change notification settings - Fork 274
Send getPayload request to all relays again #788
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
Send getPayload request to all relays again #788
Conversation
ralexstokes
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i didnt go a fine-grained code review, but agree with the high-level principle here that we query all relays
|
|
||
| // If the relay provided the bid in JSON or did not provide a bid for this payload, | ||
| // we must convert the signed blinded beacon block from SSZ to JSON for this relay | ||
| if parsedProposerContentType == MediaTypeOctetStream && !relaySupportsSSZ { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
not ideal to convert this again for every relay that would need it. would be better to check up-front if any relay will need it, and then prepare it once for all
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I disagree. The conversion is quick. Let's just send out the SSZ requests as soon as possible.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i don't see how it's faster by encoding SSZ for every relay, versus just encoding it once ahead of time. but also fine with me to leave as-is.
metachris
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it looks okay, left some comments about possible improvements to the code. def preferable to submit getPayload to all relays.
hey guys, mind if I ask when this changed to the current behaviour? :) |
|
@OisinKyne in the latest release (v1.9). |
|
What's the plan for release normally? Can we get a version of this out soonish? |
|
+1 on the above we'd also be keen to see this released in the near term. Maybe a 1.9.1 patch? :) |
|
Did this change have a noticeable impact on the network? |
|
We have seen a noticeable uptick of missed proposals on mev-boost DV clusters, moreso in the last two weeks than since pectra. We have not been able to track down definitively whether its an issue with mime-type headers from the SSZ introduction, certain relays hanging/rate limiting requests, (which causes 950ms by default timeouts that increase the likelihood of orphans), or whether its something related to mev-boost itself. One thing we are seeing much more often is the log line: While this log might not be related to this PR, and is maybe a function of consensus round timeouts, the behaviour we're hoping for is for mev-boost to send the signedPayload to its relays anyways, whether it has the corresponding bid for it or not. The cluster has signed a header, it won't be signing another (because slashing), so if it could be broadcasted to relays, that would improve liveness in our POV. |
|
We'll expedite getting a release out with this now. |
📝 Summary
Instead of only sending the getPayload request to relays which provided this bid, send the getPayload request to all relays and convert the signed blinded beacon block to JSON if necessary.
⛱ Motivation and Context
In theory, this should improve liveness. If, for example, there is a relay which is geographically closer to the proposer, it might get the getPayload request sooner and therefore it would distribute the block faster.
📚 References
https://discord.com/channels/595666850260713488/1341434255154348034/1367203484620947508
✅ I have run these commands
make lintmake test-racego mod tidy