EOSIO 1.8+ 共识协议升级指南:从测试到生产的完整流程
eos An open source smart contract platform 项目地址: https://gitcode.com/gh_mirrors/eo/eos
前言
EOSIO 1.8版本引入了一系列重要的共识协议升级(俗称"硬分叉"),这些升级将显著改变区块链网络的运行机制。作为节点运营商或区块链开发者,理解并正确执行升级流程至关重要。本文将全面解析EOSIO 1.8+升级的完整流程、注意事项和最佳实践。
升级前的准备工作
测试网络验证
在任何非测试网络部署升级前,必须先在测试网络上完成验证。EOSIO 1.8.1是支持首批协议升级的节点版本,测试网络应使用此版本进行升级测试。
测试升级过程可以帮助区块生产者:
- 熟悉升级步骤
- 协调首个协议功能的激活
- 确定节点升级的合理时间窗口
- 评估升级对现有应用的影响
关键协议功能变更
升级包含几个重要协议功能变更,开发者需特别注意:
PREACTIVATE_FEATURE
:启用后续协议功能激活的基础功能NO_DUPLICATE_DEFERRED_ID
:修改区块和交易数据结构RESTRICT_ACTION_TO_SELF
:限制授权绕过机制(自1.5.1版本起已弃用)
全节点升级流程
所有EOSIO网络(包括测试网络)的节点运营商应尽快执行以下步骤。建议在备用节点上先进行升级测试:
-
准备现有节点:
- 确保运行最新的1.7稳定版
- 关闭节点服务
-
清理数据目录:
- 备份并删除以下目录:
blocks/reversible
state-history
state
- 备份并删除以下目录:
-
版本升级:
- 将nodeos替换为1.8版本
-
重新同步:
- 启动1.8版本nodeos
- 完成从创世区块的重放
- 等待与网络同步完成
注意事项
- 数据兼容性:v1.7生成的状态目录与v1.8不兼容
- 快照版本:v1.8需要版本2的可移植快照
- 同步时间:从创世区块重放可能耗时较长,特别是运行历史记录插件时
加速同步方案
对于不需要完整历史记录的节点,可以使用v1.8节点生成的版本2可移植快照来加速同步过程。快照文件的哈希值应通过多个可信来源进行验证。
区块生产者的特殊注意事项
升级准备
区块生产者需要在非生产节点上完成重放过程,确保:
- 在生产就绪的机器上完成重放和同步
- 或者生成可移植快照并迁移到生产机器
协议功能激活流程
-
PREACTIVATE_FEATURE激活:
- 这是首个必须激活的协议功能
- 激活后,所有仍运行v1.7的节点将无法继续正常同步
- 需要充分协调并提前通知社区
-
配置修改:
- 在生产节点开始生产前,修改
protocol_features/BUILTIN-PREACTIVATE_FEATURE.json
文件 - 设置
earliest_allowed_activation_time
字段为约定的未来时间 - 确保超过2/3的活跃区块生产者设置了相同的时间
- 在生产节点开始生产前,修改
-
激活执行:
- 在约定时间过后,通过
producer_api_plugin
发送激活请求 - 首先获取
PREACTIVATE_FEATURE
的功能摘要 - 然后发送激活命令
- 在约定时间过后,通过
激活状态检查
任何已同步的v1.8.x节点都可以检查已激活的协议功能:
curl -X POST http://127.0.0.1:8888/v1/chain/get_activated_protocol_features -d '{}' | jq
应用开发者注意事项
交易追踪结构变更
v1.8修改了交易追踪结构,影响:
history_plugin
mongo_db_plugin
state_history_plugin
建议开发者:
- 使用新的
send_transaction
RPC替代push_transaction
- 更新对
state_history_plugin
的消费逻辑
区块头扩展
协议功能激活会在区块头扩展部分添加256位摘要信息。区块浏览器等工具需要处理这些新增数据。
延迟交易扩展字段
NO_DUPLICATE_DEFERRED_ID
激活后,合约生成的延迟交易将包含非空的transaction_extensions
字段。处理二进制序列化交易的代码需要能够解析这些扩展数据。
授权限制
RESTRICT_ACTION_TO_SELF
激活后将移除合约向自身发送内联动作时的授权绕过机制。智能合约开发者需确保其合约不依赖此机制,否则可能导致功能异常。
总结
EOSIO 1.8+的共识协议升级是一个需要精心规划和协调的过程。节点运营商应尽早开始准备,区块生产者需要密切协调,应用开发者则需要评估升级对现有系统的影响。通过充分的测试和准备,可以确保升级过程平稳进行,最小化对用户的影响。
eos An open source smart contract platform 项目地址: https://gitcode.com/gh_mirrors/eo/eos
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考