EOSIO 1.8+ 共识协议升级指南:从测试到生产的完整流程

EOSIO 1.8+ 共识协议升级指南:从测试到生产的完整流程

eos An open source smart contract platform eos 项目地址: https://gitcode.com/gh_mirrors/eo/eos

前言

EOSIO 1.8版本引入了一系列重要的共识协议升级(俗称"硬分叉"),这些升级将显著改变区块链网络的运行机制。作为节点运营商或区块链开发者,理解并正确执行升级流程至关重要。本文将全面解析EOSIO 1.8+升级的完整流程、注意事项和最佳实践。

升级前的准备工作

测试网络验证

在任何非测试网络部署升级前,必须先在测试网络上完成验证。EOSIO 1.8.1是支持首批协议升级的节点版本,测试网络应使用此版本进行升级测试。

测试升级过程可以帮助区块生产者:

  1. 熟悉升级步骤
  2. 协调首个协议功能的激活
  3. 确定节点升级的合理时间窗口
  4. 评估升级对现有应用的影响

关键协议功能变更

升级包含几个重要协议功能变更,开发者需特别注意:

  • PREACTIVATE_FEATURE:启用后续协议功能激活的基础功能
  • NO_DUPLICATE_DEFERRED_ID:修改区块和交易数据结构
  • RESTRICT_ACTION_TO_SELF:限制授权绕过机制(自1.5.1版本起已弃用)

全节点升级流程

所有EOSIO网络(包括测试网络)的节点运营商应尽快执行以下步骤。建议在备用节点上先进行升级测试:

  1. 准备现有节点

    • 确保运行最新的1.7稳定版
    • 关闭节点服务
  2. 清理数据目录

    • 备份并删除以下目录:
      • blocks/reversible
      • state-history
      • state
  3. 版本升级

    • 将nodeos替换为1.8版本
  4. 重新同步

    • 启动1.8版本nodeos
    • 完成从创世区块的重放
    • 等待与网络同步完成

注意事项

  • 数据兼容性:v1.7生成的状态目录与v1.8不兼容
  • 快照版本:v1.8需要版本2的可移植快照
  • 同步时间:从创世区块重放可能耗时较长,特别是运行历史记录插件时

加速同步方案

对于不需要完整历史记录的节点,可以使用v1.8节点生成的版本2可移植快照来加速同步过程。快照文件的哈希值应通过多个可信来源进行验证。

区块生产者的特殊注意事项

升级准备

区块生产者需要在非生产节点上完成重放过程,确保:

  1. 在生产就绪的机器上完成重放和同步
  2. 或者生成可移植快照并迁移到生产机器

协议功能激活流程

  1. PREACTIVATE_FEATURE激活

    • 这是首个必须激活的协议功能
    • 激活后,所有仍运行v1.7的节点将无法继续正常同步
    • 需要充分协调并提前通知社区
  2. 配置修改

    • 在生产节点开始生产前,修改protocol_features/BUILTIN-PREACTIVATE_FEATURE.json文件
    • 设置earliest_allowed_activation_time字段为约定的未来时间
    • 确保超过2/3的活跃区块生产者设置了相同的时间
  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 eos 项目地址: https://gitcode.com/gh_mirrors/eo/eos

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈昊和

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值