-
Notifications
You must be signed in to change notification settings - Fork 110
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
separation of voting and execution of external observation #1515
Comments
Does it have a further scope compared to #1511? |
Seems the same. The only thing that I see right now is that we'd probably want this in v12. The limitation on observation throughput might be severe. |
I added the Epic in v12, this is why the low level tasks were removed #1512
Not sure to get this, the refactoring in the PR doesn't improve the throughput |
The idea is that once the separation is done, then observation txs (+ execution msg) consume less gasLimit. After separation, then observation txs gas limit can be reduced to let's say 300K, execution tx gas limit still 4.5M (but we just need one per exeuction). Now we can support around 100 executions instead of 10. |
The change should not be complex on the protocol, however it looks non-trivial on ZetaClient. We currently parse the events from block a -> b and send vote for each of those and we don't have post-processing for the vote tx, should consider it has been successful. If we include a separate message for execution we must change this logic in the sense we need to consider voted ballot but not yet executed, also what would be the observer responsible for execution? It might not be optimized if each observer send the exec message once ballot finalized. One solution could be to consider a new option: |
Actually I'm thinking that we don't even need the execute option. We just specify the |
Alternatively , we can use begin block to auto-execute completed transactions. |
It looks an interest solution we could explore. |
Most ballot-based transactions might benefit from having a separation in voting and execution. Implementation-wise, I am thinking of the voter functions like |
Currently, the voting msgs of external observations from observers are tied up with execution. The vote msg that happens to be at the threshold of 2/3 happen to execute the observation and triggers next steps in the cross-chain transaction.
This model has the following short term and longer term problems:
Separating the voting and execution will have the following additional benefits
Potential problems of separating voting and execution:
Impact:
This change can be made with minimum impact on users, dApps, node operators. It will have some minor impact on some of node 1317 RPC, and explorer and analytics/monitoring services such as the auditor service.
The text was updated successfully, but these errors were encountered: