本页跟踪 v0.7.0 的发布与变更。完整的发布历史请参阅 GitHub 上的 CHANGELOG。
发布
EVM发布
v0.7.0

API 破坏性变更

  • #1146 移除基于 EndBlocker 的 mempool 更新,改为使用 PrepareCheckStater。

改进

  • #758 清理 precompiles 的 abi.json。
  • #810 修复集成测试套件,以解决外部应用注入导致的锁竞争问题。
  • #811 在 genesis 中使用 SDK 的 DefaultBondDenom 作为默认 EVM denom。
  • #823 从测试套件和 EvmApp 接口中移除 authz 依赖。
  • #829 拆分测试应用接口。
  • #968 在 IBC 转账中使用常规 gas 配置,以防止潜在的 DoS 攻击。
  • #1029 将 EvmCoinInfo.Decimals 字段标记为已弃用。
  • #1079 访问控制列表现在不区分大小写。
  • #1103 对齐 IBC ERC20 回调中的常规 gas 计量。
  • #1108 为 JSON-RPC HTTP 服务新增请求体大小限制。
  • #1118 为 EVM mempool 缓存链的 denom。
  • #1008 不再强制执行 JSON-RPC 全局过滤器上限,并允许通过可配置的空闲超时回收过滤器。
  • #1130 在 x/vm、x/erc20 和 x/feemarket 的 MsgServer 处理器中使用 sdk.ValidateAuthority,以便 authority 可通过 cosmos-sdk v0.54 引入的共识 AuthorityParams 进行可选集中化管理。
  • #1164 从 ics20.transferWithStateDB 中移除零 gas 配置,使 ICS20 转账执行中的内部 KV 操作也被计量,与 #1103 保持一致。

功能

  • 新增应用级 evm+cosmos mempool(“Krakatoa”)。
  • #589 通过从 transient store 迁移到 object store,并重构 gas、索引和 bloom 工具,移除并行化阻碍。
  • #768 新增 ICS-02 Client Router 预编译合约。
  • #815 支持多个 gRPC 查询客户端与旧二进制版本一起提供服务。
  • #1082 为校验结果启用 incarnation 缓存。
  • #1096 允许 eth_call 覆盖与静态预编译合约配合使用。

缺陷修复

  • #1047 在 ReceiptsFromCometBlock 中于转换为 uint 之前处理 EthTxIndex 的 -1 哨兵值,防止 transactionIndex 溢出到 MaxUint64。
  • #965 修复 IBCOnTimeoutPacketCallback 中 EVM 调用的 gas 重复计费问题。
  • #869 修复 ERC20 IBC 回调:在解析接收方之前先检查是否为原生代币转账。
  • #860 修复 EIP-712 签名校验逻辑,改为使用已配置的 EVM chain ID,而不是解析 Cosmos chain ID 字符串;同时用 aminojson 签名模式处理器替换 legacytx.StdSignBytes。
  • #794 修复 mempool.max-txs 标志未使用期望默认值 0 的问题。
  • #748 修复 Cosmos ante handler 中的 DynamicFeeChecker,使其遵循 NoBaseFee feemarket 的参数。
  • #690 修复 coin type 60 的 Ledger 硬件钱包支持。
  • #769 修复 ERC20 IBC middleware,不再校验发送方地址格式。
  • #756 修复 NewMsgCancelProposal 中的错误信息拼写问题。
  • #772 避免在未使用 EVM mempool 时关闭过程发生 panic。
  • #774 在 ERC20 事件中正确输出 allowance 数量。
  • #790 修复历史查询中因缺少 EvmCoinInfo 导致的 panic。
  • #800 修复 vm 模块中虚拟手续费扣除时的 denom exponent 校验。
  • #1132 在执行后修补按区块累计的 log.Index 和仅以太坊使用的 log.TxIndex,以修复 BlockSTM 下的索引问题。
  • #817 对齐 GetCoinbaseAddress,使其在 CheckTx 等不存在 proposer 的上下文中能够处理空 proposer 地址。
  • #814 修复 post tx processor 中的重复事件问题。
  • #816 避免在 PreBlock 中 evmCoinInfo 初始化之前执行 RPC 请求时出现空指针,改用 defaultEvmCoinInfo 作为回退。
  • #828 在转换前校验 decimals,防止历史查询中缺少 coininfo 时发生 panic。
  • #905 修复 EIP-6780 selfdestruct,通过在 DeleteAccount 的 IsContract 检查之前持久化代码和账户,正确删除预注资地址上的合约。
  • #920 修复 GetCoinbaseAddress,将验证者 operator 地址从 Bech32 格式正确转换为 Ethereum 地址,以供 block.coinbase 操作码使用。
  • #705 修复在 eth_call 中使用 EVM 状态覆盖时,动态预编译合约被禁用的问题。
  • #967 修复 ERC20 IBCv2 middleware 的返回值,使其能够正确反映应用成功与中间件失败。
  • #992 在 CallEVMWithData 中遵循传入的 gasCap,而不是始终使用默认上限。
  • #993 强制 src_callback 合约地址与数据包发送方匹配,以防止在 IBC acknowledgement 和 timeout 回调中执行任意合约。
  • #1061 阻止在 source 回调中进行嵌套的 ICS20 转发。
  • #1050 使预编译合约的 gas 计算与预期的 EVM gas 语义保持一致。
  • #1107 在收据转换期间跳过 StateDB 提交出错的交易,防止区块 RPC 中出现 invalid message index 错误。

This page tracks releases and changes for v0.7.0. For the full release history, see the CHANGELOG on GitHub.
Release
EVMRelease
v0.7.0

API-BREAKING

  • #1146 Remove EndBlocker based mempool updates, use PrepareCheckStater instead.

IMPROVEMENTS

  • #758 Cleanup precompiles abi.json.
  • #810 Fix integration test suite to resolve lock contention problem from external app injection
  • #811 Use sdk’s DefaultBondDenom for default evm denom in genesis.
  • #823 Remove authz dependency from test suite and EvmApp interface
  • #829 Seperate test app interface
  • #968 Use normal gas config in ibc transfer to prevent potential DoS attack
  • #1029 Mark EvmCoinInfo.Decimals field as deprecated
  • #1079 Access Control List is now case-insensitive
  • #1103 Align normal gas metering in ibc erc20 callback.
  • #1108 Add json-rpc http server request body limit.
  • #1118 Cache chain denom for evm mempool
  • #1008 Stop enforcing JSON-RPC global filter cap and allow reclaim filters via configurable idle timeout.
  • #1130 Use sdk.ValidateAuthority in x/vm, x/erc20, and x/feemarket MsgServer handlers so authority can optionally be centralized via the consensus AuthorityParams introduced in cosmos-sdk v0.54.
  • #1164 Remove zero gas config from ics20.transferWithStateDB so inner KV ops in ICS20 transfer execution are metered, mirroring #1103.

FEATURES

  • New application evm+cosmos mempool (“Krakatoa”)
  • #589 Remove parallelization blockers via migration from transient to object store, refactoring of gas, indexing, and bloom utilities.
  • #768 Added ICS-02 Client Router precompile
  • #815 Support for multi gRPC query clients serve with old binary.
  • #1082 Enable incarnation cache for verify result.
  • #1096 Allow eth_call overrides work with static precompiles.

BUG FIXES

  • #1047 Resolve EthTxIndex -1 sentinel before uint cast in ReceiptsFromCometBlock, preventing transactionIndex overflow to MaxUint64.
  • #965 Fix gas double charging on EVM calls in IBCOnTimeoutPacketCallback.
  • #869 Fix erc20 IBC callbacks to check for native token transfer before parsing recipient.
  • #860 Fix EIP-712 signature verification to use configured EVM chain ID instead of parsing cosmos chain ID string and replace legacytx.StdSignBytes with the aminojson sign mode handler.
  • #794 Fix mempool.max-txs flag not using desired default of 0
  • #748 Fix DynamicFeeChecker in Cosmos ante handler to respect NoBaseFee feemarkets’ parameter.
  • #690 Fix Ledger hardware wallet support for coin type 60.
  • #769 Fix erc20 ibc middleware to not to validate sender address format.
  • #756 Fix error message typo in NewMsgCancelProposal.
  • #772 Avoid panic on close if evm mempool not used.
  • #774 Emit proper allowance amount in erc20 event.
  • #790 fix panic in historical query due to missing EvmCoinInfo.
  • #800 Fix denom exponent validation in virtual fee deduct in vm module.
  • #1132 Patch block-cumulative log.Index and eth-only log.TxIndex post-execution to fix indexing under BlockSTM.
  • #817 Align GetCoinbaseAddress to handle empty proposer address in contexts like CheckTx where proposer doesn’t exist.
  • #814 Fix duplicated events in post tx processor.
  • #816 Avoid nil pointer when RPC requests execute before evmCoinInfo initialization in PreBlock with defaultEvmCoinInfo fallback.
  • #828 Validate decimals before conversion to prevent panic when coininfo is missing in historical queries.
  • #905 Fix EIP-6780 selfdestruct to properly delete contracts at pre-funded addresses by persisting code and account before DeleteAccount’s IsContract check.
  • #920 Fix GetCoinbaseAddress to correctly convert validator operator address from Bech32 format to Ethereum address for block.coinbase opcode.
  • #705 Fix dynamic precompiles being disabled when EVM state overrides are used in eth_call.
  • #967 Fix return value of erc20 ibcv2 middleware to properly reflect application success and middleware failure.
  • #992 Respect the provided gasCap in CallEVMWithData instead of always used the default cap.
  • #993 Enforce src_callback contract address to match the packet sender for IBC acknowledgement and timeout callbacks to prevent arbitrary contract execution.
  • #1061 Block nested ICS20 forwarding in source callbacks.
  • #1050 Align precompile gas calculation with expected EVM gas semantics.
  • #1107 Skip StateDB commit error transactions during receipt conversion to prevent invalid message index errors in block RPCs.