17 Commits

Author SHA1 Message Date
51924e9671 Merge pull request #91 from hl-archive-node/fix/debug-cutoff
fix: Fix --debug-cutoff-height semantics
2025-10-11 22:29:45 -04:00
8f15aa311f fix: Fix --debug-cutoff-height semantics
NOTE: This is a debug feature not on by default.

The original intention of it was limiting the highest block number. But it was instead enforcing the starting block number for fetching, leading to block progression.
2025-10-12 02:22:55 +00:00
bc66716a41 Merge pull request #89 from hl-archive-node/cleanup
fix: Convert header type for eth_subscribe
2025-10-10 23:09:33 -04:00
fc819dbba2 test: Add regression tests 2025-10-11 02:52:09 +00:00
1c5a22a814 fix: Convert header type for eth_subscribe
Due to custom header usage, only `eth_subscribe` method was returning the new header format in raw format, while other part were using RpcConvert to convert headers.

Make `eth_subscribe` newHeads to return the `inner` field (original eth header) instead.
2025-10-11 02:49:19 +00:00
852e186b1a Merge pull request #88 from hl-archive-node/hotfix
hotfix: Mark migrator experimantal
2025-10-09 04:55:53 -04:00
f83326059f chore: clippy 2025-10-09 08:55:40 +00:00
ca8c374116 feat: Mark migrator as experimental 2025-10-09 08:49:29 +00:00
5ba12a4850 perf: adjust chunk size, do not hold tx too long 2025-10-09 08:20:22 +00:00
8a179a6d9e perf: Use smaller chunks 2025-10-09 08:13:53 +00:00
d570cf3e8d fix: Create directory before migration 2025-10-09 08:13:45 +00:00
0e49e65068 Merge pull request #86 from hl-archive-node/breaking/hl-header
feat(breaking): Use custom header format (HlHeader)
2025-10-09 02:51:09 -04:00
13b63ff136 feat: add migrator for mdbx as well 2025-10-09 06:35:56 +00:00
233026871f perf: chunkify block ranges 2025-10-08 13:54:16 +00:00
7e169d409d chore: Change branch to v1.8.2-fork-hl-header 2025-10-08 13:04:11 +00:00
47aaad6ed9 feat: add migrator 2025-10-08 13:03:51 +00:00
9f73b1ede0 refactor: Move BlockBody from transaction to body 2025-10-06 06:43:17 +00:00
18 changed files with 848 additions and 290 deletions

218
Cargo.lock generated
View File

