Skip to content

Commit f7755cc

Browse files
authored
Version bumps, pectra tested (#184)
1 parent 77a6e5d commit f7755cc

25 files changed

Lines changed: 467 additions & 224 deletions

File tree

Makefile

Lines changed: 53 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,39 @@ OS := $(shell uname -s)
1313

1414
# Variables
1515
IMAGE_KEY_TO_ADDRESS:=ghcr.io/gattaca-com/based-op/key-to-address:latest
16+
## This image is totally vanilla, but automatically sets isthmus at genesis when using v3.0.0 contracts
17+
IMAGE_OP_DEPLOYER:=ghcr.io/gattaca-com/based-optimism/based-op-deployer:latest
1618

1719

1820
START_GATEWAY_COMPOSE_FILES := -f .local_gateway_and_follower/compose.yml
19-
ifeq ($(OS),Darwin)
20-
START_GATEWAY_COMPOSE_FILES += -f .local_gateway_and_follower/compose.mac.yml
21-
endif
21+
START_MAIN_NODE_COMPOSE_FILES := -f .local_main_node/compose.yml
2222

2323
# Overridable Variables
24+
L1_CHAIN_ID?=11155111
25+
L2_CHAIN_ID?=$(shell \
26+
RAW=$$(od -An -N2 -tu2 /dev/urandom | tr -d ' '); \
27+
echo $$((RAW % 50000 + 1)); \
28+
)
29+
L2_CHAIN_ID_HEX:=$(shell printf "0x%064x" $(L2_CHAIN_ID))
30+
PORTAL?=http://18.185.199.51:8080
31+
L1_RPC_URL?=http://34.194.193.217:8545
32+
L1_BEACON_RPC_URL?=http://34.194.193.217:5052
33+
PUBLIC_IP?=$(shell curl ifconfig.me)
34+
# if GATEWAY_SEQUENCING_KEY is set, use that one, otherwise key_to_address will generate a new one
35+
GATEWAY_SEQUENCING_KEY ?= $(shell \
36+
[ -f .local_gateway_and_follower/.env ] && \
37+
grep -m1 '^GATEWAY_SEQUENCING_KEY=' .local_gateway_and_follower/.env \
38+
| cut -d= -f2 \
39+
)
40+
_GATEWAY_KEY_AND_WALLET:=$(shell docker run --rm -i $(IMAGE_KEY_TO_ADDRESS) $(GATEWAY_SEQUENCING_KEY))
41+
GATEWAY_SEQUENCING_KEY:=$(word 1,$(_GATEWAY_KEY_AND_WALLET))
42+
GATEWAY_SEQUENCING_ADDRESS:=$(word 2,$(_GATEWAY_KEY_AND_WALLET))
43+
44+
BASED_GATEWAY_DATA_DIR?=.local_gateway_and_follower/data/gateway
45+
BASED_OP_NODE_DATA_DIR?=.local_gateway_and_follower/data/node
46+
BASED_OP_GETH_DATA_DIR?=.local_gateway_and_follower/data/geth
47+
48+
DEPLOYER_CACHE_DIR:=/tmp/op-deployer-cache
2449

2550
# Some servers default to executing shell scripts below with /bin/sh, we set bash to make sure our bash syntax works
2651
SHELL := /bin/bash
@@ -57,35 +82,25 @@ build-based-op-node: ## 🏗️ Build OP geth from op-eth directory
5782
--load \
5883
op-node
5984

85+
build-based-op-deployer: ## 🏗️ Build OP deployer from op-eth directory
86+
cd ../based-optimism && \
87+
IMAGE_TAGS=develop \
88+
docker buildx bake \
89+
-f docker-bake.hcl \
90+
--set op-deployer.tags=local_based_op_deployer \
91+
--load \
92+
op-deployer
93+
6094
build-rabby-chrom: ## 🏗️ Build modified Rabby wallet for Google Chrome and Firefox
6195
cd rabby && \
6296
yarn && \
6397
yarn build:pro && \
6498
yarn build:pro:mv2
6599

66-
L1_CHAIN_ID?=11155111
67-
L2_CHAIN_ID?=$(shell \
68-
RAW=$$(od -An -N2 -tu2 /dev/urandom | tr -d ' '); \
69-
echo $$((RAW % 50000 + 1)); \
70-
)
71-
L2_CHAIN_ID_HEX:=$(shell printf "0x%064x" $(L2_CHAIN_ID))
72-
PORTAL?=http://18.185.199.51:8080
73-
L1_RPC_URL?=http://34.194.193.217:8545
74-
L1_BEACON_RPC_URL?=http://34.194.193.217:5052
75-
# if GATEWAY_SEQUENCING_KEY is set, use that one, otherwise key_to_address will generate a new one
76-
GATEWAY_SEQUENCING_KEY ?= $(shell \
77-
[ -f .local_gateway_and_follower/.env ] && \
78-
grep -m1 '^GATEWAY_SEQUENCING_KEY=' .local_gateway_and_follower/.env \
79-
| cut -d= -f2 \
80-
)
81-
_GATEWAY_KEY_AND_WALLET:=$(shell docker run --rm -i $(IMAGE_KEY_TO_ADDRESS) $(GATEWAY_SEQUENCING_KEY))
82-
GATEWAY_SEQUENCING_KEY:=$(word 1,$(_GATEWAY_KEY_AND_WALLET))
83-
GATEWAY_SEQUENCING_ADDRESS:=$(word 2,$(_GATEWAY_KEY_AND_WALLET))
100+
create-network:
101+
docker network inspect based_op_net >/dev/null 2>&1 || docker network create based_op_net
84102

85-
BASED_GATEWAY_DATA_DIR?=.local_gateway_and_follower/data/gateway
86-
BASED_OP_NODE_DATA_DIR?=.local_gateway_and_follower/data/node
87-
BASED_OP_GETH_DATA_DIR?=.local_gateway_and_follower/data/geth
88-
start-gateway:
103+
start-gateway: create-network
89104
@if docker ps --format '{{.Names}}' | grep -wq based-op-gateway ; then \
90105
echo "❌ Gateway already running."; \
91106
exit 1; \
@@ -106,7 +121,7 @@ start-gateway:
106121
echo "Gateway Sequencing Wallet: $(GATEWAY_SEQUENCING_ADDRESS)"; \
107122
{ \
108123
echo "PORTAL=$(PORTAL)"; \
109-
echo "OP_NODE_GOSSIP_IP=$$(curl ifconfig.me)"; \
124+
echo "OP_NODE_GOSSIP_IP=$(PUBLIC_IP)"; \
110125
echo "GATEWAY_SEQUENCING_KEY=$(GATEWAY_SEQUENCING_KEY)"; \
111126
echo "MAIN_OP_NODE_GOSSIP_STATIC=$$(curl -s -X POST -H 'Content-Type: application/json' \
112127
--data '{"jsonrpc":"2.0","method":"portal_opNodeGossipStatic","params":[],"id":1}' \
@@ -168,7 +183,7 @@ start-gateway:
168183
cat .local_gateway_and_follower/.env; \
169184
echo; echo; \
170185
echo "Calling registerGateway method via JSON-RPC:"; \
171-
GATEWAY_URL=http://$$(curl -s ifconfig.me):$$(grep -m1 '^GATEWAY_PORT[[:space:]]*=' .local_gateway_and_follower/.env | cut -d= -f2); \
186+
GATEWAY_URL=http://$(PUBLIC_IP):$$(grep -m1 '^GATEWAY_PORT[[:space:]]*=' .local_gateway_and_follower/.env | cut -d= -f2); \
172187
GATEWAY_ADDRESS=$$wallet; \
173188
JWT=$$(cat .local_gateway_and_follower/config/jwt); \
174189
curl -X POST "$(PORTAL)" \
@@ -185,7 +200,7 @@ start-gateway:
185200
$(MAKE) start-overseer
186201

187202
start-overseer:
188-
docker exec -it based-op-gateway overseer --portal-url $(PORTAL) --based-op-node-url http://based-op-node:8547 --based-op-geth-url http://based-op-geth:8645
203+
docker exec -it based-op-gateway overseer --portal-url $(PORTAL)
189204

190205

191206
# ────────────────────────────────────────────────────────────────────────────────
@@ -219,7 +234,7 @@ deploy-chain:
219234
exit 1; \
220235
fi
221236
@mkdir -p .local_main_node/config
222-
@docker run -v $$(pwd)/.local_main_node/config:/config --entrypoint sh --rm us-docker.pkg.dev/oplabs-tools-artifacts/images/op-deployer:v0.0.11 -c "/op-deployer init --l1-chain-id $(L1_CHAIN_ID) --l2-chain-ids $(L2_CHAIN_ID) --workdir /config && chmod 666 /config/*"
237+
@docker run -v $$(pwd)/.local_main_node/config:/config --entrypoint sh -e DEPLOYER_CACHE_DIR=$(DEPLOYER_CACHE_DIR) $(IMAGE_OP_DEPLOYER) -c "/usr/local/bin/op-deployer init --l1-chain-id $(L1_CHAIN_ID) --l2-chain-ids $(L2_CHAIN_ID) --workdir /config && chmod 666 /config/*"
223238
@wallet_batcher=$$(docker run --rm -i $(IMAGE_KEY_TO_ADDRESS) $(OP_PROPOSER_KEY) | tail -n1); \
224239
wallet_proposer=$$(docker run --rm -i $(IMAGE_KEY_TO_ADDRESS) $(OP_PROPOSER_KEY) | tail -n1); \
225240
wallet_main=$$(docker run --rm -i $(IMAGE_KEY_TO_ADDRESS) $(MAIN_KEY) | tail -n1); \
@@ -232,18 +247,10 @@ deploy-chain:
232247
main_node/intent.template.toml \
233248
> .local_main_node/config/intent.toml
234249

235-
@docker run -v $$(pwd)/.local_main_node/config:/config --rm us-docker.pkg.dev/oplabs-tools-artifacts/images/op-deployer:v0.0.11 apply --workdir /config --l1-rpc-url $(L1_RPC_URL) --private-key $(MAIN_KEY)
236-
@docker run -v $$(pwd)/.local_main_node/config:/config --rm us-docker.pkg.dev/oplabs-tools-artifacts/images/op-deployer:v0.2.0 inspect genesis --workdir /config $(L2_CHAIN_ID_HEX) > $$(pwd)/.local_main_node/config/genesis.json
237-
@docker run -v $$(pwd)/.local_main_node/config:/config --rm us-docker.pkg.dev/oplabs-tools-artifacts/images/op-deployer:v0.2.0 inspect rollup --workdir /config $(L2_CHAIN_ID_HEX) > $$(pwd)/.local_main_node/config/rollup.json
238-
@docker run -v $$(pwd)/.local_main_node/config:/config --entrypoint sh --rm us-docker.pkg.dev/oplabs-tools-artifacts/images/op-deployer:v0.2.0 -c "chmod 666 /config/*"
239-
@docker run -v $$(pwd)/.local_main_node/config:/config --rm -i imega/jq '.chain_op_config = {"eip1559Elasticity":6, "eip1559Denominator":50, "eip1559DenominatorCanyon":250}' /config/rollup.json \
240-
> $$(pwd)/.local_main_node/config/rollup.json.tmp && mv $$(pwd)/.local_main_node/config/rollup.json.tmp $$(pwd)/.local_main_node/config/config.json
241-
@blockNumber=$$(docker run -v $$(pwd)/.local_main_node/config:/config --rm -i imega/jq -r '.genesis.l1.number' /config/rollup.json); \
242-
hex=$$(printf "0x%x" $$blockNumber); \
243-
hash=$$(curl -s -X POST -H 'Content-Type: application/json' \
244-
--data '{"jsonrpc":"2.0","id":1,"method":"eth_getBlockByNumber","params":["'"$$hex"'",false]}' \
245-
$(L1_RPC_URL) | docker run --rm -i imega/jq -r '.result.hash'); \
246-
docker run -v $$(pwd)/.local_main_node/config:/config --rm -i imega/jq --arg h "$$hash" '.genesis.l1.hash = $$h' /config/rollup.json > $$(pwd)/.local_main_node/config/rollup.json.tmp && mv $$(pwd)/.local_main_node/config/rollup.json.tmp $$(pwd)/.local_main_node/config/rollup.json
250+
@docker run -v $$(pwd)/.local_main_node/config:/config -e DEPLOYER_CACHE_DIR=$(DEPLOYER_CACHE_DIR) $(IMAGE_OP_DEPLOYER) op-deployer apply --workdir /config --l1-rpc-url $(L1_RPC_URL) --private-key $(MAIN_KEY)
251+
@docker run -v $$(pwd)/.local_main_node/config:/config -e DEPLOYER_CACHE_DIR=$(DEPLOYER_CACHE_DIR) $(IMAGE_OP_DEPLOYER) op-deployer inspect genesis --workdir /config $(L2_CHAIN_ID_HEX) > $$(pwd)/.local_main_node/config/genesis.json
252+
@docker run -v $$(pwd)/.local_main_node/config:/config -e DEPLOYER_CACHE_DIR=$(DEPLOYER_CACHE_DIR) $(IMAGE_OP_DEPLOYER) op-deployer inspect rollup --workdir /config $(L2_CHAIN_ID_HEX) > $$(pwd)/.local_main_node/config/rollup.json
253+
@docker run -v $$(pwd)/.local_main_node/config:/config -e DEPLOYER_CACHE_DIR=$(DEPLOYER_CACHE_DIR) --entrypoint sh $(IMAGE_OP_DEPLOYER) -c "chmod 666 /config/*"
247254

248255
@openssl rand -hex 32 | tr -d '\n' | sed 's/^/0x/' > .local_main_node/config/jwt
249256
@echo "...Done deploying. See chain config in"
@@ -309,7 +316,7 @@ config-main-node:
309316
@echo
310317

311318
# By default these will be pointing to directories under .local_<xyz>
312-
start-main-node:
319+
start-main-node: create-network
313320
@if docker ps --format '{{.Names}}' | grep -wq op-node ; then \
314321
echo "❌ Main node already running."; \
315322
exit 1; \
@@ -325,7 +332,7 @@ start-main-node:
325332
@# generate .env and fetch JSON if missing
326333
@if [ ! -f .local_main_node/.env ]; then \
327334
cp main_node/env_example .local_main_node/.env; \
328-
cp main_node/compose.yml .local_main_node/compose.yml; \
335+
cp main_node/compose* .local_main_node; \
329336
$(MAKE) fix-compose; \
330337
echo "Initializing all components of a main sequencing node in ./.local_main_node ..."; \
331338
{ \
@@ -334,7 +341,7 @@ start-main-node:
334341
echo "L1_RPC_URL=$(L1_RPC_URL)"; \
335342
echo "L1_BEACON_RPC_URL=$(L1_BEACON_RPC_URL)"; \
336343
echo "OP_NODE_SEQUENCER_KEY=$(MAIN_KEY)"; \
337-
echo "OP_NODE_GOSSIP_IP=$$(curl ifconfig.me)"; \
344+
echo "OP_NODE_GOSSIP_IP=$(PUBLIC_IP)"; \
338345
echo "OP_BATCHER_PRIVATE_KEY=$(OP_BATCHER_KEY)"; \
339346
echo "OP_PROPOSER_PRIVATE_KEY=$(OP_PROPOSER_KEY)"; \
340347
} >> .local_main_node/.env; \
@@ -349,7 +356,7 @@ start-main-node:
349356
@echo
350357
@echo
351358

352-
@cd .local_main_node && docker compose up -d
359+
@docker compose $(START_MAIN_NODE_COMPOSE_FILES) up -d
353360
$(MAKE) logs-main-node
354361

355362
start-portal: build-portal
@@ -421,7 +428,7 @@ logs-based-op-node: ## 📜 Show based op-node logs
421428
docker logs based-op-node --tail 100 -f
422429

423430
logs-based-op-geth: ## 📜 Show based op-geth logs
424-
docker logs based-op-node --tail 100 -f
431+
docker logs based-op-geth --tail 100 -f
425432

426433
logs-op-node: ## 📜 Show main op-node logs (only for main sequencing node)
427434
docker logs op-node --tail 100 -f

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
## Local Development/Quick start
44

55
### With existing OP chain
6-
The following steps have been tested on Sepolia, with a previously deployed L2 chain (l2 non-pectra)
6+
The following steps have been tested on Sepolia, with a previously deployed L2 chain
77
1. locate your `rollup.json`, `genesis.json` and `state.json` files
88
2. run `make config-main-node OP_NODE_DATA_DIR=<path/to/op-node/data> OP_GETH_DATA_DIR=<path/to/op-geth/data> ROLLUP_JSON=<path/to/rollup.json> GENESIS_JSON=<path/to/genesis.json> STATE_JSON=<path/to/state.json>`
99
3. there should be some files set up in `.local_main_node`

based/Cargo.lock

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

based/bin/overseer/src/data.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -506,7 +506,7 @@ impl Data {
506506
}
507507
if let Ok(mut peers) = consumers
508508
.peers_based_op_geth()
509-
.inspect_err(|e| tracing::warn!("couldn't get peers of local based-op-node: {e}"))
509+
.inspect_err(|e| tracing::warn!("couldn't get peers of local based-op-geth: {e}"))
510510
{
511511
peers.sort_unstable_by(|d1, d2| d1.id.cmp(&d2.id));
512512
self.peers_local_op_geth = peers;

based/bin/overseer/src/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,10 @@ pub struct OverseerArgs {
5050
#[arg(short, long)]
5151
pub portal_url: Url,
5252
/// The url of the based-op-node running next to the based-gateway
53-
#[arg(long, default_value = "http://0.0.0.0:8547")]
53+
#[arg(long, default_value = "http://127.0.0.1:8547")]
5454
pub based_op_node_url: Url,
5555
/// The url of the based-op-geth running next to the based-gateway
56-
#[arg(long, default_value = "http://0.0.0.0:8645")]
56+
#[arg(long, default_value = "http://127.0.0.1:8645")]
5757
pub based_op_geth_url: Url,
5858
}
5959

based/bin/portal/Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@ futures.workspace = true
1414
jsonrpsee.workspace = true
1515
op-alloy-rpc-types.workspace = true
1616
op-alloy-rpc-types-engine.workspace = true
17+
alloy-eips.workspace = true
1718
parking_lot.workspace = true
1819
reqwest.workspace = true
1920
reth-rpc-layer.workspace = true
21+
serde.workspace = true
2022
serde_json.workspace = true
2123
tokio.workspace = true
2224
tower.workspace = true

0 commit comments

Comments
 (0)