Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ethdo wrapper work #28

Open
wants to merge 71 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
2a95279
Merge pull request #15 from 0xTylerHolmes/v1-rc
0xTylerHolmes Jun 28, 2023
a9f1cfd
set listen port
0xTylerHolmes Jun 28, 2023
67aaec9
modularize monitors. Add testing to node_watch
0xTylerHolmes Jun 30, 2023
1853ba0
separate consensus from client monitor
0xTylerHolmes Jul 3, 2023
60ffcc5
add peering summary metric
0xTylerHolmes Jul 3, 2023
9299894
(lodestar) update the tpc/udp for listening for enr connections
0xTylerHolmes Jul 3, 2023
1624144
lint
0xTylerHolmes Jul 3, 2023
7bf5304
Merge pull request #16 from 0xTylerHolmes/enhanced-reporting
0xTylerHolmes Jul 3, 2023
b6a2d74
using stable devnet-7 branches
0xTylerHolmes Jul 10, 2023
64902f5
update branches
0xTylerHolmes Jul 10, 2023
396ffb0
add mainnet trusted-setup
0xTylerHolmes Jul 10, 2023
f5ba01e
update branches
0xTylerHolmes Jul 10, 2023
58e8c37
add generic key getter for cli args
0xTylerHolmes Jul 10, 2023
2338402
add logic for trusted setups
0xTylerHolmes Jul 10, 2023
fbbb1b6
update tx-fuzz with more arg options for deneb
0xTylerHolmes Jul 10, 2023
8e1710e
add deneb related args
0xTylerHolmes Jul 10, 2023
0d29b74
remove unimplemented kzg setup flag
0xTylerHolmes Jul 10, 2023
3857834
update log level to debug for bootstrapper
0xTylerHolmes Jul 10, 2023
72faf0d
add other dockers for clean merge with master.
0xTylerHolmes Jul 10, 2023
d9297cc
remove unneeded addition_args
0xTylerHolmes Jul 10, 2023
4cb5c2c
fix imports
0xTylerHolmes Jul 10, 2023
1478564
add more deneb config params
0xTylerHolmes Jul 11, 2023
7d5753b
switch teku release
0xTylerHolmes Jul 11, 2023
6d92514
fix txcount arg
0xTylerHolmes Jul 11, 2023
b9c299b
arg update
0xTylerHolmes Jul 11, 2023
0b911b8
epoch 1 deneb
0xTylerHolmes Jul 11, 2023
3ac72d3
Merge pull request #17 from 0xTylerHolmes/4844
0xTylerHolmes Jul 11, 2023
0ba8dbf
arm-supported dockerfiles
0xTylerHolmes Jul 21, 2023
dfe1aed
remove geth.ipc for arm runs.
0xTylerHolmes Jul 21, 2023
e8cebf4
is_deneb field
0xTylerHolmes Jul 24, 2023
49f560f
x86 + arm
0xTylerHolmes Jul 25, 2023
d17ef03
Merge pull request #18 from 0xTylerHolmes/arm-dockerfiles
0xTylerHolmes Jul 25, 2023
3faaa0a
Merge branch 'z3n-chada:master' into pre-deneb-experiments
0xTylerHolmes Jul 25, 2023
37de1b2
sync up with arm dockerfiles.
0xTylerHolmes Jul 25, 2023
c30f0e3
updated nethermind runner path
0xTylerHolmes Jul 25, 2023
435758a
fix minimal build flags
0xTylerHolmes Jul 25, 2023
d35b6b6
Merge branch 'master' into pre-deneb-experiments
0xTylerHolmes Jul 25, 2023
00801f9
Merge pull request #20 from 0xTylerHolmes/pre-deneb-experiments
0xTylerHolmes Jul 25, 2023
4356ce1
reth builder
0xTylerHolmes Sep 16, 2023
c68cc2d
reth launcher
0xTylerHolmes Sep 16, 2023
91ecf6c
reth support for etb docker
0xTylerHolmes Sep 16, 2023
6b3000e
add reth nodes to minimal and mainnet testnet configs
0xTylerHolmes Sep 16, 2023
dd2d0b7
Merge pull request #21 from 0xTylerHolmes/reth
0xTylerHolmes Sep 16, 2023
6abcf03
remove custom ethash for nethermind
0xTylerHolmes Sep 16, 2023
4f59321
match holesky genesis files
0xTylerHolmes Sep 17, 2023
7bab28b
add json_rpc_snoop capability
0xTylerHolmes Sep 17, 2023
2e22ae0
fix nethermind genesis
0xTylerHolmes Sep 18, 2023
fac8fdc
json-rpc-snoop usage
0xTylerHolmes Sep 18, 2023
9f77254
add json-rpc-snoop to minimal testnet config
0xTylerHolmes Sep 18, 2023
9583365
add json-rpc-snoop to mainnet testnet config
0xTylerHolmes Sep 18, 2023
c473a90
Merge pull request #22 from 0xTylerHolmes/el_genesis_fixes
0xTylerHolmes Sep 18, 2023
b62d0e1
update reth cli args
0xTylerHolmes Sep 20, 2023
665a3b4
add default params
0xTylerHolmes Sep 20, 2023
14e857b
add a template config for README
0xTylerHolmes Sep 20, 2023
78a5546
fix json-snooper-proxy-port config def
0xTylerHolmes Sep 20, 2023
fb777d6
add defaults for execution-configs and consensus-configs
0xTylerHolmes Sep 21, 2023
92b647c
simplify defaults and add pre-processing to simplified configs.
0xTylerHolmes Sep 24, 2023
ef53bbe
add admin to jsonrpc.additional rpc urls
0xTylerHolmes Sep 24, 2023
8a6d12a
add run-testnet to makefile
0xTylerHolmes Sep 24, 2023
41672e0
finish adding defaults (add additional-envs)
0xTylerHolmes Sep 24, 2023
652402e
fix nethermind launcher
0xTylerHolmes Sep 24, 2023
f05051e
add option to select an instance as a target for spammer
0xTylerHolmes Sep 24, 2023
98f6c67
add pydantic to dockers
0xTylerHolmes Sep 24, 2023
4efddca
add json-rpc-snooper to minimals
0xTylerHolmes Sep 24, 2023
6e38861
Merge pull request #23 from 0xTylerHolmes/default_args
0xTylerHolmes Sep 24, 2023
6f7dd59
default p2p-port and reth log-level
0xTylerHolmes Sep 27, 2023
1748f7d
reth-log-level adaptation
0xTylerHolmes Sep 27, 2023
c6fbab2
launchers more in line with kurtosis
0xTylerHolmes Sep 27, 2023
9701a84
order swap in building clients
0xTylerHolmes Sep 27, 2023
a61f98b
remove some commented args that are not needed and clean up
0xTylerHolmes Sep 27, 2023
f16ce90
Merge pull request #24 from 0xTylerHolmes/simplified-launchers
0xTylerHolmes Sep 27, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ init-testnet:
run-bootstrapper:
docker run -it -v $(shell pwd)/:/source/ -v $(shell pwd)/data/:/data ethereum-testnet-bootstrapper --config $(config) --bootstrap-testnet --log-level $(log_level)