@ -6744,7 +6744,7 @@ checksum = "95325155c684b1c89f7765e30bc1c42e4a6da51ca513615660cb8a62ef9a88e3"
[[package]]
name = "reth"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-rpc-types",
"aquamarine",
@ -6790,7 +6790,7 @@ dependencies = [
[[package]]
name = "reth-basic-payload-builder"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -6814,7 +6814,7 @@ dependencies = [
[[package]]
name = "reth-chain-state"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -6845,7 +6845,7 @@ dependencies = [
[[package]]
name = "reth-chainspec"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-chains",
"alloy-consensus",
@ -6865,7 +6865,7 @@ dependencies = [
[[package]]
name = "reth-cli"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-genesis",
"clap",
@ -6879,7 +6879,7 @@ dependencies = [
[[package]]
name = "reth-cli-commands"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-chains",
"alloy-consensus",
@ -6960,7 +6960,7 @@ dependencies = [
[[package]]
name = "reth-cli-runner"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"reth-tasks",
"tokio",
@ -6970,7 +6970,7 @@ dependencies = [
[[package]]
name = "reth-cli-util"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-eips",
"alloy-primitives",
@ -6988,7 +6988,7 @@ dependencies = [
[[package]]
name = "reth-codecs"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -7008,7 +7008,7 @@ dependencies = [
[[package]]
name = "reth-codecs-derive"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"convert_case",
"proc-macro2",
@ -7019,7 +7019,7 @@ dependencies = [
[[package]]
name = "reth-config"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"eyre",
"humantime-serde",
@ -7034,7 +7034,7 @@ dependencies = [
[[package]]
name = "reth-consensus"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-primitives",
@ -7047,7 +7047,7 @@ dependencies = [
[[package]]
name = "reth-consensus-common"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -7059,7 +7059,7 @@ dependencies = [
[[package]]
name = "reth-consensus-debug-client"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -7085,7 +7085,7 @@ dependencies = [
[[package]]
name = "reth-db"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-primitives",
"derive_more",
@ -7111,7 +7111,7 @@ dependencies = [
[[package]]
name = "reth-db-api"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-genesis",
@ -7139,7 +7139,7 @@ dependencies = [
[[package]]
name = "reth-db-common"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-genesis",
@ -7169,7 +7169,7 @@ dependencies = [
[[package]]
name = "reth-db-models"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-eips",
"alloy-primitives",
@ -7184,7 +7184,7 @@ dependencies = [
[[package]]
name = "reth-discv4"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-primitives",
"alloy-rlp",
@ -7210,7 +7210,7 @@ dependencies = [
[[package]]
name = "reth-discv5"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-primitives",
"alloy-rlp",
@ -7234,7 +7234,7 @@ dependencies = [
[[package]]
name = "reth-dns-discovery"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-primitives",
"data-encoding",
@ -7258,7 +7258,7 @@ dependencies = [
[[package]]
name = "reth-downloaders"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -7288,7 +7288,7 @@ dependencies = [
[[package]]
name = "reth-ecies"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"aes",
"alloy-primitives",
@ -7319,7 +7319,7 @@ dependencies = [
[[package]]
name = "reth-engine-local"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-primitives",
@ -7341,7 +7341,7 @@ dependencies = [
[[package]]
name = "reth-engine-primitives"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -7366,7 +7366,7 @@ dependencies = [
[[package]]
name = "reth-engine-service"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"futures",
"pin-project",
@ -7389,7 +7389,7 @@ dependencies = [
[[package]]
name = "reth-engine-tree"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -7438,7 +7438,7 @@ dependencies = [
[[package]]
name = "reth-engine-util"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-rpc-types-engine",
@ -7466,7 +7466,7 @@ dependencies = [
[[package]]
name = "reth-era"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -7482,7 +7482,7 @@ dependencies = [
[[package]]
name = "reth-era-downloader"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-primitives",
"bytes",
@ -7497,7 +7497,7 @@ dependencies = [
[[package]]
name = "reth-era-utils"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-primitives",
@ -7519,7 +7519,7 @@ dependencies = [
[[package]]
name = "reth-errors"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"reth-consensus",
"reth-execution-errors",
@ -7530,7 +7530,7 @@ dependencies = [
[[package]]
name = "reth-eth-wire"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-chains",
"alloy-primitives",
@ -7559,7 +7559,7 @@ dependencies = [
[[package]]
name = "reth-eth-wire-types"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-chains",
"alloy-consensus",
@ -7583,7 +7583,7 @@ dependencies = [
[[package]]
name = "reth-ethereum-cli"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"clap",
"eyre",
@ -7605,7 +7605,7 @@ dependencies = [
[[package]]
name = "reth-ethereum-consensus"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -7621,7 +7621,7 @@ dependencies = [
[[package]]
name = "reth-ethereum-engine-primitives"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-eips",
"alloy-primitives",
@ -7639,7 +7639,7 @@ dependencies = [
[[package]]
name = "reth-ethereum-forks"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-eip2124",
"alloy-hardforks",
@ -7653,7 +7653,7 @@ dependencies = [
[[package]]
name = "reth-ethereum-payload-builder"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -7682,7 +7682,7 @@ dependencies = [
[[package]]
name = "reth-ethereum-primitives"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -7702,7 +7702,7 @@ dependencies = [
[[package]]
name = "reth-etl"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"rayon",
"reth-db-api",
@ -7712,7 +7712,7 @@ dependencies = [
[[package]]
name = "reth-evm"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -7735,7 +7735,7 @@ dependencies = [
[[package]]
name = "reth-evm-ethereum"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -7756,7 +7756,7 @@ dependencies = [
[[package]]
name = "reth-execution-errors"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-evm",
"alloy-primitives",
@ -7769,7 +7769,7 @@ dependencies = [
[[package]]
name = "reth-execution-types"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -7787,7 +7787,7 @@ dependencies = [
[[package]]
name = "reth-exex"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -7825,7 +7825,7 @@ dependencies = [
[[package]]
name = "reth-exex-types"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-eips",
"alloy-primitives",
@ -7839,7 +7839,7 @@ dependencies = [
[[package]]
name = "reth-fs-util"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"serde",
"serde_json",
@ -7849,7 +7849,7 @@ dependencies = [
[[package]]
name = "reth-invalid-block-hooks"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-primitives",
@ -7876,7 +7876,7 @@ dependencies = [
[[package]]
name = "reth-ipc"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"bytes",
"futures",
@ -7896,7 +7896,7 @@ dependencies = [
[[package]]
name = "reth-libmdbx"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"bitflags 2.9.2",
"byteorder",
@ -7912,7 +7912,7 @@ dependencies = [
[[package]]
name = "reth-mdbx-sys"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"bindgen 0.71.1",
"cc",
@ -7921,7 +7921,7 @@ dependencies = [
[[package]]
name = "reth-metrics"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"futures",
"metrics",
@ -7933,7 +7933,7 @@ dependencies = [
[[package]]
name = "reth-net-banlist"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-primitives",
]
@ -7941,7 +7941,7 @@ dependencies = [
[[package]]
name = "reth-net-nat"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"futures-util",
"if-addrs",
@ -7955,7 +7955,7 @@ dependencies = [
[[package]]
name = "reth-network"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -8010,7 +8010,7 @@ dependencies = [
[[package]]
name = "reth-network-api"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-primitives",
@ -8035,7 +8035,7 @@ dependencies = [
[[package]]
name = "reth-network-p2p"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -8057,7 +8057,7 @@ dependencies = [
[[package]]
name = "reth-network-peers"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-primitives",
"alloy-rlp",
@ -8072,7 +8072,7 @@ dependencies = [
[[package]]
name = "reth-network-types"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-eip2124",
"humantime-serde",
@ -8086,7 +8086,7 @@ dependencies = [
[[package]]
name = "reth-nippy-jar"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"anyhow",
"bincode",
@ -8103,7 +8103,7 @@ dependencies = [
[[package]]
name = "reth-node-api"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-rpc-types-engine",
"eyre",
@ -8127,7 +8127,7 @@ dependencies = [
[[package]]
name = "reth-node-builder"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -8195,7 +8195,7 @@ dependencies = [
[[package]]
name = "reth-node-core"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -8247,7 +8247,7 @@ dependencies = [
[[package]]
name = "reth-node-ethereum"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-eips",
"alloy-network",
@ -8285,7 +8285,7 @@ dependencies = [
[[package]]
name = "reth-node-ethstats"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-primitives",
@ -8309,7 +8309,7 @@ dependencies = [
[[package]]
name = "reth-node-events"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -8333,7 +8333,7 @@ dependencies = [
[[package]]
name = "reth-node-metrics"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"eyre",
"http 1.3.1",
@ -8354,7 +8354,7 @@ dependencies = [
[[package]]
name = "reth-node-types"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"reth-chainspec",
"reth-db-api",
@ -8366,7 +8366,7 @@ dependencies = [
[[package]]
name = "reth-optimism-primitives"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -8385,7 +8385,7 @@ dependencies = [
[[package]]
name = "reth-payload-builder"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-primitives",
@ -8406,7 +8406,7 @@ dependencies = [
[[package]]
name = "reth-payload-builder-primitives"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"pin-project",
"reth-payload-primitives",
@ -8418,7 +8418,7 @@ dependencies = [
[[package]]
name = "reth-payload-primitives"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-eips",
"alloy-primitives",
@ -8438,7 +8438,7 @@ dependencies = [
[[package]]
name = "reth-payload-validator"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-rpc-types-engine",
@ -8448,7 +8448,7 @@ dependencies = [
[[package]]
name = "reth-primitives"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"c-kzg",
@ -8462,7 +8462,7 @@ dependencies = [
[[package]]
name = "reth-primitives-traits"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -8495,7 +8495,7 @@ dependencies = [
[[package]]
name = "reth-provider"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -8540,7 +8540,7 @@ dependencies = [
[[package]]
name = "reth-prune"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -8568,7 +8568,7 @@ dependencies = [
[[package]]
name = "reth-prune-types"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-primitives",
"arbitrary",
@ -8582,7 +8582,7 @@ dependencies = [
[[package]]
name = "reth-ress-protocol"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-primitives",
@ -8601,7 +8601,7 @@ dependencies = [
[[package]]
name = "reth-ress-provider"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-primitives",
@ -8628,7 +8628,7 @@ dependencies = [
[[package]]
name = "reth-revm"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-primitives",
"reth-primitives-traits",
@ -8641,7 +8641,7 @@ dependencies = [
[[package]]
name = "reth-rpc"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-dyn-abi",
@ -8720,7 +8720,7 @@ dependencies = [
[[package]]
name = "reth-rpc-api"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-eips",
"alloy-genesis",
@ -8748,7 +8748,7 @@ dependencies = [
[[package]]
name = "reth-rpc-builder"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-network",
"alloy-provider",
@ -8787,7 +8787,7 @@ dependencies = [
[[package]]
name = "reth-rpc-convert"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-json-rpc",
@ -8808,7 +8808,7 @@ dependencies = [
[[package]]
name = "reth-rpc-engine-api"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-eips",
"alloy-primitives",
@ -8838,7 +8838,7 @@ dependencies = [
[[package]]
name = "reth-rpc-eth-api"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-dyn-abi",
@ -8882,7 +8882,7 @@ dependencies = [
[[package]]
name = "reth-rpc-eth-types"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -8929,7 +8929,7 @@ dependencies = [
[[package]]
name = "reth-rpc-layer"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-rpc-types-engine",
"http 1.3.1",
@ -8943,7 +8943,7 @@ dependencies = [
[[package]]
name = "reth-rpc-server-types"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-eips",
"alloy-primitives",
@ -8959,7 +8959,7 @@ dependencies = [
[[package]]
name = "reth-stages"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -9003,7 +9003,7 @@ dependencies = [
[[package]]
name = "reth-stages-api"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-eips",
"alloy-primitives",
@ -9030,7 +9030,7 @@ dependencies = [
[[package]]
name = "reth-stages-types"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-primitives",
"arbitrary",
@ -9044,7 +9044,7 @@ dependencies = [
[[package]]
name = "reth-static-file"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-primitives",
"parking_lot",
@ -9064,7 +9064,7 @@ dependencies = [
[[package]]
name = "reth-static-file-types"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-primitives",
"clap",
@ -9076,7 +9076,7 @@ dependencies = [
[[package]]
name = "reth-storage-api"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -9099,7 +9099,7 @@ dependencies = [
[[package]]
name = "reth-storage-errors"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-eips",
"alloy-primitives",
@ -9115,7 +9115,7 @@ dependencies = [
[[package]]
name = "reth-tasks"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"auto_impl",
"dyn-clone",
@ -9133,7 +9133,7 @@ dependencies = [
[[package]]
name = "reth-tokio-util"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"tokio",
"tokio-stream",
@ -9143,7 +9143,7 @@ dependencies = [
[[package]]
name = "reth-tracing"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"clap",
"eyre",
@ -9158,7 +9158,7 @@ dependencies = [
[[package]]
name = "reth-transaction-pool"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -9198,7 +9198,7 @@ dependencies = [
[[package]]
name = "reth-trie"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-eips",
@ -9223,7 +9223,7 @@ dependencies = [
[[package]]
name = "reth-trie-common"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-consensus",
"alloy-primitives",
@ -9249,7 +9249,7 @@ dependencies = [
[[package]]
name = "reth-trie-db"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-primitives",
"reth-db-api",
@ -9262,7 +9262,7 @@ dependencies = [
[[package]]
name = "reth-trie-parallel"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-primitives",
"alloy-rlp",
@ -9287,7 +9287,7 @@ dependencies = [
[[package]]
name = "reth-trie-sparse"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-primitives",
"alloy-rlp",
@ -9306,7 +9306,7 @@ dependencies = [
[[package]]
name = "reth-trie-sparse-parallel"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"alloy-primitives",
"alloy-rlp",
@ -9324,7 +9324,7 @@ dependencies = [
[[package]]
name = "reth-zstd-compressors"
version = "1.8.2"
source = "git+https://github.com/hl-archive-node/reth?rev=83baf84bcb6d88081fc1b39f97733b8ec345cb88#83baf84bcb6d88081fc1b39f97733b8ec345cb88"
source = "git+https://github.com/hl-archive-node/reth?rev=416c2e26756f1c8ee86e6b8e4081f434952b3a1a#416c2e26756f1c8ee86e6b8e4081f434952b3a1a"
dependencies = [
"zstd",
]

View File

@ -26,49 +26,49 @@ lto = "fat"
codegen-units = 1
[dependencies]
reth = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-cli = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-cli-commands = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-basic-payload-builder = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-db = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-db-api = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-chainspec = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-cli-util = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-discv4 = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-engine-primitives = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-ethereum-forks = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-ethereum-payload-builder = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-ethereum-primitives = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-eth-wire = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-eth-wire-types = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-evm = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-evm-ethereum = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-node-core = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-revm = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-network = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-network-p2p = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-network-api = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-node-ethereum = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-network-peers = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-payload-primitives = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-primitives = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-primitives-traits = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-provider = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88", features = ["test-utils"] }
reth-rpc = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-rpc-eth-api = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-rpc-engine-api = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-tracing = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-trie-common = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-trie-db = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-codecs = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-transaction-pool = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-stages-types = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-storage-api = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-errors = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-rpc-convert = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-rpc-eth-types = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-rpc-server-types = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth-metrics = { git = "https://github.com/hl-archive-node/reth", rev = "83baf84bcb6d88081fc1b39f97733b8ec345cb88" }
reth = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-cli = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-cli-commands = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-basic-payload-builder = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-db = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-db-api = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-chainspec = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-cli-util = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-discv4 = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-engine-primitives = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-ethereum-forks = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-ethereum-payload-builder = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-ethereum-primitives = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-eth-wire = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-eth-wire-types = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-evm = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-evm-ethereum = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-node-core = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-revm = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-network = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-network-p2p = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-network-api = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-node-ethereum = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-network-peers = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-payload-primitives = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-primitives = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-primitives-traits = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-provider = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a", features = ["test-utils"] }
reth-rpc = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-rpc-eth-api = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-rpc-engine-api = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-tracing = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-trie-common = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-trie-db = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-codecs = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-transaction-pool = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-stages-types = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-storage-api = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-errors = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-rpc-convert = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-rpc-eth-types = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-rpc-server-types = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
reth-metrics = { git = "https://github.com/hl-archive-node/reth", rev = "416c2e26756f1c8ee86e6b8e4081f434952b3a1a" }
revm = { version = "29.0.1", default-features = false }
# alloy dependencies

View File

@ -19,62 +19,23 @@ use alloy_rpc_types::{
TransactionInfo,
pubsub::{Params, SubscriptionKind},
};
use jsonrpsee::{PendingSubscriptionSink, SubscriptionMessage, SubscriptionSink, proc_macros::rpc};
use jsonrpsee::{PendingSubscriptionSink, proc_macros::rpc};
use jsonrpsee_core::{RpcResult, async_trait};
use jsonrpsee_types::{ErrorObject, error::INTERNAL_ERROR_CODE};
use reth::{api::FullNodeComponents, builder::rpc::RpcContext, tasks::TaskSpawner};
use reth_primitives_traits::SignedTransaction;
use reth_provider::{BlockIdReader, BlockReader, BlockReaderIdExt, ReceiptProvider};
use reth_rpc::{EthFilter, EthPubSub, RpcTypes, eth::pubsub::SubscriptionSerializeError};
use reth_rpc::{EthFilter, EthPubSub};
use reth_rpc_eth_api::{
EthApiServer, EthApiTypes, EthFilterApiServer, EthPubSubApiServer, FullEthApiTypes, RpcBlock,
RpcConvert, RpcHeader, RpcNodeCoreExt, RpcReceipt, RpcTransaction, RpcTxReq,
helpers::{EthBlocks, EthTransactions, LoadReceipt},
transaction::ConvertReceiptInput,
EthApiTypes, EthFilterApiServer, EthPubSubApiServer, RpcBlock, RpcConvert, RpcReceipt,
RpcTransaction, helpers::EthBlocks, transaction::ConvertReceiptInput,
};
use reth_rpc_eth_types::EthApiError;
use serde::Serialize;
use std::{marker::PhantomData, sync::Arc};
use tokio_stream::{Stream, StreamExt};
use tokio_stream::StreamExt;
use tracing::{Instrument, trace};
use crate::{HlBlock, node::primitives::HlPrimitives};
pub trait EthWrapper:
EthApiServer<
RpcTxReq<Self::NetworkTypes>,
RpcTransaction<Self::NetworkTypes>,
RpcBlock<Self::NetworkTypes>,
RpcReceipt<Self::NetworkTypes>,
RpcHeader<Self::NetworkTypes>,
> + FullEthApiTypes<
Primitives = HlPrimitives,
NetworkTypes: RpcTypes<TransactionResponse = alloy_rpc_types_eth::Transaction>,
> + RpcNodeCoreExt<Provider: BlockReader<Block = HlBlock>>
+ EthBlocks
+ EthTransactions
+ LoadReceipt
+ 'static
{
}
impl<T> EthWrapper for T where
T: EthApiServer<
RpcTxReq<Self::NetworkTypes>,
RpcTransaction<Self::NetworkTypes>,
RpcBlock<Self::NetworkTypes>,
RpcReceipt<Self::NetworkTypes>,
RpcHeader<Self::NetworkTypes>,
> + FullEthApiTypes<
Primitives = HlPrimitives,
NetworkTypes: RpcTypes<TransactionResponse = alloy_rpc_types_eth::Transaction>,
> + RpcNodeCoreExt<Provider: BlockReader<Block = HlBlock>>
+ EthBlocks
+ EthTransactions
+ LoadReceipt
+ 'static
{
}
use crate::addons::utils::{EthWrapper, new_headers_stream, pipe_from_stream};
#[rpc(server, namespace = "eth")]
#[async_trait]
@ -387,7 +348,7 @@ where
)
.await;
} else {
let _ = pubsub.handle_accepted(sink, kind, params).await;
let _ = pipe_from_stream(sink, new_headers_stream::<Eth>(&provider)).await;
}
}));
Ok(())
@ -412,23 +373,6 @@ fn adjust_log<Eth: EthWrapper>(mut log: Log, provider: &Eth::Provider) -> Option
Some(log)
}
async fn pipe_from_stream<T: Serialize, St: Stream<Item = T> + Unpin>(
sink: SubscriptionSink,
mut stream: St,
) -> Result<(), ErrorObject<'static>> {
loop {
tokio::select! {
_ = sink.closed() => break Ok(()),
maybe_item = stream.next() => {
let Some(item) = maybe_item else { break Ok(()) };
let msg = SubscriptionMessage::new(sink.method_name(), sink.subscription_id(), &item)
.map_err(SubscriptionSerializeError::from)?;
if sink.send(msg).await.is_err() { break Ok(()); }
}
}
}
}
pub struct HlNodeBlockFilterHttp<Eth: EthWrapper> {
eth_api: Arc<Eth>,
_marker: PhantomData<Eth>,

View File

@ -1,3 +1,5 @@
pub mod call_forwarder;
pub mod hl_node_compliance;
pub mod tx_forwarder;
pub mod subscribe_fixup;
mod utils;

View File

@ -0,0 +1,54 @@
use crate::addons::utils::{EthWrapper, new_headers_stream, pipe_from_stream};
use alloy_rpc_types::pubsub::{Params, SubscriptionKind};
use async_trait::async_trait;
use jsonrpsee::PendingSubscriptionSink;
use jsonrpsee_types::ErrorObject;
use reth::tasks::TaskSpawner;
use reth_rpc::EthPubSub;
use reth_rpc_convert::RpcTransaction;
use reth_rpc_eth_api::{EthApiTypes, EthPubSubApiServer};
use std::sync::Arc;
pub struct SubscribeFixup<Eth: EthWrapper> {
pubsub: Arc<EthPubSub<Eth>>,
provider: Arc<Eth::Provider>,
subscription_task_spawner: Box<dyn TaskSpawner + 'static>,
}
#[async_trait]
impl<Eth: EthWrapper> EthPubSubApiServer<RpcTransaction<Eth::NetworkTypes>> for SubscribeFixup<Eth>
where
ErrorObject<'static>: From<<Eth as EthApiTypes>::Error>,
{
async fn subscribe(
&self,
pending: PendingSubscriptionSink,
kind: SubscriptionKind,
params: Option<Params>,
) -> jsonrpsee::core::SubscriptionResult {
let sink = pending.accept().await?;
let (pubsub, provider) = (self.pubsub.clone(), self.provider.clone());
self.subscription_task_spawner.spawn(Box::pin(async move {
if kind == SubscriptionKind::NewHeads {
let _ = pipe_from_stream(sink, new_headers_stream::<Eth>(&provider)).await;
} else {
let _ = pubsub.handle_accepted(sink, kind, params).await;
}
}));
Ok(())
}
}
impl<Eth: EthWrapper> SubscribeFixup<Eth> {
pub fn new(
pubsub: Arc<EthPubSub<Eth>>,
provider: Arc<Eth::Provider>,
subscription_task_spawner: Box<dyn TaskSpawner + 'static>,
) -> Self
where
Eth: EthWrapper,
ErrorObject<'static>: From<Eth::Error>,
{
Self { pubsub, provider, subscription_task_spawner }
}
}

90
src/addons/utils.rs Normal file
View File

@ -0,0 +1,90 @@
use std::sync::Arc;
use crate::{HlBlock, HlPrimitives};
use alloy_primitives::U256;
use alloy_rpc_types::Header;
use futures::StreamExt;
use jsonrpsee::{SubscriptionMessage, SubscriptionSink};
use jsonrpsee_types::ErrorObject;
use reth_primitives::SealedHeader;
use reth_provider::{BlockReader, CanonStateSubscriptions};
use reth_rpc::{RpcTypes, eth::pubsub::SubscriptionSerializeError};
use reth_rpc_convert::{RpcBlock, RpcHeader, RpcReceipt, RpcTransaction, RpcTxReq};
use reth_rpc_eth_api::{
EthApiServer, FullEthApiTypes, RpcNodeCoreExt,
helpers::{EthBlocks, EthTransactions, LoadReceipt},
};
use serde::Serialize;
use tokio_stream::Stream;
pub trait EthWrapper:
EthApiServer<
RpcTxReq<Self::NetworkTypes>,
RpcTransaction<Self::NetworkTypes>,
RpcBlock<Self::NetworkTypes>,
RpcReceipt<Self::NetworkTypes>,
RpcHeader<Self::NetworkTypes>,
> + FullEthApiTypes<
Primitives = HlPrimitives,
NetworkTypes: RpcTypes<TransactionResponse = alloy_rpc_types_eth::Transaction>,
> + RpcNodeCoreExt<Provider: BlockReader<Block = HlBlock>>
+ EthBlocks
+ EthTransactions
+ LoadReceipt
+ 'static
{
}
impl<T> EthWrapper for T where
T: EthApiServer<
RpcTxReq<Self::NetworkTypes>,
RpcTransaction<Self::NetworkTypes>,
RpcBlock<Self::NetworkTypes>,
RpcReceipt<Self::NetworkTypes>,
RpcHeader<Self::NetworkTypes>,
> + FullEthApiTypes<
Primitives = HlPrimitives,
NetworkTypes: RpcTypes<TransactionResponse = alloy_rpc_types_eth::Transaction>,
> + RpcNodeCoreExt<Provider: BlockReader<Block = HlBlock>>
+ EthBlocks
+ EthTransactions
+ LoadReceipt
+ 'static
{
}
pub(super) async fn pipe_from_stream<T: Serialize, St: Stream<Item = T> + Unpin>(
sink: SubscriptionSink,
mut stream: St,
) -> Result<(), ErrorObject<'static>> {
loop {
tokio::select! {
_ = sink.closed() => break Ok(()),
maybe_item = stream.next() => {
let Some(item) = maybe_item else { break Ok(()) };
let msg = SubscriptionMessage::new(sink.method_name(), sink.subscription_id(), &item)
.map_err(SubscriptionSerializeError::from)?;
if sink.send(msg).await.is_err() { break Ok(()); }
}
}
}
}
pub(super) fn new_headers_stream<Eth: EthWrapper>(
provider: &Arc<Eth::Provider>,
) -> impl Stream<Item = Header<alloy_consensus::Header>> {
provider.canonical_state_stream().flat_map(|new_chain| {
let headers = new_chain
.committed()
.blocks_iter()
.map(|block| {
Header::from_consensus(
SealedHeader::new(block.header().inner.clone(), block.hash()).into(),
None,
Some(U256::from(block.rlp_length())),
)
})
.collect::<Vec<_>>();
futures::stream::iter(headers)
})
}

View File

@ -1,12 +1,16 @@
use std::sync::Arc;
use clap::Parser;
use reth::builder::{NodeBuilder, NodeHandle, WithLaunchContext};
use reth::{
builder::{NodeBuilder, NodeHandle, WithLaunchContext},
rpc::{api::EthPubSubApiServer, eth::RpcNodeCore},
};
use reth_db::DatabaseEnv;
use reth_hl::{
addons::{
call_forwarder::{self, CallForwarderApiServer},
hl_node_compliance::install_hl_node_compliance,
subscribe_fixup::SubscribeFixup,
tx_forwarder::{self, EthForwarderApiServer},
},
chainspec::{HlChainSpec, parser::HlChainSpecParser},
@ -69,6 +73,17 @@ fn main() -> eyre::Result<()> {
info!("eth_getProof is disabled by default");
}
// This is a temporary workaround to fix the issue with custom headers
// affects `eth_subscribe[type=newHeads]`
ctx.modules.replace_configured(
SubscribeFixup::new(
Arc::new(ctx.registry.eth_handlers().pubsub.clone()),
Arc::new(ctx.registry.eth_api().provider().clone()),
Box::new(ctx.node().task_executor.clone()),
)
.into_rpc(),
)?;
ctx.modules.merge_configured(
HlBlockPrecompileExt::new(ctx.registry.eth_api().clone()).into_rpc(),
)?;

View File

@ -1,12 +1,15 @@
use crate::{
chainspec::{HlChainSpec, parser::HlChainSpecParser},
node::{HlNode, consensus::HlConsensus, evm::config::HlEvmConfig, storage::tables::Tables},
node::{
HlNode, consensus::HlConsensus, evm::config::HlEvmConfig, migrate::Migrator,
storage::tables::Tables,
},
pseudo_peer::BlockSourceArgs,
};
use clap::{Args, Parser};
use reth::{
CliRunner,
args::LogArgs,
args::{DatabaseArgs, DatadirArgs, LogArgs},
builder::{NodeBuilder, WithLaunchContext},
cli::Commands,
prometheus_exporter::install_prometheus_recorder,
@ -142,6 +145,8 @@ where
match self.command {
Commands::Node(command) => runner.run_command_until_exit(|ctx| {
Self::migrate_db(&command.chain, &command.datadir, &command.db)
.expect("Failed to migrate database");
command.execute(ctx, FnLauncher::new::<C, Ext>(launcher))
}),
Commands::Init(command) => {
@ -188,4 +193,13 @@ where
init_db_for::<_, Tables>(db_path, env.db.database_args())?;
Ok(())
}
fn migrate_db(
chain: &HlChainSpec,
datadir: &DatadirArgs,
db: &DatabaseArgs,
) -> eyre::Result<()> {
Migrator::<HlNode>::new(chain.clone(), datadir.clone(), *db)?.migrate_db()?;
Ok(())
}
}

429
src/node/migrate.rs Normal file
View File

@ -0,0 +1,429 @@
use alloy_consensus::Header;
use alloy_primitives::{B256, BlockHash, Bytes, U256, b256, hex::ToHexExt};
use reth::{
api::NodeTypesWithDBAdapter,
args::{DatabaseArgs, DatadirArgs},
dirs::{ChainPath, DataDirPath},
};
use reth_chainspec::EthChainSpec;
use reth_db::{
DatabaseEnv,
mdbx::{RO, tx::Tx},
models::CompactU256,
static_file::iter_static_files,
table::Decompress,
tables,
};
use reth_db_api::{
cursor::{DbCursorRO, DbCursorRW},
transaction::{DbTx, DbTxMut},
};
use reth_errors::ProviderResult;
use reth_ethereum_primitives::EthereumReceipt;
use reth_provider::{
DatabaseProvider, ProviderFactory, ReceiptProvider, StaticFileProviderFactory,
StaticFileSegment, StaticFileWriter,
providers::{NodeTypesForProvider, StaticFileProvider},
static_file::SegmentRangeInclusive,
};
use std::{fs::File, io::Write, path::PathBuf, sync::Arc};
use tracing::{info, warn};
use crate::{HlHeader, HlPrimitives, chainspec::HlChainSpec};
pub(crate) trait HlNodeType:
NodeTypesForProvider<ChainSpec = HlChainSpec, Primitives = HlPrimitives>
{
}
impl<N: NodeTypesForProvider<ChainSpec = HlChainSpec, Primitives = HlPrimitives>> HlNodeType for N {}
pub(super) struct Migrator<N: HlNodeType> {
data_dir: ChainPath<DataDirPath>,
provider_factory: ProviderFactory<NodeTypesWithDBAdapter<N, Arc<DatabaseEnv>>>,
}
impl<N: HlNodeType> Migrator<N> {
const MIGRATION_PATH_SUFFIX: &'static str = "migration-tmp";
pub fn new(
chain_spec: HlChainSpec,
datadir: DatadirArgs,
database_args: DatabaseArgs,
) -> eyre::Result<Self> {
let data_dir = datadir.clone().resolve_datadir(chain_spec.chain());
let provider_factory = Self::provider_factory(chain_spec, datadir, database_args)?;
Ok(Self { data_dir, provider_factory })
}
pub fn sf_provider(&self) -> StaticFileProvider<HlPrimitives> {
self.provider_factory.static_file_provider()
}
pub fn migrate_db(&self) -> eyre::Result<()> {
let is_empty = Self::highest_block_number(&self.sf_provider()).is_none();
if is_empty {
return Ok(());
}
self.migrate_db_inner()
}
fn highest_block_number(sf_provider: &StaticFileProvider<HlPrimitives>) -> Option<u64> {
sf_provider.get_highest_static_file_block(StaticFileSegment::Headers)
}
fn migrate_db_inner(&self) -> eyre::Result<()> {
let migrated_mdbx = MigratorMdbx::<N>(self).migrate_mdbx()?;
let migrated_static_files = MigrateStaticFiles::<N>(self).migrate_static_files()?;
if migrated_mdbx || migrated_static_files {
info!("Database migrated successfully");
}
Ok(())
}
fn conversion_tmp_dir(&self) -> PathBuf {
self.data_dir.data_dir().join(Self::MIGRATION_PATH_SUFFIX)
}
fn provider_factory(
chain_spec: HlChainSpec,
datadir: DatadirArgs,
database_args: DatabaseArgs,
) -> eyre::Result<ProviderFactory<NodeTypesWithDBAdapter<N, Arc<DatabaseEnv>>>> {
let data_dir = datadir.clone().resolve_datadir(chain_spec.chain());
let db_env = reth_db::init_db(data_dir.db(), database_args.database_args())?;
let static_file_provider = StaticFileProvider::read_only(data_dir.static_files(), false)?;
let db = Arc::new(db_env);
Ok(ProviderFactory::new(db, Arc::new(chain_spec), static_file_provider))
}
}
struct MigratorMdbx<'a, N: HlNodeType>(&'a Migrator<N>);
impl<'a, N: HlNodeType> MigratorMdbx<'a, N> {
fn migrate_mdbx(&self) -> eyre::Result<bool> {
// if any header is in old format, we need to migrate it, so we pick the first and last one
let db_env = self.0.provider_factory.provider()?;
let mut cursor = db_env.tx_ref().cursor_read::<tables::Headers<Bytes>>()?;
let migration_needed = {
let first_is_old = match cursor.first()? {
Some((number, header)) => using_old_header(number, &header),
None => false,
};
let last_is_old = match cursor.last()? {
Some((number, header)) => using_old_header(number, &header),
None => false,
};
first_is_old || last_is_old
};
if !migration_needed {
return Ok(false);
}
check_if_migration_enabled()?;
self.migrate_mdbx_inner()?;
Ok(true)
}
fn migrate_mdbx_inner(&self) -> eyre::Result<()> {
// There shouldn't be many headers in mdbx, but using file for safety
info!("Old database detected, migrating mdbx...");
let conversion_tmp = self.0.conversion_tmp_dir();
let tmp_path = conversion_tmp.join("headers.rmp");
if conversion_tmp.exists() {
std::fs::remove_dir_all(&conversion_tmp)?;
}
std::fs::create_dir_all(&conversion_tmp)?;
let count = self.export_old_headers(&tmp_path)?;
self.import_new_headers(tmp_path, count)?;
Ok(())
}
fn export_old_headers(&self, tmp_path: &PathBuf) -> Result<i32, eyre::Error> {
let db_env = self.0.provider_factory.provider()?;
let mut cursor_read = db_env.tx_ref().cursor_read::<tables::Headers<Bytes>>()?;
let mut tmp_writer = File::create(tmp_path)?;
let mut count = 0;
let old_headers = cursor_read.walk(None)?.filter_map(|row| {
let (block_number, header) = row.ok()?;
if !using_old_header(block_number, &header) {
None
} else {
Some((block_number, Header::decompress(&header).ok()?))
}
});
for (block_number, header) in old_headers {
let receipt =
db_env.receipts_by_block(block_number.into())?.expect("Receipt not found");
let new_header = to_hl_header(receipt, header);
tmp_writer.write_all(&rmp_serde::to_vec(&(block_number, new_header))?)?;
count += 1;
}
Ok(count)
}
fn import_new_headers(&self, tmp_path: PathBuf, count: i32) -> Result<(), eyre::Error> {
let mut tmp_reader = File::open(tmp_path)?;
let db_env = self.0.provider_factory.provider_rw()?;
let mut cursor_write = db_env.tx_ref().cursor_write::<tables::Headers<Bytes>>()?;
for _ in 0..count {
let (number, header) = rmp_serde::from_read::<_, (u64, HlHeader)>(&mut tmp_reader)?;
cursor_write.upsert(number, &rmp_serde::to_vec(&header)?.into())?;
}
db_env.commit()?;
Ok(())
}
}
fn check_if_migration_enabled() -> Result<(), eyre::Error> {
if std::env::var("EXPERIMENTAL_MIGRATE_DB").is_err() {
let err_msg = concat!(
"Detected an old database format but experimental database migration is currently disabled. ",
"To enable migration, set EXPERIMENTAL_MIGRATE_DB=1, or alternatively, resync your node (safest option)."
);
warn!("{}", err_msg);
return Err(eyre::eyre!("{}", err_msg));
}
Ok(())
}
struct MigrateStaticFiles<'a, N: HlNodeType>(&'a Migrator<N>);
impl<'a, N: HlNodeType> MigrateStaticFiles<'a, N> {
fn iterate_files_for_segment(
&self,
block_range: SegmentRangeInclusive,
dir: &PathBuf,
) -> eyre::Result<Vec<(PathBuf, String)>> {
let prefix = StaticFileSegment::Headers.filename(&block_range);
let entries = std::fs::read_dir(dir)?
.map(|res| res.map(|e| e.path()))
.collect::<Result<Vec<_>, _>>()?;
Ok(entries
.into_iter()
.filter_map(|path| {
let file_name = path.file_name().and_then(|f| f.to_str())?;
if file_name.starts_with(&prefix) {
Some((path.clone(), file_name.to_string()))
} else {
None
}
})
.collect())
}
fn create_placeholder(&self, block_range: SegmentRangeInclusive) -> eyre::Result<()> {
// The direction is opposite here
let src = self.0.data_dir.static_files();
let dst = self.0.conversion_tmp_dir();
for (src_path, file_name) in self.iterate_files_for_segment(block_range, &src)? {
let dst_path = dst.join(file_name);
if dst_path.exists() {
std::fs::remove_file(&dst_path)?;
}
std::os::unix::fs::symlink(src_path, dst_path)?;
}
Ok(())
}
fn move_static_files_for_segment(
&self,
block_range: SegmentRangeInclusive,
) -> eyre::Result<()> {
let src = self.0.conversion_tmp_dir();
let dst = self.0.data_dir.static_files();
for (src_path, file_name) in self.iterate_files_for_segment(block_range, &src)? {
let dst_path = dst.join(file_name);
std::fs::remove_file(&dst_path)?;
std::fs::rename(&src_path, &dst_path)?;
}
// Still StaticFileProvider needs the file to exist, so we create a symlink
self.create_placeholder(block_range)
}
fn migrate_static_files(&self) -> eyre::Result<bool> {
let conversion_tmp = self.0.conversion_tmp_dir();
let old_path = self.0.data_dir.static_files();
if conversion_tmp.exists() {
std::fs::remove_dir_all(&conversion_tmp)?;
}
std::fs::create_dir_all(&conversion_tmp)?;
let mut all_static_files = iter_static_files(&old_path)?;
let all_static_files =
all_static_files.remove(&StaticFileSegment::Headers).unwrap_or_default();
let mut first = true;
for (block_range, _tx_ranges) in all_static_files {
let migration_needed = self.using_old_header(block_range.start())?
|| self.using_old_header(block_range.end())?;
if !migration_needed {
// Create a placeholder symlink
self.create_placeholder(block_range)?;
continue;
}
if first {
check_if_migration_enabled()?;
info!("Old database detected, migrating static files...");
first = false;
}
let sf_provider = self.0.sf_provider();
let sf_tmp_provider = StaticFileProvider::<HlPrimitives>::read_write(&conversion_tmp)?;
let provider = self.0.provider_factory.provider()?;
let block_range_for_filename = sf_provider.find_fixed_range(block_range.start());
migrate_single_static_file(&sf_tmp_provider, &sf_provider, &provider, block_range)?;
self.move_static_files_for_segment(block_range_for_filename)?;
}
Ok(!first)
}
fn using_old_header(&self, number: u64) -> eyre::Result<bool> {
let sf_provider = self.0.sf_provider();
let content = old_headers_range(&sf_provider, number..=number)?;
let &[row] = &content.as_slice() else {
warn!("No header found for block {}", number);
return Ok(false);
};
Ok(using_old_header(number, &row[0]))
}
}
// Problem is that decompress just panics when the header is not valid
// So we need heuristics...
fn is_old_header(header: &[u8]) -> bool {
const SHA3_UNCLE_OFFSET: usize = 0x24;
const SHA3_UNCLE_HASH: B256 =
b256!("1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347");
const GENESIS_PREFIX: [u8; 4] = [0x01, 0x20, 0x00, 0xf8];
let Some(sha3_uncle_hash) = header.get(SHA3_UNCLE_OFFSET..SHA3_UNCLE_OFFSET + 32) else {
return false;
};
if sha3_uncle_hash == SHA3_UNCLE_HASH {
return true;
}
// genesis block might be different
if header.starts_with(&GENESIS_PREFIX) {
return true;
}
false
}
fn is_new_header(header: &[u8]) -> bool {
rmp_serde::from_slice::<HlHeader>(header).is_ok()
}
fn migrate_single_static_file<N: HlNodeType>(
sf_out: &StaticFileProvider<HlPrimitives>,
sf_in: &StaticFileProvider<HlPrimitives>,
provider: &DatabaseProvider<Tx<RO>, NodeTypesWithDBAdapter<N, Arc<DatabaseEnv>>>,
block_range: SegmentRangeInclusive,
) -> Result<(), eyre::Error> {
info!("Migrating block range {}...", block_range);
// block_ranges into chunks of 50000 blocks
const CHUNK_SIZE: u64 = 50000;
for chunk in (0..=block_range.end()).step_by(CHUNK_SIZE as usize) {
let end = std::cmp::min(chunk + CHUNK_SIZE - 1, block_range.end());
let block_range = chunk..=end;
let headers = old_headers_range(sf_in, block_range.clone())?;
let receipts = provider.receipts_by_block_range(block_range.clone())?;
assert_eq!(headers.len(), receipts.len());
let mut writer = sf_out.get_writer(*block_range.start(), StaticFileSegment::Headers)?;
let new_headers = std::iter::zip(headers, receipts)
.map(|(header, receipts)| {
let eth_header = Header::decompress(&header[0]).unwrap();
let hl_header = to_hl_header(receipts, eth_header);
let difficulty: U256 = CompactU256::decompress(&header[1]).unwrap().into();
let hash = BlockHash::decompress(&header[2]).unwrap();
(hl_header, difficulty, hash)
})
.collect::<Vec<_>>();
for header in new_headers {
writer.append_header(&header.0, header.1, &header.2)?;
}
writer.commit().unwrap();
info!("Migrated block range {:?}...", block_range);
}
Ok(())
}
fn to_hl_header(receipts: Vec<EthereumReceipt>, eth_header: Header) -> HlHeader {
let system_tx_count = receipts.iter().filter(|r| r.cumulative_gas_used == 0).count();
HlHeader::from_ethereum_header(eth_header, &receipts, system_tx_count as u64)
}
fn old_headers_range(
provider: &StaticFileProvider<HlPrimitives>,
block_range: impl std::ops::RangeBounds<u64>,
) -> ProviderResult<Vec<Vec<Vec<u8>>>> {
Ok(provider
.fetch_range_with_predicate(
StaticFileSegment::Headers,
to_range(block_range),
|cursor, number| {
cursor.get(number.into(), 0b111).map(|rows| {
rows.map(|columns| columns.into_iter().map(|column| column.to_vec()).collect())
})
},
|_| true,
)?
.into_iter()
.collect())
}
// Copied from reth
fn to_range<R: std::ops::RangeBounds<u64>>(bounds: R) -> std::ops::Range<u64> {
let start = match bounds.start_bound() {
std::ops::Bound::Included(&v) => v,
std::ops::Bound::Excluded(&v) => v + 1,
std::ops::Bound::Unbounded => 0,
};
let end = match bounds.end_bound() {
std::ops::Bound::Included(&v) => v + 1,
std::ops::Bound::Excluded(&v) => v,
std::ops::Bound::Unbounded => u64::MAX,
};
start..end
}
fn using_old_header(number: u64, header: &[u8]) -> bool {
let deserialized_old = is_old_header(header);
let deserialized_new = is_new_header(header);
assert!(
deserialized_old ^ deserialized_new,
"Header is not valid: {} {}\ndeserialized_old: {}\ndeserialized_new: {}",
number,
header.encode_hex(),
deserialized_old,
deserialized_new
);
deserialized_old && !deserialized_new
}

View File

@ -33,6 +33,7 @@ pub mod cli;
pub mod consensus;
pub mod engine;
pub mod evm;
pub mod migrate;
pub mod network;
pub mod primitives;
pub mod rpc;

View File

@ -3,8 +3,8 @@ use alloy_primitives::Address;
use reth_primitives_traits::{BlockBody as BlockBodyTrait, InMemorySize};
use serde::{Deserialize, Serialize};
use crate::node::primitives::{BlockBody, TransactionSigned};
pub use crate::node::types::{ReadPrecompileCall, ReadPrecompileCalls};
use crate::node::types::{ReadPrecompileCall, ReadPrecompileCalls};
use crate::{HlHeader, node::primitives::TransactionSigned};
/// Block body for HL. It is equivalent to Ethereum [`BlockBody`] but additionally stores sidecars
/// for blob transactions.
@ -29,13 +29,17 @@ pub struct HlBlockBody {
pub highest_precompile_address: Option<Address>,
}
pub type BlockBody = alloy_consensus::BlockBody<TransactionSigned, HlHeader>;
impl InMemorySize for HlBlockBody {
fn size(&self) -> usize {
self.inner.size() +
self.sidecars
self.inner.size()
+ self
.sidecars
.as_ref()
.map_or(0, |s| s.capacity() * core::mem::size_of::<BlobTransactionSidecar>()) +
self.read_precompile_calls
.map_or(0, |s| s.capacity() * core::mem::size_of::<BlobTransactionSidecar>())
+ self
.read_precompile_calls
.as_ref()
.map_or(0, |s| s.0.capacity() * core::mem::size_of::<ReadPrecompileCall>())
}

View File

@ -2,12 +2,12 @@ use reth_ethereum_primitives::Receipt;
use reth_primitives::NodePrimitives;
pub mod transaction;
pub use transaction::{BlockBody, TransactionSigned};
pub use transaction::TransactionSigned;
pub mod block;
pub use block::HlBlock;
pub mod body;
pub use body::HlBlockBody;
pub use body::{BlockBody, HlBlockBody};
pub mod header;
pub use header::HlHeader;

View File

@ -95,7 +95,7 @@ impl Decodable for HlBlockBody {
Ok(Self {
inner: BlockBody {
transactions: transactions.into_owned(),
ommers: ommers.into_owned().into_iter().map(Into::into).collect(),
ommers: ommers.into_owned(),
withdrawals: withdrawals.map(|w| w.into_owned()),
},
sidecars: sidecars.map(|s| s.into_owned()),

View File

@ -2,7 +2,7 @@
//! except that it supports pseudo signer for system transactions.
use std::convert::Infallible;
use crate::{evm::transaction::HlTxEnv, HlHeader};
use crate::evm::transaction::HlTxEnv;
use alloy_consensus::{
SignableTransaction, Signed, Transaction as TransactionTrait, TransactionEnvelope, TxEip1559,
TxEip2930, TxEip4844, TxEip7702, TxLegacy, TxType, TypedTransaction, crypto::RecoveryError,
@ -181,8 +181,6 @@ impl SerdeBincodeCompat for TransactionSigned {
}
}
pub type BlockBody = alloy_consensus::BlockBody<TransactionSigned, HlHeader>;
impl TryFrom<TransactionSigned> for PooledTransactionVariant {
type Error = <InnerType as TryInto<PooledTransactionVariant>>::Error;
@ -211,22 +209,6 @@ impl Decompress for TransactionSigned {
}
}
pub fn convert_to_eth_block_body(value: BlockBody) -> alloy_consensus::BlockBody<InnerType, HlHeader> {
alloy_consensus::BlockBody {
transactions: value.transactions.into_iter().map(|tx| tx.into_inner()).collect(),
ommers: value.ommers.into_iter().map(|ommer| ommer.into()).collect(),
withdrawals: value.withdrawals,
}
}
pub fn convert_to_hl_block_body(value: alloy_consensus::BlockBody<InnerType, HlHeader>) -> BlockBody {
BlockBody {
transactions: value.transactions.into_iter().map(TransactionSigned::Default).collect(),
ommers: value.ommers,
withdrawals: value.withdrawals,
}
}
impl TryIntoSimTx<TransactionSigned> for TransactionRequest {
fn try_into_sim_tx(self) -> Result<TransactionSigned, ValueError<Self>> {
let tx = self

View File

@ -1,9 +1,6 @@
use crate::{
HlBlock, HlBlockBody, HlHeader, HlPrimitives,
node::{
primitives::transaction::{convert_to_eth_block_body, convert_to_hl_block_body},
types::HlExtras,
},
node::{primitives::TransactionSigned, types::HlExtras},
};
use alloy_consensus::BlockHeader;
use alloy_primitives::Bytes;
@ -13,7 +10,6 @@ use reth_db::{
cursor::{DbCursorRO, DbCursorRW},
transaction::{DbTx, DbTxMut},
};
use reth_primitives::TransactionSigned;
use reth_primitives_traits::Block;
use reth_provider::{
BlockBodyReader, BlockBodyWriter, ChainSpecProvider, ChainStorageReader, ChainStorageWriter,
@ -91,30 +87,17 @@ where
let mut read_precompile_calls = Vec::with_capacity(bodies.len());
for (block_number, body) in bodies {
match body {
let (inner_opt, extras) = match body {
Some(HlBlockBody {
inner,
sidecars: _,
read_precompile_calls: rpc,
read_precompile_calls,
highest_precompile_address,
}) => {
eth_bodies.push((block_number, Some(convert_to_eth_block_body(inner))));
read_precompile_calls.push((
block_number,
HlExtras { read_precompile_calls: rpc, highest_precompile_address },
));
}
None => {
eth_bodies.push((block_number, None));
read_precompile_calls.push((
block_number,
HlExtras {
read_precompile_calls: Default::default(),
highest_precompile_address: None,
},
));
}
}
}) => (Some(inner), HlExtras { read_precompile_calls, highest_precompile_address }),
None => Default::default(),
};
eth_bodies.push((block_number, inner_opt));
read_precompile_calls.push((block_number, extras));
}
self.0.write_block_bodies(provider, eth_bodies, write_to)?;
@ -148,12 +131,6 @@ where
inputs: Vec<ReadBodyInput<'_, Self::Block>>,
) -> ProviderResult<Vec<HlBlockBody>> {
let read_precompile_calls = self.read_precompile_calls(provider, &inputs)?;
let inputs: Vec<(&HlHeader, _)> = inputs
.into_iter()
.map(|(header, transactions)| {
(header, transactions.into_iter().map(|tx| tx.into_inner()).collect())
})
.collect();
let inputs: Vec<(&<Self::Block as Block>::Header, _)> = inputs;
let eth_bodies = self.0.read_block_bodies(provider, inputs)?;
let eth_bodies: Vec<alloy_consensus::BlockBody<_, HlHeader>> = eth_bodies;
@ -163,7 +140,7 @@ where
.into_iter()
.zip(read_precompile_calls)
.map(|(inner, extra)| HlBlockBody {
inner: convert_to_hl_block_body(inner),
inner,
sidecars: None,
read_precompile_calls: extra.read_precompile_calls,
highest_precompile_address: extra.highest_precompile_address,

View File

@ -19,10 +19,7 @@ pub struct ReadPrecompileCalls(pub Vec<ReadPrecompileCall>);
pub(crate) mod reth_compat;
#[derive(
Debug, Clone, Serialize, Deserialize, Default, RlpEncodable, RlpDecodable, Eq, PartialEq, Hash,
)]
#[rlp(trailing)]
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct HlExtras {
pub read_precompile_calls: Option<ReadPrecompileCalls>,
pub highest_precompile_address: Option<Address>,
@ -30,8 +27,8 @@ pub struct HlExtras {
impl InMemorySize for HlExtras {
fn size(&self) -> usize {
self.read_precompile_calls.as_ref().map_or(0, |s| s.0.len())
+ self.highest_precompile_address.as_ref().map_or(0, |_| 20)
self.read_precompile_calls.as_ref().map_or(0, |s| s.0.len()) +
self.highest_precompile_address.as_ref().map_or(0, |_| 20)
}
}

View File

@ -81,13 +81,13 @@ impl BlockPoller {
.await
.ok_or(eyre::eyre!("Failed to find latest block number"))?;
if let Some(debug_cutoff_height) = debug_cutoff_height &&
next_block_number > debug_cutoff_height
loop {
if let Some(debug_cutoff_height) = debug_cutoff_height
&& next_block_number > debug_cutoff_height
{
next_block_number = debug_cutoff_height;
}
loop {
match block_source.collect_block(next_block_number).await {
Ok(block) => {
block_tx.send((next_block_number, block)).await?;

49
tests/run_tests.sh Normal file
View File

@ -0,0 +1,49 @@
#!/bin/bash
set -e
export ETH_RPC_URL="${ETH_RPC_URL:-wss://hl-archive-node.xyz}"
success() {
echo "Success: $1"
}
fail() {
echo "Failed: $1"
exit 1
}
ensure_cmd() {
command -v "$1" > /dev/null 2>&1 || fail "$1 is required"
}
ensure_cmd jq
ensure_cmd cast
ensure_cmd wscat
if [[ ! "$ETH_RPC_URL" =~ ^wss?:// ]]; then
fail "ETH_RPC_URL must be a websocket url"
fi
TITLE="Issue #78 - eth_getLogs should return system transactions"
cast logs \
--rpc-url "$ETH_RPC_URL" \
--from-block 15312567 \
--to-block 15312570 \
--address 0x9fdbda0a5e284c32744d2f17ee5c74b284993463 \
0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef \
| grep -q "0x00000000000000000000000020000000000000000000000000000000000000c5" \
&& success "$TITLE" || fail "$TITLE"
TITLE="Issue #78 - eth_getBlockByNumber should return the same logsBloom as official RPC"
OFFICIAL_RPC="https://rpc.hyperliquid.xyz/evm"
A=$(cast block 1394092 --rpc-url "$ETH_RPC_URL" -f logsBloom | md5sum)
B=$(cast block 1394092 --rpc-url "$OFFICIAL_RPC" -f logsBloom | md5sum)
echo node "$A"
echo rpc\ "$B"
[[ "$A" == "$B" ]] && success "$TITLE" || fail "$TITLE"
TITLE="eth_subscribe newHeads via wscat"
CMD='{"jsonrpc":"2.0","id":1,"method":"eth_subscribe","params":["newHeads"]}'
wscat -w 2 -c "$ETH_RPC_URL" -x "$CMD" | tail -1 | jq -r .params.result.nonce | grep 0x \
&& success "$TITLE" || fail "$TITLE"