This release introduces a new hardfork. All nodes should be upgraded before the epoch number reaches 259240000 (estimated on Aug 7). CIP-173 will be enabled when the PoS Block Number reaches 3870720 (estimated on Aug 8).
Conflux is planning to activate and implement modifications of 7 different CIPs (improvement proposals), including CIP-166, CIP-167, CIP-172, CIP-173, CIP-174, CIP-175 and CIP-176, together with one security update whose disclosure is deferred until after the upgrade, as well as RPC changes.
Upgrade notes
-
Replace
pos_config/pos_config.yamlwith the copy shipped in this release. The file is parsed strictly and an old copy will not load, so the node will not start. If you had changed paths such asbase.data_dir,storage.dirorlogger.file, carry them over — those keys are unchanged.pos_config/genesis_fileis no longer used and can be deleted. -
The first start after upgrading will take considerably longer than a normal restart. The shipped
run/testnet.tomlnow setsuse_isolated_db_for_mpt_table = true, and the node rebuilds the latest MPT snapshot once to make that switch. Later restarts are unaffected.
CIP Changes:
These CIPs are mainly divided into the following categories:
-
EVM Compatibility: CIP-166, CIP-167, CIP-174
-
Bug Fix: CIP-172, CIP-173, CIP-175, CIP-176
The following is a brief introduction of these CIPs.
CIP 166
This CIP corresponds to EIP-7939, adding the CLZ opcode for counting leading zeros.
CIP 167
This CIP corresponds to EIP-7951, introducing a precompile for signature verification on the secp256r1 (P-256) curve, which is widely used by WebAuthn, passkeys and similar schemes.
CIP 172
This CIP requires every transaction in a block to use canonical RLP encoding, fixing an issue where the same transaction could correspond to more than one hash. Nodes also reject these transactions from the transaction pool immediately upon upgrade, without waiting for activation.
CIP 173
This CIP fixes defects in the verification of PoS dispute evidence, and extends the CIP-156 stake lock to a validator whose stake is already entirely unlocking.
CIP 174
This CIP corresponds to EIP-7823 and EIP-7883, setting an upper bound on the input lengths of the ModExp precompile and raising its gas pricing.
CIP 175
This CIP fixes cross-space calls not resolving an EIP-7702 delegation, bringing the behaviour in line with calls made within eSpace.
CIP 176
This CIP fixes the case where, when the same address appears in several entries of an access list, only the storage keys of the last entry were warmed.
Undisclosed security fix
This upgrade includes a fix for a security issue. To prevent it from being exploited, the related source code and details will be published after the network upgrade is complete.
RPC changelog
New RPC methods:
-
eSpace
eth_createAccessList -
eSpace Parity style
trace_call
Misc changes:
-
The Core space RPC service has been migrated to the
jsonrpseeframework; JSON-RPC error messages differ from previous versions, with the detail now carried inerror.data. -
The TCP JSON-RPC server has been removed, along with the
jsonrpc_tcp_portandjsonrpc_local_tcp_portoptions. The HTTP and WebSocket endpoints are unchanged. -
The WebSocket endpoint now applies the
jsonrpc_corssetting, which previously affected HTTP only. -
Request throttling is enforced again on the jsonrpsee stack, where each request had been getting a fresh token bucket, and now also covers batch requests.
-
The light node supports the pub/sub namespace.
-
Fixed
4byteTracerdropping calls with no arguments (bare function selector). -
Fixed phantom transaction trace recovery for blocks before CIP-90 activation.
-
eSpace log filters reject a
topicsarray with more than four positions. -
EIP-7702 authorization objects reject a
yParitygreater than 1. -
cfx_sendTransactionandcfx_signTransactionreturn an error whenfromis omitted. -
The PoS
tx_by_versionRPC returnsnullfor version 0.
Other changes
-
Fixed a number of node panics reachable through malformed P2P messages, RPC parameters and on-chain data.
-
Fixed
--port,--db-cache-sizeand--db-compact-profilebeing silently ignored, and removed four command-line flags that were never wired to anything (--start-mining,--test-mode,--load-test-chain,--tg-archive) — a start script still passing one will now fail. -
PoS mempool and proposal handling were made more robust, and a large amount of unused Diem-era infrastructure was removed. Three ledger column families are no longer written; existing databases still open and no resync is required.
-
Fixed a crash during shutdown, lowered log levels for high-frequency events under high TPS, and added a real-time throughput meter.
-
The toolchain moved to Rust 1.91, RocksDB was updated to build with GCC 13+ and clang 21+ / Xcode 16+, Windows compilation was fixed, and several dependency advisories were cleared.