-
启动网络并触发升级
-
执行升级
假设提案已经通过,链会在指定的升级高度停止。
你可以任意停止并重新启动原始二进制文件,但在达到升级高度之后,它将拒绝继续运行。
我们需要一个安装了升级处理器的新二进制文件。日志看起来应类似于:
请注意,进程会无限期挂起(不会退出,以避免重启循环)。因此,你必须手动终止该进程,并将其替换为新的二进制文件。现在请使用
Ctrl+C或killall gaiad完成此操作。 在gaia/app/app.go中,在upgrade.Keeper初始化并设置到应用之后,使用正确的<plan-name>设置对应的升级Handler:请注意,出现任何错误时我们都会触发 panic。如果迁移无法执行,这会导致升级失败,并且不会有节点继续推进,从而为手动恢复留下空间。 如果忽略这些错误,系统就会在升级不完整的情况下继续运行,之后几乎很难再恢复到正确状态。 现在,编译新的二进制文件并运行升级后的代码以完成升级:
This document demonstrates how a live upgrade can be performed on-chain through a governance process.
-
Start the network and trigger upgrade
-
Performing an upgrade
Assuming the proposal passes the chain will stop at given upgrade height.
You can stop and start the original binary all you want, but it will refuse to
run after the upgrade height.
We need a new binary with the upgrade handler installed. The logs should look
something like:
Note that the process will hang indefinitely (doesn’t exit to avoid restart loops). So, you must manually kill the process and replace it with a new binary. Do so now with
Ctrl+Corkillall gaiad. Ingaia/app/app.go, afterupgrade.Keeperis initialized and set in the app, set the corresponding upgradeHandlerwith the correct<plan-name>:Note that we panic on any error - this would cause the upgrade to fail if the migration could not be run, and no node would advance - allowing a manual recovery. If we ignored the errors, then we would proceed with an incomplete upgrade and have a very difficult time every recovering the proper state. Now, compile the new binary and run the upgraded code to complete the upgrade: