本页跟踪 v0.7.0 的发布与变更。完整的发布历史请参阅 GitHub 上的 CHANGELOG。
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,使其遵循NoBaseFeefeemarket 的参数。 - #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.
API-BREAKING
- #1146 Remove
EndBlockerbased mempool updates, usePrepareCheckStaterinstead.
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.ValidateAuthorityinx/vm,x/erc20, andx/feemarketMsgServerhandlers so authority can optionally be centralized via the consensusAuthorityParamsintroduced in cosmos-sdk v0.54. - #1164 Remove zero gas config from
ics20.transferWithStateDBso 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.Indexand eth-onlylog.TxIndexpost-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
gasCapinCallEVMWithDatainstead of always used the default cap. - #993 Enforce
src_callbackcontract 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 indexerrors in block RPCs.