Skip to content

Commit 567092f

Browse files
committed
Merge branch 'main' into alex/adr023_ha-failover_raft8
* main: (34 commits) feat: make reaper poll duration configurable (#2951) chore!: move sequencers to pkg (#2931) feat: Ensure Header integrity on DA (#2948) feat(testda): add header support with GetHeaderByHeight method (#2946) chore: improve code comments clarity (#2947) chore(sequencers): optimize store check (#2945) fix: make evm_execution more robust (#2942) fix(sequencers/single): deterministic queue (#2938) fix(block): fix init logic sequencer for da epoch fetching (#2926) feat: use DA timestamp (#2939) chore: improve code comments clarity (#2943) build(deps): bump libp2p (#2937) build(deps): Bump actions/cache from 4 to 5 (#2934) build(deps): Bump actions/download-artifact from 6 to 7 (#2933) build(deps): Bump actions/upload-artifact from 5 to 6 (#2932) feat: DA Client remove interface part 3, replace types with new code (#2910) DA Client remove interface: Part 2.5, create e2e test to validate that a blob is posted in DA layer. (#2920) fix(syncing): skip forced txs checks for p2p blocks (#2922) build(deps): Bump the all-go group across 5 directories with 5 updates (#2919) chore: loosen syncer state check (#2927) ...
2 parents 3e1cbca + 360499b commit 567092f

File tree

208 files changed

+16967
-9354
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

208 files changed

+16967
-9354
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ jobs:
6262
permissions:
6363
actions: read
6464
contents: read
65+
packages: read
6566
uses: ./.github/workflows/test.yml
6667
secrets: inherit
6768

.github/workflows/lint.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
**/**.go
2727
go.mod
2828
go.sum
29-
- uses: golangci/golangci-lint-action@v9.1.0
29+
- uses: golangci/golangci-lint-action@v9.2.0
3030
with:
3131
version: latest
3232
args: --timeout 10m

.github/workflows/rust-lint.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ jobs:
5050
repo-token: ${{ secrets.GITHUB_TOKEN }}
5151

5252
- name: Cache Rust dependencies
53-
uses: actions/cache@v4
53+
uses: actions/cache@v5
5454
with:
5555
path: |
5656
~/.cargo/bin/
@@ -94,7 +94,7 @@ jobs:
9494
repo-token: ${{ secrets.GITHUB_TOKEN }}
9595

9696
- name: Cache Rust dependencies
97-
uses: actions/cache@v4
97+
uses: actions/cache@v5
9898
with:
9999
path: |
100100
~/.cargo/bin/

.github/workflows/test.yml

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ jobs:
3535
unit_test:
3636
name: Run Unit Tests
3737
runs-on: ubuntu-latest
38+
permissions:
39+
contents: read
40+
packages: read
3841
steps:
3942
- uses: actions/checkout@v6
4043
- name: set up go
@@ -44,7 +47,7 @@ jobs:
4447
- name: Run unit test
4548
run: make test-cover
4649
- name: Upload unit test coverage report
47-
uses: actions/upload-artifact@v5
50+
uses: actions/upload-artifact@v6
4851
with:
4952
name: unit-test-coverage-report-${{ github.sha }}
5053
path: ./coverage.txt
@@ -61,7 +64,7 @@ jobs:
6164
- name: Run integration test
6265
run: make test-integration-cover
6366
- name: Upload integration test coverage report
64-
uses: actions/upload-artifact@v5
67+
uses: actions/upload-artifact@v6
6568
with:
6669
name: integration-test-coverage-report-${{ github.sha }}
6770
path: ./node/coverage.txt
@@ -70,12 +73,26 @@ jobs:
7073
name: Run E2E System Tests
7174
needs: build_all-apps
7275
runs-on: ubuntu-latest
76+
permissions:
77+
contents: read
78+
packages: read
7379
steps:
7480
- uses: actions/checkout@v6
7581
- name: set up go
7682
uses: actions/setup-go@v6
7783
with:
7884
go-version-file: ./go.mod
85+
- name: Set up Docker Buildx
86+
uses: docker/setup-buildx-action@v3
87+
- name: Build evstack:local-dev (cached)
88+
uses: docker/build-push-action@v6
89+
with:
90+
context: .
91+
file: apps/testapp/Dockerfile
92+
load: true
93+
tags: evstack:local-dev
94+
cache-from: type=gha
95+
cache-to: type=gha,mode=max
7996
- name: E2E Tests
8097
run: make test-e2e
8198

@@ -101,12 +118,12 @@ jobs:
101118
steps:
102119
- uses: actions/checkout@v6
103120
- name: Download unit test coverage report
104-
uses: actions/download-artifact@v6
121+
uses: actions/download-artifact@v7
105122
with:
106123
name: unit-test-coverage-report-${{ github.sha }}
107124
path: ./unit-coverage
108125
- name: Download integration test coverage report
109-
uses: actions/download-artifact@v6
126+
uses: actions/download-artifact@v7
110127
with:
111128
name: integration-test-coverage-report-${{ github.sha }}
112129
path: ./integration-coverage

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
coverage.txt
2+
*.out
23
proto/pb
34
proto/tendermint
45
types/pb/tendermint
@@ -30,3 +31,4 @@ docs/.vitepress/cache
3031
.claude
3132
.gocache
3233
.gomodcache
34+
/.cache

.mockery.yaml

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,6 @@ template: testify
22
template-data:
33
unroll-variadic: true
44
packages:
5-
github.com/evstack/ev-node/core/da:
6-
interfaces:
7-
DA:
8-
config:
9-
pkgname: mocks
10-
filename: da.go
11-
configs:
12-
- dir: ./da/internal/mocks
13-
- dir: ./test/mocks
145
github.com/evstack/ev-node/core/execution:
156
interfaces:
167
Executor:
@@ -72,3 +63,27 @@ packages:
7263
dir: ./block/internal/common
7364
pkgname: common
7465
filename: broadcaster_mock.go
66+
github.com/evstack/ev-node/block/internal/da:
67+
interfaces:
68+
Client:
69+
config:
70+
dir: ./test/mocks
71+
pkgname: mocks
72+
filename: da.go
73+
Verifier:
74+
config:
75+
dir: ./test/mocks
76+
pkgname: mocks
77+
filename: da.go
78+
github.com/evstack/ev-node/pkg/da/jsonrpc:
79+
interfaces:
80+
BlobModule:
81+
config:
82+
dir: ./pkg/da/jsonrpc/mocks
83+
pkgname: mocks
84+
filename: blob_module_mock.go
85+
HeaderModule:
86+
config:
87+
dir: ./pkg/da/jsonrpc/mocks
88+
pkgname: mocks
89+
filename: header_module_mock.go

CHANGELOG.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,32 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
## [Unreleased]
1111

12+
### Added
13+
14+
- Implement forced inclusion and based sequencing ([#2797](https://github.com/evstack/ev-node/pull/2797))
15+
This changes requires to add a `da_epoch_forced_inclusion` field in `genesis.json` file.
16+
To enable this feature, set the force inclusion namespace in the `evnode.yaml`.
17+
- Added `post-tx` command and force inclusion server to submit transaction directly to the DA layer. ([#2888](https://github.com/evstack/ev-node/pull/2888))
18+
Additionally, modified the core package to support marking transactions as forced included transactions.
19+
The execution client ought to perform basic validation on those transactions as they have skipped the execution client's mempool.
20+
1221
### Changed
1322

1423
- Rename `evm-single` to `evm` and `grpc-single` to `evgrpc` for clarity. [#2839](https://github.com/evstack/ev-node/pull/2839)
1524
- Split cache interface in `CacheManager` and `PendingManager` and create `da` client to easy DA handling. [#2878](https://github.com/evstack/ev-node/pull/2878)
1625
- Improve startup da retrieval height when cache cleared or empty. [#2880](https://github.com/evstack/ev-node/pull/2880)
1726

27+
### Removed
28+
29+
- **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](https://github.com/evstack/ev-node/pull/2904)
30+
- **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](https://github.com/evstack/ev-node/pull/2910)
31+
32+
## v1.0.0-beta.11
33+
34+
### Improvements
35+
36+
- Loosen syncer validation for allowing swapping sequencer and full node state [#2925](https://github.com/evstack/ev-node/pull/2925)
37+
1838
## v1.0.0-beta.10
1939

2040
### Added
@@ -36,6 +56,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
3656

3757
- **BREAKING:** Removed `evnode.v1.HealthService` gRPC endpoint. Use HTTP endpoints: `GET /health/live` and `GET /health/ready`. ([#2800](https://github.com/evstack/ev-node/pull/2800))
3858
- **BREAKING:** Removed `TrustedHash` configuration option and `--evnode.node.trusted_hash` flag. Sync service now automatically determines starting height from local store state ([#2838](https://github.com/evstack/ev-node/pull/2838))
59+
- **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](https://github.com/evstack/ev-node/pull/2904)
3960

4061
### Fixed
4162

CLAUDE.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,15 @@ The project uses a zero-dependency core package pattern:
4444

4545
- **core/** - Contains only interfaces and types, no external dependencies
4646
- **block/** - Block management, creation, validation, and synchronization
47-
- **p2p/** - Networking layer built on libp2p
48-
- **sequencing/** - Modular sequencer implementations
49-
- **testapp/** - Reference implementation for testing
47+
- **pkg/p2p/** - Networking layer built on libp2p
48+
- **pkg/sequencers/** - Modular sequencer implementations
49+
- **apps/testapp/** - Reference implementation for testing
5050

5151
### Key Interfaces
5252

53-
- **Executor** (core/executor.go) - Handles state transitions
54-
- **Sequencer** (core/sequencer.go) - Orders transactions
55-
- **DA** (core/da.go) - Data availability layer abstraction
53+
- **Executor** (`core/executor.go`) - Handles state transitions
54+
- **Sequencer** (`core/sequencer.go`) - Orders transactions
55+
- **DA** (`pkg/da/types`) - Data availability layer abstraction
5656

5757
### Modular Design
5858

@@ -120,7 +120,7 @@ go test -race ./package/...
120120

121121
### Adding a New DA Layer
122122

123-
1. Implement the `DA` interface from `core/da.go`
123+
1. Implement the `DA` interface from `pkg/da/types`
124124
2. Add configuration in the appropriate config package
125125
3. Wire it up in the initialization code
126126
4. Add tests following existing patterns

0 commit comments

Comments
 (0)