github Conflux-Chain/conflux-rust v3.1.0-testnet
Conflux v3.1.0-testnet

pre-release3 hours ago

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

  1. Replace pos_config/pos_config.yaml with 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 as base.data_dir, storage.dir or logger.file, carry them over — those keys are unchanged. pos_config/genesis_file is no longer used and can be deleted.

  2. The first start after upgrading will take considerably longer than a normal restart. The shipped run/testnet.toml now sets use_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:

  1. eSpace eth_createAccessList

  2. eSpace Parity style trace_call

Misc changes:

  1. The Core space RPC service has been migrated to the jsonrpsee framework; JSON-RPC error messages differ from previous versions, with the detail now carried in error.data.

  2. The TCP JSON-RPC server has been removed, along with the jsonrpc_tcp_port and jsonrpc_local_tcp_port options. The HTTP and WebSocket endpoints are unchanged.

  3. The WebSocket endpoint now applies the jsonrpc_cors setting, which previously affected HTTP only.

  4. 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.

  5. The light node supports the pub/sub namespace.

  6. Fixed 4byteTracer dropping calls with no arguments (bare function selector).

  7. Fixed phantom transaction trace recovery for blocks before CIP-90 activation.

  8. eSpace log filters reject a topics array with more than four positions.

  9. EIP-7702 authorization objects reject a yParity greater than 1.

  10. cfx_sendTransaction and cfx_signTransaction return an error when from is omitted.

  11. The PoS tx_by_version RPC returns null for version 0.

Other changes

  1. Fixed a number of node panics reachable through malformed P2P messages, RPC parameters and on-chain data.

  2. Fixed --port, --db-cache-size and --db-compact-profile being 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.

  3. 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.

  4. Fixed a crash during shutdown, lowered log levels for high-frequency events under high TPS, and added a real-time throughput meter.

  5. 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.

Don't miss a new conflux-rust release

NewReleases is sending notifications on new releases.