-
Notifications
You must be signed in to change notification settings - Fork 32
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
Recover geth and story clients when geth client is upgraded after the upgrade height #144
Comments
How to reproduce:
Install Cast (if not installed yet):
|
@limengformal Currently, I'm working on integrating the CometBFT rollback command into the Story codebase to test if this rollback feature can resolve the issue.
geth logs at stuck
story logs at stuck
Note: Geth did not insert the invalid block, so it remains at the last valid block. This means that once the app hash issue in the story is resolved and re-executed, the chain would function correctly again. |
@limengformal rollback-test.mp4Video ExplanationBackground Info
Stuck Resolution Flow in the Video
|
What happens if a non-upgraded node proposes a block? No need to worry—other nodes will reject the proposal, and Geth will not insert the incorrect block into the database. In this case, the non-upgraded node should stop both the Story client and Geth, upgrade Geth, and then restart everything. |
@zsystm Thank you for the work. This solution rollback a block on the CL side. Do we also need to rollback blocks on the EL side as well? |
@limengformal Case 1: Non-upgraded node is the proposer
Case 2: Non-upgraded node is not the proposer
In other scenarios, there may be a need for rollback on EL. For example, if there were an attempt by a hacker to steal a large sum of funds on the EL side and the community, along with the majority of validators, deemed the action unjust, a rollback might be necessary. However, in the current situation where we are dealing with some nodes (less than 1/3 of total voting power) missing their upgrades, there is no need for a rollback on the EL side. |
Description and context
In the event of a geth hard fork upgrade, if a node is not upgraded after the upgrade block height, the story client may panic since it may not reach consensus with the rest of the nodes that already have their geth clients upgraded.
Only upgrading the geth client at this point doesn't help since the story client already verified/proposed a block that is in conflict. Node at this point can only remove data folder and sync from genesis block which takes a long time.
Suggested solution
One suggested solution is to roll back the block with incorrect proposal so the node can sync the correct block.
Definition of done
Node can roll back incorrect block and restart with correct block in the event of a late geth upgrade.
The text was updated successfully, but these errors were encountered: