Shardeum 网络升级指南:硬分叉与软分叉如何安全完成 Shardeum 网络升级指南硬分叉与软分叉如何安全完成【免费下载链接】shardeumShardeum is an EVM based autoscaling blockchain项目地址: https://gitcode.com/GitHub_Trending/sh/shardeumShardeum 是一个基于 EVM 的自动扩容区块链autoscaling blockchain。它的网络升级不依赖停机维护而是通过链上网络账户Network Account中的三个版本号——minVersion、activeVersion、latestVersion——配合软分叉参数变更与硬分叉节点版本切换机制让数千个节点平滑完成升级。本文将用通俗的方式带你完整看懂 Shardeum 网络升级的处理流程。Shardeum 网络升级硬分叉 vs 软分叉速览在区块链语境下两者在 Shardeum 中的区别非常直观类型Shardeum 中的表现是否需要换节点软件 软分叉Soft Fork修改网络参数/配置奖励、罚没、开关等通过ChangeNetworkParam/ChangeConfig交易生效否⚙️ 硬分叉Hard Fork节点软件版本升级activeVersion切换后自动执行数据迁移是一个很好的记忆方式是软分叉改规则硬分叉换引擎两者都由同一个网络账户统一驱动。网络账户驱动升级的总开关Shardeum 全网共享一个特殊账户账户 ID 以0000开头即网络账户它保存着全网的网络参数包括三个版本号minVersion最低允许版本、activeVersion当前生效版本、latestVersion最新允许版本归档服务版本archiver子对象同样是三版本号质押要求、节点奖励与罚没、txPause开关等业务参数类型定义可参考 shardeumTypes.ts。上图验证者运行节点调试/升级脚本的终端过程是理解节点侧版本操作的一个入口。软分叉配置与参数变更如何生效 Shardeum 的软分叉走的是先排期、后应用的两步内部交易模型排期Change基金会通过多签Multisig提交ChangeConfig或ChangeNetworkParam交易指定某个未来周期cycle执行变更应用Apply到了指定周期网络自动执行对应的ApplyChangeConfig/ApplyNetworkParam把变更合并进网络账户。这两类交易都属于全局内部交易会被打上 global 消息标记参与共识见 isInternalTXGlobal。而发起变更本身必须通过多签验证最少签名数 安全等级校验实现于 verifyMultiSigs确保没有单一节点能擅自改参。核心应用逻辑在 applyInternalTx 中ChangeConfig分支L2929会计算变更周期并推入listOfChanges队列ApplyChangeConfig分支L3012真正把变更写入网络账户。网络参数变更ChangeNetworkParam的处理类似见 ChangeNetworkParam 分支。变更队列的自动修剪网络账户的listOfChanges会持续膨胀Shardeum 通过 pruneNetworkChangeQueue 定期清理超出保留周期数configChangeMaxCyclesToKeep且重复出现次数超过上限的旧变更会被移除保证账户状态精简。硬分叉节点版本切换的完整流程 ⚙️第一步版本号三道关卡每个节点在启动、加入网络或留在待机列表时都要用自己的软件版本去比对网络账户的三版本号版本 minVersion→太旧节点直接退出并提示请安装 latestVersion版本 latestVersion→太新同样被拒防止跑在超前代码上处于[minVersion, latestVersion]区间内 → 允许加入。这三道关卡分别实现在节点自检isReadyToJoin 版本校验入网请求校验validateJoinRequest待机节点资格canStayOnStandby这也解释了 Shardeum 升级的窗口期设计先把latestVersion提到新版本让新节点进网再把minVersion提到新版本把旧节点请下线整个过程无需停链。第二步activeVersion 切换触发数据迁移当网络账户的activeVersion字段被更新时patchAndUpdate 会监听到该键变化并调用 onActiveVersionChange——这就是硬分叉的执行器遍历预注册的迁移列表[1.9.1, 1.10.2, 1.11.2, 1.11.3, 1.15.4, 1.16.3]仅对不低于新activeVersion的迁移执行migrate()用appliedMigrations集合保证每个迁移只执行一次迁移失败会记录migration-failed事件计数便于监控告警。迁移函数是一个简单的异步约定Promisevoid定义见 versioning/types.ts。历史迁移一览表仓库保留了 6 个真实迁移正好展示一个版本一次开关的模式迁移版本做了什么源码位置1.9.1启用待机列表快速哈希计算1.9.1.ts1.10.2启用过期交易状态修复1.10.2.ts1.11.2启用陈旧状态清理cleanStaleShardeumStateMap1.11.2.ts1.11.3关闭 1.11.2 的一次性 beta 开关1.11.3.ts1.15.4启用 syncFloor 与 activeRecovery 机制1.15.4.ts1.16.3启用 dropNGTByGossip 数据清理1.16.3.ts注意每条迁移文件末尾的警告注释新增迁移文件后必须把版本号登记到 versioning/index.ts 的 migrations 列表否则永远不会被执行。验证者视角一次典型升级要做什么 ️对节点运营者来说升级体验被压缩到三步观察公告网络latestVersion已指向新版本可通过节点信息接口查看见 getNodeInfoAppData 返回的三版本号更新软件升级到新版本并重启此时节点以新软件等待入网或留在待机列表等待 minVersion 提升旧版本节点被网络温柔地请退场shutdown 并提示安装目标版本新版本节点全部转正activeVersion切换触发迁移升级完成。验证者还可通过调试脚本定位问题配套说明见 shardeumValidatorDebuggingScript/README.md。延伸阅读关键文件地图 升级执行器src/versioning/index.ts历史迁移目录src/versioning/migrations/创世网络参数含初始三版本号initialNetworkParameters.ts内部交易类型枚举ChangeConfig / ApplyChangeConfig 等InternalTXType配置变更交易结构ChangeConfig多签验证与全局交易判定setup/helpers.ts网络参数 AJV 校验模式ApplyChangeConfigTxSchema.ts小结Shardeum 的升级哲学可以总结为一句话用链上账户做时钟用版本号做闸门用迁移脚本做切换。软分叉通过排期 应用两步内部交易安全改参硬分叉则借助三版本号的窗口期完成节点换血并在activeVersion翻转的瞬间自动跑完一次性迁移——全程无停机、无脑裂这正是它作为自动扩容 EVM 公链能持续演进的关键。【免费下载链接】shardeumShardeum is an EVM based autoscaling blockchain项目地址: https://gitcode.com/GitHub_Trending/sh/shardeum创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考