Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
cb93456
eth-rpc: replace --database-url with --database-type and --base-path
marian-radu Feb 18, 2026
8a94367
eth-rpc: replace --index-last-n-blocks with --sync for backward block…
marian-radu Feb 18, 2026
cac631d
eth-rpc: replace --cache-size with --prune for bounded in-memory bloc…
marian-radu Feb 19, 2026
8391d34
eth-rpc: add resumable historical block sync with atomic state tracking
marian-radu Feb 19, 2026
1fcf88f
eth-rpc: harden CLI validation and improve sync internals
marian-radu Feb 19, 2026
8c44718
eth-rpc: move historic sync logic into dedicated block_sync module
marian-radu Feb 20, 2026
52643fb
eth-rpc: simplify sync labels and move SyncLabel to block_sync module
marian-radu Feb 20, 2026
8c0fad0
eth-rpc: refactor sync_backward and persist auto-discovered EVM boundary
marian-radu Feb 20, 2026
a018fc2
eth-rpc: fix SQL queries, harden validation, and add tests
marian-radu Feb 20, 2026
bd38bdb
eth-rpc: use saturating arithmetic, improve URL encoding, and add acc…
marian-radu Feb 20, 2026
79b97be
eth-rpc: use SqliteConnectOptions instead of raw URL strings
marian-radu Feb 20, 2026
ad30a66
eth-rpc: use native SQLite ? placeholders in raw queries
marian-radu Feb 20, 2026
f51dcc4
eth-rpc: improve block sync naming and error handling
marian-radu Feb 20, 2026
4aa6ae6
eth-rpc: harden verify_boundary and add block_sync initial unit tests
marian-radu Feb 20, 2026
7cb0e16
th-rpc: fix unbounded block_number_to_hashes growth in persistent DB …
marian-radu Feb 23, 2026
87544cb
eth-rpc: advance UpperBound after top gap sync to prevent redundant r…
marian-radu Feb 23, 2026
ef9eec7
eth-rpc: improve sync doc comments and add in-memory block cap test
marian-radu Feb 23, 2026
6cd5841
eth-rpc: share DEFAULT_BLOCK_CACHE_SIZE constant and clarify persiste…
marian-radu Feb 23, 2026
dacbf0a
eth-rpc: persist evm_first_block in sync_state table
marian-radu Feb 23, 2026
3aa8202
eth-rpc: rename sync_state methods to sync_label and accept SyncCheck…
marian-radu Feb 23, 2026
4bf16b2
eth-rpc: remove unused imports and fix comments
marian-radu Feb 23, 2026
3917619
eth-rpc: polish comments, simplify validation, and remove low-value t…
marian-radu Feb 23, 2026
52ad381
eth-rpc: use compile-time checked query! macros for sync_state queries
marian-radu Feb 24, 2026
e121f51
eth-rpc: use SyncLabel::Display in log messages and fix comments
marian-radu Feb 24, 2026
4462f81
eth-rpc: refactor evm_first_block validation and rename sync_lower_bound
marian-radu Feb 24, 2026
820e091
Merge branch 'master' into 271-eth-rpc-block-syncing-and-database-pat…
marian-radu Feb 24, 2026
e784adc
eth-rpc: add block-sync integration tests
marian-radu Feb 25, 2026
2ea6de2
eth-rpc: add SyncCheckpoint constructors
marian-radu Feb 25, 2026
89a6af9
eth-rpc: rename earliest_block to effective_earliest_block
marian-radu Feb 25, 2026
2716ce7
eth-rpc: clean up tests and rename earliest_block methods
marian-radu Feb 25, 2026
7d6b338
eth-rpc: simplify CLI by removing DatabaseType and leveraging clap va…
marian-radu Feb 25, 2026
2026a7b
Merge branch 'master' into 271-eth-rpc-block-syncing-and-database-pat…
marian-radu Feb 25, 2026
7c5393e
eth-rpc: fix clippy errors
marian-radu Feb 25, 2026
3019b70
eth-rpc: remove block_number_to_hashes memory cap
marian-radu Feb 26, 2026
0d942b7
eth-rpc: simplify CLI and adjust sync log levels
marian-radu Feb 26, 2026
e007dd7
eth-rpc: fmt
marian-radu Feb 26, 2026
39c131d
Update from github-actions[bot] running command 'prdoc --audience run…
github-actions[bot] Feb 26, 2026
563acd0
eth-rpc: fix re-sync after completed sync and refactor prepare_sync
marian-radu Feb 27, 2026
c8cd453
eth-rpc: guard evm_block against pre-EVM blocks and add sync debug log
marian-radu Feb 27, 2026
37ae403
eth-rpc: derive Display for SyncLabel and remove manual impls
marian-radu Feb 27, 2026
1a58b74
Merge branch 'master' into 271-eth-rpc-block-syncing-and-database-pat…
marian-radu Feb 27, 2026
947b728
eth-rpc: remove --earliest-receipt-block
marian-radu Mar 3, 2026
d6e7c37
Merge branch 'master' into 271-eth-rpc-block-syncing-and-database-pat…
marian-radu Mar 3, 2026
920bb62
eth-rpc: add oldest_synced_block to track receipt data availability
marian-radu Mar 3, 2026
2d93ac5
eth-rpc: split SyncLabel into SyncLabel + ChainMetadata
marian-radu Mar 3, 2026
18489b9
eth-rpc: make oldest_synced_block sentinel permissive
marian-radu Mar 3, 2026
30fba1d
eth-rpc: deduplicate sync_label upsert queries with macro
marian-radu Mar 3, 2026
483b205
eth-rpc: remove oldest_synced_block (defer to separate PR)
marian-radu Mar 4, 2026
afdf7d4
eth-rpc: rename evm_first_block to first_evm_block
marian-radu Mar 4, 2026
a593a86
eth-rpc: simplify verify_boundary signature and parallelize checks
marian-radu Mar 4, 2026
21c5490
eth-rpc: fix sync backward checkpoint-on-error and polish prdoc forma…
marian-radu Mar 4, 2026
062dec5
eth-rpc: clean up naming and deduplicate block-sync tests
marian-radu Mar 4, 2026
5f3b0f5
eth-rpc: unify --prune and --sync into --eth-pruning
marian-radu Mar 5, 2026
207755a
Merge remote-tracking branch 'origin/master' into 271-eth-rpc-block-s…
marian-radu Mar 5, 2026
bc9239c
eth-rpc: skip finalized tracking when not in archive mode
marian-radu Mar 6, 2026
f0c7aca
eth-rpc: default --eth-pruning to archive
marian-radu Mar 6, 2026
b30d7e0
eth-rpc: reject removed CLI flags with migration message
marian-radu Mar 6, 2026
50c9c3c
Merge branch 'master' into 271-eth-rpc-block-syncing-and-database-pat…
marian-radu Mar 6, 2026
492e6cf
eth-rpc: update prdoc
marian-radu Mar 6, 2026
82e2c8c
eth-rpc: rename sync labels to BackfillLowerBound/BackfillUpperBound
marian-radu Mar 11, 2026
ff14f85
eth-rpc: replace three sync labels with Head/Tail model
marian-radu Mar 12, 2026
9be32a3
Merge branch 'master' into 271-eth-rpc-block-syncing-and-database-pat…
marian-radu Mar 12, 2026
4919d63
eth-rpc: clean up sync comments, naming, and dead code
marian-radu Mar 12, 2026
e286831
eth-rpc: add missing sqlx cache for delete_sync_label query
marian-radu Mar 12, 2026
43ef024
eth-rpc: simplify sync hooks, rename to sync_backward, use RPC port c…
marian-radu Mar 13, 2026
2c82276
eth-rpc: enable WAL mode and parallelize gap sync on resume
marian-radu Mar 13, 2026
cce40c4
Merge branch 'master' into 271-eth-rpc-block-syncing-and-database-pat…
marian-radu Mar 17, 2026
380d61c
Update revive-differential-tests action to latest revision
marian-radu Mar 18, 2026
d274dab
Bump revive-differential-tests to 2551cd1
marian-radu Mar 19, 2026
ccce12d
Update expected test failures for revive differential tests
marian-radu Mar 19, 2026
bc7a6a2
Merge branch 'master' into 271-eth-rpc-block-syncing-and-database-pat…
marian-radu Mar 19, 2026
6d610e3
Merge branch 'master' into 271-eth-rpc-block-syncing-and-database-pat…
marian-radu Mar 19, 2026
e97bc10
Bump revive-differential-tests to b9cff32
marian-radu Mar 19, 2026
ef5f69d
Update expected test failures for revive differential tests
marian-radu Mar 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
663 changes: 650 additions & 13 deletions .github/assets/revive-dev-node-polkavm-resolc.json

