Skip to content

Commit 47baa3b

Browse files
ryanschneidernot4x217
authored andcommitted
feat: Pectra (flashbots#37)
* chore(pectra): Use pectra devnet-4 compatbile geth and prysm * chore: log genesis info on startup to help w/ debugging * chore(pectra): use the current pectra mev-boost-relay code as well * chore(devnet5): https://github.com/s1na/go-ethereum/commits/prague-devnet-5/ * chore(devnet-5): https://github.com/prysmaticlabs/prysm/commits/devnet5/ * chore(devnet5): https://github.com/flashbots/mev-boost-relay/commits/electra/ * chore(devnet-5): Use develop@0b16c79 for Prysm * fix(reth): Use new engine flags for reth v1.1.6+ * fix(relay-mock-validation): Use a rnadom port form OS instead of picking our own * chore(devnet-5): Use flashbots/mev-boost-relay#671 * chore(devnet-6): Updates for devnet-6. * fixup: minor cleanup * fixup: go mod tidy * basic config to use assertoor to generate a bunch of deposits on-chain * fixup(assertoor): genesis.json had zero deposit contract address. * fixup(assertoor): Use one of the other prefunded accounts * chore(deps): Update to latest geth, prysm, and mev-boost-relay * fixup: reth 1.2.0! * fixup(vc): Use --prefer-builder-proposals to always use builder block if available. * chore(lighthouse): use v7.0.0-beta.0, emit warning on macOS. * chore(geth): Use 1.15.1 since its out.
1 parent d10d8f2 commit 47baa3b

File tree

7 files changed

+304
-191
lines changed

7 files changed

+304
-191
lines changed

artifacts/artifacts.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ func DownloadArtifacts() (map[string]string, error) {
2424
{
2525
Name: "reth",
2626
Org: "paradigmxyz",
27-
Version: "v1.0.2",
27+
Version: "v1.2.0",
2828
Arch: func(goos, goarch string) string {
2929
if goos == "linux" {
3030
return "x86_64-unknown-linux-gnu"
@@ -39,12 +39,12 @@ func DownloadArtifacts() (map[string]string, error) {
3939
{
4040
Name: "lighthouse",
4141
Org: "sigp",
42-
Version: "v5.2.1",
42+
Version: "v7.0.0-beta.0",
4343
Arch: func(goos, goarch string) string {
4444
if goos == "linux" {
4545
return "x86_64-unknown-linux-gnu"
4646
} else if goos == "darwin" && goarch == "arm64" { // Apple M1
47-
return "x86_64-apple-darwin-portable"
47+
return "x86_64-apple-darwin"
4848
} else if goos == "darwin" && goarch == "amd64" {
4949
return "x86_64-apple-darwin"
5050
}
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
# To use this test:
2+
# cd into this directory
3+
# run:
4+
# docker run -v $(pwd):/config -p 8080:8080 -it ethpandaops/assertoor:latest --config=/config/playground_deposits.yaml
5+
#
6+
# you can follow along either in the console output or open http://localhost:8080/ to see the
7+
# assertoor web UI.
8+
endpoints:
9+
- name: "playground"
10+
executionUrl: "http://host.docker.internal:8545/"
11+
consensusUrl: "http://host.docker.internal:3500"
12+
13+
web:
14+
server:
15+
host: "0.0.0.0"
16+
port: 8080
17+
frontend:
18+
enabled: true
19+
debug: true
20+
pprof: true
21+
tests:
22+
- id: fillup-deposit-queue
23+
name: "Fillup deposit queue"
24+
timeout: 1h
25+
config:
26+
# 0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65
27+
walletPrivkey: "47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a"
28+
depositCount: 1010
29+
depositMaxIndex: 100
30+
depositContract: "0x4242424242424242424242424242424242424242"
31+
throughputPerIndex: 20
32+
maxPendingPerIndex: 40
33+
walletSeed: ""
34+
tasks:
35+
- name: check_clients_are_healthy
36+
title: "Check if at least one client is ready"
37+
timeout: 5m
38+
config:
39+
minClientCount: 1
40+
41+
- name: run_shell
42+
id: prepare
43+
title: "Prepare workers"
44+
config:
45+
envVars:
46+
depositCount: "depositCount"
47+
depositMaxIndex: "depositMaxIndex"
48+
command: |
49+
depositCount=$(echo $depositCount | jq -r .)
50+
depositMaxIndex=$(echo $depositMaxIndex | jq -r .)
51+
52+
minDepositCount=$(expr $depositCount \/ $depositMaxIndex)
53+
plusOneDepositCount=$(expr $depositCount - $minDepositCount \* $depositMaxIndex)
54+
55+
workers="[]"
56+
57+
while read index; do
58+
depositCount=$minDepositCount
59+
if [ "$index" -lt "$plusOneDepositCount" ]; then
60+
depositCount=$(expr $depositCount + 1)
61+
fi
62+
63+
worker=$(echo "{\"index\": $index, \"depositCount\": $depositCount}" )
64+
workers=$(echo $workers | jq -c ". += [$worker]")
65+
done <<< $(seq 0 1 $(expr $depositMaxIndex - 1))
66+
67+
echo "::set-out-json workers $workers"
68+
69+
- name: run_task_matrix
70+
title: "Generate ${depositCount} topup deposits for first ${depositMaxIndex} keys"
71+
configVars:
72+
matrixValues: "tasks.prepare.outputs.workers"
73+
config:
74+
runConcurrent: true
75+
matrixVar: "worker"
76+
task:
77+
name: run_tasks
78+
title: "Generate ${{worker.depositCount}} topup deposits for key ${{worker.index}}"
79+
config:
80+
tasks:
81+
- name: check_consensus_validator_status
82+
title: "Get validator pubkey for key ${{worker.index}}"
83+
id: "get_validator"
84+
timeout: 1m
85+
configVars:
86+
validatorIndex: "worker.index"
87+
88+
- name: generate_child_wallet
89+
id: depositor_wallet
90+
title: "Generate wallet for lifecycle test"
91+
configVars:
92+
walletSeed: "| \"fillup-deposit-queue-\" + .walletSeed + (.worker.index | tostring)"
93+
prefundMinBalance: "| (.worker.depositCount + 1) * 1000000000000000000"
94+
privateKey: "walletPrivkey"
95+
96+
- name: sleep
97+
title: "Sleep 10s to ensure propagation of last block with wallet fundings to all clients"
98+
config:
99+
duration: 10s
100+
101+
- name: run_task_options
102+
title: "Generate ${{worker.depositCount}} top up deposits with 1 ETH each"
103+
config:
104+
task:
105+
name: generate_deposits
106+
title: "Generate top up deposits for key ${{worker.index}} (${{tasks.get_validator.outputs.pubkey}})"
107+
config:
108+
depositAmount: 1
109+
topUpDeposit: true
110+
awaitReceipt: true
111+
failOnReject: true
112+
configVars:
113+
limitTotal: "worker.depositCount"
114+
limitPerSlot: "throughputPerIndex"
115+
limitPending: "maxPendingPerIndex"
116+
walletPrivkey: "tasks.depositor_wallet.outputs.childWallet.privkey"
117+
publicKey: "tasks.get_validator.outputs.pubkey"
118+
depositContract: "depositContract"

config.yaml.tmpl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ DENEB_FORK_VERSION: 0x20000093
2626
ELECTRA_FORK_EPOCH: {{.LatestForkEpoch}}
2727
ELECTRA_FORK_VERSION: 0x20000094
2828

29+
# Fulu (not enabled at all yet)
30+
FULU_FORK_EPOCH: 18446744073709551615
31+
FULU_FORK_VERSION: 0x20000095
32+
2933
# Time parameters
3034
SECONDS_PER_SLOT: 12
3135

go.mod

Lines changed: 42 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,85 +1,76 @@
11
module github.com/ferranbt/builder-playground
22

3-
go 1.22.0
3+
go 1.23.5
44

5-
toolchain go1.22.2
5+
toolchain go1.23.6
66

77
require (
88
github.com/alicebob/miniredis/v2 v2.32.1
9-
github.com/ethereum/go-ethereum v1.13.14
10-
github.com/flashbots/go-boost-utils v1.8.0
11-
github.com/flashbots/mev-boost-relay v0.29.2-0.20240705093628-4d4478a9c9dc
9+
github.com/ethereum/go-ethereum v1.15.1
10+
github.com/flashbots/go-boost-utils v1.8.2-0.20240925223941-58709124077d
11+
github.com/flashbots/mev-boost-relay v0.29.2-0.20250206201012-fced1f3aac8c
1212
github.com/hashicorp/go-uuid v1.0.3
13-
github.com/prysmaticlabs/prysm/v5 v5.1.1-0.20241001143536-6d499bc9fc99
13+
github.com/prysmaticlabs/prysm/v5 v5.3.0
1414
github.com/sirupsen/logrus v1.9.3
15-
github.com/spf13/cobra v1.8.0
15+
github.com/spf13/cobra v1.8.1
1616
github.com/wealdtech/go-eth2-wallet-encryptor-keystorev4 v1.1.3
17-
golang.org/x/mod v0.21.0
17+
golang.org/x/mod v0.22.0
1818
gopkg.in/yaml.v2 v2.4.0
1919
)
2020

2121
require (
22-
github.com/BurntSushi/toml v1.3.2 // indirect
23-
github.com/DataDog/zstd v1.5.5 // indirect
24-
github.com/Microsoft/go-winio v0.6.1 // indirect
22+
github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c // indirect
23+
github.com/Microsoft/go-winio v0.6.2 // indirect
2524
github.com/NYTimes/gziphandler v1.1.1 // indirect
2625
github.com/VictoriaMetrics/fastcache v1.12.2 // indirect
2726
github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a // indirect
2827
github.com/allegro/bigcache v1.2.1 // indirect
29-
github.com/attestantio/go-builder-client v0.4.3-0.20240124194555-d44db06f45fa // indirect
30-
github.com/attestantio/go-eth2-client v0.21.1 // indirect
28+
github.com/attestantio/go-builder-client v0.5.1-0.20250120215322-c65b220a98eb // indirect
29+
github.com/attestantio/go-eth2-client v0.22.1-0.20250106164842-07b6ce39bb43 // indirect
3130
github.com/beorn7/perks v1.0.1 // indirect
32-
github.com/bits-and-blooms/bitset v1.11.0 // indirect
31+
github.com/bits-and-blooms/bitset v1.17.0 // indirect
3332
github.com/bradfitz/gomemcache v0.0.0-20230124162541-5f7a7d875746 // indirect
34-
github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect
3533
github.com/buger/jsonparser v1.1.1 // indirect
3634
github.com/cespare/xxhash/v2 v2.3.0 // indirect
37-
github.com/cockroachdb/errors v1.11.1 // indirect
38-
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect
39-
github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 // indirect
40-
github.com/cockroachdb/redact v1.1.5 // indirect
41-
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect
42-
github.com/consensys/bavard v0.1.13 // indirect
43-
github.com/consensys/gnark-crypto v0.12.1 // indirect
44-
github.com/cpuguy83/go-md2man/v2 v2.0.3 // indirect
45-
github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 // indirect
46-
github.com/crate-crypto/go-kzg-4844 v0.7.0 // indirect
35+
github.com/consensys/bavard v0.1.22 // indirect
36+
github.com/consensys/gnark-crypto v0.14.0 // indirect
37+
github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect
38+
github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a // indirect
39+
github.com/crate-crypto/go-kzg-4844 v1.1.0 // indirect
4740
github.com/davecgh/go-spew v1.1.1 // indirect
48-
github.com/deckarep/golang-set/v2 v2.5.0 // indirect
41+
github.com/deckarep/golang-set/v2 v2.6.0 // indirect
4942
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect
5043
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
51-
github.com/ethereum/c-kzg-4844 v0.4.0 // indirect
44+
github.com/emicklei/dot v1.6.2 // indirect
45+
github.com/ethereum/c-kzg-4844 v1.0.0 // indirect
46+
github.com/ethereum/go-verkle v0.2.2 // indirect
5247
github.com/fatih/color v1.16.0 // indirect
53-
github.com/ferranbt/fastssz v0.1.3 // indirect
48+
github.com/ferranbt/fastssz v0.1.4 // indirect
5449
github.com/flashbots/go-utils v0.5.0 // indirect
5550
github.com/fsnotify/fsnotify v1.6.0 // indirect
56-
github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 // indirect
57-
github.com/getsentry/sentry-go v0.25.0 // indirect
5851
github.com/go-gorp/gorp/v3 v3.1.0 // indirect
5952
github.com/go-logr/logr v1.4.2 // indirect
6053
github.com/go-logr/stdr v1.2.2 // indirect
6154
github.com/go-ole/go-ole v1.3.0 // indirect
6255
github.com/go-redis/redis/v9 v9.0.0-rc.1 // indirect
63-
github.com/goccy/go-yaml v1.11.2 // indirect
56+
github.com/goccy/go-yaml v1.11.3 // indirect
6457
github.com/gofrs/flock v0.8.1 // indirect
6558
github.com/gogo/protobuf v1.3.2 // indirect
66-
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect
59+
github.com/golang/snappy v0.0.5-0.20231225225746-43d5d4cd4e0e // indirect
6760
github.com/google/go-cmp v0.6.0 // indirect
6861
github.com/google/gofuzz v1.2.0 // indirect
6962
github.com/google/uuid v1.6.0 // indirect
7063
github.com/gorilla/mux v1.8.1 // indirect
7164
github.com/gorilla/websocket v1.5.3 // indirect
7265
github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect
73-
github.com/herumi/bls-eth-go-binary v0.0.0-20210917013441-d37c07cfda4e // indirect
66+
github.com/herumi/bls-eth-go-binary v1.31.0 // indirect
7467
github.com/holiman/bloomfilter/v2 v2.0.3 // indirect
75-
github.com/holiman/uint256 v1.2.4 // indirect
68+
github.com/holiman/uint256 v1.3.2 // indirect
7669
github.com/inconshreveable/mousetrap v1.1.0 // indirect
7770
github.com/jmoiron/sqlx v1.3.5 // indirect
7871
github.com/json-iterator/go v1.1.12 // indirect
7972
github.com/klauspost/compress v1.17.9 // indirect
8073
github.com/klauspost/cpuid/v2 v2.2.8 // indirect
81-
github.com/kr/pretty v0.3.1 // indirect
82-
github.com/kr/text v0.2.0 // indirect
8374
github.com/lib/pq v1.10.8 // indirect
8475
github.com/mattn/go-colorable v0.1.13 // indirect
8576
github.com/mattn/go-isatty v0.0.20 // indirect
@@ -96,58 +87,55 @@ require (
9687
github.com/patrickmn/go-cache v2.1.0+incompatible // indirect
9788
github.com/pkg/errors v0.9.1 // indirect
9889
github.com/pmezard/go-difflib v1.0.0 // indirect
99-
github.com/prometheus/client_golang v1.20.0 // indirect
90+
github.com/prometheus/client_golang v1.20.5 // indirect
10091
github.com/prometheus/client_model v0.6.1 // indirect
10192
github.com/prometheus/common v0.55.0 // indirect
10293
github.com/prometheus/procfs v0.15.1 // indirect
103-
github.com/prysmaticlabs/fastssz v0.0.0-20240620202422-a981b8ef89d3 // indirect
94+
github.com/prysmaticlabs/fastssz v0.0.0-20241008181541-518c4ce73516 // indirect
10495
github.com/prysmaticlabs/go-bitfield v0.0.0-20240328144219-a1caa50c3a1e // indirect
10596
github.com/prysmaticlabs/gohashtree v0.0.4-beta.0.20240624100937-73632381301b // indirect
10697
github.com/r3labs/sse/v2 v2.10.0 // indirect
107-
github.com/rivo/uniseg v0.4.4 // indirect
108-
github.com/rogpeppe/go-internal v1.12.0 // indirect
98+
github.com/rivo/uniseg v0.4.7 // indirect
10999
github.com/rubenv/sql-migrate v1.5.2 // indirect
110100
github.com/russross/blackfriday/v2 v2.1.0 // indirect
111101
github.com/shirou/gopsutil v3.21.11+incompatible // indirect
112102
github.com/spf13/pflag v1.0.5 // indirect
113-
github.com/stretchr/testify v1.9.0 // indirect
114-
github.com/supranational/blst v0.3.11 // indirect
103+
github.com/stretchr/testify v1.10.0 // indirect
104+
github.com/supranational/blst v0.3.14 // indirect
115105
github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect
116106
github.com/thomaso-mirodin/intmath v0.0.0-20160323211736-5dc6d854e46e // indirect
117107
github.com/tklauser/go-sysconf v0.3.13 // indirect
118108
github.com/tklauser/numcpus v0.7.0 // indirect
119-
github.com/urfave/cli/v2 v2.26.0 // indirect
109+
github.com/urfave/cli/v2 v2.27.1 // indirect
120110
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
121111
github.com/yuin/gopher-lua v1.1.1 // indirect
122112
github.com/yusufpapurcu/wmi v1.2.3 // indirect
123-
go.opentelemetry.io/otel v1.29.0 // indirect
113+
go.opentelemetry.io/otel v1.32.0 // indirect
124114
go.opentelemetry.io/otel/exporters/jaeger v1.17.0 // indirect
125115
go.opentelemetry.io/otel/exporters/prometheus v0.47.0 // indirect
126-
go.opentelemetry.io/otel/metric v1.29.0 // indirect
116+
go.opentelemetry.io/otel/metric v1.32.0 // indirect
127117
go.opentelemetry.io/otel/sdk v1.29.0 // indirect
128118
go.opentelemetry.io/otel/sdk/metric v1.29.0 // indirect
129-
go.opentelemetry.io/otel/trace v1.29.0 // indirect
119+
go.opentelemetry.io/otel/trace v1.32.0 // indirect
130120
go.uber.org/atomic v1.11.0 // indirect
131121
go.uber.org/multierr v1.11.0 // indirect
132122
go.uber.org/zap v1.27.0 // indirect
133-
golang.org/x/crypto v0.26.0 // indirect
123+
golang.org/x/crypto v0.32.0 // indirect
134124
golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa // indirect
135-
golang.org/x/net v0.28.0 // indirect
125+
golang.org/x/net v0.34.0 // indirect
136126
golang.org/x/oauth2 v0.21.0 // indirect
137-
golang.org/x/sync v0.8.0 // indirect
138-
golang.org/x/sys v0.24.0 // indirect
139-
golang.org/x/term v0.23.0 // indirect
140-
golang.org/x/text v0.17.0 // indirect
127+
golang.org/x/sync v0.10.0 // indirect
128+
golang.org/x/sys v0.29.0 // indirect
129+
golang.org/x/term v0.28.0 // indirect
130+
golang.org/x/text v0.21.0 // indirect
141131
golang.org/x/time v0.5.0 // indirect
142-
golang.org/x/tools v0.24.0 // indirect
143132
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect
144133
google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 // indirect
145134
google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect
146135
google.golang.org/grpc v1.65.0 // indirect
147136
google.golang.org/protobuf v1.34.2 // indirect
148137
gopkg.in/cenkalti/backoff.v1 v1.1.0 // indirect
149138
gopkg.in/inf.v0 v0.9.1 // indirect
150-
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
151139
gopkg.in/yaml.v3 v3.0.1 // indirect
152140
k8s.io/apimachinery v0.30.4 // indirect
153141
k8s.io/client-go v0.30.4 // indirect

0 commit comments

Comments
 (0)