If you fail to upgrade your node in a timely manner, the following scenarios may occur:: within SWS
(currently 14400 blocks, approximately 12 hours in the testnet) the node block will not grow. If it exceeds the SWS
, the node will force the generation of blocks, resulting in block forks. In such cases, reattempting the upgrade operation will not automatically restore the node.
- Stop op-node and op-geth.
- Initialize a new genesis file using the new op-geth init command.
./op-geth --datadir ./datadir init genesis.json
- Start op-geth while opening the admin and debug HTTP APIs.(Note:These two APIs must be closed afterwards to prevent future misoperations.)
- Check the ChainConfig to confirm that the new parameters are set:
curl -X POST --data '{"jsonrpc":"2.0","method":"admin_nodeInfo","params":[],"id":1}' -H "Content-Type: application/json" http://localhost:8545
- Set new block header with the following command.Choose a block number in hexadecimal format that is close to the hardfork activation block number:
curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"debug_setHead","params":["0x4E09B5"],"id":1}' http://localhost:8545
- Check if the change is effective with the following command:
curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["latest",false],"id":1}' http://localhost:8545
- Set the
safe
andfinalized
block numbers using the following command:
curl -X POST --header 'Content-Type: application/json' -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE2OTIwMDQ1MDN9.CiP4DxKQ7Dpml6PyiuTGzQ_8qJ5om1yKxgtz4MGmJ0A" --data '{"jsonrpc": "2.0","method": "engine_forkchoiceUpdatedV1", "params": [{"headBlockHash": "0x6c42acce8aecacaecb6304cbff82501a7a64190df9a612e0c9fb38e6d67c05a0","safeBlockHash": "0x6c42acce8aecacaecb6304cbff82501a7a64190df9a612e0c9fb38e6d67c05a0","finalizedBlockHash": "0x6c42acce8aecacaecb6304cbff82501a7a64190df9a612e0c9fb38e6d67c05a0"},null],"id":67}' http://127.0.0.1:8551
(Note: The Authorization: Bearer
value value can be generated by referring: jwtoutput.
The headBlockHash
,safeBlockHash
,finalizedBlockHash
should correspond to the hash value of the block used in the debug_setHead API in step 5.)
- Check if the changes are effective with the following commands:
curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["safe",false],"id":1}' http://localhost:8545
curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["finalized",false],"id":1}' http://localhost:8545
- Start op-node and wait for the recovery process to complete.
Note: The longer the delay in performing the update and the further the set block is from the current block, the longer the waiting time will be. If the restoration process takes a long time, such as several hours, it may be necessary to resynchronize using a snapshot or by clearing the data.
- Restart op-geth without enabling admin and debug HTTP APIs to prevent future misoperations.