Skip to content

Latest commit

 

History

History
324 lines (244 loc) · 14.6 KB

File metadata and controls

324 lines (244 loc) · 14.6 KB

Changelog

Fixed

  • Fix race on startup sync. #3162
  • Strict raft state. #3167
  • Retry fetching the timestamp on error in da-client #3166

Changes

  • Subscribe to forced inclusion namespace events #3146

v1.0.0

Fixed

  • Persist cache snapshot only once at shutdown to avoid Badger vlog increase. #3153

v1.0.0-rc.5

Added

  • Add disaster recovery for sequencer
    • Catch up possible DA-only blocks when restarting. #3057
    • Verify DA and P2P state on restart (prevent double-signing). #3061
  • Node pruning support. #2984
    • Two different sort of pruning implemented: Classic pruning (all): prunes given HEAD-n blocks from the databases, including store metadatas. Auto Storage Optimization (metadata): prunes only the state metadatas, keeps all blocks. By using one or the other, you are losing the ability to rollback or replay transactions earlier than HEAD-n. When using classic pruning, you aren't able to fetch blocks prior to HEAD-n.

Fixed

  • Fix block timer to account for execution time. Previously, the block timer reset to the full block_time duration after ProduceBlock completed, making the effective interval block_time + execution_time. Now the timer subtracts elapsed execution time so blocks are produced at the configured cadence.

Changes

  • Store pending blocks separately from executed blocks key. #3073
  • Fixes issues with force inclusion verification on sync nodes. #3057
  • Add flag to local-da to produce empty DA blocks (closer to the real system). #3057
  • Validate P2P DA height hints against the latest known DA height to prevent malicious peers from triggering runaway catchup. #3128
  • Replace syncer DA polling system by DA subscription via websockets. #3131

v1.0.0-rc.4

Changes

  • Skip draining when exec client unavailable. #3060

v1.0.0-rc.3

