Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
03a0622
chore(pectra): Use pectra devnet-4 compatbile geth and prysm
ryanschneider Dec 3, 2024
5866265
chore: log genesis info on startup to help w/ debugging
ryanschneider Dec 4, 2024
31ea2f6
chore(pectra): use the current pectra mev-boost-relay code as well
ryanschneider Dec 4, 2024
c7a5850
chore(devnet5): https://github.com/s1na/go-ethereum/commits/prague-de…
ryanschneider Jan 16, 2025
c240b14
chore(devnet-5): https://github.com/prysmaticlabs/prysm/commits/devnet5/
ryanschneider Jan 16, 2025
569a0ec
chore(devnet5): https://github.com/flashbots/mev-boost-relay/commits/…
ryanschneider Jan 16, 2025
287c820
chore(devnet-5): Use develop@0b16c79 for Prysm
ryanschneider Jan 17, 2025
8b12da4
fix(reth): Use new engine flags for reth v1.1.6+
ryanschneider Jan 20, 2025
57ce01f
fix(relay-mock-validation): Use a rnadom port form OS instead of pick…
ryanschneider Jan 20, 2025
c5c4542
chore(devnet-5): Use https://github.com/flashbots/mev-boost-relay/pul…
ryanschneider Jan 20, 2025
84c2b59
chore(devnet-6): Updates for devnet-6.
ryanschneider Feb 5, 2025
feb4f07
fixup: minor cleanup
ryanschneider Feb 5, 2025
c5c5912
fixup: go mod tidy
ryanschneider Feb 5, 2025
7404798
basic config to use assertoor to generate a bunch of deposits on-chain
ryanschneider Feb 12, 2025
6f65733
fixup(assertoor): genesis.json had zero deposit contract address.
ryanschneider Feb 12, 2025
46e188c
fixup(assertoor): Use one of the other prefunded accounts
ryanschneider Feb 12, 2025
4d26697
chore(deps): Update to latest geth, prysm, and mev-boost-relay
ryanschneider Feb 12, 2025
0e66349
fixup: reth 1.2.0!
ryanschneider Feb 12, 2025
c1536d8
fixup(vc): Use --prefer-builder-proposals to always use builder block…
ryanschneider Feb 12, 2025
6d0eb59
chore(lighthouse): use v7.0.0-beta.0, emit warning on macOS.
ryanschneider Feb 13, 2025
6dbfca3
chore(geth): Use 1.15.1 since its out.
ryanschneider Feb 13, 2025
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
6 changes: 3 additions & 3 deletions artifacts/artifacts.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ func DownloadArtifacts() (map[string]string, error) {
{
Name: "reth",
Org: "paradigmxyz",
Version: "v1.0.2",
Version: "v1.2.0",
Arch: func(goos, goarch string) string {
if goos == "linux" {
return "x86_64-unknown-linux-gnu"
Expand All @@ -39,12 +39,12 @@ func DownloadArtifacts() (map[string]string, error) {
{
Name: "lighthouse",
Org: "sigp",
Version: "v5.2.1",
Version: "v7.0.0-beta.0",
Arch: func(goos, goarch string) string {
if goos == "linux" {
return "x86_64-unknown-linux-gnu"
} else if goos == "darwin" && goarch == "arm64" { // Apple M1
return "x86_64-apple-darwin-portable"
return "x86_64-apple-darwin"
} else if goos == "darwin" && goarch == "amd64" {
return "x86_64-apple-darwin"
}
Expand Down
118 changes: 118 additions & 0 deletions assertoor/config/playground_deposits.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
# To use this test:
# cd into this directory
# run:
# docker run -v $(pwd):/config -p 8080:8080 -it ethpandaops/assertoor:latest --config=/config/playground_deposits.yaml
#
# you can follow along either in the console output or open http://localhost:8080/ to see the
# assertoor web UI.
endpoints:
- name: "playground"
executionUrl: "http://host.docker.internal:8545/"
consensusUrl: "http://host.docker.internal:3500"

web:
server:
host: "0.0.0.0"
port: 8080
frontend:
enabled: true
debug: true
pprof: true
tests:
- id: fillup-deposit-queue
name: "Fillup deposit queue"
timeout: 1h
config:
# 0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65
walletPrivkey: "47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a"
depositCount: 1010
depositMaxIndex: 100
depositContract: "0x4242424242424242424242424242424242424242"
throughputPerIndex: 20
maxPendingPerIndex: 40
walletSeed: ""
tasks:
- name: check_clients_are_healthy
title: "Check if at least one client is ready"
timeout: 5m
config:
minClientCount: 1

- name: run_shell
id: prepare
title: "Prepare workers"
config:
envVars:
depositCount: "depositCount"
depositMaxIndex: "depositMaxIndex"
command: |
depositCount=$(echo $depositCount | jq -r .)
depositMaxIndex=$(echo $depositMaxIndex | jq -r .)

minDepositCount=$(expr $depositCount \/ $depositMaxIndex)
plusOneDepositCount=$(expr $depositCount - $minDepositCount \* $depositMaxIndex)

workers="[]"

while read index; do
depositCount=$minDepositCount
if [ "$index" -lt "$plusOneDepositCount" ]; then
depositCount=$(expr $depositCount + 1)
fi

worker=$(echo "{\"index\": $index, \"depositCount\": $depositCount}" )
workers=$(echo $workers | jq -c ". += [$worker]")
done <<< $(seq 0 1 $(expr $depositMaxIndex - 1))

echo "::set-out-json workers $workers"

- name: run_task_matrix
title: "Generate ${depositCount} topup deposits for first ${depositMaxIndex} keys"
configVars:
matrixValues: "tasks.prepare.outputs.workers"
config:
runConcurrent: true
matrixVar: "worker"
task:
name: run_tasks
title: "Generate ${{worker.depositCount}} topup deposits for key ${{worker.index}}"
config:
tasks:
- name: check_consensus_validator_status
title: "Get validator pubkey for key ${{worker.index}}"
id: "get_validator"
timeout: 1m
configVars:
validatorIndex: "worker.index"

- name: generate_child_wallet
id: depositor_wallet
title: "Generate wallet for lifecycle test"
configVars:
walletSeed: "| \"fillup-deposit-queue-\" + .walletSeed + (.worker.index | tostring)"
prefundMinBalance: "| (.worker.depositCount + 1) * 1000000000000000000"
privateKey: "walletPrivkey"

- name: sleep
title: "Sleep 10s to ensure propagation of last block with wallet fundings to all clients"
config:
duration: 10s

- name: run_task_options
title: "Generate ${{worker.depositCount}} top up deposits with 1 ETH each"
config:
task:
name: generate_deposits
title: "Generate top up deposits for key ${{worker.index}} (${{tasks.get_validator.outputs.pubkey}})"
config:
depositAmount: 1
topUpDeposit: true
awaitReceipt: true
failOnReject: true
configVars:
limitTotal: "worker.depositCount"
limitPerSlot: "throughputPerIndex"
limitPending: "maxPendingPerIndex"
walletPrivkey: "tasks.depositor_wallet.outputs.childWallet.privkey"
publicKey: "tasks.get_validator.outputs.pubkey"
depositContract: "depositContract"
4 changes: 4 additions & 0 deletions config.yaml.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ DENEB_FORK_VERSION: 0x20000093
ELECTRA_FORK_EPOCH: {{.LatestForkEpoch}}
ELECTRA_FORK_VERSION: 0x20000094

# Fulu (not enabled at all yet)
FULU_FORK_EPOCH: 18446744073709551615
FULU_FORK_VERSION: 0x20000095

# Time parameters
SECONDS_PER_SLOT: 12

Expand Down
96 changes: 42 additions & 54 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,85 +1,76 @@
module github.com/ferranbt/builder-playground

go 1.22.0
go 1.23.5

toolchain go1.22.2
toolchain go1.23.6

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

require (
github.com/BurntSushi/toml v1.3.2 // indirect
github.com/DataDog/zstd v1.5.5 // indirect
github.com/Microsoft/go-winio v0.6.1 // indirect
github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c // indirect
github.com/Microsoft/go-winio v0.6.2 // indirect
github.com/NYTimes/gziphandler v1.1.1 // indirect
github.com/VictoriaMetrics/fastcache v1.12.2 // indirect
github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a // indirect
github.com/allegro/bigcache v1.2.1 // indirect
github.com/attestantio/go-builder-client v0.4.3-0.20240124194555-d44db06f45fa // indirect
github.com/attestantio/go-eth2-client v0.21.1 // indirect
github.com/attestantio/go-builder-client v0.5.1-0.20250120215322-c65b220a98eb // indirect
github.com/attestantio/go-eth2-client v0.22.1-0.20250106164842-07b6ce39bb43 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/bits-and-blooms/bitset v1.11.0 // indirect
github.com/bits-and-blooms/bitset v1.17.0 // indirect
github.com/bradfitz/gomemcache v0.0.0-20230124162541-5f7a7d875746 // indirect
github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect
github.com/buger/jsonparser v1.1.1 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/cockroachdb/errors v1.11.1 // indirect
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect
github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 // indirect
github.com/cockroachdb/redact v1.1.5 // indirect
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect
github.com/consensys/bavard v0.1.13 // indirect
github.com/consensys/gnark-crypto v0.12.1 // indirect
github.com/cpuguy83/go-md2man/v2 v2.0.3 // indirect
github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 // indirect
github.com/crate-crypto/go-kzg-4844 v0.7.0 // indirect
github.com/consensys/bavard v0.1.22 // indirect
github.com/consensys/gnark-crypto v0.14.0 // indirect
github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect
github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a // indirect
github.com/crate-crypto/go-kzg-4844 v1.1.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/deckarep/golang-set/v2 v2.5.0 // indirect
github.com/deckarep/golang-set/v2 v2.6.0 // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
github.com/ethereum/c-kzg-4844 v0.4.0 // indirect
github.com/emicklei/dot v1.6.2 // indirect
github.com/ethereum/c-kzg-4844 v1.0.0 // indirect
github.com/ethereum/go-verkle v0.2.2 // indirect
github.com/fatih/color v1.16.0 // indirect
github.com/ferranbt/fastssz v0.1.3 // indirect
github.com/ferranbt/fastssz v0.1.4 // indirect
github.com/flashbots/go-utils v0.5.0 // indirect
github.com/fsnotify/fsnotify v1.6.0 // indirect
github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 // indirect
github.com/getsentry/sentry-go v0.25.0 // indirect
github.com/go-gorp/gorp/v3 v3.1.0 // indirect
github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-ole/go-ole v1.3.0 // indirect
github.com/go-redis/redis/v9 v9.0.0-rc.1 // indirect
github.com/goccy/go-yaml v1.11.2 // indirect
github.com/goccy/go-yaml v1.11.3 // indirect
github.com/gofrs/flock v0.8.1 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect
github.com/golang/snappy v0.0.5-0.20231225225746-43d5d4cd4e0e // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/gorilla/mux v1.8.1 // indirect
github.com/gorilla/websocket v1.5.3 // indirect
github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect
github.com/herumi/bls-eth-go-binary v0.0.0-20210917013441-d37c07cfda4e // indirect
github.com/herumi/bls-eth-go-binary v1.31.0 // indirect
github.com/holiman/bloomfilter/v2 v2.0.3 // indirect
github.com/holiman/uint256 v1.2.4 // indirect
github.com/holiman/uint256 v1.3.2 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jmoiron/sqlx v1.3.5 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/compress v1.17.9 // indirect
github.com/klauspost/cpuid/v2 v2.2.8 // indirect
github.com/kr/pretty v0.3.1 // indirect
github.com/kr/text v0.2.0 // indirect
github.com/lib/pq v1.10.8 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
Expand All @@ -96,58 +87,55 @@ require (
github.com/patrickmn/go-cache v2.1.0+incompatible // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/prometheus/client_golang v1.20.0 // indirect
github.com/prometheus/client_golang v1.20.5 // indirect
github.com/prometheus/client_model v0.6.1 // indirect
github.com/prometheus/common v0.55.0 // indirect
github.com/prometheus/procfs v0.15.1 // indirect
github.com/prysmaticlabs/fastssz v0.0.0-20240620202422-a981b8ef89d3 // indirect
github.com/prysmaticlabs/fastssz v0.0.0-20241008181541-518c4ce73516 // indirect
github.com/prysmaticlabs/go-bitfield v0.0.0-20240328144219-a1caa50c3a1e // indirect
github.com/prysmaticlabs/gohashtree v0.0.4-beta.0.20240624100937-73632381301b // indirect
github.com/r3labs/sse/v2 v2.10.0 // indirect
github.com/rivo/uniseg v0.4.4 // indirect
github.com/rogpeppe/go-internal v1.12.0 // indirect
github.com/rivo/uniseg v0.4.7 // indirect
github.com/rubenv/sql-migrate v1.5.2 // indirect
github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/shirou/gopsutil v3.21.11+incompatible // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/stretchr/testify v1.9.0 // indirect
github.com/supranational/blst v0.3.11 // indirect
github.com/stretchr/testify v1.10.0 // indirect
github.com/supranational/blst v0.3.14 // indirect
github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect
github.com/thomaso-mirodin/intmath v0.0.0-20160323211736-5dc6d854e46e // indirect
github.com/tklauser/go-sysconf v0.3.13 // indirect
github.com/tklauser/numcpus v0.7.0 // indirect
github.com/urfave/cli/v2 v2.26.0 // indirect
github.com/urfave/cli/v2 v2.27.1 // indirect
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
github.com/yuin/gopher-lua v1.1.1 // indirect
github.com/yusufpapurcu/wmi v1.2.3 // indirect
go.opentelemetry.io/otel v1.29.0 // indirect
go.opentelemetry.io/otel v1.32.0 // indirect
go.opentelemetry.io/otel/exporters/jaeger v1.17.0 // indirect
go.opentelemetry.io/otel/exporters/prometheus v0.47.0 // indirect
go.opentelemetry.io/otel/metric v1.29.0 // indirect
go.opentelemetry.io/otel/metric v1.32.0 // indirect
go.opentelemetry.io/otel/sdk v1.29.0 // indirect
go.opentelemetry.io/otel/sdk/metric v1.29.0 // indirect
go.opentelemetry.io/otel/trace v1.29.0 // indirect
go.opentelemetry.io/otel/trace v1.32.0 // indirect
go.uber.org/atomic v1.11.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.27.0 // indirect
golang.org/x/crypto v0.26.0 // indirect
golang.org/x/crypto v0.32.0 // indirect
golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa // indirect
golang.org/x/net v0.28.0 // indirect
golang.org/x/net v0.34.0 // indirect
golang.org/x/oauth2 v0.21.0 // indirect
golang.org/x/sync v0.8.0 // indirect
golang.org/x/sys v0.24.0 // indirect
golang.org/x/term v0.23.0 // indirect
golang.org/x/text v0.17.0 // indirect
golang.org/x/sync v0.10.0 // indirect
golang.org/x/sys v0.29.0 // indirect
golang.org/x/term v0.28.0 // indirect
golang.org/x/text v0.21.0 // indirect
golang.org/x/time v0.5.0 // indirect
golang.org/x/tools v0.24.0 // indirect
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect
google.golang.org/grpc v1.65.0 // indirect
google.golang.org/protobuf v1.34.2 // indirect
gopkg.in/cenkalti/backoff.v1 v1.1.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/apimachinery v0.30.4 // indirect
k8s.io/client-go v0.30.4 // indirect
Expand Down
Loading