IoTeX 主网 v1.7 正式上线!

IoTeX Mainnet v1.7 is Officially Live

今天是 IoTeX 区块链的又一个重大版本发布日,为 IoTeX 协议带来了显著改进。iotex-core 1.7.0 已于 3 月 15 日面向节点运营商发布,并已于 [大约在 2022 年 3 月 24 日晚上 11 点 UTC 左右] 正式激活。此次发布带来了许多 API 改进,将加快 dApp 开发速度并简化复杂智能合约的调试。节点运营商将受益于以太坊 API 服务更简洁的架构以及更好的日志管理。数据库和网络性能也有所提升。IoTeX 始终在不断构建、优化并迭代改进,以便让 dApp 开发和上手变得更加容易。除了让 dApp 构建变得更简单外,区块链本身也因性能增强而变得更加可靠、更加安全。让我们来仔细看看其中一些主要变化……

API

追踪合约执行

区块链合约执行的调试可能非常复杂,尤其是在涉及对其他合约的调用时。在兼容 EVM 的平台中,标准的区块链 API 通常只能告诉开发者某个操作是成功还是被回滚。全新的 TraceTransactionStructLogs API 调用相当于以太坊的 trace_call,可以在单次合约调用执行期间收集底层细节,为开发者提供关于操作执行过程中所发生情况的有用信息。此 API 在任何启用了 API 网关服务的 IoTeX 节点上均可使用。

合约存储解码 API

该 API 允许在特定内存位置解码智能合约存储中的数据。它以原生 IoTeX GRPc API 调用(ReadContractStorage)以及以太坊 JSON API 调用(eth_getStorageAt)的形式提供。

getActions API 结果中的 Gas 费用值

此前在查询操作详情时,响应对象中缺少某个特定操作实际花费的 gas 费用值。现在,任何原生或以太坊 API 调用(凡是返回交易详情的)都会提供该值。

交易回执和 EVM 日志中的索引值

1.7.0 激活后,在查询交易回执时,现在会提供 transactionIndex 值,以及 EVM 日志数组中每条日志条目的 logIndex 值。transactionIndex 字段提供了该交易在区块中的位置,在交易顺序很重要的场景下非常有用。logIndex 则提供了合约执行过程中 EVM 日志的正确顺序。

节点运营

原生以太坊 JSON API

区块链版本 1.2.0 的发布对 IoTeX 开发者而言是一个重要里程碑。随着 IoTeX 节点原生支持以太坊签名交易,以及以太坊 JSON API 服务(“Babel”)的发布,IoTeX 与以太坊的兼容性已趋于完整。这使得任何以太坊 dApp 都可以移植到 IoTeX 上,而无需对合约或客户端代码做任何改动。然而,此前以太坊 API 是作为一个外部服务实现的,必须单独部署,并“指向”一个实际的 IoTeX 节点才能运作。在 iotex-core 1.7.0 中,以太坊 API 服务器现已原生集成,并直接由 IoTeX 节点对外提供。无需再运行、配置和管理外部服务。只需启用你的 IoTeX 节点的 网关(Gateway) 功能,即可同时获得 IoTeX 原生 API 和以太坊 API。

日志轮转

节点 Docker 镜像中已安装 Logrotate,以更高效地管理和存储节点日志文件。现在节点不再生成单一的大日志文件,而是生成多个较小的文件,其中过旧的文件会被删除。logrotate 的配置文件位于 Docker 镜像中。默认设置为每天创建新的日志文件,日志文件在 30 天后会被删除。

性能

主网与测试网 P2P 网络的分离

通过此项变更,IoTeX 测试网和主网现已在 p2p 网络层面上基于 ChainID 的值进行了逻辑分离,该值现在会包含在所有 p2p 消息中。这在某些特殊情况下减少了主网与测试网之间的网络流量干扰,并降低了某些类型攻击的风险。

其他

区块链节点执行追踪

在 1.6.0 版本中,我们引入了追踪代码,用于收集节点关键执行路径上的运行时日志。目前该追踪代码已被启用,并配置为将数据发送到后端进行汇总和分析。这对 IoTeX 核心开发团队来说是一个宝贵的工具,能够监控链的执行情况,并在检测到异常行为或错误时及时收到提醒。任何人都可以访问 https://tracing.iotex.me 查看相关数据。

更多内容

1.7.0 中还实现了许多其他次要的错误修复和改进。更多详情请查看 GitHub 上的发布页面。我们非常欢迎你更多地参与进来,欢迎加入我们的 Discord 频道。