Merge branch 'main' of https://github.com/StakeSquid/ethereum-rpc-docker
This commit is contained in:
@@ -27,13 +27,14 @@ OracleThreshold = 1000
|
|||||||
|
|
||||||
[Node]
|
[Node]
|
||||||
IPCPath = "geth.ipc"
|
IPCPath = "geth.ipc"
|
||||||
HTTPHost = "localhost"
|
HTTPHost = "0.0.0.0"
|
||||||
InsecureUnlockAllowed = false
|
InsecureUnlockAllowed = false
|
||||||
HTTPPort = 8545
|
HTTPPort = 8545
|
||||||
HTTPVirtualHosts = ["localhost"]
|
HTTPVirtualHosts = ["*"]
|
||||||
HTTPModules = ["eth", "net", "web3", "txpool", "parlia"]
|
HTTPModules = ["eth", "net", "web3", "txpool", "parlia", "debug", "admin"]
|
||||||
WSPort = 8546
|
WSHost = "0.0.0.0"
|
||||||
WSModules = ["net", "web3", "eth"]
|
WSPort = 8545
|
||||||
|
WSModules = ["net", "web3", "eth", "debug"]
|
||||||
|
|
||||||
[Node.P2P]
|
[Node.P2P]
|
||||||
MaxPeers = 200
|
MaxPeers = 200
|
||||||
|
|||||||
@@ -38,6 +38,11 @@
|
|||||||
"da_commitment_type": "GenericCommitment",
|
"da_commitment_type": "GenericCommitment",
|
||||||
"da_challenge_window": 1,
|
"da_challenge_window": 1,
|
||||||
"da_resolve_window": 1
|
"da_resolve_window": 1
|
||||||
|
},
|
||||||
|
"chain_op_config": {
|
||||||
|
"eip1559Elasticity": 5,
|
||||||
|
"eip1559Denominator": 400,
|
||||||
|
"eip1559DenominatorCanyon": 400
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
18
drpc-beacon-proxy-sepolia.yml
Normal file
18
drpc-beacon-proxy-sepolia.yml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
services:
|
||||||
|
drpc-beacon-proxy-sepolia:
|
||||||
|
build: ./drpc-beacon-proxy/
|
||||||
|
expose:
|
||||||
|
- "80:80"
|
||||||
|
environment:
|
||||||
|
DKEY: "${DRPC_API_KEY}"
|
||||||
|
TARGET_URL: https://lb.drpc.org/rest/eth-beacon-chain-sepolia
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.middlewares.drpc-beacon-proxy-sepolia-stripprefix.stripprefix.prefixes=/drpc-beacon-proxy-sepolia"
|
||||||
|
- "traefik.http.services.drpc-beacon-proxy-sepolia.loadbalancer.server.port=80"
|
||||||
|
- "traefik.http.routers.drpc-beacon-proxy-sepolia.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.drpc-beacon-proxy-sepolia.tls.certresolver=myresolver"
|
||||||
|
- "traefik.http.routers.drpc-beacon-proxy-sepolia.rule=Host(`$DOMAIN`) && PathPrefix(`/drpc-beacon-proxy-sepolia`)"
|
||||||
|
- "traefik.http.routers.drpc-beacon-proxy-sepolia.middlewares=drpc-beacon-proxy-sepolia-stripprefix, ipwhitelist"
|
||||||
|
networks:
|
||||||
|
- chains
|
||||||
@@ -2,7 +2,7 @@ version: '3.1'
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
dshackle-free:
|
dshackle-free:
|
||||||
image: drpcorg/dshackle:0.64.3
|
image: drpcorg/dshackle:${DRPC_VERSION:-0.64.3}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
volumes:
|
volumes:
|
||||||
- ./free_configs:/etc/dshackle
|
- ./free_configs:/etc/dshackle
|
||||||
|
|||||||
2
drpc.yml
2
drpc.yml
@@ -2,7 +2,7 @@ version: '3.1'
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
dshackle:
|
dshackle:
|
||||||
image: drpcorg/dshackle:0.64.3
|
image: drpcorg/dshackle:${DRPC_VERSION:-0.64.3}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
volumes:
|
volumes:
|
||||||
- ./main_configs:/etc/dshackle
|
- ./main_configs:/etc/dshackle
|
||||||
|
|||||||
27
groq.sh
Normal file
27
groq.sh
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Determine the script's base directory
|
||||||
|
BASEDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
|
# Load environment variables from .env file
|
||||||
|
if [ -f "$BASEDIR/.env" ]; then
|
||||||
|
source "$BASEDIR/.env"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Ensure GROQ_API_KEY is set
|
||||||
|
if [ -z "$GROQ_API_KEY" ]; then
|
||||||
|
echo "Error: GROQ_API_KEY is not set. Please define it in $BASEDIR/.env"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Validate input argument
|
||||||
|
if [ -z "$1" ] || [ ! -f "$BASEDIR/rpc/$1.yml" ]; then
|
||||||
|
echo "Error: Either no argument provided or $BASEDIR/rpc/$1.yml does not exist."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Build the container
|
||||||
|
docker build -t rpc_sync_checker "$BASEDIR/groq"
|
||||||
|
|
||||||
|
# Run logs.sh and feed logs into the sync checker container
|
||||||
|
"$BASEDIR/logs.sh" "$1" | docker run --rm -i -e GROQ_API_KEY="$GROQ_API_KEY" rpc_sync_checker
|
||||||
8
groq/Dockerfile
Normal file
8
groq/Dockerfile
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
FROM python:3.11
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY rpc_sync_checker.py /app/
|
||||||
|
RUN pip install groq
|
||||||
|
|
||||||
|
CMD ["python", "/app/rpc_sync_checker.py"]
|
||||||
21
groq/rpc_sync_checker.py
Normal file
21
groq/rpc_sync_checker.py
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
import os
|
||||||
|
import sys
|
||||||
|
from groq import Groq
|
||||||
|
|
||||||
|
def check_sync_progress(logs):
|
||||||
|
client = Groq(api_key=os.environ.get("GROQ_API_KEY"))
|
||||||
|
|
||||||
|
response = client.chat.completions.create(
|
||||||
|
messages=[
|
||||||
|
{"role": "system", "content": "You are an assistant trained to analyze blockchain RPC logs."},
|
||||||
|
{"role": "user", "content": f"Based on the following logs, is the RPC node progressing in its sync? Answer only '0' for yes and '1' for no.\n\n{logs}"}
|
||||||
|
],
|
||||||
|
model="llama-3.3-70b-versatile",
|
||||||
|
)
|
||||||
|
|
||||||
|
return response.choices[0].message.content.strip()
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
logs = sys.stdin.read() # Read input from STDIN
|
||||||
|
result = check_sync_progress(logs)
|
||||||
|
print(result)
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
services:
|
services:
|
||||||
nodeexporter:
|
nodeexporter:
|
||||||
image: prom/node-exporter:v1.2.2
|
image: prom/node-exporter:v1.3.1
|
||||||
container_name: nodeexporter
|
container_name: nodeexporter
|
||||||
volumes:
|
volumes:
|
||||||
- /proc:/host/proc:ro
|
- /proc:/host/proc:ro
|
||||||
|
|||||||
@@ -1,52 +1,52 @@
|
|||||||
services:
|
services:
|
||||||
init:
|
|
||||||
image: us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-geth@sha256:13fa55221309e4e453fd8c383d51aa6d065695f14a64ab25c85aa7d9301173e0
|
|
||||||
volumes:
|
|
||||||
- "op-celo-alfajores-fullnode:/datadir"
|
|
||||||
- "./celo/alfajores:/config"
|
|
||||||
command: init --datadir /datadir /config/genesis.json
|
|
||||||
|
|
||||||
op-celo-alfajores-fullnode:
|
op-celo-alfajores-fullnode:
|
||||||
image: us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-geth@sha256:13fa55221309e4e453fd8c383d51aa6d065695f14a64ab25c85aa7d9301173e0
|
image: us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-geth:celo-v2.0.0
|
||||||
depends_on:
|
|
||||||
- init
|
|
||||||
volumes:
|
volumes:
|
||||||
- "op-celo-alfajores-fullnode:/datadir"
|
- "op-celo-alfajores-fullnode:/datadir"
|
||||||
- ".jwtsecret:/jwtsecret"
|
- ".jwtsecret:/jwtsecret"
|
||||||
|
- "./celo/alfajores/:/chainconfig"
|
||||||
ports:
|
ports:
|
||||||
- "10955:10955"
|
- "10955:10955"
|
||||||
- "10955:10955/udp"
|
- "10955:10955/udp"
|
||||||
command: |
|
|
||||||
--datadir=/datadir
|
|
||||||
--networkid=44787
|
|
||||||
--gcmode=full
|
|
||||||
--snapshot=true
|
|
||||||
--maxpeers=60
|
|
||||||
--port=10955
|
|
||||||
--authrpc.addr=0.0.0.0
|
|
||||||
--authrpc.port=8551
|
|
||||||
--authrpc.jwtsecret=/jwtsecret
|
|
||||||
--authrpc.vhosts='*'
|
|
||||||
--http
|
|
||||||
--http.addr=0.0.0.0
|
|
||||||
--http.port=8545
|
|
||||||
--http.api=eth,net,web3,debug,txpool,engine,admin
|
|
||||||
--http.vhosts='*'
|
|
||||||
--http.corsdomain='*'
|
|
||||||
--ws
|
|
||||||
--rollup.historicalrpc=https://alfajores-forno.cel1.alfajores.celo-testnet.org
|
|
||||||
--ws.addr=0.0.0.0
|
|
||||||
--ws.port=8545
|
|
||||||
--ws.api=eth,net,web3,debug,txpool,engine,admin
|
|
||||||
--verbosity=3
|
|
||||||
--bootnodes=enode://ac0f42fa46f8cc10bd02a103894d71d495537465133e7c442bc02dc76721a5f41761cc2d8c69e7ba1b33e14e28f516436864d3e0836e2dcdaf032387f72447dd@34.83.164.192:30303,enode://596002969b8b269a4fa34b4709b9600b64201e7d02e2f5f1350affd021b0cbda6ce2b913ebe24f0fb1edcf66b6c730a8a3b02cd940f4de995f73d3b290a0fc92@34.82.177.77:30303,enode://3619455064ef1ce667171bba1df80cfd4c097f018cf0205aaad496f0d509611b7c40396893d9e490ee390cd098888279e177a4d9bb09c58387bb0a6031d237f1@34.19.90.27:30303,enode://e3c54db6004a92d4ee87504f073f3234a25759b485274cc224037e3e5ee792f3b482c3f4fffcb764af6e1859a1aea9710b71e1991e32c1dee7f40352124bb182@35.233.249.87:30303,enode://674410b34fd54c8406a4f945292b96111688d4bab49aecdc34b4f1b346891f4673dcb03ed44c38ab467ef7bec0b20f6031ad88aa1d35ce1333b343d00fa19fb1@34.168.43.76:30303
|
|
||||||
expose:
|
expose:
|
||||||
- 8545
|
- 8545
|
||||||
|
- 8546
|
||||||
- 8551
|
- 8551
|
||||||
networks:
|
networks:
|
||||||
- chains
|
- chains
|
||||||
restart: always
|
restart: always
|
||||||
stop_grace_period: 5m
|
stop_grace_period: 5m
|
||||||
|
environment:
|
||||||
|
- NETWORK_NAME=alfajores
|
||||||
|
- GETH_BOOTNODES=enode://ac0f42fa46f8cc10bd02a103894d71d495537465133e7c442bc02dc76721a5f41761cc2d8c69e7ba1b33e14e28f516436864d3e0836e2dcdaf032387f72447dd@34.83.164.192:30303,enode://596002969b8b269a4fa34b4709b9600b64201e7d02e2f5f1350affd021b0cbda6ce2b913ebe24f0fb1edcf66b6c730a8a3b02cd940f4de995f73d3b290a0fc92@34.82.177.77:30303,enode://3619455064ef1ce667171bba1df80cfd4c097f018cf0205aaad496f0d509611b7c40396893d9e490ee390cd098888279e177a4d9bb09c58387bb0a6031d237f1@34.19.90.27:30303,enode://e3c54db6004a92d4ee87504f073f3234a25759b485274cc224037e3e5ee792f3b482c3f4fffcb764af6e1859a1aea9710b71e1991e32c1dee7f40352124bb182@35.233.249.87:30303,enode://674410b34fd54c8406a4f945292b96111688d4bab49aecdc34b4f1b346891f4673dcb03ed44c38ab467ef7bec0b20f6031ad88aa1d35ce1333b343d00fa19fb1@34.168.43.76:30303
|
||||||
|
command: >
|
||||||
|
--datadir=/datadir
|
||||||
|
--networkid=44787
|
||||||
|
--http
|
||||||
|
--http.corsdomain="*"
|
||||||
|
--http.vhosts="*"
|
||||||
|
--http.addr=0.0.0.0
|
||||||
|
--http.port=8545
|
||||||
|
--http.api=web3,debug,eth,txpool,net,engine
|
||||||
|
--ws
|
||||||
|
--ws.addr=0.0.0.0
|
||||||
|
--ws.port=8545
|
||||||
|
--ws.origins="*"
|
||||||
|
--ws.api=debug,eth,txpool,net,engine,web3
|
||||||
|
--syncmode="full"
|
||||||
|
--gcmode="full"
|
||||||
|
--authrpc.vhosts="*"
|
||||||
|
--authrpc.addr=0.0.0.0
|
||||||
|
--authrpc.port=8551
|
||||||
|
--authrpc.jwtsecret=/jwtsecret
|
||||||
|
--rollup.sequencerhttp=https://sequencer.alfajores.celo-testnet.org
|
||||||
|
--rollup.disabletxpoolgossip=true
|
||||||
|
--port="10955"
|
||||||
|
--discovery.port="10955"
|
||||||
|
--snapshot=true
|
||||||
|
--verbosity=3
|
||||||
|
--history.transactions=0
|
||||||
|
--rollup.historicalrpc=${OP_GETH_HISTORICAL_RPC:-https://sequencer.alfajores.celo-testnet.org}
|
||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
- "traefik.http.middlewares.op-celo-alfajores-stripprefix.stripprefix.prefixes=/op-celo-alfajores"
|
- "traefik.http.middlewares.op-celo-alfajores-stripprefix.stripprefix.prefixes=/op-celo-alfajores"
|
||||||
@@ -58,10 +58,9 @@ services:
|
|||||||
|
|
||||||
|
|
||||||
op-celo-alfajores-fullnode-node:
|
op-celo-alfajores-fullnode-node:
|
||||||
image: us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-node:celo9
|
image: us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-node:celo-v2.0.0
|
||||||
depends_on:
|
depends_on:
|
||||||
- op-celo-alfajores-fullnode
|
- op-celo-alfajores-fullnode
|
||||||
- op-celo-alfajores-key-generator
|
|
||||||
expose:
|
expose:
|
||||||
- 8545 # RPC
|
- 8545 # RPC
|
||||||
- 39395 # P2P TCP
|
- 39395 # P2P TCP
|
||||||
@@ -73,30 +72,34 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- "39395:39395"
|
- "39395:39395"
|
||||||
- "39395:39395/udp"
|
- "39395:39395/udp"
|
||||||
command: |
|
environment:
|
||||||
|
- HEALTHCHECK__REFERENCE_RPC_PROVIDER=https://alfajores-forno.celo-testnet.org
|
||||||
|
- OP_NODE_P2P_LISTEN_TCP_PORT=39395
|
||||||
|
- OP_NODE_P2P_LISTEN_UDP_PORT=39395
|
||||||
|
- OP_NODE_P2P_STATIC=/ip4/35.197.25.52/tcp/9222/p2p/16Uiu2HAmQEdyLRSAVZDr5SqbJ1RnKmNDhtQJcEKmemrVxe4FxKwR,/ip4/34.105.22.4/tcp/9222/p2p/16Uiu2HAm1SZBDSugT5MMu7vBY8auDgfZFNhoDeXPLc9Me5FsAxwT,/ip4/34.83.209.168/tcp/9222/p2p/16Uiu2HAmGJAiUX6HLSo4nLh8T984qxzokwL23cVsYuNZy2SrK7C6,/ip4/34.83.214.149/tcp/9222/p2p/16Uiu2HAmAko2Kr3eAjM7tnshtEhYrxQYfKUvN2kwiygeFoBAoi8S,/ip4/34.169.5.52/tcp/9222/p2p/16Uiu2HAmKc6YKHzYgsjBDaj36uAufxpgZFgrzDqVBt6zTPwdhhJD
|
||||||
|
- OP_NODE_ALTDA_ENABLED=true
|
||||||
|
- OP_NODE_ALTDA_DA_SERVICE=true
|
||||||
|
- OP_NODE_ALTDA_VERIFY_ON_READ=false
|
||||||
|
- OP_NODE_ALTDA_DA_SERVER=https://eigenda-proxy.alfajores.celo-testnet.org
|
||||||
|
- OP_NODE_L2_ENGINE_AUTH=/jwtsecret
|
||||||
|
command: >
|
||||||
op-node
|
op-node
|
||||||
--l1.trustrpc=true
|
--l1="${OP_CELO_ALFAJORES_HOLESKY_RPC:-https://ethereum-holesky-rpc.publicnode.com}"
|
||||||
--l1=${OP_CELO_ALFAJORES_HOLESKY_RPC:-https://ethereum-holesky-rpc.publicnode.com}
|
|
||||||
--l1.beacon=${OP_CELO_ALFAJORES_HOLESKY_BEACON_REST:-https://ethereum-holesky-beacon-api.publicnode.com}
|
|
||||||
--l2=http://op-celo-alfajores-fullnode:8551
|
--l2=http://op-celo-alfajores-fullnode:8551
|
||||||
--l2.jwt-secret=/jwtsecret
|
|
||||||
--rollup.load-protocol-versions=true
|
|
||||||
--rollup.config=/config/rollup.json
|
|
||||||
--verifier.l1-confs=4
|
|
||||||
--rpc.addr=0.0.0.0
|
--rpc.addr=0.0.0.0
|
||||||
--rpc.port=9545
|
--rpc.port=9545
|
||||||
--p2p.listen.tcp=39395
|
--l1.trustrpc
|
||||||
--p2p.listen.udp=39395
|
--l1.rpckind=basic
|
||||||
--p2p.priv.path=/config/p2p_node_key_txt
|
--l1.beacon="${OP_CELO_ALFAJORES_HOLESKY_BEACON_REST:-https://ethereum-holesky-beacon-api.publicnode.com}"
|
||||||
--p2p.static=/ip4/35.197.25.52/tcp/9222/p2p/16Uiu2HAmQEdyLRSAVZDr5SqbJ1RnKmNDhtQJcEKmemrVxe4FxKwR,/ip4/34.105.22.4/tcp/9222/p2p/16Uiu2HAm1SZBDSugT5MMu7vBY8auDgfZFNhoDeXPLc9Me5FsAxwT,/ip4/34.83.209.168/tcp/9222/p2p/16Uiu2HAmGJAiUX6HLSo4nLh8T984qxzokwL23cVsYuNZy2SrK7C6,/ip4/34.83.214.149/tcp/9222/p2p/16Uiu2HAmAko2Kr3eAjM7tnshtEhYrxQYfKUvN2kwiygeFoBAoi8S,/ip4/34.169.5.52/tcp/9222/p2p/16Uiu2HAmKc6YKHzYgsjBDaj36uAufxpgZFgrzDqVBt6zTPwdhhJD
|
--syncmode=execution-layer
|
||||||
--altda.enabled=true
|
--p2p.priv.path=/chainconfigs/p2p_node_key_txt
|
||||||
--altda.da-server=https://eigenda-proxy.alfajores.celo-testnet.org
|
--rollup.config=/chainconfigs/rollup.json
|
||||||
--altda.da-service=true
|
--rollup.load-protocol-versions=true
|
||||||
--altda.verify-on-read=false
|
--rollup.halt=major
|
||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
- .jwtsecret:/jwtsecret
|
- .jwtsecret:/jwtsecret
|
||||||
- "./celo/alfajores:/config"
|
- ./celo/alfajores/:/chainconfigs/
|
||||||
stop_grace_period: 30s
|
stop_grace_period: 30s
|
||||||
|
|
||||||
op-celo-alfajores-key-generator:
|
op-celo-alfajores-key-generator:
|
||||||
@@ -107,7 +110,6 @@ services:
|
|||||||
command: "[ -f /config/p2p_node_key_txt ] && exit 0 || cast w n | grep -i 'Private Key' | awk -F ': ' '{print $2}' | sed 's/0x//' > /config/p2p_node_key_txt"
|
command: "[ -f /config/p2p_node_key_txt ] && exit 0 || cast w n | grep -i 'Private Key' | awk -F ': ' '{print $2}' | sed 's/0x//' > /config/p2p_node_key_txt"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
op-celo-alfajores-fullnode:
|
op-celo-alfajores-fullnode:
|
||||||
|
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ services:
|
|||||||
context: ./op
|
context: ./op
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
args:
|
args:
|
||||||
OP_VERSION: v1.10.2
|
OP_VERSION: v1.12.0
|
||||||
OP_PATCH: sepolia/lisk/op-node.patch
|
# OP_PATCH: sepolia/lisk/op-node.patch
|
||||||
GETH_VERSION: v1.101411.4
|
GETH_VERSION: v1.101503.0
|
||||||
expose:
|
expose:
|
||||||
- 8545 # RPC / Websocket
|
- 8545 # RPC / Websocket
|
||||||
- 54521 # P2P TCP (currently unused)
|
- 54521 # P2P TCP (currently unused)
|
||||||
@@ -40,6 +40,7 @@ services:
|
|||||||
- "GETH_OVERRIDE_FJORD=1716998400"
|
- "GETH_OVERRIDE_FJORD=1716998400"
|
||||||
- "GETH_OVERRIDE_GRANITE=1723478400"
|
- "GETH_OVERRIDE_GRANITE=1723478400"
|
||||||
- "GETH_OVERRIDE_HOLOCENE=1732633200"
|
- "GETH_OVERRIDE_HOLOCENE=1732633200"
|
||||||
|
- "GETH_OVERRIDE_PECTRA=1741159776"
|
||||||
- "GETH_BOOTNODES=enr:-Iu4QI5BdaTmfMhNKXd-vSniNRSCXk-a3m3nQbe9TCV3puGtCr6FvX6-Vr0Uvx4tYVilGCIYdQNf6fK8O2MKxVqjYJ8BgmlkgnY0gmlwhCKN6PiJc2VjcDI1NmsxoQLBQIaRwlvNxrRKcGtxKmh4JS_orkawS44D4KIORICoi4N0Y3CCIy\
|
- "GETH_BOOTNODES=enr:-Iu4QI5BdaTmfMhNKXd-vSniNRSCXk-a3m3nQbe9TCV3puGtCr6FvX6-Vr0Uvx4tYVilGCIYdQNf6fK8O2MKxVqjYJ8BgmlkgnY0gmlwhCKN6PiJc2VjcDI1NmsxoQLBQIaRwlvNxrRKcGtxKmh4JS_orkawS44D4KIORICoi4N0Y3CCIy\
|
||||||
uDdWRwgiMr"
|
uDdWRwgiMr"
|
||||||
labels:
|
labels:
|
||||||
@@ -59,9 +60,9 @@ uDdWRwgiMr"
|
|||||||
context: ./op
|
context: ./op
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
args:
|
args:
|
||||||
OP_VERSION: v1.10.2
|
OP_VERSION: v1.12.0
|
||||||
OP_PATCH: sepolia/lisk/op-node.patch
|
# OP_PATCH: sepolia/lisk/op-node.patch
|
||||||
GETH_VERSION: v1.101411.4
|
GETH_VERSION: v1.101503.0
|
||||||
depends_on:
|
depends_on:
|
||||||
- op-lisk-sepolia
|
- op-lisk-sepolia
|
||||||
expose:
|
expose:
|
||||||
@@ -113,6 +114,7 @@ uDdWRwgiMr"
|
|||||||
- "OP_NODE_OVERRIDE_FJORD=1716998400"
|
- "OP_NODE_OVERRIDE_FJORD=1716998400"
|
||||||
- "OP_NODE_OVERRIDE_GRANITE=1723478400"
|
- "OP_NODE_OVERRIDE_GRANITE=1723478400"
|
||||||
- "OP_NODE_OVERRIDE_HOLOCENE=1732633200"
|
- "OP_NODE_OVERRIDE_HOLOCENE=1732633200"
|
||||||
|
- "OP_NODE_OVERRICE_PECTRA=1741159776"
|
||||||
networks:
|
networks:
|
||||||
- chains
|
- chains
|
||||||
|
|
||||||
|
|||||||
@@ -37,10 +37,32 @@ services:
|
|||||||
- "traefik.http.routers.manta-pacific-mainnet.middlewares=manta-pacific-mainnet-stripprefix, ipwhitelist"
|
- "traefik.http.routers.manta-pacific-mainnet.middlewares=manta-pacific-mainnet-stripprefix, ipwhitelist"
|
||||||
|
|
||||||
|
|
||||||
|
# manta-pacific-da:
|
||||||
|
# stop_signal: SIGINT
|
||||||
|
# restart: unless-stopped
|
||||||
|
# user: root
|
||||||
|
# image: "ghcr.io/celestiaorg/celestia-node:v0.12.1"
|
||||||
|
# command: celestia light start --gateway --core.ip consensus.lunaroasis.net --gateway.addr light --gateway.port 23537
|
||||||
|
# environment:
|
||||||
|
# - NODE_TYPE=light
|
||||||
|
# volumes:
|
||||||
|
# - manta-pacific-celestia-light:/home/celestia/.celestia-light/
|
||||||
|
# expose:
|
||||||
|
# - 26658 # core rpc
|
||||||
|
# - 26657 # rpc
|
||||||
|
# ports:
|
||||||
|
# - "23537:23537" # gateway
|
||||||
|
# healthcheck:
|
||||||
|
# test: ["CMD", "curl", "-f", "http://localhost:23537/header/1"]
|
||||||
|
# interval: 10s
|
||||||
|
# timeout: 5s
|
||||||
|
# retries: 5
|
||||||
|
# start_period: 30s
|
||||||
|
|
||||||
manta-pacific-node:
|
manta-pacific-node:
|
||||||
depends_on:
|
depends_on:
|
||||||
- manta-pacific
|
- manta-pacific
|
||||||
image: "public.ecr.aws/i6b2w2n6/op-node:5.2.0"
|
image: "public.ecr.aws/i6b2w2n6/op-node:celestia-3.0.0-dencun"
|
||||||
stop_signal: SIGINT
|
stop_signal: SIGINT
|
||||||
stop_grace_period: 30s
|
stop_grace_period: 30s
|
||||||
networks:
|
networks:
|
||||||
@@ -49,6 +71,8 @@ services:
|
|||||||
OP_NODE_S3_BUCKET: "caldera-celestia-cache-prod"
|
OP_NODE_S3_BUCKET: "caldera-celestia-cache-prod"
|
||||||
OP_NODE_NAMESPACE_ID: 866269ddf77dbc40ed9d
|
OP_NODE_NAMESPACE_ID: 866269ddf77dbc40ed9d
|
||||||
OP_NODE_S3_REGION: 'us-west-2'
|
OP_NODE_S3_REGION: 'us-west-2'
|
||||||
|
# OP_NODE_DA_RPC: "http://manta-pacific-da:26658"
|
||||||
|
# OP_NODE_AUTH_TOKEN: ${OP_NODE_AUTH_TOKEN}
|
||||||
CELESTIA_LEGACY_MODE: "true"
|
CELESTIA_LEGACY_MODE: "true"
|
||||||
OP_NODE_OVERRIDE_CANYON: "1726783200"
|
OP_NODE_OVERRIDE_CANYON: "1726783200"
|
||||||
OP_NODE_OVERRIDE_DELTA: "1726783200"
|
OP_NODE_OVERRIDE_DELTA: "1726783200"
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ version: '3.1'
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
op-mode-mainnet: # this is Optimism's geth client
|
op-mode-mainnet: # this is Optimism's geth client
|
||||||
#image: stakesquid/op-mode-mainnet:v0.1
|
|
||||||
build:
|
build:
|
||||||
context: ./op
|
context: ./op
|
||||||
expose:
|
expose:
|
||||||
@@ -24,7 +23,6 @@ services:
|
|||||||
- "GETH_ROLLUP_SEQUENCERHTTP=https://rpc-mode-mainnet-0.t.conduit.xyz"
|
- "GETH_ROLLUP_SEQUENCERHTTP=https://rpc-mode-mainnet-0.t.conduit.xyz"
|
||||||
- "GETH_GCMODE=full"
|
- "GETH_GCMODE=full"
|
||||||
- "GETH_SYNCMODE=snap"
|
- "GETH_SYNCMODE=snap"
|
||||||
#- "GETH_NODISCOVER=true"
|
|
||||||
- "GETH_STATE_SCHEME=path"
|
- "GETH_STATE_SCHEME=path"
|
||||||
- "GETH_DB_ENGINE=pebble"
|
- "GETH_DB_ENGINE=pebble"
|
||||||
- "P2P_PORT=34542"
|
- "P2P_PORT=34542"
|
||||||
@@ -35,6 +33,8 @@ services:
|
|||||||
- "GETH_OVERRIDE_DELTA=1708560000"
|
- "GETH_OVERRIDE_DELTA=1708560000"
|
||||||
- "GETH_OVERRIDE_ECOTONE=1710374401"
|
- "GETH_OVERRIDE_ECOTONE=1710374401"
|
||||||
- "GETH_OVERRIDE_FJORD=1720627201"
|
- "GETH_OVERRIDE_FJORD=1720627201"
|
||||||
|
- "GETH_OVERRIDE_GRANITE=1726070401"
|
||||||
|
- "GETH_OVERRIDE_HOLOCENE=1736445601"
|
||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
- "traefik.http.middlewares.mode-stripprefix.stripprefix.prefixes=/mode-mainnet"
|
- "traefik.http.middlewares.mode-stripprefix.stripprefix.prefixes=/mode-mainnet"
|
||||||
@@ -68,7 +68,6 @@ services:
|
|||||||
- .jwtsecret:/jwtsecret
|
- .jwtsecret:/jwtsecret
|
||||||
stop_grace_period: 30s
|
stop_grace_period: 30s
|
||||||
environment:
|
environment:
|
||||||
#- "OP_NODE_NETWORK=mode-mainnet-0"
|
|
||||||
- "OP_NODE_SYNCMODE=execution-layer"
|
- "OP_NODE_SYNCMODE=execution-layer"
|
||||||
- "OP_NODE_L1_ETH_RPC=${MODE_MAINNET_L1_ENDPOINT}"
|
- "OP_NODE_L1_ETH_RPC=${MODE_MAINNET_L1_ENDPOINT}"
|
||||||
- "OP_NODE_L2_ENGINE_AUTH_RAW=${JWTSECRET}"
|
- "OP_NODE_L2_ENGINE_AUTH_RAW=${JWTSECRET}"
|
||||||
@@ -100,6 +99,8 @@ services:
|
|||||||
- "OP_NODE_OVERRIDE_DELTA=1708560000"
|
- "OP_NODE_OVERRIDE_DELTA=1708560000"
|
||||||
- "OP_NODE_OVERRIDE_ECOTONE=1710374401"
|
- "OP_NODE_OVERRIDE_ECOTONE=1710374401"
|
||||||
- "OP_NODE_OVERRIDE_FJORD=1720627201"
|
- "OP_NODE_OVERRIDE_FJORD=1720627201"
|
||||||
|
- "OP_NODE_OVERRIDE_GRANITE=1726070401"
|
||||||
|
- "OP_NODE_OVERRIDE_HOLOCENE=1736445601"
|
||||||
networks:
|
networks:
|
||||||
- chains
|
- chains
|
||||||
|
|
||||||
|
|||||||
7
op-wheel.sh
Executable file
7
op-wheel.sh
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# USAGE:
|
||||||
|
# ./op-wheel.sh engine set-forkchoice --unsafe=0x111AC7F --safe=0x111AC7F --finalized=0x111AC7F --engine=http://op-lisk-sepolia:8551/ --engine.open=http://op-lisk-sepolia:8545 --engine.jwt-secret-path=/jwtsecret
|
||||||
|
|
||||||
|
docker run -it --rm --network rpc_chains -v /root/rpc/.jwtsecret:/jwtsecret golang:latest bash -c 'git clone https://github.com/ethereum-optimism/optimism.git && cd optimism && go run ./op-wheel/cmd "$@"' -- "$@"
|
||||||
|
|
||||||
@@ -11,6 +11,7 @@
|
|||||||
- name: txpool_content
|
- name: txpool_content
|
||||||
- name: zirc_getQuarantineHistory
|
- name: zirc_getQuarantineHistory
|
||||||
- name: zirc_getQuarantined
|
- name: zirc_getQuarantined
|
||||||
|
- name: zirc_isQuarantined
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
services:
|
services:
|
||||||
op-zircuit-client:
|
op-zircuit-client:
|
||||||
image: zircuit1/l2-geth:94186328850b5def97c195a2737c1d28265ef74b
|
image: zircuit1/l2-geth:e81568966f2a42a57b1347fb1dffdd5257dde73a
|
||||||
volumes:
|
volumes:
|
||||||
- "op-zircuit:/db"
|
- "op-zircuit:/db"
|
||||||
- "./zircuit/mainnet/genesis.json:/genesis.json"
|
- "./zircuit/mainnet/genesis.json:/genesis.json"
|
||||||
@@ -15,7 +15,7 @@ services:
|
|||||||
- "--rollup.disabletxpoolgossip=true"
|
- "--rollup.disabletxpoolgossip=true"
|
||||||
- "--http.api=eth,net,web3,debug"
|
- "--http.api=eth,net,web3,debug"
|
||||||
environment:
|
environment:
|
||||||
FORK_TRIGGER: "false"
|
FORK_TRIGGER: "true"
|
||||||
ETH_STATS_ENABLED: 1
|
ETH_STATS_ENABLED: 1
|
||||||
ETH_STATS_NODE: "d${DOMAIN}"
|
ETH_STATS_NODE: "d${DOMAIN}"
|
||||||
ETH_STATS_SERVER: ethstats-ap.mainnet.zircuit.com
|
ETH_STATS_SERVER: ethstats-ap.mainnet.zircuit.com
|
||||||
@@ -54,7 +54,7 @@ services:
|
|||||||
op-zircuit-node:
|
op-zircuit-node:
|
||||||
depends_on:
|
depends_on:
|
||||||
- op-zircuit-client
|
- op-zircuit-client
|
||||||
image: zircuit1/op-node:94186328850b5def97c195a2737c1d28265ef74b
|
image: zircuit1/op-node:e81568966f2a42a57b1347fb1dffdd5257dde73a
|
||||||
ports:
|
ports:
|
||||||
- "43778:43778"
|
- "43778:43778"
|
||||||
- "43778:43778/udp"
|
- "43778:43778/udp"
|
||||||
|
|||||||
22
op-zircuit-testnet.cfg
Normal file
22
op-zircuit-testnet.cfg
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
- id: ${ID}
|
||||||
|
chain: ${CHAIN}
|
||||||
|
labels:
|
||||||
|
provider: ${PROVIDER}
|
||||||
|
method-groups:
|
||||||
|
enabled:
|
||||||
|
- debug
|
||||||
|
- filter
|
||||||
|
methods:
|
||||||
|
enabled:
|
||||||
|
- name: txpool_content
|
||||||
|
- name: zirc_getQuarantineHistory
|
||||||
|
- name: zirc_getQuarantined
|
||||||
|
- name: zirc_isQuarantined
|
||||||
|
connection:
|
||||||
|
generic:
|
||||||
|
rpc:
|
||||||
|
url: "${RPC_URL}"
|
||||||
|
ws:
|
||||||
|
frameSize: 20Mb
|
||||||
|
msgSize: 50Mb
|
||||||
|
url: "${WS_URL}"
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
services:
|
services:
|
||||||
op-zircuit-testnet-client:
|
op-zircuit-testnet-client:
|
||||||
image: zircuit1/l2-geth:${ZIRCUIT_TESTNET_VERSION:-8ea4db5d6e952f63c2912d2794bbfd8eda55f471}
|
image: zircuit1/l2-geth:${ZIRCUIT_TESTNET_VERSION:-e81568966f2a42a57b1347fb1dffdd5257dde73a}
|
||||||
volumes:
|
volumes:
|
||||||
- "op-zircuit-testnet:/db"
|
- "op-zircuit-testnet:/db"
|
||||||
- "./zircuit/testnet/genesis.json:/genesis.json"
|
- "./zircuit/testnet/genesis.json:/genesis.json"
|
||||||
@@ -53,7 +53,7 @@ services:
|
|||||||
op-zircuit-testnet-node:
|
op-zircuit-testnet-node:
|
||||||
depends_on:
|
depends_on:
|
||||||
- op-zircuit-testnet-client
|
- op-zircuit-testnet-client
|
||||||
image: zircuit1/op-node:${ZIRCUIT_TESTNET_VERSION:-8ea4db5d6e952f63c2912d2794bbfd8eda55f471}
|
image: zircuit1/op-node:${ZIRCUIT_TESTNET_VERSION:-e81568966f2a42a57b1347fb1dffdd5257dde73a}
|
||||||
ports:
|
ports:
|
||||||
- "20209:20209"
|
- "20209:20209"
|
||||||
- "20209:20209/udp"
|
- "20209:20209/udp"
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
BASEPATH="$(dirname "$0")"
|
BASEPATH="$(dirname "$0")"
|
||||||
@@ -7,11 +8,13 @@ IFS=':' read -ra parts <<< $COMPOSE_FILE
|
|||||||
|
|
||||||
blacklist=("drpc.yml" "drpc-free.yml" "base.yml" "rpc.yml" "monitoring.yml" "ftp.yml" "backup-http.yml")
|
blacklist=("drpc.yml" "drpc-free.yml" "base.yml" "rpc.yml" "monitoring.yml" "ftp.yml" "backup-http.yml")
|
||||||
|
|
||||||
|
# Flag to track if any invocation failed
|
||||||
|
any_failure=false
|
||||||
|
|
||||||
for part in "${parts[@]}"; do
|
for part in "${parts[@]}"; do
|
||||||
include=true
|
include=true
|
||||||
for word in "${blacklist[@]}"; do
|
for word in "${blacklist[@]}"; do
|
||||||
if echo "$part" | grep -qE "$word"; then
|
if echo "$part" | grep -qE "$word"; then
|
||||||
#echo "The path $path contains a blacklisted word: $word"
|
|
||||||
include=false
|
include=false
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@@ -22,7 +25,7 @@ for part in "${parts[@]}"; do
|
|||||||
params=("$@")
|
params=("$@")
|
||||||
|
|
||||||
# Check if a string is part of the list
|
# Check if a string is part of the list
|
||||||
if [[ " ${params[@]} " =~ " ${part%.yml} " ]]; then
|
if [[ " ${params[@]} " =~ " $1 " ]]; then
|
||||||
include=$include # don't change anything
|
include=$include # don't change anything
|
||||||
else
|
else
|
||||||
include=false
|
include=false
|
||||||
@@ -31,15 +34,15 @@ for part in "${parts[@]}"; do
|
|||||||
|
|
||||||
if $include; then
|
if $include; then
|
||||||
result=$($BASEPATH/sync-status.sh "${part%.yml}")
|
result=$($BASEPATH/sync-status.sh "${part%.yml}")
|
||||||
#if [ "$1" = "${part%.yml}" ]; then
|
if [ $? -ne 0 ]; then
|
||||||
# echo "${result}"
|
any_failure=true
|
||||||
# exit 0
|
fi
|
||||||
#else
|
|
||||||
echo "${part%.yml}: $result"
|
echo "${part%.yml}: $result"
|
||||||
#fi
|
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# If any invocation failed, return a failure exit code
|
||||||
|
if $any_failure; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: ./sonic
|
context: ./sonic
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
|
args:
|
||||||
|
VERSION: ${SONIC_VERSION:-v2.0.3}
|
||||||
stop_grace_period: 3m
|
stop_grace_period: 3m
|
||||||
volumes:
|
volumes:
|
||||||
- "sonic:/var/sonic"
|
- "sonic:/var/sonic"
|
||||||
|
|||||||
@@ -7,11 +7,13 @@
|
|||||||
|
|
||||||
FROM golang:1.22 as builder
|
FROM golang:1.22 as builder
|
||||||
|
|
||||||
|
ARG VERSION
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y git musl-dev make
|
RUN apt-get update && apt-get install -y git musl-dev make
|
||||||
|
|
||||||
RUN cd /go && git clone https://github.com/Fantom-foundation/Sonic.git && cd Sonic && git fetch --tags && git checkout -b v2.0.1 tags/v2.0.1
|
RUN cd /go && git clone https://github.com/0xsoniclabs/sonic.git && cd sonic && git fetch --tags && git checkout -b ${VERSION} tags/${VERSION}
|
||||||
|
|
||||||
WORKDIR /go/Sonic
|
WORKDIR /go/sonic
|
||||||
|
|
||||||
ARG GOPROXY
|
ARG GOPROXY
|
||||||
RUN go mod download
|
RUN go mod download
|
||||||
@@ -19,8 +21,8 @@ RUN make all
|
|||||||
|
|
||||||
FROM golang:1.22
|
FROM golang:1.22
|
||||||
|
|
||||||
COPY --from=builder /go/Sonic/build/sonicd /usr/local/bin/
|
COPY --from=builder /go/sonic/build/sonicd /usr/local/bin/
|
||||||
COPY --from=builder /go/Sonic/build/sonictool /usr/local/bin/
|
COPY --from=builder /go/sonic/build/sonictool /usr/local/bin/
|
||||||
|
|
||||||
COPY ./entrypoint.sh /entrypoint.sh
|
COPY ./entrypoint.sh /entrypoint.sh
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ rpc:
|
|||||||
- net
|
- net
|
||||||
- web3
|
- web3
|
||||||
maxDelayBlock: 120
|
maxDelayBlock: 120
|
||||||
suspendBuffer: 60s
|
suspendBuffer: 31622400s
|
||||||
logs:
|
logs:
|
||||||
blockRange: -1
|
blockRange: -1
|
||||||
logRequests: True
|
logRequests: True
|
||||||
|
|||||||
@@ -20,6 +20,8 @@
|
|||||||
"regolithTime": 0,
|
"regolithTime": 0,
|
||||||
"canyonTime": 0,
|
"canyonTime": 0,
|
||||||
"ecotoneTime": 0,
|
"ecotoneTime": 0,
|
||||||
|
"monoFeeBlock": 10895293,
|
||||||
|
"cancunTime": 1741726801,
|
||||||
"terminalTotalDifficulty": 0,
|
"terminalTotalDifficulty": 0,
|
||||||
"terminalTotalDifficultyPassed": true,
|
"terminalTotalDifficultyPassed": true,
|
||||||
"optimism": {
|
"optimism": {
|
||||||
@@ -15325,4 +15327,3 @@
|
|||||||
"excessBlobGas": null,
|
"excessBlobGas": null,
|
||||||
"blobGasUsed": null
|
"blobGasUsed": null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,9 +26,11 @@
|
|||||||
"canyon_time": 0,
|
"canyon_time": 0,
|
||||||
"delta_time": 0,
|
"delta_time": 0,
|
||||||
"ecotone_time": 0,
|
"ecotone_time": 0,
|
||||||
|
"hyrax_time": 1741726801,
|
||||||
|
"l2cancun_time": 1741726801,
|
||||||
|
"prevrandao_disabling_time": 1741726801,
|
||||||
"batch_inbox_address": "0xff00000000000000000000000000000000048900",
|
"batch_inbox_address": "0xff00000000000000000000000000000000048900",
|
||||||
"deposit_contract_address": "0x17bfafa932d2e23bd9b909fd5b4d2e2a27043fb1",
|
"deposit_contract_address": "0x17bfafa932d2e23bd9b909fd5b4d2e2a27043fb1",
|
||||||
"l1_system_config_address": "0x30f82a1ca89226e8b8815d6ebb728e3b18a428ff",
|
"l1_system_config_address": "0x30f82a1ca89226e8b8815d6ebb728e3b18a428ff",
|
||||||
"protocol_versions_address": "0x0000000000000000000000000000000000000000"
|
"protocol_versions_address": "0x0000000000000000000000000000000000000000"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
4
zircuit/testnet/genesis.json
Executable file → Normal file
4
zircuit/testnet/genesis.json
Executable file → Normal file
@@ -29,7 +29,9 @@
|
|||||||
},
|
},
|
||||||
"canyonTime": 1711297396,
|
"canyonTime": 1711297396,
|
||||||
"shanghaiTime": 1711297396,
|
"shanghaiTime": 1711297396,
|
||||||
"ecotoneTime": 1720008000
|
"ecotoneTime": 1720008000,
|
||||||
|
"monoFeeBlock": 20829888,
|
||||||
|
"cancunTime": 1741557600
|
||||||
},
|
},
|
||||||
"nonce": "0x0",
|
"nonce": "0x0",
|
||||||
"timestamp": "0x655261e0",
|
"timestamp": "0x655261e0",
|
||||||
|
|||||||
@@ -29,5 +29,8 @@
|
|||||||
"canyon_time": 1711297396,
|
"canyon_time": 1711297396,
|
||||||
"delta_time": 1720008000,
|
"delta_time": 1720008000,
|
||||||
"ecotone_time": 1720008000,
|
"ecotone_time": 1720008000,
|
||||||
"protocol_versions_address": "0x0000000000000000000000000000000000000000"
|
"protocol_versions_address": "0x0000000000000000000000000000000000000000",
|
||||||
|
"hyrax_time": 1741557600,
|
||||||
|
"l2cancun_time": 1741557600,
|
||||||
|
"prevrandao_disabling_time": 1741557600
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user