# run testnet
run-testnet:
docker-compose up --force-recreate --remove-orphans
# remove last run.
clean:
docker run -t -v $(shell pwd)/:/source/ -v $(shell pwd)/data/:/data ethereum-testnet-bootstrapper --clean --log-level $(log_level)
1 change: 1 addition & 0 deletions bootstrapper.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ RUN apt-get update && \
rm -rf /var/lib/apt/lists/*

RUN pip3 install ruamel.yaml web3
RUN pip3 install pydantic
COPY --from=builder /go/bin/eth2-testnet-genesis /usr/local/bin/eth2-testnet-genesis
COPY --from=builder /go/bin/eth2-val-tools /usr/local/bin/eth2-val-tools
COPY --from=builder /go/bin/eth2-bootnode /usr/local/bin/eth2-bootnode
Expand Down
236 changes: 236 additions & 0 deletions configs/mainnet-deneb-testnet.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,236 @@
# Running a mainnet spec local testnet with the current network conditions.
# parameters for building the docker network
docker:
network-name: "ethereum-testnet"
ip-subnet: "10.0.20.0/24"
volumes: ['./data:/data/', './:/source/']

# add optional custom files here. They are propagated to all container env.
# NOTE: default values are not overwritten!
#files:

# testnet-configuration parameters
testnet-config:
deposit-contract-address: "0x8c594691c0e592ffa21f153a16ae41db5befcaaa"

# execution layer parameters
execution-layer:
seconds-per-eth1-block: 14
chain-id: 1337
network-id: 1337

# account information
account-mnemonic: "cat swing flag economy stadium alone churn speed unique patch report train"
keystore-passphrase: "testnet-password" # passphrase for any keystore files.

# premine-eth account values in ETH
premines:
"m/44'/60'/0'/0/0": 100000000
"m/44'/60'/0'/0/1": 100000000
"m/44'/60'/0'/0/2": 100000000
"m/44'/60'/0'/0/3": 100000000

# used for generating the consensus config placed in /data/eth2-config.yaml
consensus-layer:
preset-base: 'mainnet'
config-name: "local-mainnet-testnet"

min-genesis-active-validator-count: 60 # custom pre-seeded into genesis state.

# the validator mnemonic to use for all validators
validator-mnemonic: "ocean style run case glory clip into nature guess jacket document firm fiscal hello kite disagree symptom tide net coral envelope wink render festival"

# forks
# omitted fork-epochs are assumed to be far-future
# omitted fork-versions are assumed to be 1 + the previous fork-version

phase0-fork-version: 0x01000666
phase0-fork-epoch: 0

altair-fork-version: 0x02000666
altair-fork-epoch: 0

bellatrix-fork-version: 0x03000666
bellatrix-fork-epoch: 0

capella-fork-version: 0x04000666
capella-fork-epoch: 0

deneb-fork-version: 0x05000666
deneb-fork-epoch: 1

sharding-fork-version: 0x06000666
# sharding-fork-epoch: 18446744073709551615 # far future

# configuration options used for execution clients
execution-configs:

geth-execution-config:
client: "geth"
launcher: "/source/deps/launchers/el/launch-geth.sh"

log-level: "4" # detail
http-apis: "debug,txpool,admin,net,eth,web3,personal,engine,clique,miner"
ws-apis: "admin,net,eth,engine"
http-port: 8645
ws-port: 8646
p2p-port: 666
engine-http-port: 8551 # http/ws same port.
engine-ws-port: 8551 # include for nimbus
metric-port: 9001

besu-execution-config:
client: "besu"
launcher: "/source/deps/launchers/el/launch-besu.sh"
log-level: "info"
http-apis: "ADMIN,ETH,NET,TXPOOL,WEB3,ENGINE"
ws-apis: "ADMIN,ETH,NET,TXPOOL,WEB3,ENGINE"
http-port: 8645
ws-port: 8646
p2p-port: 666
engine-http-port: 8551
engine-ws-port: 8551
metric-port: 9001

nethermind-execution-config:
client: "nethermind"
log-level: "info"
launcher: "/source/deps/launchers/el/launch-nethermind.sh"
http-apis: "net,eth,consensus,subscribe,web3,admin"
ws-apis: "net,eth,consensus,subscribe,web3,admin"
http-port: 8645
ws-port: 8646
engine-http-port: 8551 # doesn't do http/ws the same.
engine-ws-port: 8552
p2p-port: 666
metric-port: 9001

# configuration options used for consensus clients
consensus-configs:

teku-consensus-client:
client: "teku"
launcher: "/source/deps/launchers/cl/launch-teku.sh"
log-level: "INFO"

num-validators: 15 # number of validators for every client node

p2p-port: 4000 # start port used for discovery
beacon-api-port: 5000 # start port used for the beacon rest API
beacon-rpc-port: 5500
validator-rpc-port: 6500
beacon-metric-port: 8000 # start port used for beacon node metrics.
validator-metric-port: 9000 # start port used for validator client metrics.

lighthouse-consensus-client:
client: "lighthouse"
launcher: "/source/deps/launchers/cl/launch-lighthouse.sh"
num-validators: 15 # number of validators for every client node
# start ports increment each time we have a node.
log-level: "debug"
p2p-port: 4000 # start port used for discovery
beacon-api-port: 5000 # start port used for the beacon rest API
beacon-rpc-port: 5500
validator-rpc-port: 6500
beacon-metric-port: 8000 # start port used for beacon node metrics.
validator-metric-port: 9000 # start port used for validator client metrics.

client-instances:
###############################################################################
####### All Consensus Clients paired with a Geth Execution Client. ############
###############################################################################

# Geth clients
teku-geth:
# docker-compose
image: "etb-all-clients"
tag: "mainnet-deneb"
start-ip-address: "10.0.20.20"
num-nodes: 1

# consensus-info
consensus-config: "teku-consensus-client"
execution-config: "geth-execution-config"

validator-offset-start: 0

lighthouse-geth:
# docker-compose
image: "etb-all-clients"
tag: "mainnet-deneb"
start-ip-address: "10.0.20.30"
num-nodes: 1

# consensus-info
consensus-config: "lighthouse-consensus-client"
execution-config: "geth-execution-config"

validator-offset-start: 15

# Nethermind clients
teku-nethermind:
# docker-compose
image: "etb-all-clients"
tag: "mainnet-deneb"
start-ip-address: "10.0.20.120"
num-nodes: 1

# consensus-info
consensus-config: "teku-consensus-client"
execution-config: "nethermind-execution-config"

validator-offset-start: 30

lighthouse-nethermind:
# docker-compose
image: "etb-all-clients"
tag: "mainnet-deneb"
start-ip-address: "10.0.20.130"
num-nodes: 1

# consensus-info
consensus-config: "lighthouse-consensus-client"
execution-config: "nethermind-execution-config"

validator-offset-start: 45

# generic instances that run fuzzers/health checks/etc.
generic-instances:
# the bootstrapper that builds the network.
ethereum-testnet-bootstrapper:
image: "ethereum-testnet-bootstrapper"
tag: "latest"
start-ip-address: "10.0.20.201"
num-nodes: 1
entrypoint: "/source/entrypoint.sh --bootstrap-testnet --log-level debug"

# required instance, bootnode to connect all CL clients together
eth2-bootnode:
image: "ethereum-testnet-bootstrapper"
tag: "latest"
start-ip-address: "10.0.20.202"
entrypoint: "/source/deps/launchers/bootnodes/launch-eth2-bootnode.sh"
num-nodes: 1 # this is a special case, we only want one instance of this.

additional-env:
consensus-bootnode-start-ip-addr: "10.0.20.201"
consensus-bootnode-private-key: "bc971f814d7bd37f7502cc67408c4f2c5a06e1b3d48dc041e42b5478154df1a8" # private key for the bootnode to use
consensus-bootnode-enr-port: 9001 #port in the enr
consensus-bootnode-api-port: 6000 # port for web api.
consensus-bootnode-enr-file: "/data/consensus-bootnodes.txt" # file to write the enr to.

# not required, but useful for debugging. This watches the network and shows the head & checkpoints of the CLs.
node-watch:
image: "ethereum-testnet-bootstrapper"
tag: "latest"
start-ip-address: "10.0.20.203"
num-nodes: 1
entrypoint: "python3 /source/src/node_watch.py --log-level info --monitor heads:slot --monitor checkpoints:slot --max-retries 3"

tx-spammer:
image: "etb-all-clients"
tag: "mainnet-deneb"
start-ip-address: "10.0.20.204"
num-nodes: 1
# runs on the first prysm geth node.
entrypoint: "python3 /source/src/tx_spammer.py --target-ip 10.0.20.20 --target-port 8645 --epoch-delay 1 --fuzz-mode spam --no-al --tx-count 100 --tx-fuzz-path /usr/local/bin/livefuzzer"
21 changes: 19 additions & 2 deletions configs/mainnet-testnet.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ testnet-config:
bellatrix-fork-epoch: 0

capella-fork-version: 0x04000666
capella-fork-epoch: 0
capella-fork-epoch: 2

deneb-fork-version: 0x05000666
# deneb-fork-epoch: 18446744073709551615 # far future
Expand All @@ -78,6 +78,21 @@ execution-configs:
engine-http-port: 8551 # http/ws same port.
engine-ws-port: 8551 # include for nimbus
metric-port: 9001
json-snooper-proxy-port: 8765

reth-execution-config:
client: "reth"
launcher: "/source/deps/launchers/el/launch-reth.sh"
log-level: "vvvv" # detail
http-apis: "eth,net,admin,web3"
ws-apis: "eth,net,admin,web3"
http-port: 8645
ws-port: 8646
p2p-port: 666
engine-http-port: 8551 # http/ws same port.
engine-ws-port: 8551 # include for nimbus
metric-port: 9001
json-snooper-proxy-port: 8765

besu-execution-config:
client: "besu"
Expand All @@ -91,6 +106,7 @@ execution-configs:
engine-http-port: 8551
engine-ws-port: 8551
metric-port: 9001
json-snooper-proxy-port: 8765

nethermind-execution-config:
client: "nethermind"
Expand All @@ -104,6 +120,7 @@ execution-configs:
engine-ws-port: 8552
p2p-port: 666
metric-port: 9001
json-snooper-proxy-port: 8765

# configuration options used for consensus clients
consensus-configs:
Expand Down Expand Up @@ -421,7 +438,7 @@ generic-instances:
tag: "latest"
start-ip-address: "10.0.20.203"
num-nodes: 1
entrypoint: "python3 /source/src/node_watch.py --log-level info"
entrypoint: "python3 /source/src/node_watch.py --log-level info --monitor heads:slot --monitor checkpoints:slot --max-retries 3"

tx-spammer:
image: "etb-all-clients"
Expand Down
Loading