Large diffs are not rendered by default.

12 changes: 11 additions & 1 deletion .github/assets/revive-dev-node-revm-solc.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
{
"fixtures/solidity/complex/create/create2_many/test.json::1::E M3": "Failed"
"fixtures/solidity/complex/create/create2_many/test.json::1::E M3 S+": "Failed",
"fixtures/solidity/complex/create/create2_many/test.json::1::Y M3 S+": "Failed",
"fixtures/solidity/complex/create/create_many/test.json::1::E M3 S+": "Failed",
"fixtures/solidity/complex/create/create_many/test.json::1::Y M3 S+": "Failed",
"fixtures/solidity/translated_semantic_tests/array/array_storage_index_boundary_test/test.json::0::E M0 S-": "Failed",
"fixtures/solidity/translated_semantic_tests/array/array_storage_push_empty/test.json::0::E M0 S-": "Failed",
"fixtures/solidity/translated_semantic_tests/array/copying/bytes_storage_to_storage/test.json::0::E M0 S-": "Failed",
"fixtures/solidity/translated_semantic_tests/array/copying/nested_array_element_storage_to_memory/test.json::0::E M0 S-": "Failed",
"fixtures/solidity/translated_semantic_tests/array/copying/nested_array_element_storage_to_storage/test.json::0::E M0 S-": "Failed",
"fixtures/solidity/translated_semantic_tests/events/event_indexed_string/test.json::0::E M0 S-": "Failed",
"fixtures/solidity/translated_semantic_tests/storageLayoutSpecifier/mapping_storage_end/test.json::0::E M0 S-": "Failed"
}
4 changes: 2 additions & 2 deletions .github/workflows/tests-evm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,11 @@ jobs:
id: download
uses: ./.github/actions/get-resolc
- name: Run revive differential tests
uses: paritytech/revive-differential-tests/.github/actions/run-differential-tests@004a36f4e88228ee1331cb598c8873ab7315e3f0
uses: paritytech/revive-differential-tests/.github/actions/run-differential-tests@b9cff329db2c981f706297150c6cb1f4a5d490c3
with:
platform: ${{ matrix.platform }}
cargo-command: "forklift cargo"
revive-differential-tests-ref: "004a36f4e88228ee1331cb598c8873ab7315e3f0"
revive-differential-tests-ref: "b9cff329db2c981f706297150c6cb1f4a5d490c3"
resolc-path: ${{ steps.download.outputs.resolc-path }}
expectations-file-path: ./.github/assets/${{ matrix.platform }}.json

Expand Down
2 changes: 2 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions prdoc/pr_11153.prdoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
title: '[eth-rpc]: add resumable block sync and improve CLI arguments'
doc:
- audience: Runtime Dev
description: |
### Resumable block sync
- New block_sync module syncs backward from the latest finalized block to the first EVM block, with restart-safe checkpoint tracking via a sync_state SQLite table.
- On restart, fills only the top gap (new blocks) and bottom gap (remaining backfill) without re-syncing completed ranges.
- Auto-discovers and persists `first_evm_block` — the lowest block with EVM support on the chain.
- Chain identity verification: validates stored genesis hash on startup to detect database reuse across different chains; verifies sync boundary hashes to detect pruned blocks on the connected node.

### CLI rework
New `--eth-pruning` flag replaces `--database-url`, `--cache-size`, `--index-last-n-blocks`, and `--earliest-receipt-block`:
- `--eth-pruning archive` (default): persistent on-disk DB with backward historical sync.
- `--eth-pruning <N>`: in-memory DB keeping the latest N blocks.
crates:
- name: pallet-revive-eth-rpc
bump: major

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions substrate/frame/revive/rpc/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ path = "src/main.rs"
anyhow = { workspace = true }
clap = { workspace = true, features = ["derive", "env"] }
codec = { workspace = true, features = ["derive"] }
derive_more = { workspace = true }
futures = { workspace = true, features = ["thread-pool"] }
hex = { workspace = true }
jsonrpsee = { workspace = true, features = ["full"] }
Expand Down Expand Up @@ -55,6 +56,7 @@ pallet-revive-fixtures = { workspace = true, default-features = true }
pretty_assertions = { workspace = true }
revive-dev-node = { workspace = true }
sp-io = { workspace = true, default-features = true }
tempfile = { workspace = true }

[build-dependencies]
git2 = { workspace = true }
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
CREATE TABLE IF NOT EXISTS sync_state (
label TEXT NOT NULL PRIMARY KEY,
block_number INTEGER NOT NULL,
block_hash BLOB
);
Loading
Loading