EOSIO社区分叉现在的正式名称为 “Antelope”

Antelope 协议已从 nodeos 软件 2.0 版中实现的早期版本的 EOSIO 协议分叉出来。

Mandel 3.1 现在的正式名称为“Leap 3.1”

之前EOSIO协议的主要C++实现从未被赋予明确的名称,这造成了一种混淆:我们是在讨论协议本身,还是协议的特定实现,Antelope 协议的第一个社区运行实现解决了这种歧义:Leap v3.1。

有关导致这些更改的情况说明,请参阅本文:

为 9 月 21 日的共识升级做准备

2022 年 9 月 21 日星期三,EOS 区块生产者将通过执行 Leap 3.1 的协调共识升级,开始开辟一条通往自主发展的新道路。

任何运行节点的人都必须在9月21日之前升级其节点,才能继续与网络同步。

Leap 3.1 版本的协调共识升级包括由网络共识为指导的优先事项。 在此版本中,EOSIO 网络联盟正式用 EOS 网络基金会 (ENF) 核心开发团队,取代了之前不专注工作的 EOSIO 开发人员。 这种解放实现了跨链合作,并将网络推向未来。

Leap升级代表网络拥有了自己的代码库。

作为网络的守护者,EOS 上的区块生产者承担着稳定网络升级的责任。 然而,随着共识升级的到来 ,网络中的所有节点都需要更新

过去几周,有许多人一直在参与测试Leap 3.1,EOS网络基金会工程团队也定期推送候选版本。相关测试仍在继续,因为开发人员正在对Leap 3.1和相关软件进行最后的润色,预计在未来几天发布。

与之前的 EOSIO 1.8 版本一样,Leap 3.1 需要区块生产者和其他网络参与者之间的协调,以确保网络共识升级的顺利进行。 软件发布后,节点运营商必须验证先决条件,删除过时的插件,并在更新二进制文件之前更改配置设置。

本文档提供了一个升级清单,以促进节点升级过程并避免中断操作。某些特定步骤可能因现有节点配置而有所不同,但这些基本步骤适用于大多数节点。

开发人员可以填写一份调查表(调查问题),以帮助确定最常用的API节点,并帮助确定资源的优先次序。

当EOS网络基金会发布了最终版本,节点运营商就可以升级到Leap。最新的版本可从GitHub获取。Leap v3.1 的最终版本在 GitHub 上。 以前的版本在发布页面上。

