-
Notifications
You must be signed in to change notification settings - Fork 300
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
[Merge] Support Async payload execution #4348
Comments
I suspect the key to this is to split block verification from processing. We ultimately need to move the The potential risk here is that doing this verification off the fork choice thread makes it more difficult to guarantee the order of messages sent to the execution engine. We'd guarantee that |
This is very good point. There is a the Message ordering section in the design doc. But for the Merge F2F event I am going to suggest consensus clients to make synchronous calls. This is straightforward and doesn't affect aims that we have for the interop. It also allows for using HTTP as the communication protocol. Making these calls async is a must for production implementations and I think can be done later on considering the message ordering strategy and restrictions on the communication protocol that it will bring. This is what I'd like to raise during the ACD this week, I think we will get a rough agreement for synchronous approach. So, I'd wait for the ACD before starting this portion of work. It will likely be deferred for after the interop. |
Description
Currently, synchronous calls are made to the execution engine during block processing which results in blocking the fork choice thread while the execution engine processes the payload. The fork choice thread however is not designed to be blocked.
We either need to move block processing off the fork choice thread entirely (without introducing race conditions with fork choice vote updating or deadlocks while accessing the protoarray) or be able to process the execution payload before moving onto the fork choice thread (similar to how the beacon state is retrieved prior to moving onto the fork choice thread).
The text was updated successfully, but these errors were encountered: