Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
470 commits
Select commit Hold shift + click to select a range
9bc898d
revive/tests: rename test
lrubasze Sep 18, 2025
c396af2
revive: Cargo.lock update
lrubasze Sep 18, 2025
7a002c2
revive: Fix alloy consensus features to compile tests
lexnv Sep 18, 2025
9b14b44
revive: Remove alloy-rlp crate import
lexnv Sep 18, 2025
c08e505
revive/cargo: Add alloy trie as dependency
lexnv Sep 18, 2025
365b53f
revive: Use alloy-trie crate
lexnv Sep 18, 2025
b430c6b
Merge branch 'lexnv/minimal-poc-block-storage' into lrubasze/eth-trie…
lrubasze Sep 18, 2025
e1317d3
revive/tests: Simplify test assets
lexnv Sep 18, 2025
607740c
runtime/tests: Bump the test limit of call size to 512 bytes
lexnv Sep 18, 2025
e5b05f7
Pallet revive benchmarks (#9496)
lrubasze Sep 22, 2025
f14faee
revive: Move eth block storage to dedicated module
lexnv Sep 18, 2025
14342f7
Merge branch 'lexnv/minimal-poc-block-storage' into lrubasze/eth-trie…
lrubasze Sep 22, 2025
5312398
revive/hash: Save the block hash in the returned block
lexnv Sep 22, 2025
9adc0f0
revive: Simplify the build API
lexnv Sep 22, 2025
a881f4b
Merge remote-tracking branch 'origin/master' into lexnv/minimal-poc-b…
lexnv Sep 22, 2025
3b5e642
revive/benchmarks: use block_storage module
lrubasze Sep 22, 2025
6b070cd
Update from github-actions[bot] running command 'bench --runtime dev …
github-actions[bot] Sep 22, 2025
83058e2
Update from github-actions[bot] running command 'prdoc --audience nod…
github-actions[bot] Sep 22, 2025
cb9cbe9
Merge branch 'master' into lexnv/minimal-poc-block-storage
lexnv Sep 22, 2025
fd04988
revive: Remove signed type from rlp codec
lexnv Sep 22, 2025
153bd7d
revive: better docs
lexnv Sep 22, 2025
71daa4d
revive: Change to Identity for storage map
lexnv Sep 22, 2025
ea066ca
revive: Remove stale comment
lexnv Sep 22, 2025
957418a
revive/api: Make block author nonoptional
lexnv Sep 22, 2025
410913c
revive/tests: update tests after weights changes
lrubasze Sep 22, 2025
5b2beaf
Merge branch 'master' into lexnv/minimal-poc-block-storage
lexnv Sep 22, 2025
f91fa8c
revive: Change transactionSigned back into bytes
lexnv Sep 23, 2025
0e5f274
frame: Ensure EVMOrigin for eth_call and eth_instantiate
lexnv Sep 23, 2025
3231893
revive: Add docs about transaction_encoded
lexnv Sep 23, 2025
5e501d3
revive: Implement event limits on Stack object
lexnv Sep 23, 2025
8e0a7bf
revive/benchmarks: separate on_finalize benchmarks
lrubasze Sep 23, 2025
3959e16
revive: Move limit checking into deposit_event directly
lexnv Sep 23, 2025
40cd147
Merge remote-tracking branch 'origin/lexnv/minimal-poc-block-storage'…
lexnv Sep 23, 2025
e81271b
revive: Apply cargo fmt
lexnv Sep 23, 2025
e52b146
Merge branch 'master' into lexnv/minimal-poc-block-storage
lexnv Sep 23, 2025
2466181
revive: Use saturating add where possible
lexnv Sep 23, 2025
1428e9b
Merge remote-tracking branch 'origin/lexnv/minimal-poc-block-storage'…
lexnv Sep 23, 2025
7faa0d1
revive: Import TransactionSigned from evm
lexnv Sep 23, 2025
56ba0d1
Add EnsureEVM origin to pallets
lexnv Sep 23, 2025
2ea7b21
Add EnsureEVM origin to subtrate-node runtime
lrubasze Sep 23, 2025
6efcbf9
update expected compile error after serde update
lrubasze Sep 23, 2025
bee04d0
revive: update README
lrubasze Sep 24, 2025
6da298a
revive/benchmarking: revert weights to let benchmark bot commit prope…
lrubasze Sep 24, 2025
72d75f5
Revert "Add EnsureEVM origin to pallets"
lexnv Sep 24, 2025
addc6a4
Revert "frame: Ensure EVMOrigin for eth_call and eth_instantiate"
lexnv Sep 24, 2025
630f468
Merge remote-tracking branch 'origin/lexnv/minimal-poc-block-storage'…
lexnv Sep 24, 2025
5596841
Revert "Add EnsureEVM origin to subtrate-node runtime"
lrubasze Sep 24, 2025
9782821
Revert "Add EnsureEVM origin to subtrate-node runtime"
lexnv Sep 24, 2025
41c7e69
Merge remote-tracking branch 'origin/lexnv/minimal-poc-block-storage'…
lexnv Sep 24, 2025
f49c713
Update cargo.lock with minimal changes
lexnv Sep 24, 2025
eeb34a0
Revert "update expected compile error after serde update"
lrubasze Sep 24, 2025
102a578
Update from github-actions[bot] running command 'bench --runtime dev …
github-actions[bot] Sep 24, 2025
c9d7ae4
revive: Efficiently store first tx/receipt into a dedicated object
lexnv Sep 24, 2025
9358571
revive/tests: Adjust testing to the new API
lexnv Sep 24, 2025
69b04b9
revive/rpc: regenerate revive_chain.metadata
lrubasze Sep 24, 2025
95e1f15
revive/rpc: revert changes within lib.rs and receipt_extractor.rs
lrubasze Sep 24, 2025
a139a35
revive/rpc: update block_author
lrubasze Sep 24, 2025
1faebb2
revive/tests: update tests after weights changes
lrubasze Sep 24, 2025
f5127eb
Merge branch 'master' into lexnv/minimal-poc-block-storage
lrubasze Sep 25, 2025
f894abc
Update from github-actions[bot] running command 'bench --runtime dev …
github-actions[bot] Sep 25, 2025
a44a155
revive: Ensure the IR forms fallback to index 1
lexnv Sep 25, 2025
dd91bef
revive/tests: Move away from hardcoded gas and use expected values
lexnv Sep 25, 2025
dcb138c
Merge remote-tracking branch 'origin/lexnv/minimal-poc-block-storage'…
lexnv Sep 25, 2025
5bd73cd
revive: Add more documentation
lexnv Sep 25, 2025
6cdf623
revive: Optimize one storage access for build phase
lexnv Sep 25, 2025
56bda94
revive: Hide away the storage loads
lexnv Sep 25, 2025
10db306
revive/tests: Adjust testing to new API
lexnv Sep 25, 2025
5f905b3
revive: Move receipt and logs bloom to dedicated module
lexnv Sep 25, 2025
4ef2982
revive: Move incremental builder to dedicated module
lexnv Sep 25, 2025
1895820
revive: Move block builder to a dedicated module
lexnv Sep 25, 2025
5921361
revive: Move functionality away from lib.rs into block_storage
lexnv Sep 25, 2025
3fc1b6c
revive: Adjust docs
lexnv Sep 25, 2025
35cb484
Merge remote-tracking branch 'origin/master' into lexnv/minimal-poc-b…
lexnv Sep 25, 2025
ec41a8e
revive: Adjust benchmarks to new import paths
lexnv Sep 26, 2025
4c282b5
revive: Introduce a builder phase for explicit usage
lexnv Sep 26, 2025
f8afc46
revive: Make write/read API explicit
lexnv Sep 26, 2025
6be3f21
revive/tests: Adjust testing to new API
lexnv Sep 26, 2025
3096a15
revive: Add debug / error logs
lexnv Sep 26, 2025
d50b802
revive/tests: Add conformance tests for accrue log bloom
lexnv Sep 26, 2025
dcfd21c
revive/tests: Add conformance tests for accrue other blooms
lexnv Sep 26, 2025
dde6596
revive/tests: Add conformance tests for accumulate receipt
lexnv Sep 26, 2025
92066f3
Merge remote-tracking branch 'origin/master' into lexnv/minimal-poc-b…
lexnv Sep 26, 2025
b9dfe44
revive: Adjust docs
lexnv Sep 26, 2025
2209850
Merge branch 'lexnv/minimal-poc-block-storage' into lexnv/revive-rpc-…
lrubasze Sep 29, 2025
ef02568
revive: add optional stats to the IncrementalHashBuilder
lrubasze Sep 29, 2025
f30f5c2
revive: add IncrementalHashBuilder tests
lrubasze Sep 29, 2025
c0558ec
revive: add IncrementalHashBuilderIR size tests
lrubasze Sep 29, 2025
3724648
revive: IncrementalHashBuilder tests - cleanup
lrubasze Sep 29, 2025
e83036d
revive: take 'EthereumBlockBuilderIR' into account in integrity_test
lrubasze Sep 30, 2025
53d0543
Merge branch 'master' into lexnv/minimal-poc-block-storage
lrubasze Sep 30, 2025
8768be0
Merge branch 'master' into lexnv/minimal-poc-block-storage
lrubasze Sep 30, 2025
d86e643
fmt Cargo.toml
lrubasze Sep 30, 2025
62e6803
Merge branch 'lexnv/minimal-poc-block-storage' into lexnv/revive-rpc-…
lrubasze Sep 30, 2025
1a5151e
cargo: Update cargo lock with minimal changes
lexnv Sep 30, 2025
2716b30
revive: Downgrade log to debug
lexnv Sep 30, 2025
f65b19e
Merge branch 'lexnv/minimal-poc-block-storage' into lexnv/revive-rpc-…
lrubasze Oct 1, 2025
3526540
revive/rpc: fix price setting
lrubasze Oct 1, 2025
5f6497f
revive: adjust MAX_TRANSACTION_PAYLOAD_SIZE
lrubasze Oct 3, 2025
c1f9a10
Merge branch 'lexnv/minimal-poc-block-storage' into lexnv/revive-rpc-…
lrubasze Oct 3, 2025
b714852
revive/rpc: add ethereum-substrate block hash mapping infrastructure …
lrubasze Oct 6, 2025
bebd690
Merge branch 'master' into temp/lexnv/minimal-poc-block-storage
lrubasze Oct 6, 2025
13172f1
revive: fixes after master merge
lrubasze Oct 6, 2025
be1d2e9
Merge branch 'master' into lexnv/minimal-poc-block-storage
lexnv Oct 6, 2025
3d37952
revive: fix failing tests
lrubasze Oct 6, 2025
b53514b
revive: fix benchmarks
lrubasze Oct 6, 2025
9edd35c
Revert "revive/rpc: EVM tx reconstruction tests"
lrubasze Oct 6, 2025
d623962
Revert "revive/rpc: tests improvements"
lrubasze Oct 6, 2025
2bc5f66
Revert "revive/rpc: further cleanup"
lrubasze Oct 6, 2025
84bd856
Revert "revive/rpc: fix some debugs"
lrubasze Oct 6, 2025
4b0826c
Revert "revive/rpc: store receipt metadata for pruned state recovery"
lrubasze Oct 6, 2025
5903f08
Revert "revive/rpc: EVM block reconstruction tests"
lrubasze Oct 6, 2025
24fe576
Revert "revive/rpc: get gas_limit and block_author from the mapping d…
lrubasze Oct 6, 2025
bb01a0d
Revert "revive/rpc: add gas_limit and block_author to the ethereum-su…
lrubasze Oct 6, 2025
282fffb
Revert "revive/rpc: add fetch_block_gas_limit and fetch_block_author …
lrubasze Oct 6, 2025
b0b4bb8
revive/rpc: improve block pruning
lrubasze Oct 7, 2025
5f9f1a1
revive/rpc: get rid of evm_block_from_receipts
lrubasze Oct 7, 2025
f64cd59
revive/rpc: some tests
lrubasze Oct 7, 2025
c7f5a7b
revive/rpc: handle genesis block
lrubasze Oct 7, 2025
f3531db
revive/rpc: another test
lrubasze Oct 7, 2025
d8b4bcf
Merge branch 'lexnv/minimal-poc-block-storage' into lexnv/revive-rpc-…
lrubasze Oct 7, 2025
aa231c6
revive/rpc: handle genesis block when processing subscribed blocks
lrubasze Oct 8, 2025
324617d
revive/rpc: insert_block_mapping api improvement
lrubasze Oct 8, 2025
ccac003
revive/rpc: fix tests
lrubasze Oct 8, 2025
e015a21
revive/cargo: Remove default-features = false
lexnv Oct 8, 2025
3476049
revive/rpc: Add default-features = true to cargo toml
lexnv Oct 8, 2025
8fdd41e
revive: Avoid reencoding the tx
lexnv Oct 8, 2025
d510e4f
revive: Pub export minimal types from block hash
lexnv Oct 8, 2025
a0e6f5a
revive: Remove unneeded trait bounds for hooks
lexnv Oct 8, 2025
c77ccf2
revive: Rename weight_utils to weightinfo_extension mod
lexnv Oct 8, 2025
7d12deb
revive: Panic on API missuse from revive pallet
lexnv Oct 8, 2025
608d431
revive: Simplify processing test statistics
lexnv Oct 8, 2025
4782a26
revive: Take tx on finalized weight into account
lexnv Oct 8, 2025
63906e9
revive: Revert merge conflict EthTransactInfo
lexnv Oct 8, 2025
390dc51
revive: Modify create_call signature
lexnv Oct 8, 2025
2d01742
revive/rpc: reduce potentially spamming logs to debug level
lrubasze Oct 8, 2025
c6ba22d
revive/runtime_api: Add eth_receipt_data to extract gas info from
lexnv Oct 8, 2025
12e3cb5
revive: Revert hard cap limits for depositng events
lexnv Oct 8, 2025
842b061
revive: Fix return of deposit_event fn
lexnv Oct 8, 2025
2512cfb
revive: Export only ReceiptGasInfo as gas info
lexnv Oct 8, 2025
afc7445
revive/rpc: fix docstring
lrubasze Oct 8, 2025
ea9b197
revive/rpc: use rpc api to get the best block hash
lrubasze Oct 8, 2025
d519363
revive: Use default instead of new methods for incremental builder
lexnv Oct 8, 2025
1a13a7d
Revert "revive: decouple EthereumBlockBuilder from pallet storage"
lrubasze Oct 8, 2025
9449a6d
revive: add block 0 using BuildGenesisConfig
lrubasze Oct 8, 2025
406749f
revive/rpc: do not reconstruct genesis block, take it from storage
lrubasze Oct 8, 2025
fcbf64b
revive/rpc: cleanup
lrubasze Oct 8, 2025
74b14be
revive: Add comments about mem usage
lexnv Oct 8, 2025
cc45e76
revive: Ensure memory builder is taken into account
lexnv Oct 8, 2025
7742c4e
revive: Take mem usage and storage usage into account for integrity
lexnv Oct 8, 2025
9e57597
revive: Take event limits into account
lexnv Oct 8, 2025
2e23551
revive/tests: Manual impl derive to avoid needless trait bounds
lexnv Oct 8, 2025
cd24087
revive: Add debug logs for eth block builder
lexnv Oct 9, 2025
fa6493d
Merge remote-tracking branch 'origin/master' into lexnv/minimal-poc-b…
lexnv Oct 9, 2025
31311f4
revive: Charge extra weight for events to ensure enough memory and
lexnv Oct 9, 2025
cd1100b
revive: Use DefaultNoBound
lexnv Oct 9, 2025
7b02443
revive: Remove unneeded trait bounds from benchmarking
lexnv Oct 9, 2025
31a4bd7
revive: Use weight instead of u64
lexnv Oct 9, 2025
9ef212c
Merge branch 'lexnv/minimal-poc-block-storage' into lexnv/revive-rpc-…
lrubasze Oct 9, 2025
1e1ba1a
revive/rpc: use runtime api to get eth block data
lrubasze Oct 9, 2025
04e94be
revive: Remove default-features = false
lrubasze Oct 9, 2025
1e2dc2a
revive: reduce scope of EthereumBlock type
lrubasze Oct 9, 2025
aab84a8
Merge branch 'lexnv/minimal-poc-block-storage' into lexnv/revive-rpc-…
lrubasze Oct 9, 2025
78c8417
revive: make block_hash module public
lrubasze Oct 9, 2025
f366d31
revive: set block timestamps in seconds as Eth uses
lrubasze Oct 9, 2025
ca2ca80
Revert "revive: make block_hash module public"
lrubasze Oct 9, 2025
d3b68f5
Merge branch 'lexnv/minimal-poc-block-storage' into lexnv/revive-rpc-…
lrubasze Oct 9, 2025
dfa0f27
revive/rpc: flatten ReceiptGasInfo import
lrubasze Oct 9, 2025
36a9ca4
revive: Add more logs for integrity check
lexnv Oct 9, 2025
917844d
revive/tests: Bump fee for tests
lexnv Oct 9, 2025
0875791
revive: Adjust more tests
lexnv Oct 9, 2025
14d6231
revive/rpc: let block_hash_for_tag use ethereum hash at input
lrubasze Oct 9, 2025
bfd62ab
revive/rpc: more tests
lrubasze Oct 9, 2025
32f429e
revive: Adjust gas of fixtures
lexnv Oct 9, 2025
954bee2
Merge remote-tracking branch 'origin/lexnv/minimal-poc-block-storage'…
lexnv Oct 9, 2025
481ca1c
Merge remote-tracking branch 'origin/master' into lexnv/minimal-poc-b…
lexnv Oct 9, 2025
6415d25
Merge branch 'master' into lexnv/minimal-poc-block-storage
lrubasze Oct 10, 2025
64578e5
Merge branch 'lexnv/minimal-poc-block-storage' into lexnv/revive-rpc-…
lrubasze Oct 10, 2025
41407e6
asset-hub/tests: Increase gas
lexnv Oct 10, 2025
98d271e
Merge remote-tracking branch 'origin/master' into lexnv/minimal-poc-b…
lexnv Oct 10, 2025
7648c8f
asset-hub: Adjust more tests
lexnv Oct 10, 2025
89649b1
xcm: Adjust ERC20TransferGasLimit to allow higher fees
lexnv Oct 10, 2025
3eac3cc
revive/rpc: extend block_number_to_hash to keep substrate, eth hashes…
lrubasze Oct 10, 2025
0518e8e
revive/rpc: centralize block mapping insertion
lrubasze Oct 10, 2025
39dba82
Merge branch 'lexnv/minimal-poc-block-storage' into lexnv/revive-rpc-…
lrubasze Oct 10, 2025
4c60922
revive: Remove cloning of encoded bytes
lexnv Oct 15, 2025
91f79d1
revive: Use constants for tx payload size
lexnv Oct 15, 2025
1ccd2ba
revive: Remove stale comment
lexnv Oct 15, 2025
1f79ac1
revive: Make block author infalliable
lexnv Oct 15, 2025
a71fe20
revive: weightinfo_extension as crate module
lexnv Oct 15, 2025
7696c7a
revive/tests: Revert balance changes
lexnv Oct 15, 2025
d73e8e1
revive/rpc: Remove substitute for TransactionSigned
lexnv Oct 15, 2025
655e068
Merge remote-tracking branch 'origin/master' into lexnv/minimal-poc-b…
lexnv Oct 15, 2025
c324219
Merge branch 'lexnv/minimal-poc-block-storage' into lexnv/revive-rpc-…
lrubasze Oct 15, 2025
9274403
Revert "revive/rpc: centralize block mapping insertion"
lrubasze Oct 15, 2025
98db7a8
Revert "revive/rpc: extend block_number_to_hash to keep substrate, et…
lrubasze Oct 15, 2025
21b3eb9
revive/rpc: use ethereum block hash in logs table
lrubasze Oct 16, 2025
9286e6f
revive/rpc: remove block_number from eth_to_substrate_blocks table
lrubasze Oct 16, 2025
0c8add3
revive/rpc: cleanup
lrubasze Oct 16, 2025
8dee9c7
revive/rpc: just INSERT to the tables
lrubasze Oct 16, 2025
775f9d2
revive/rpc: use eth_to_substrate_blocks as a source of truth
lrubasze Oct 16, 2025
cc79c8f
revive/rpc: error if receipt gas info not found or length mismatch
lrubasze Oct 16, 2025
6a22917
Merge branch 'master' into lexnv/revive-rpc-adjustment
lrubasze Oct 16, 2025
26bd82e
revive/rpc: clippy
lrubasze Oct 17, 2025
40688e3
revive/rpc: prdoc
lrubasze Oct 17, 2025
15d8c6d
revive/rpc: update prdoc
lrubasze Oct 20, 2025
ad3e1b5
Merge branch 'lexnv/revive-rpc-adjustment' into lrubasze/eth-trie-roo…
lrubasze Oct 20, 2025
0a4a84b
Merge branch 'master' into lexnv/revive-rpc-adjustment
pgherveou Oct 20, 2025
2fca942
revive: more test data for root tests
lrubasze Oct 20, 2025
9034f9b
Merge branch 'lexnv/revive-rpc-adjustment' into lrubasze/eth-trie-roo…
lrubasze Oct 20, 2025
57c0ede
revive/rpc: clippy
lrubasze Oct 20, 2025
e6eb15e
revive: fix seal_block_hash benchmark
lrubasze Oct 20, 2025
cd6f967
revive/rpc: update prdoc
lrubasze Oct 20, 2025
ddfd266
Merge branch 'master' into lexnv/revive-rpc-adjustment
lrubasze Oct 20, 2025
df67a07
bring change from #10018
pgherveou Oct 21, 2025
1c79554
rm unused dep
pgherveou Oct 21, 2025
d27866c
fix part one
pgherveou Oct 21, 2025
030ab07
revive/rpc: fix get_block_transaction_count
lrubasze Oct 21, 2025
8bfdfa7
revive/rpc: support for getting substrate block extrinsic index
lrubasze Oct 21, 2025
5bacb9e
revive/rpc: further improvements to substrate block extrinsic index
lrubasze Oct 21, 2025
84bbc1a
revive/rpc: add test for multiple transactions in a block
lrubasze Oct 21, 2025
abaa7cf
revive: fix tests
lrubasze Oct 22, 2025
ad672dd
revive/rpc: comments
lrubasze Oct 22, 2025
55df115
Merge branch 'master' into lexnv/revive-rpc-adjustment
lrubasze Oct 22, 2025
0524613
Merge branch 'lexnv/revive-rpc-adjustment' into lrubasze/eth-trie-roo…
lrubasze Oct 22, 2025
a7f14f7
revive: remove some deps
lrubasze Oct 22, 2025
887fd74
revive: fmtCargo.toml
lrubasze Oct 22, 2025
1f87661
Update from github-actions[bot] running command 'prdoc --audience run…
github-actions[bot] Oct 22, 2025
94255f4
Revert "revive/rpc: further improvements to substrate block extrinsic…
lrubasze Oct 22, 2025
8c57460
Revert "revive/rpc: support for getting substrate block extrinsic index"
lrubasze Oct 22, 2025
ff15443
revive/rpc: use Substrate extrinsic indexes as EVM transaction indexes
lrubasze Oct 22, 2025
9b34a57
revive/rpc: use find_transaction to trace transaction
lrubasze Oct 22, 2025
53d9083
revive/rpc: some cleanup
lrubasze Oct 23, 2025
2d577a0
revive: improve some tests
lrubasze Oct 23, 2025
29a937b
revive: improve block_hash_works test
lrubasze Oct 23, 2025
867d2b2
revive/rpc: switch to log::trace in tests
lrubasze Oct 23, 2025
2789ee6
Merge branch 'lexnv/revive-rpc-adjustment' into lrubasze/eth-trie-roo…
lrubasze Oct 23, 2025
bb57331
Merge remote-tracking branch 'origin/master' into lrubasze/eth-trie-r…
lrubasze Oct 24, 2025
e661278
Update from github-actions[bot] running command 'prdoc --audience run…
github-actions[bot] Oct 24, 2025
abdcfb4
revive: switch to log::trace in tests
lrubasze Oct 24, 2025
d39a9fa
revive: remove ethereum dependency in tests
lrubasze Oct 27, 2025
a54e8c1
revive/rpc: get rid of wait_for_receipt_advanced
lrubasze Oct 27, 2025
2265233
revive/rpc: send_typed -> send_with_type
lrubasze Oct 27, 2025
490044b
revive/rpc: max_priority_fee_per_gas = 0
lrubasze Oct 28, 2025
b4b9223
revive/rpc: fix setting max_priority_fee_per_gas
lrubasze Oct 28, 2025
be65f66
Merge branch 'master' into lrubasze/eth-trie-root-and-rlp-codec-impro…
lrubasze Oct 30, 2025
51812b3
Merge branch 'master' into lrubasze/eth-trie-root-and-rlp-codec-impro…
lrubasze Dec 9, 2025
94e9880
revive: fix test
lrubasze Dec 9, 2025
f2e1de2
Merge branch 'lrubasze/eth-trie-root-and-rlp-codec-improvements' into…
lrubasze Dec 9, 2025
ae5fef3
Merge branch 'master' into lrubasze/eth-trie-root-and-rlp-codec-impro…
lrubasze Dec 10, 2025
e3a7250
Merge branch 'master' into lrubasze/eth-trie-root-and-rlp-codec-impro…
lrubasze Dec 12, 2025
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
35 changes: 35 additions & 0 deletions prdoc/pr_9452.prdoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
title: Add comprehensive test data for Ethereum trie root validation
doc:
- audience: Runtime Dev
description: "### Summary\n\nThis PR adds comprehensive test data for validating\
\ Ethereum transaction and receipt trie root calculations in the `revive` crate.\
\ It includes real-world Ethereum blocks covering all supported transaction types.\n\
\n---\n\n### Details\n\n#### \U0001F9EA Test Data\n\n- **Expanded Test Fixtures**:\n\
\ - Added 3 Ethereum blocks with their receipts (2 from mainnet, 1 from Sepolia\
\ testnet)\n - Blocks include all supported transaction types (Legacy, EIP-2930,\
\ EIP-1559, EIP-4844)\n - Test data validates `transactions_root` and `receipts_root`\
\ calculations against real Ethereum data\n - Organized naming: `block_{block_number}_{network}.json`\
\ and `receipts_{block_number}_{network}.json`\n\n#### \U0001F6E0\uFE0F Tooling\n\
\n- **Test Data Collection Script**:\n - Added `get_test_data.sh` for fetching\
\ test data from live Ethereum networks\n - Simple curl-based script that can\
\ be extended with additional blocks\n\nBuilds on top of: https://github.com/paritytech/polkadot-sdk/pull/9418\n\
\nPart of: https://github.com/paritytech/contract-issues/issues/139"
crates:
- name: pallet-revive
bump: minor
- name: sp-core
bump: minor
- name: asset-hub-westend-runtime
bump: minor
- name: penpal-runtime
bump: minor
- name: pallet-revive-eth-rpc
bump: minor
- name: pallet-xcm
bump: minor
- name: pallet-assets
bump: minor
- name: revive-dev-runtime
bump: minor
- name: pallet-assets-precompiles
bump: minor
50 changes: 50 additions & 0 deletions substrate/frame/revive/rpc/examples/tx-types.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
// This file is part of Substrate.

// Copyright (C) Parity Technologies (UK) Ltd.
// SPDX-License-Identifier: Apache-2.0

// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
use jsonrpsee::http_client::HttpClientBuilder;
use pallet_revive::evm::Account;
use pallet_revive_eth_rpc::example::{TransactionBuilder, TransactionType};
use std::sync::Arc;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
let client = Arc::new(HttpClientBuilder::default().build("http://localhost:8545")?);

let alith = Account::default();
let ethan = Account::from(subxt_signer::eth::dev::ethan());
let value = 1_000_000_000_000_000_000_000u128.into();

for tx_type in [
TransactionType::Legacy,
TransactionType::Eip2930,
TransactionType::Eip1559,
TransactionType::Eip4844,
] {
println!("\n\n=== TransactionType {tx_type:?} ===\n\n",);

let tx = TransactionBuilder::new(&client)
.signer(alith.clone())
.value(value)
.to(ethan.address())
.send_with_type(tx_type)
.await?;
println!("Transaction hash: {:?}", tx.hash());

let receipt = tx.wait_for_receipt().await?;
println!("Receipt: {receipt:#?}");
}
Ok(())
}
102 changes: 87 additions & 15 deletions substrate/frame/revive/rpc/src/example.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,15 @@ use anyhow::Context;
use pallet_revive::evm::*;
use std::sync::Arc;

/// Transaction type enum for specifying which type of transaction to send
#[derive(Debug, Clone, Copy)]
pub enum TransactionType {
Legacy,
Eip2930,
Eip1559,
Eip4844,
}

/// Transaction builder.
pub struct TransactionBuilder<Client: EthRpcClient + Sync + Send> {
client: Arc<Client>,
Expand All @@ -28,7 +37,7 @@ pub struct TransactionBuilder<Client: EthRpcClient + Sync + Send> {
input: Bytes,
to: Option<H160>,
nonce: Option<U256>,
mutate: Box<dyn FnOnce(&mut TransactionLegacyUnsigned)>,
mutate: Box<dyn FnOnce(&mut TransactionUnsigned)>,
}

#[derive(Debug)]
Expand Down Expand Up @@ -63,7 +72,9 @@ impl<Client: EthRpcClient + Sync + Send> SubmittedTransaction<Client> {
if receipt.is_success() {
assert!(
self.gas() > receipt.gas_used,
"Gas used should be less than gas estimated."
"Gas used {:?} should be less than gas estimated {:?}",
receipt.gas_used,
self.gas()
);
return Ok(receipt)
} else {
Expand Down Expand Up @@ -119,7 +130,7 @@ impl<Client: EthRpcClient + Send + Sync> TransactionBuilder<Client> {
}

/// Set a mutation function, that mutates the transaction before sending.
pub fn mutate(mut self, mutate: impl FnOnce(&mut TransactionLegacyUnsigned) + 'static) -> Self {
pub fn mutate(mut self, mutate: impl FnOnce(&mut TransactionUnsigned) + 'static) -> Self {
self.mutate = Box::new(mutate);
self
}
Expand Down Expand Up @@ -147,10 +158,18 @@ impl<Client: EthRpcClient + Send + Sync> TransactionBuilder<Client> {

/// Send the transaction.
pub async fn send(self) -> anyhow::Result<SubmittedTransaction<Client>> {
self.send_with_type(TransactionType::Legacy).await
}

/// Send the transaction with a specific transaction type.
pub async fn send_with_type(
self,
tx_type: TransactionType,
) -> anyhow::Result<SubmittedTransaction<Client>> {
let TransactionBuilder { client, signer, value, input, to, nonce, mutate } = self;

let from = signer.address();
let chain_id = Some(client.chain_id().await?);
let chain_id = client.chain_id().await?;
let gas_price = client.gas_price().await?;
let nonce = if let Some(nonce) = nonce {
nonce
Expand All @@ -176,20 +195,73 @@ impl<Client: EthRpcClient + Send + Sync> TransactionBuilder<Client> {
.await
.with_context(|| "Failed to fetch gas estimate")?;

let mut unsigned_tx = TransactionLegacyUnsigned {
gas,
nonce,
to,
value,
input,
gas_price,
chain_id,
..Default::default()
};
println!("Gas estimate: {gas:?}");

let mut unsigned_tx: TransactionUnsigned = match tx_type {
TransactionType::Legacy => TransactionLegacyUnsigned {
gas,
nonce,
to,
value,
input,
gas_price,
chain_id: Some(chain_id),
..Default::default()
}
.into(),
TransactionType::Eip2930 => Transaction2930Unsigned {
gas,
nonce,
to,
value,
input,
gas_price,
chain_id,
access_list: vec![],
r#type: TypeEip2930,
}
.into(),
TransactionType::Eip1559 => Transaction1559Unsigned {
gas,
nonce,
to,
value,
input,
gas_price,
max_fee_per_gas: gas_price,
max_priority_fee_per_gas: U256::zero(),
chain_id,
access_list: vec![],
r#type: TypeEip1559,
}
.into(),
TransactionType::Eip4844 => {
// For EIP-4844, we need a destination address (cannot be None for blob
// transactions)
let to = to.ok_or_else(|| {
anyhow::anyhow!("EIP-4844 transactions require a destination address")
})?;
let max_priority_fee_per_gas = gas_price / 10; // 10% of gas price as priority fee
Transaction4844Unsigned {
gas,
nonce,
to,
value,
input,
max_fee_per_gas: gas_price,
max_priority_fee_per_gas,
max_fee_per_blob_gas: gas_price, // Use gas_price as blob gas fee
chain_id,
access_list: vec![],
blob_versioned_hashes: vec![],
r#type: TypeEip4844,
}
.into()
},
};
mutate(&mut unsigned_tx);

let signed_tx = signer.sign_transaction(unsigned_tx.into());
let signed_tx = signer.sign_transaction(unsigned_tx);
let bytes = signed_tx.signed_payload();

let hash = client
Expand Down
10 changes: 8 additions & 2 deletions substrate/frame/revive/rpc/src/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ use pallet_revive::{
create1,
evm::{
Account, Block, BlockNumberOrTag, BlockNumberOrTagOrHash, BlockTag,
HashesOrTransactionInfos, TransactionInfo, H256, U256,
HashesOrTransactionInfos, TransactionInfo, TransactionUnsigned, H256, U256,
},
};
use std::{sync::Arc, thread};
Expand Down Expand Up @@ -450,7 +450,13 @@ async fn test_invalid_transaction(client: Arc<WsClient>) -> anyhow::Result<()> {
let err = TransactionBuilder::new(&client)
.value(U256::from(1_000_000_000_000u128))
.to(ethan.address())
.mutate(|tx| tx.chain_id = Some(42u32.into()))
.mutate(|tx| match tx {
TransactionUnsigned::TransactionLegacyUnsigned(tx) => tx.chain_id = Some(42u32.into()),
TransactionUnsigned::Transaction1559Unsigned(tx) => tx.chain_id = 42u32.into(),
TransactionUnsigned::Transaction2930Unsigned(tx) => tx.chain_id = 42u32.into(),
TransactionUnsigned::Transaction4844Unsigned(tx) => tx.chain_id = 42u32.into(),
TransactionUnsigned::Transaction7702Unsigned(tx) => tx.chain_id = 42u32.into(),
})
.send()
.await
.unwrap_err();
Expand Down
31 changes: 29 additions & 2 deletions substrate/frame/revive/src/evm/api/rlp_codec.rs
Original file line number Diff line number Diff line change
Expand Up @@ -637,7 +637,6 @@ mod test {
),
// type 3: EIP4844
(

"03f8bf018002018301e24194095e7baea6a6c7c4c2dfeb977efac326af552d878080f838f7940000000000000000000000000000000000000001e1a0000000000000000000000000000000000000000000000000000000000000000080e1a0000000000000000000000000000000000000000000000000000000000000000080a0fe38ca4e44a30002ac54af7cf922a6ac2ba11b7d22f548e8ecb3f51f41cb31b0a06de6a5cbae13c0c856e33acf021b51819636cfc009d39eafb9f606d546e305a8",
r#"
{
Expand All @@ -662,7 +661,7 @@ mod test {
"s": "0x6de6a5cbae13c0c856e33acf021b51819636cfc009d39eafb9f606d546e305a8",
"yParity": "0x0"
}
"#
"#,
)
];

Expand Down Expand Up @@ -693,4 +692,32 @@ mod test {
let payload = Account::default().sign_transaction(tx).signed_payload();
assert_eq!(dummy_signed_payload.len(), payload.len());
}

#[test]
fn rlp_codec_is_compatible_with_ethereum() {
// RLP encoded transactions
let test_cases = [
// Legacy
"f86080808301e24194095e7baea6a6c7c4c2dfeb977efac326af552d87808025a0fe38ca4e44a30002ac54af7cf922a6ac2ba11b7d22f548e8ecb3f51f41cb31b0a06de6a5cbae13c0c856e33acf021b51819636cfc009d39eafb9f606d546e305a8",
// EIP-2930
"01f89b0180808301e24194095e7baea6a6c7c4c2dfeb977efac326af552d878080f838f7940000000000000000000000000000000000000001e1a0000000000000000000000000000000000000000000000000000000000000000080a0fe38ca4e44a30002ac54af7cf922a6ac2ba11b7d22f548e8ecb3f51f41cb31b0a06de6a5cbae13c0c856e33acf021b51819636cfc009d39eafb9f606d546e305a8",
// EIP-1559
"02f89c018080018301e24194095e7baea6a6c7c4c2dfeb977efac326af552d878080f838f7940000000000000000000000000000000000000001e1a0000000000000000000000000000000000000000000000000000000000000000080a0fe38ca4e44a30002ac54af7cf922a6ac2ba11b7d22f548e8ecb3f51f41cb31b0a06de6a5cbae13c0c856e33acf021b51819636cfc009d39eafb9f606d546e305a8",
// EIP4844
"03f89783aa36a701832dc6c083fc546c8261a8947f8b1ca29f95274e06367b60fc4a539e4910fd0c865af3107a400080c0831e8480e1a0018fd423d1ad106395f04abac797217d4dece29da3ba649d9aa4da70e98fa6ff80a028d2350a1bfa5043de1533911143eb5c43815a58039121a0ccf124870620fca6a0157eca4963615cd3926538af88e529cfa3baf6c55787a33f79c25babe9f5db2b",
];

for hex_tx in test_cases {
let rlp_encoded_tx = alloy_core::hex::decode(hex_tx).unwrap();

// RLP decode using this implementation
let tx_revive = TransactionSigned::decode(&rlp_encoded_tx).unwrap();

// RLP encode using this implementation
let rlp_encoded_revive = tx_revive.signed_payload();

// Verify round-trip: our encoding should decode back to the same transaction
assert_eq!(rlp_encoded_tx, rlp_encoded_revive);
}
}
}
Loading
Loading