升级规划:

  • 在出块节点上执行这些步骤之前,请确保有一个可以尝试这些步骤的测试服务器。
  • 使用受支持的操作系统之一(Ubuntu 18.04、20.04、22.04),您可以在新服务器上安装 Leap 3.1或升级现有服务器,该说明假设您正在进行升级。
  • 决定您是使用预建的二进制文件还是自己编译二进制文件。(详情
  • 确保节点未配置 Leap 3.1 中不再可用的插件(如Leap 3.1和代号为Mandel的版本的GitHub发布页面中的“弃用”部分所述)。

使用这些插件的节点必须在激活前调整其解决方案,最好立即进行:

  • History v1 “history_plugin” + “history_api_plugin”
  • MongoDB “mongo_db_plugin

运营商可以将其解决方案迁移到HyperionChronicle等服务上。追踪历史插件是本机迁移选项。

此时,如果要用快照升级2.0(非2.1)节点,可以继续准备升级。

  • EOSIO 2.1 使用了与 Leap 不兼容的状态历史插件 (SHiP) 文件和 block.log 文件。 来自 2.1 的 SHiP 文件始终与 3.1 不兼容。 但是,如果节点从早期版本的 EOSIO 升级,block.log 文件可能是兼容的。
  • Leap 3.1 基于 EOSIO 2.0,因此从 EOSIO 2.0 升级节点非常简单。

如果您使用的是 EOSIO 2.1,您可能还需要进行其他工作:

  • 2.1 不保存 block.log 文件或状态历史的节点是最容易升级的。 只需从快照启动节点。
  • 对于保留block.log文件但不保留状态历史的2.1节点,block.log文件的版本很重要。如果你的block.log是在EOSIO 2.1之前创建的,block.log文件与3.1兼容,您可以从快照开始,而不需要删除现有的block log。
    • 如果您使用的是 EOSIO 2.0,则您的block log是兼容的。
    • 如果您使用的是 EOSIO 2.1,您的block log可能兼容也可能不兼容。 需要删除不兼容的 block.log 文件。 要确定您的 block.log 文件是否兼容,请对您的节点使用以下命令:

      apt install bsdextrautils
      hexdump <nodeos data directory>/blocks/blocks.log | head


      (The <nodeos data directory> 将是将是 nodeos 存储区块链数据的 “data” 目录,例如, “.local/share/eosio/nodeos/data”)

      输出中的第二个数字(顶行,左起第二列)对应 block.log 版本。 0001、0002 或 0003 都正常。 0004 来自 EOSIO 2.1,不兼容。

      0000000 0003 8000 6a7f 017e e473 5a38 0827 d7e6
      0000010 8804 fb34 07c1 2f9f b1ab 3c7b 5b12 6a14


      输出继续。除了字体加粗部分外,其他内容将有所不同。
  • 如果您的节点正在运行 EOSIO 2.0 ,并且需要保留区块和状态历史记录,您可以使用快照进行升级。
  • 如果您的节点正在运行 EOSIO 2.1 ,并且需要保留状态历史记录,则您需要回放您的block log或从网络重新同步。 回放速度更快,因为它节省了网络开销。
    • 如果您有兼容版本的 block.log,您可以回放您的block.log。 见上文(2.2),回放可能需要数周时间。
    • 如果您的 block log不兼容,您需要从网络上的另一个节点重新同步。 您可以从 2.0 或 2.1 同步,并且重新同步会创建兼容的 block.log 文件。 重新同步可能需要数周时间。 重新同步时,block.log 和状态历史记录会一起创建。如果您想下载 2.0 block.log 文件,请联系EOS Support 获得帮助。

图1,运行2.1的节点根据其配置必须采取的步骤表

(黄色和红色突出显示的单元格代表可能需要数周时间才能完成的步骤)

如果您对升级过程有任何疑问,请联系 EOS Support获取帮助。

为节点升级做准备

  • 下载预建的二进制文件来安装Leap。希望自己构建Leap的操作者可以在readme中找到说明。
  • 如果需要安装二进制文件的话,在安装之前,请确保您拥有兼容的快照。
    • 如果您正在运行 EOSIO 2.0(但不是 EOSIO 2.1),您可以使用以下命令从本地节点内生成快照:

      curl -X POST http://127.0.0.1:8888/v1/producer/create_snapshot

      要执行快照,必须使用配置选项 plugin = eosio::producer_api_plugin启动节点

      确保您的节点在启用 producer_api_plugin 时不向公众公开,因为它仅适用于管理员。
  • 一些配置选项已经改变,如果存在无效的配置选项,节点将无法启动。
    • Reversible Block数据库的配置已被删除,操作者应该从config.ini和其他脚本中删除这些参数。
      • reversible-blocks-db-size-mb 
      • reversible-blocks-db-guard-size-mb 
      • fix-reversible-blocks 
      • import-reversible-blocks
      • export-reversible-blocks
    • 节点2.1 中的Block log拆分功能已被删除并更改为log block轮换。 删除以下参数:
      • blocks-log-stride
      • max-retained-block-files
      • blocks-archive-dir

        并将其替换为:block-log-retain-blocks 

当前运行 EOSIO 2.1 的所有节点都应删除状态历史记录。

从数据目录中,用以下方法删除/state-history目录中的文件
rm <nodeos data directory>/state-history/*

  • 所有拥有2.1中的block log 0004版本的节点都应该删除Block log。 
    • 从数据目录中,用以下方法删除/blocks目录中的文件
      rm <nodeos data directory>/blocks/*
      rm <nodeos data directory>/blocks/reversible/*

以下为使用快照安装。需要为SHiP或block log回放交易的节点操作者应知悉,回放可能需要数周时间才能完成。

提高block.log文件重新同步速度的注意事项(适用于2.1节点):

  • 默认情况下,节点一次同步 100 个区块。 您可以使用 –sync-fetch-span 选项加速重新同步,该选项会更改一次同步的块数。 且该选项对于大部分为空的区块特别有效。 操作者反馈称该数字设置可高达 5000。重新同步完成后,您应该将此数字设置回 100。
  • 并非所有对等节点都有包含第一个块的 blocks.log 文件。 仅从快照开始的节点不会在 blocks.log 文件中包含快照前的区块。 您可以通过更改 p2p 列表来提高重新同步速度。 如果只包括具有创世区块的 p2p 对等节点,将加快同步过程。 请查阅自创世纪以来包含完整 blocks.log 文件的对等节点列表
  • 保持 p2p-peer-address 列表简短。 理想情况下,将其限制在地理上最近的 3 或 4 个节点。 您应该至少有 2 或 3 个节点一直延伸到创世区块。重新同步时,nodeos 向所有对等节点请求相同批次的区块。 这会减慢重新同步过程,并且对于受信任的对等节点来说通常是不必要的。 与有限数量的对等节点而不是所有对等节点同步,通过避免重复数据来加速同步。 如果您有信心,您甚至可以选择一个最近的对等节点进行同步。
  • 您可以从位于同一数据中心的单个对等节点同步进行快速同步。 为此,请使用包含所有区块的 blocks.log 运行现有节点。 当您使用Leap从创世区块重新同步时,请将此节点列为 p2p 对等节点。 即使您包含所有区块的节点运行的是 nodeos 2.1 或 2.2,它仍然可以用来提供过去的区块。如果您在同一台服务器上运行 Leap v3.1,但在与当前运行的节点不同的 p2p 端口上运行,您可以进一步加速同步。 这样,当您开始重新同步时,您将在127.0.0.1:<p2p_port>列出您自己的节点作为对等节点。 请确保您有一组新的 /blocks 和 /state 目录以及足够的 NVMe 或磁盘空间用于回放。
  • 如果您在现有服务器上有兼容的 blocks.log 文件(来自 nodeos v2.0),您可以便捷地将区块日志复制到您正在升级的服务器。 或者,您可以从受信任的公共来源下载区块日志,但是相比使用您自己区块日志的风险更大。

如果您使用其中一种方法来提高同步速度,请确保之后将选项恢复为默认设置以避免意外情况。

更新二进制文件

在出块服务器上重复这些步骤之前,请先在一台测试服务器上执行这些步骤。

  • 从一个新的 Ubuntu 节点开始,或者通过停止节点并删除旧的二进制文件来更新现有节点。 要删除旧的二进制文件,通常可以使用:
    dpkg --remove <old-pkg-name>
  • 删除状态文件。 要删除此目录中的文件,您可以使用:
    rm <nodeos data directory>/state/*
  • 更新二进制文件:
    • 从 GitHub 发布页面下载最新的 Ubuntu 二进制文件。
    • 打开终端窗口并运行 dpkg -i filename.deb,将 filename.deb 替换为下载的 Ubuntu 软件包的文件名。
  • 使用快照启动节点。

完成这些步骤后,节点就可以在9月21日激活协议了。

系统合约和应用

在 Leap 安装后,节点操作者已准备好让区块生产者激活新功能。在激活后的某个时间点,区块链生产者可以更新系统合约。

Leap 的新功能带来了强大的用户体验改进。然而,用户不能立即使用这些工具,因为当开发者更新他们的应用程序以利用新功能时,可能会出现一个时间差。

第一批使用 Leap 新功能的应用程序,最有可能是 Trust EVM 合约和非常受欢迎的钱包。 其他应用程序将需要一些时间,将新的 Leap 功能纳入其工作流程。 虽然软件开发工具包 (SDK) 的发布将加速 Leap 功能的可用性,但采用仍需要时间。

补充说明

区块生产者同时激活 Leap 3.1中的所有新功能。 尽管不太可能出现问题,但这些变化可能会影响智能合约和 dApp。 开发人员可以使用 Jungle4 等公共测试网,来确保他们的 dApp 继续按预期工作。 开发人员还可以使用这些测试网络来测试新的 Leap 功能。

合约开发工具包 (CDT) 已升级,使用此工具的人需要注意一些小的命名更改:

  • CDT 3.1改变了它的二进制文件的名称,用 “cdt “代替了 “eosio “的前缀,如cdt-cpp代替了eosio-cpp。
  • 对于 CMake 项目,使用 find_package(cdt) 而不再使用 find_package(eosio.cdt)。

下一个新版本可能会包括更多的命名更改。

结语

EOS 网络直接开发并资助了 Leap 3.1 升级,并敞开怀抱接受开发者和运营商的建议。该版本代表了基于 EOSIO 代码库的链的发展新时代,并且在深陷于疏于管理且前景不可预测的泥沼多年之后,EOS重新迈出了坚实的一步。在EOS网络基金会的关注和指导下,在区块生产者的认可和共识下,EOS终于掌握了自己的命运。

*blocks.log 文件扩展到创世纪的对等节点列表:

EOS:

  • eos.seed.eosnation.io:9876
  • peer1.eosphere.io:9876
  • peer2.eosphere.io:9876
  • p2p.genereos.io:9876

EOS Jungle4 测试网:

  • peer1-jungle4.eosphere.io:9876
  • jungle4.seed.eosnation.io:9876
  • jungle4.genereos.io:9876
  • jungle.p2p.eosusa.io:9883

EOS Jungle3 测试网:

  • peer1-jungle.eosphere.io:9876
  • jungle3.eossweden.org:59073
  • jungle3.eosrio.io:58012

EOS 麒麟测试网:

  • kylin.seed.eosnation.io:9876
  • peer1-kylin.eosphere.io:9876


关于EOS网络

EOS网络是区块链3.0时代的典范之作,由EOS VM提供支持。EOS VM是一个低延迟、高性能和可扩展的WebAssembly引擎,能够近乎无感的实现确定性交易执行。EOS网络专为Web 3而设计,致力于实现最佳的Web 3用户和开发人员体验。EOS是EOSIO协议的旗舰区块链和金融中心,并通过 EOS 网络基金会(ENF)作为多链协作和发展公共基础产品的工具,进一步完善基础设施,驱动EOS快速发展。

EOS网络基金会

EOS网络基金会是一个非营利性的组织,旨在倾听社区声音、传达社区意愿并扶持社区优质项目发展,成为EOS社区的信息共享桥梁,并为EOS生态提供资金、技术、运营、未来规划、生态构建等关键基础设施支持,进一步发挥EOS作为世界速度最快的治理型区块链的全部潜力。