Commit ec9f9bf
feat: add key rotation (#3282)
* add key rotation
* remove need for pubkey and add some tests
* comments and amendments
* commen changes
* redo the design
* revert header change
* deps
* fix docker and proto
* ammendments from commnets
* linting
* test: cover unexpected DA proposer rejection
* fix: resolve key rotation conflicts with main (#3313)
* build(deps): Bump the all-go group across 8 directories with 7 updates (#3291)
* build(deps): Bump the all-go group across 8 directories with 7 updates
Bumps the all-go group with 5 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
| [github.com/aws/aws-sdk-go-v2/service/kms](https://github.com/aws/aws-sdk-go-v2) | `1.50.5` | `1.51.0` |
| [github.com/aws/smithy-go](https://github.com/aws/smithy-go) | `1.25.0` | `1.25.1` |
| [github.com/libp2p/go-libp2p-pubsub](https://github.com/libp2p/go-libp2p-pubsub) | `0.15.0` | `0.16.0` |
| [github.com/rs/zerolog](https://github.com/rs/zerolog) | `1.35.0` | `1.35.1` |
| [google.golang.org/api](https://github.com/googleapis/google-api-go-client) | `0.274.0` | `0.276.0` |
Bumps the all-go group with 1 update in the /apps/evm directory: [github.com/rs/zerolog](https://github.com/rs/zerolog).
Bumps the all-go group with 1 update in the /apps/grpc directory: [github.com/rs/zerolog](https://github.com/rs/zerolog).
Bumps the all-go group with 1 update in the /apps/testapp directory: [github.com/rs/zerolog](https://github.com/rs/zerolog).
Bumps the all-go group with 2 updates in the /execution/evm directory: [github.com/rs/zerolog](https://github.com/rs/zerolog) and [github.com/evstack/ev-node](https://github.com/evstack/ev-node).
Bumps the all-go group with 1 update in the /execution/grpc directory: [github.com/evstack/ev-node](https://github.com/evstack/ev-node).
Bumps the all-go group with 1 update in the /test/docker-e2e directory: [github.com/celestiaorg/tastora](https://github.com/celestiaorg/tastora).
Bumps the all-go group with 2 updates in the /test/e2e directory: [github.com/rs/zerolog](https://github.com/rs/zerolog) and [github.com/celestiaorg/tastora](https://github.com/celestiaorg/tastora).
Updates `github.com/aws/aws-sdk-go-v2/service/kms` from 1.50.5 to 1.51.0
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](aws/aws-sdk-go-v2@service/ssm/v1.50.5...service/s3/v1.51.0)
Updates `github.com/aws/smithy-go` from 1.25.0 to 1.25.1
- [Release notes](https://github.com/aws/smithy-go/releases)
- [Changelog](https://github.com/aws/smithy-go/blob/main/CHANGELOG.md)
- [Commits](aws/smithy-go@v1.25.0...v1.25.1)
Updates `github.com/libp2p/go-libp2p-pubsub` from 0.15.0 to 0.16.0
- [Release notes](https://github.com/libp2p/go-libp2p-pubsub/releases)
- [Commits](libp2p/go-libp2p-pubsub@v0.15.0...v0.16.0)
Updates `github.com/rs/zerolog` from 1.35.0 to 1.35.1
- [Commits](rs/zerolog@v1.35.0...v1.35.1)
Updates `google.golang.org/api` from 0.274.0 to 0.276.0
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](googleapis/google-api-go-client@v0.274.0...v0.276.0)
Updates `github.com/rs/zerolog` from 1.35.0 to 1.35.1
- [Commits](rs/zerolog@v1.35.0...v1.35.1)
Updates `github.com/rs/zerolog` from 1.35.0 to 1.35.1
- [Commits](rs/zerolog@v1.35.0...v1.35.1)
Updates `github.com/rs/zerolog` from 1.35.0 to 1.35.1
- [Commits](rs/zerolog@v1.35.0...v1.35.1)
Updates `github.com/rs/zerolog` from 1.35.0 to 1.35.1
- [Commits](rs/zerolog@v1.35.0...v1.35.1)
Updates `github.com/evstack/ev-node` from 1.1.0 to 1.1.1
- [Release notes](https://github.com/evstack/ev-node/releases)
- [Changelog](https://github.com/evstack/ev-node/blob/main/CHANGELOG.md)
- [Commits](v1.1.0...v1.1.1)
Updates `github.com/evstack/ev-node` from 1.1.0 to 1.1.1
- [Release notes](https://github.com/evstack/ev-node/releases)
- [Changelog](https://github.com/evstack/ev-node/blob/main/CHANGELOG.md)
- [Commits](v1.1.0...v1.1.1)
Updates `github.com/celestiaorg/tastora` from 0.17.0 to 0.19.0
- [Release notes](https://github.com/celestiaorg/tastora/releases)
- [Commits](celestiaorg/tastora@v0.17.0...v0.19.0)
Updates `github.com/rs/zerolog` from 1.35.0 to 1.35.1
- [Commits](rs/zerolog@v1.35.0...v1.35.1)
Updates `github.com/celestiaorg/tastora` from 0.16.1-0.20260312082036-2ee1b0a2ac4e to 0.19.0
- [Release notes](https://github.com/celestiaorg/tastora/releases)
- [Commits](celestiaorg/tastora@v0.17.0...v0.19.0)
---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/kms
dependency-version: 1.51.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: all-go
- dependency-name: github.com/aws/smithy-go
dependency-version: 1.25.1
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: all-go
- dependency-name: github.com/libp2p/go-libp2p-pubsub
dependency-version: 0.16.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: all-go
- dependency-name: github.com/rs/zerolog
dependency-version: 1.35.1
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: all-go
- dependency-name: google.golang.org/api
dependency-version: 0.276.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: all-go
- dependency-name: github.com/rs/zerolog
dependency-version: 1.35.1
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: all-go
- dependency-name: github.com/rs/zerolog
dependency-version: 1.35.1
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: all-go
- dependency-name: github.com/rs/zerolog
dependency-version: 1.35.1
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: all-go
- dependency-name: github.com/rs/zerolog
dependency-version: 1.35.1
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: all-go
- dependency-name: github.com/evstack/ev-node
dependency-version: 1.1.1
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: all-go
- dependency-name: github.com/evstack/ev-node
dependency-version: 1.1.1
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: all-go
- dependency-name: github.com/celestiaorg/tastora
dependency-version: 0.19.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: all-go
- dependency-name: github.com/rs/zerolog
dependency-version: 1.35.1
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: all-go
- dependency-name: github.com/celestiaorg/tastora
dependency-version: 0.19.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: all-go
...
Signed-off-by: dependabot[bot] <support@github.com>
* tidy
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Julien Robert <julien@rbrt.fr>
* build(deps): Bump postcss from 8.5.8 to 8.5.12 in /docs in the npm_and_yarn group across 1 directory (#3292)
build(deps): Bump postcss
Bumps the npm_and_yarn group with 1 update in the /docs directory: [postcss](https://github.com/postcss/postcss).
Updates `postcss` from 8.5.8 to 8.5.12
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](postcss/postcss@8.5.8...8.5.12)
---
updated-dependencies:
- dependency-name: postcss
dependency-version: 8.5.12
dependency-type: indirect
dependency-group: npm_and_yarn
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* ci: skip code jobs on docs-only changes (#3295)
Add a `changes` job using dorny/paths-filter to detect whether any
non-documentation files were modified. All heavy jobs (lint, docker,
test, docker-tests, proto) are gated behind this check and skipped
when the PR only touches docs/** or markdown files.
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* docs: brand-aligned syntax theme for code blocks (#3294)
* docs: better code readability
* chore: restore yarn.lock to main
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* docs(style): address PR review feedback
- Add `"type": "dark"` to ev-dark.json theme manifest
- Raise punctuation token contrast from #505050 to #767676 (WCAG AA)
- Align --vp-code-block-color CSS var with ev-dark default text (#dbd7ca)
- Use ThemeRegistration type instead of `as any` in config.ts
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(cache): reduce tx cache retention (#3299)
* docs: high availability sequencer guide (#3293)
* docs: ev-node high availability
* docs: node placement
* docs(ha): address PR review feedback
Critical fixes:
- Fix snapshot_threshold math: 5000 ÷ 10 = 500s ≈ 8.3 min (not 83s)
- Fix trailing_logs math: 18000 ÷ 10 = 1800s = 30 min (not 5 min)
Medium fixes:
- Fix heartbeat_timeout description: it is a follower-side election trigger,
not the interval at which the leader sends heartbeats
- Add explicit restart instruction after Step 5 data copy in single-to-ha.md
so the chain keeps producing blocks during preparation (Steps 6-8)
- Replace priv_validator_key.json with signer.json in single-to-ha.md
to match cluster-setup.md and the E2E tests
Minor fixes:
- Exclude self from raft.peers in all examples (cluster-setup.md node-1
yaml/CLI/systemd, single-to-ha.md node-1 and node-2)
- Add "exclude local node" note to raft.peers description in overview.md
- Fix P2P port in overview.md Interaction with P2P section (7676 → 26656)
- Add text language tag to all bare fenced blocks (MD040): multiaddr
example, RTT equations, and all log snippets
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* docs(ha): absorb raft_production.md into ha/overview.md
raft_production.md had no sidebar entry and its content was fully
superseded by the new ha/ guides. Extract the three pieces that were
unique to it — bootstrap flag docs, auto-detection startup mode
explanation, and static-membership limitation note — into
ha/overview.md, then delete the file.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* docs(ha): use EnvironmentFile for signer passphrase
Passing --evnode.signer.passphrase inline exposes the secret in
ps aux, journalctl, and shell history.
- Add EnvironmentFile=/etc/ev-node/env (chmod 600) to the systemd
unit in cluster-setup.md with setup instructions
- Replace all inline <YOUR_PASSPHRASE> occurrences with
$EV_SIGNER_PASSPHRASE sourced from /etc/ev-node/env in every
evm start / evm init snippet across both guides
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* docs(ha): explicit node-2 peers and action-based rolling restart
- Replace "peers list is identical" stub in node-2 config with an
explicit peers list that excludes node-2 itself, and add a note
that each node must omit itself from raft.peers
- Replace "Wait ~30 seconds" in rolling restart with journalctl
one-liners that exit as soon as the node logs follower/leader state,
giving a deterministic signal instead of an arbitrary timeout
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* docs(ha): fix raft.peers self-inclusion startup bug
The abbreviated node-2 snippet with "# peers list is identical" caused
a startup failure: with raft_addr=0.0.0.0:5001 the bootstrap code's
literal address comparison does not recognise node-2@10.0.0.2:5001 as
self, so node-2 is appended twice and deduplicateServers returns
"duplicate peers found in config".
- Fix intro text: "only raft.node_id and raft_addr differ" →
"raft.node_id is unique; raft.peers and p2p.peers must exclude self"
- Expand node-2 snippet to a full evnode.yaml with the correct peers
list (node-1, node-3, node-4, node-5 — no node-2) and an inline
explanation of the wildcard address pitfall
- Align overview.md trailing_logs example to 1 block/s (matching
block_time: "1s" used throughout) and note the 10 block/s rate too
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* docs(ha): fix passphrase flag and failover kill cardinality check
Replace non-existent --evnode.signer.passphrase with the actual
--evnode.signer.passphrase_file flag throughout cluster-setup and
single-to-ha guides. Update passphrase setup to create a chmod 600
file at /etc/ev-node/passphrase referenced directly by the flag.
Add mapfile-based cardinality check in the failover test fallback
kill command to guard against killing the wrong process.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* docs(ha): fix RPC endpoints, init ordering, and snap_count CLI flag
Replace incorrect CometBFT RPC calls (port 26657/status) with the
actual ev-node HTTP API (port 7331 /health/ready, /raft/node) and
EVM execution layer (cast block latest) throughout both guides.
Align single-to-ha Step 2 init ordering with cluster-setup: create
passphrase file before evm init so the signer key is encrypted from
the start, and pass --evnode.node.aggregator and passphrase_file flags.
Fix Step 9a fallback kill in single-to-ha to use mapfile cardinality
check, matching the pattern already applied in cluster-setup.
Add --evnode.raft.snap_count=3 to the CLI start example to match
the YAML config block.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* perf(store): save metadata async (#3298)
* perf(store): save metadata async
* cl
* Optimize metadata writes with batching
* feedback
* De-duplicate batched writes by key in cached store
* fix
* updates
* chore(deps): security (#3296)
* fix security deps
* fix helpers
* feat: add grpc socket and flattn tx batches to allow for lower allocations (#3297)
* add grpc socket and flattn tx batches to allow for lower allocations
* redo proto
* docs: update changelog for grpc execution transport
* remove extra txs
* refactor(execution/grpc): move execution service where it belongs (#3302)
* refactor(execution/grpc): move execution service where it belongs
* reduce diff
* fix lint
* feat(execution/grpc): adding support for grpc otlp (#3300)
* feat: adding support for grpc oltp
* chore: fix linting
* cl
---------
Co-authored-by: Julien Robert <julien@rbrt.fr>
* chore: fix some minor issues in comments (#3304)
* build(deps): Bump dorny/paths-filter from 3 to 4 (#3308)
Bumps [dorny/paths-filter](https://github.com/dorny/paths-filter) from 3 to 4.
- [Release notes](https://github.com/dorny/paths-filter/releases)
- [Changelog](https://github.com/dorny/paths-filter/blob/master/CHANGELOG.md)
- [Commits](dorny/paths-filter@v3...v4)
---
updated-dependencies:
- dependency-name: dorny/paths-filter
dependency-version: '4'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* feat(pkg/sequencers): add queue limit in solo sequencer (#3312)
* feat(pkg/sequencers): add queue limit in solo sequencer
* use option
* cl
* move test files
* fix: address key rotation CI failures
* fix: repair markdown link checks
* test: stabilize sync loop persistence test
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Julien Robert <julien@rbrt.fr>
Co-authored-by: auricom <27022259+auricom@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Marko <marko@baricevic.me>
Co-authored-by: Cian Hatton <github.qpeyb@simplelogin.fr>
Co-authored-by: criciss <cricis@msn.com>
* fix merge
* fix: classify invalid external blocks safely
* chore: update EVM module tidy output
* ci: retry Docker image pulls in E2E tests
* fix: preserve DA data until block acceptance
* fix: selectively evict header or data from cache on block validation failure
Classify block validation errors as FaultHeader or FaultData so the syncer
can drop only the offending side of the (header, data) pair from the DA
cache. Previously a single mismatch removed both, discarding a potentially
legitimate counterpart.
* feat: handle execution proposer rotation
* test: require proposer-control image for rotation e2e
* feat: support promotable proposer rotation
* ci: remove Docker image pre-pull retries
* chore: remove unused markdown link config
* refactor: make execute result structural
* refactor: remove proposer from execution info
* fix: resolve CI lint and benchmark failures
* fix: reject unexpected DA proposers early
* refactor: simplify sync validation faults
* refactor: remove unused header verifier
* docs: remove stale execution info proposer field
* fix: replace pending DA header with expected proposer
* ci: configure markdown link checker
* fix: address key rotation review comments
* fix: stabilize kv HTTP shutdown test
* docs: use relative markdown links
* fix: update CI tidy and markdown checks
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Marko Baricevic <markobaricevic@MarkosMacStudio.localdomain>
Co-authored-by: Randy Grok <randygrok@gmail.com>
Co-authored-by: Randy Grok <98407738+randygrok@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Julien Robert <julien@rbrt.fr>
Co-authored-by: auricom <27022259+auricom@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Cian Hatton <github.qpeyb@simplelogin.fr>
Co-authored-by: criciss <cricis@msn.com>1 parent 79b5b4f commit ec9f9bf
101 files changed
Lines changed: 2858 additions & 433 deletions
File tree
- .github/workflows
- apps
- evm
- grpc
- testapp
- kv
- block/internal
- common
- executing
- reaping
- submitting
- syncing
- client/crates/types/src/proto
- core
- execution
- docs
- adr
- concepts
- getting-started/custom
- guides
- advanced
- deploy
- ha
- operations
- reference
- configuration
- interfaces
- execution
- evm
- test
- grpc
- proto/evnode/v1
- types/pb/evnode/v1
- node
- pkg
- cmd
- config
- rpc/server
- telemetry
- proto/evnode/v1
- test
- e2e
- mocks
- types
- pb/evnode/v1
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
61 | | - | |
| 61 | + | |
62 | 62 | | |
63 | 63 | | |
64 | 64 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| 7 | + | |
7 | 8 | | |
8 | 9 | | |
9 | 10 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
228 | 228 | | |
229 | 229 | | |
230 | 230 | | |
231 | | - | |
232 | | - | |
233 | 231 | | |
234 | 232 | | |
235 | 233 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| 7 | + | |
7 | 8 | | |
8 | 9 | | |
9 | 10 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
188 | 188 | | |
189 | 189 | | |
190 | 190 | | |
191 | | - | |
192 | | - | |
193 | 191 | | |
194 | 192 | | |
195 | 193 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
| 24 | + | |
24 | 25 | | |
25 | 26 | | |
26 | 27 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
5 | | - | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
6 | 9 | | |
7 | 10 | | |
8 | 11 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
188 | 188 | | |
189 | 189 | | |
190 | 190 | | |
191 | | - | |
192 | | - | |
193 | 191 | | |
194 | 192 | | |
195 | 193 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
5 | | - | |
6 | 5 | | |
7 | 6 | | |
8 | 7 | | |
| |||
241 | 240 | | |
242 | 241 | | |
243 | 242 | | |
244 | | - | |
245 | | - | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
246 | 251 | | |
247 | 252 | | |
248 | 253 | | |
| |||
260 | 265 | | |
261 | 266 | | |
262 | 267 | | |
| 268 | + | |
263 | 269 | | |
264 | | - | |
265 | | - | |
266 | | - | |
267 | | - | |
268 | | - | |
269 | | - | |
270 | | - | |
271 | | - | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
272 | 276 | | |
273 | | - | |
274 | | - | |
275 | | - | |
276 | | - | |
277 | | - | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
278 | 295 | | |
279 | 296 | | |
280 | 297 | | |
| |||
0 commit comments