github crypto-org-chain/cronos v1.8.1

4 hours ago

Release Note

v1.8.1 is a patch release that makes nodes more robust and the JSON-RPC more reliable. It changes no consensus logic, so node operators can swap the binary at any height.

1. Key Improvements

  • Safer log queries: eth_getLogs, eth_newFilter and the logs WebSocket subscription now limit the size of address and topic lists, as go-ethereum does (at most 4 topic positions and 1000 entries per list). A scan now stops as soon as the client disconnects, so one oversized query can no longer keep a CPU core busy for minutes.
  • Faster log filtering: blocks are now matched against bloom bit positions computed once up front, instead of recomputing keccak for every entry in every block. For 1000 addresses over 10,000 blocks, a query went from about 3 s to 5.4 ms.
  • Log blockTimestamp restored: logs returned by eth_getLogs, filter queries, transaction receipts and the logs subscription include blockTimestamp again. It had been missing since the go-ethereum v1.16 upgrade.
  • More reliable memiavl: fixes cover rollback, failed and read-only loads, snapshot rewrites, and goroutine and file-descriptor leaks.
  • Better versiondb compression: newly flushed SST files are now compressed. A new cronosd changeset compact-versiondb command recompresses an existing versiondb.

2. Core Protocol & Dependency Upgrades

Frameworks:

  • Upgraded ethermint to the latest release/v0.24.x (e874216e33c8).
  • Upgraded cronos-store (memiavl, store, versiondb) to the latest release/v1.9.x (f4faf1b7a3a6).
  • cosmos-sdk v0.54 fork, cometbft v0.39 and go-ethereum v1.16.9 are unchanged.

Database & Node Optimizations:

  • versiondb now compresses flushed SST files: L0 and L1 use ZSTD, the other levels use LZ4. Before, files with no key overlap (for example from restore-versiondb) were moved to the bottom level uncompressed.
  • New cronosd changeset compact-versiondb [--rate-limit <MiB/s>] command. It recompresses every versiondb SST file and uses all CPU cores. Stop the node before running it. On archive nodes it can take hours and needs free disk space for the rewritten files.
  • Bumped indirect dependencies: OpenTelemetry (1.45), Prometheus client (1.24.1), gRPC (1.83.2), klauspost/compress (1.19.1). The Docker base images were updated to golang:1.27-alpine and alpine:3.24.2.

3. Critical Bug Fixes & Adjustments

JSON-RPC:

  • eth_getLogs, eth_newFilter and eth_subscribe("logs") now reject address or topic lists that are too large, with an InvalidParams error. The error says whether the address limit or the topic limit was hit.
  • A missing block header no longer makes eth_getLogs fail. The timestamp is left at 0 instead.
  • Added a bounds check on the transaction index in eth_getTransactionLogs.
  • WebSocket error responses now return the request id once it has been parsed. Requests with a non-integer id are rejected.

memiavl:

  • Rollback now deletes newer snapshots before cutting back the WAL.
  • A failed Load now releases the lock, the tree and the WAL.
  • Fixed a pond worker-pool goroutine that leaked on every Load.
  • A read-only Load, used by historical queries, no longer modifies or holds open the live WAL.
  • When LoadMultiTree fails, trees that were already opened are now closed. When LockFile fails, the lock file is now closed.
  • Close now closes the loaded MultiTree when it drains a snapshot rewrite that has finished.
  • A snapshot rewrite now fails if a tree write panics.

Operator Guidance:

  • [json-rpc] txfee-cap has been enforced on eth_sendRawTransaction since v1.8. The default of 1 CRO is too low for Cronos fees: at the 375 gwei minimum gas price it allows only about 2.6M gas, and about 5% of mainnet transactions exceed it. On every node that serves JSON-RPC, set txfee-cap = 0 (no cap, as in v1.7), or at least 100.

Infrastructure & Testing:

  • Fixed flaky transaction waits on nodes using the null indexer, and fixed the expedited governance voting and EIP-7702 integration tests.
  • Fixed racy async-WAL memiavl tests.
  • Bumped GitHub Actions and test dependencies (brace-expansion, urllib3).

Please refer to CHANGELOGS and Migration Guide for operational guide

Don't miss a new cronos release

NewReleases is sending notifications on new releases.