Added

  • Add DA Hints for P2P transactions. This allows a catching up node to be on sync with both DA and P2P. (#2891)

Changes

  • Improve cache.NumPendingData to not return empty data. Automatically bumps LastSubmittedHeight to reflect that. (#3046)
  • BREAKING Make pending events cache and tx cache fully ephemeral. Those will be re-fetched on restart. DA Inclusion cache persists until cleared up after DA inclusion has been processed. Persist accross restart using store metadata. (#3047)
  • Replace LRU cache by standard mem cache with manual eviction in store_adapter. When P2P blocks were fetched too fast, they would be evicted before being executed #3051
  • Fix replay logic leading to app hashes by verifying against the wrong block #3053.

v1.0.0-rc.2

Changes

  • Improve cache handling when there is a significant backlog of pending headers and data. (#3030)
  • Decrease MaxBytesSize to 5MB to increase compatibility with public nodes. (#3030)
  • Proper counting of DASubmitterPendingBlobs metrics. #3038
  • Replace go-header store by ev-node store. This avoid duplication of all blocks in go-header and ev-node store. Thanks to the cached store from #3030, this should improve p2p performance as well. #3036

v1.0.0-rc.1

Added

  • Added OpenTelemetry tracing support with OTLP export for distributed tracing across ev-node components including block production, syncing, DA submission/retrieval, sequencer, store operations, and RPC layer. Configurable via instrumentation.tracing, instrumentation.tracing_endpoint, instrumentation.tracing_service_name, and instrumentation.tracing_sample_rate settings. (#2956)
  • BREAKING: Implement forced inclusion and batch sequencing (#2797) This change requires adding a da_epoch_forced_inclusion field to the node's genesis.json file. The recommended value is 100. Full support for this feature will be available in a future release.
  • Added post-tx command and force inclusion server to submit transactions directly to the DA layer. (#2888) Additionally, modified the core package to support marking transactions as forced included transactions. The execution client ought to perform basic validation on those transactions as they have skipped the execution client's mempool.
  • Added batching strategies (default stay time-based, unchanged from previous betas). Currently available strategies are time, size, immediate and adaptive. Full documentation can be found here.
  • Added FilterTxs method to the execution interface. This method is meant to filter txs by size and if the execution clients allows it, by gas. This is useful for force included transactions, as those aren't filtered by the sequencer's mempool.
  • Added GetExecutionInfo method to the execution interface. This method returns some execution information, such as the maximum gas per block.

Changed

  • BREAKING: Renamed evm-single to evm and grpc-single to evgrpc for clarity. #2839. You may need to manually modify your evnode.yaml signer.signer_path if your $HOME folder is changed.
  • Split cache interface into CacheManager and PendingManager and created da client to easy DA handling. #2878
  • Improved startup DA retrieval height when cache is cleared or empty. #2880

Removed

  • BREAKING: Removed unused and confusing metrics from sequencers and block processing, including sequencer-specific metrics (gas price, blob size, transaction status, pending blocks), channel buffer metrics, overly granular error metrics, block production categorization metrics, and sync lag metrics. Essential metrics for DA submission health, block production, and performance monitoring are retained. #2904
  • BREAKING: Removed core/da package and replaced DAClient with internal implementation. The DA client is exposed as block.FullDAClient, block.DAClient, block.DAVerifier without leaking implementation details. #2910

v1.0.0-beta.11

Improvements

  • Loosen syncer validation for allowing swapping sequencer and full node state #2925

v1.0.0-beta.10

Added

  • Enhanced health check system with separate liveness (/health/live) and readiness (/health/ready) HTTP endpoints. Readiness endpoint includes P2P listening check and aggregator block production rate validation (5x block time threshold). (#2800)
  • Added GetP2PStoreInfo RPC method to retrieve head/tail metadata for go-header stores used by P2P sync (#2835)
  • Added protobuf definitions for P2PStoreEntry and P2PStoreSnapshot messages to support P2P store inspection

Changed

  • Improved EVM execution client payload status validation with proper retry logic for SYNCING states in InitChain, ExecuteTxs, and SetFinal methods. The implementation now follows Engine API specification by retrying SYNCING/ACCEPTED status with exponential backoff and failing immediately on INVALID status, preventing unnecessary node shutdowns during transient execution engine sync operations. (#2863)
  • Remove GasPrice and GasMultiplier from DA interface and configuration to use celestia-node's native fee estimation. (#2822)
  • Use cache instead of in memory store for reaper. Persist cache on reload. Autoclean after 24 hours. (#2811)
  • Improved P2P sync service store initialization to be atomic and prevent race conditions (#2838)
  • Enhanced P2P bootstrap behavior to intelligently detect starting height from local store instead of requiring trusted hash
  • Relaxed execution layer height validation in block replay to allow execution to be ahead of target height, enabling recovery from manual intervention scenarios

Removed

  • BREAKING: Removed evnode.v1.HealthService gRPC endpoint. Use HTTP endpoints: GET /health/live and GET /health/ready. (#2800)
  • BREAKING: Removed TrustedHash configuration option and --evnode.node.trusted_hash flag. Sync service now automatically determines starting height from local store state (#2838)
  • BREAKING: Removed unused and confusing metrics from sequencers and block processing, including sequencer-specific metrics (gas price, blob size, transaction status, pending blocks), channel buffer metrics, overly granular error metrics, block production categorization metrics, and sync lag metrics. Essential metrics for DA submission health, block production, and performance monitoring are retained. #2904

Fixed

  • Fixed sync service initialization issue when node is not on genesis but has an empty store

v1.0.0-beta.9

Added

  • Added automated upgrade test for the evm app that verifies compatibility when moving from v1.0.0-beta.8 to HEAD in CI (#2780)
  • Added execution-layer replay mechanism so nodes can resynchronize by replaying missed batches against the executor (#2771)
  • Added cache-pruning logic that evicts entries once heights are finalized to keep node memory usage bounded (#2761)
  • Added Prometheus gauges and counters that surface DA submission failures, pending blobs, and resend attempts for easier operational monitoring (#2756)
  • Added gRPC execution client implementation for remote execution services using Connect-RPC protocol (#2490)
  • Added ExecutorService protobuf definition with InitChain, GetTxs, ExecuteTxs, and SetFinal RPCs (#2490)
  • Added new grpc app for running EVNode with a remote execution layer via gRPC (#2490)

Changed

  • Hardened signer CLI and block pipeline per security audit: passphrases must be provided via --evnode.signer.passphrase_file, JWT secrets must be provided via --evm.jwt-secret-file, data/header validation enforces metadata and timestamp checks, and the reaper backs off on failures ( BREAKING) (#2764)
  • Added retries around executor ExecuteTxs calls to better tolerate transient execution errors (#2784)
  • Increased default ReadinessMaxBlocksBehind from 3 to 30 blocks so /health/ready stays true during normal batch sync (#2779)
  • Updated EVM execution client to use new txpoolExt_getTxs RPC API for retrieving pending transactions as RLP-encoded bytes

Deprecated

Removed

  • Removed LastCommitHash, ConsensusHash, and LastResultsHash from the canonical header representation in favor of slim headers (BREAKING; legacy hashes now live under Header.Legacy) (#2766)

Fixed

Security