Skip to content

Commit 26e4a8a

Browse files
frisitanogreged93
authored andcommitted
Rollup node manager (#21)
* init bridge implementation * extend bridge implementation * refactor and clean up dependencies * add .vscode to .gitignore * lint * spacing * cleanup * wrap inner block import in bridge * add bridge integration test * refactor and clean up * add comments * migrate shared dependencies to workspace * feature propogation * lints and feature fix * remove scroll feature * add scroll feature * integrate reth upstream changes * address PR feedback * stash * add systemd service file * update systemd file * update systemd file * address comments * rollup node manager * merge main * add Cargo.lock * lint * lint * lint * lint * ci remove no-dev-deps * fix serde dep - scroll-wire * skip no_std on scroll-engine and scroll-rollup-node * skip no_std on scroll-engine and scroll-rollup-node * address comments * lints * cleanup * tsets * lint + refactor * refactor engine api call ordering * lint * fix fcu * lint * remove syncing error return on new payload * update forkchoice state after succesfully new payload * update reth following chainspec fork id logic change * PR feedback * lints * lints
1 parent 065fe5b commit 26e4a8a

File tree

8 files changed

+582
-872
lines changed

8 files changed

+582
-872
lines changed

Cargo.lock

Lines changed: 489 additions & 781 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,11 @@ exclude = [".github/"]
77

88
[workspace]
99
members = [
10-
"bin/bridge",
10+
"bin/bridge",
1111
"crates/engine",
1212
"crates/node",
1313
"crates/network",
14-
"crates/scroll-wire",
15-
"crates/watcher",
16-
"crates/primitives",
14+
"crates/scroll-wire"
1715
]
1816

1917
resolver = "2"
@@ -109,17 +107,12 @@ too_long_first_doc_paragraph = "allow"
109107
# alloy
110108
alloy-chains = { version = "0.1.32", default-features = false }
111109
alloy-eips = { version = "0.9.2", default-features = false }
112-
alloy-json-rpc = { version = "0.9.2", default-features = false }
113-
alloy-network = { version = "0.9.2", default-features = false }
114110
alloy-primitives = { version = "0.8.15", default-features = false }
115-
alloy-provider = { version = "0.9.2", default-features = false }
116-
alloy-rpc-types-engine = { version = "0.9.2", default-features = false }
117-
alloy-rpc-types-eth = { version = "0.9.2", default-features = false }
118-
alloy-transport = { version = "0.9.2", default-features = false }
111+
alloy-rpc-types-engine = { version = "0.11.0", default-features = false }
119112

120113
# scroll-alloy
121114
scroll-alloy-provider = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" }
122-
scroll-alloy-network = { git = "https://github.com/scroll-tech/reth.git", default-features = false }
115+
scroll-alloy-network = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" }
123116

124117
# reth
125118
reth-eth-wire-types = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" }
@@ -142,15 +135,12 @@ scroll-engine = { path = "crates/engine" }
142135
scroll-network = { path = "crates/network" }
143136
scroll-wire = { path = "crates/scroll-wire" }
144137
rollup-node-manager = { path = "crates/node" }
145-
rollup-node-watcher = { path = "crates/watcher" }
146-
rollup-node-primitives = { path = "crates/primitives" }
147138

148139
# misc
149-
async-trait = "0.1"
150140
eyre = "0.6"
151141
futures = { version = "0.3", default-features = false }
152142
secp256k1 = { version = "0.29", default-features = false }
153-
thiserror = "2.0"
143+
serde = { version = "1.0", default-features = false }
154144
tokio = { version = "1.39", default-features = false }
155145
tokio-stream = { version = "0.1", default-features = false }
156146
tracing = "0.1.0"
@@ -163,3 +153,4 @@ revm-interpreter = { git = "https://github.com/scroll-tech/revm.git", branch = "
163153
ff = { git = "https://github.com/scroll-tech/ff", branch = "feat/sp1" }
164154

165155
alloy-eip2930 = { git = "https://github.com/scroll-tech/alloy-eips", branch = "v0.3.2" }
156+

bin/bridge/Cargo.toml

Lines changed: 32 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ alloy-rpc-types-engine.workspace = true
1414
# scroll-alloy
1515
scroll-alloy-consensus = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" }
1616
scroll-alloy-network = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" }
17-
scroll-alloy-rpc-types-engine = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" }
17+
scroll-alloy-rpc-types-engine= { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" }
1818
scroll-alloy-provider.workspace = true
1919

2020
# reth
@@ -27,7 +27,7 @@ reth-node-builder = { git = "https://github.com/scroll-tech/reth.git", branch =
2727
reth-node-core = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" }
2828
reth-node-types = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" }
2929
reth-primitives.workspace = true
30-
reth-provider = { workspace = true, features = ["scroll", "skip-state-root-validation"] }
30+
reth-provider = { workspace = true, features = ["scroll", "skip-state-root-validation"]}
3131
reth-rpc-api = { workspace = true, features = ["client"] }
3232
reth-rpc-builder = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" }
3333
reth-transaction-pool = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" }
@@ -49,13 +49,18 @@ rollup-node-manager.workspace = true
4949
clap = { version = "4", features = ["derive", "env"] }
5050
eyre.workspace = true
5151
futures.workspace = true
52-
secp256k1 = { workspace = true, features = ["global-context", "recovery"] }
52+
secp256k1 = { workspace = true, features = [
53+
"global-context",
54+
"recovery",
55+
] }
5356
tokio = { workspace = true, features = ["full"] }
5457
tracing.workspace = true
5558

5659
[dev-dependencies]
5760
# alloy
58-
alloy-primitives = { workspace = true, default-features = false, features = ["map-foldhash"] }
61+
alloy-primitives = { workspace = true, default-features = false, features = [
62+
"map-foldhash",
63+
] }
5964
alloy-rpc-types-engine.workspace = true
6065

6166
# reth
@@ -65,36 +70,36 @@ reth-rpc-server-types = { git = "https://github.com/scroll-tech/reth.git", branc
6570
reth-tasks.workspace = true
6671
reth-tracing = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" }
6772

68-
#  misc
73+
# misc
6974
serde_json = { version = "1.0.94", default-features = false, features = ["alloc"] }
7075
tokio = { workspace = true, features = ["full"] }
7176

7277
[features]
7378
test-utils = [
74-
"reth-network/test-utils",
75-
"reth-node-builder/test-utils",
76-
"reth-primitives/test-utils",
77-
"reth-provider/test-utils",
78-
"reth-transaction-pool/test-utils",
79-
"scroll-engine/test-utils",
80-
"reth-payload-builder/test-utils",
81-
"reth-payload-builder/test-utils",
79+
"reth-network/test-utils",
80+
"reth-node-builder/test-utils",
81+
"reth-primitives/test-utils",
82+
"reth-provider/test-utils",
83+
"reth-transaction-pool/test-utils",
84+
"scroll-engine/test-utils",
85+
"reth-payload-builder/test-utils",
86+
"reth-payload-builder/test-utils"
8287
]
8388
serde = [
84-
"alloy-primitives/serde",
85-
"alloy-rpc-types-engine/serde",
86-
"reth-eth-wire-types/serde",
87-
"reth-network/serde",
88-
"reth-provider/serde",
89-
"reth-scroll-primitives/serde",
90-
"scroll-alloy-consensus/serde",
91-
"scroll-alloy-rpc-types-engine/serde",
92-
"scroll-engine/serde",
93-
"scroll-network/serde",
94-
"scroll-wire/serde",
95-
"secp256k1/serde",
96-
"rollup-node-manager/serde",
97-
"alloy-chains/serde",
89+
"alloy-primitives/serde",
90+
"alloy-rpc-types-engine/serde",
91+
"reth-eth-wire-types/serde",
92+
"reth-network/serde",
93+
"reth-provider/serde",
94+
"reth-scroll-primitives/serde",
95+
"scroll-alloy-consensus/serde",
96+
"scroll-alloy-rpc-types-engine/serde",
97+
"scroll-engine/serde",
98+
"scroll-network/serde",
99+
"scroll-wire/serde",
100+
"secp256k1/serde",
101+
"rollup-node-manager/serde",
102+
"alloy-chains/serde"
98103
]
99104

100105
[[bin]]

crates/engine/Cargo.toml

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ scroll-alloy-provider.workspace = true
2222
scroll-alloy-rpc-types-engine = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" }
2323

2424
# reth
25+
reth-engine-primitives = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api", default-features = false, features = ["scroll"] }
26+
reth-network-peers.workspace = true
2527
reth-payload-primitives = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" }
2628
reth-primitives = { workspace = true }
2729

@@ -30,12 +32,10 @@ reth-scroll-chainspec.workspace = true
3032
reth-scroll-primitives = { workspace = true, features = ["scroll"] }
3133
reth-scroll-engine-primitives = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api", default-features = false, features = ["scroll"] }
3234

33-
# rollup-node
34-
rollup-node-primitives.workspace = true
35-
3635
# misc
37-
async-trait.workspace = true
36+
async-trait = "0.1.68"
3837
eyre.workspace = true
38+
serde = { workspace = true, features = ["derive"] }
3939
tokio.workspace = true
4040
tracing.workspace = true
4141

@@ -48,23 +48,23 @@ reth-testing-utils = { git = "https://github.com/scroll-tech/reth.git", branch =
4848

4949
[features]
5050
arbitrary = [
51-
"alloy-primitives/arbitrary",
52-
"reth-primitives/arbitrary",
53-
"alloy-eips/arbitrary",
54-
"reth-scroll-primitives/arbitrary",
55-
"scroll-alloy-rpc-types-engine/arbitrary",
56-
"alloy-chains/arbitrary",
51+
"alloy-primitives/arbitrary",
52+
"reth-primitives/arbitrary",
53+
"alloy-eips/arbitrary",
54+
"reth-scroll-primitives/arbitrary",
55+
"scroll-alloy-rpc-types-engine/arbitrary",
56+
"alloy-chains/arbitrary"
5757
]
5858
test-utils = [
59-
"arbitrary",
60-
"dep:arbitrary",
61-
"reth-primitives/test-utils",
59+
"arbitrary",
60+
"dep:arbitrary",
61+
"reth-primitives/test-utils"
6262
]
6363
serde = [
64-
"alloy-eips/serde",
65-
"alloy-primitives/serde",
66-
"alloy-rpc-types-engine/serde",
67-
"reth-scroll-primitives/serde",
68-
"scroll-alloy-rpc-types-engine/serde",
69-
"alloy-chains/serde",
64+
"alloy-eips/serde",
65+
"alloy-primitives/serde",
66+
"alloy-rpc-types-engine/serde",
67+
"reth-scroll-primitives/serde",
68+
"scroll-alloy-rpc-types-engine/serde",
69+
"alloy-chains/serde"
7070
]

crates/engine/src/engine.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
1+
use crate::{block_info::BlockInfo, payload::matching_payloads};
2+
13
use super::error::EngineDriverError;
2-
use crate::payload::matching_payloads;
34
use crate::ExecutionPayloadProvider;
4-
55
use alloy_rpc_types_engine::{
66
ExecutionPayload, ExecutionPayloadV1, ForkchoiceState, ForkchoiceUpdated, PayloadId,
77
PayloadStatusEnum,
88
};
99
use eyre::Result;
1010
use reth_payload_primitives::PayloadTypes;
1111
use reth_scroll_engine_primitives::ScrollEngineTypes;
12-
use rollup_node_primitives::BlockInfo;
1312
use scroll_alloy_provider::ScrollEngineApi;
1413

1514
use tokio::time::Duration;
@@ -175,7 +174,7 @@ where
175174
match &response.status {
176175
PayloadStatusEnum::Invalid { validation_error } => {
177176
error!(target: "scroll::engine::driver", ?validation_error, "execution payload is invalid");
178-
return Err(EngineDriverError::InvalidExecutionPayload);
177+
return Err(EngineDriverError::InvalidExecutionPayload)
179178
}
180179
PayloadStatusEnum::Syncing => {
181180
debug!(target: "scroll::engine::driver", "execution client is syncing");
@@ -208,7 +207,7 @@ where
208207
match &forkchoice_updated.payload_status.status {
209208
PayloadStatusEnum::Invalid { validation_error } => {
210209
error!(target: "scroll::engine::driver", ?validation_error, "failed to issue forkchoice");
211-
return Err(EngineDriverError::InvalidFcu);
210+
return Err(EngineDriverError::InvalidFcu)
212211
}
213212
PayloadStatusEnum::Syncing => {
214213
debug!(target: "scroll::engine::driver", "head has been seen before, but not part of the chain");

crates/network/Cargo.toml

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ exclude.workspace = true
88

99
[dependencies]
1010
# alloy
11-
alloy-primitives = { workspace = true, features = ["map-foldhash"] }
11+
alloy-primitives = { workspace = true, features = [
12+
"map-foldhash",
13+
] }
1214

1315
# reth
1416
reth-discv5 = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" }
@@ -37,13 +39,13 @@ tracing.workspace = true
3739

3840
[features]
3941
serde = [
40-
"alloy-primitives/serde",
41-
"parking_lot/serde",
42-
"reth-eth-wire-types/serde",
43-
"reth-network/serde",
44-
"reth-network-api/serde",
45-
"reth-network-types/serde",
46-
"reth-scroll-primitives/serde",
47-
"scroll-wire/serde",
48-
"secp256k1/serde",
42+
"alloy-primitives/serde",
43+
"parking_lot/serde",
44+
"reth-eth-wire-types/serde",
45+
"reth-network/serde",
46+
"reth-network-api/serde",
47+
"reth-network-types/serde",
48+
"reth-scroll-primitives/serde",
49+
"scroll-wire/serde",
50+
"secp256k1/serde"
4951
]

crates/node/Cargo.toml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,11 @@ workspace = true
4343

4444
[features]
4545
serde = [
46-
"alloy-rpc-types-engine/serde",
47-
"reth-scroll-primitives/serde",
48-
"scroll-engine/serde",
49-
"scroll-network/serde",
50-
"scroll-wire/serde",
51-
"secp256k1/serde",
52-
"alloy-eips/serde",
46+
"alloy-rpc-types-engine/serde",
47+
"reth-scroll-primitives/serde",
48+
"scroll-engine/serde",
49+
"scroll-network/serde",
50+
"scroll-wire/serde",
51+
"secp256k1/serde",
52+
"alloy-eips/serde"
5353
]

crates/scroll-wire/Cargo.toml

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ workspace = true
1111

1212
[dependencies]
1313
# alloy
14-
alloy-primitives = { workspace = true, features = ["map-foldhash"] }
14+
alloy-primitives = { workspace = true, features = [
15+
"map-foldhash",
16+
] }
1517
alloy-rlp = { version = "0.3.10", default-features = false }
1618

1719
# reth
@@ -25,17 +27,20 @@ reth-scroll-primitives = { workspace = true, features = ["serde"] }
2527

2628
# misc
2729
futures.workspace = true
28-
secp256k1 = { workspace = true, features = ["global-context", "recovery"] }
30+
secp256k1 = { workspace = true, features = [
31+
"global-context",
32+
"recovery",
33+
] }
2934
tokio = { workspace = true, features = ["full"] }
3035
tokio-stream.workspace = true
3136
tracing.workspace = true
3237

3338
[features]
3439
serde = [
35-
"alloy-primitives/serde",
36-
"reth-eth-wire/serde",
37-
"reth-network/serde",
38-
"reth-network-api/serde",
39-
"reth-scroll-primitives/serde",
40-
"secp256k1/serde",
40+
"alloy-primitives/serde",
41+
"reth-eth-wire/serde",
42+
"reth-network/serde",
43+
"reth-network-api/serde",
44+
"reth-scroll-primitives/serde",
45+
"secp256k1/serde"
4146
]

0 commit comments

Comments
 (0)