From b144f251ad0923ed999c39b1bb63a4a3175a9638 Mon Sep 17 00:00:00 2001 From: Fornax <23104993+0xfornax@users.noreply.github.com> Date: Fri, 9 Oct 2026 14:39:52 -0300 Subject: [PATCH 01/12] golang:1.27.2 --- .github/workflows/build.yml | 2 +- .github/workflows/lint.yml | 2 +- .github/workflows/unit-tests.yml | 2 +- .golangci.yml | 2 +- Makefile | 2 +- docker/rocketpool-dockerfile | 2 +- go.mod | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b4b73f61f..110a7b846 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,7 +17,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: - go-version: 1.27.0 + go-version: 1.27.2 - run: make NO_DOCKER=true release docker-build: runs-on: ubuntu-latest diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 3f03723ad..9ca196a5a 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -19,7 +19,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: - go-version: 1.27.0 + go-version: 1.27.2 - name: golangci-lint uses: golangci/golangci-lint-action@v8 with: diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index b80e2fbdc..3c7772a45 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -19,7 +19,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: - go-version: 1.27.0 + go-version: 1.27.2 - run: go test -test.timeout 20m $(go list ./... | grep -v bindings) -coverprofile=./cover.out -coverpkg=./... # upload the plaintext coverage report - name: Upload txt coverage report diff --git a/.golangci.yml b/.golangci.yml index 669dbdbed..4b4a31f64 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -40,7 +40,7 @@ formatters: - goimports run: relative-path-mode: cfg - go: '1.27.0' + go: '1.27.2' output: formats: text: diff --git a/Makefile b/Makefile index 27b42519b..fc56d3404 100644 --- a/Makefile +++ b/Makefile @@ -191,7 +191,7 @@ docker-prune: golangci_lint_version = v2.14.0 docker_lint_cmd = docker run -e XDG_CACHE_HOME=/go/.cache -e GOMODCACHE=/go/.cache/pkg/mod -e GOCACHE=/go/.cache/go-build -e GOLANGCI_LINT_CACHE=/go/.cache/golangci-lint \ --user $(shell id -u):$(shell id -g) --rm -v ~/.cache:/go/.cache -v .:/smartnode --workdir /smartnode/ golangci/golangci-lint:${golangci_lint_version}-alpine golangci-lint -local_lint_cmd = GOTOOLCHAIN=go1.27.0 go run github.com/golangci/golangci-lint/v2/cmd/golangci-lint@${golangci_lint_version} +local_lint_cmd = GOTOOLCHAIN=go1.27.2 go run github.com/golangci/golangci-lint/v2/cmd/golangci-lint@${golangci_lint_version} .PHONY: lint lint: ifdef NO_DOCKER diff --git a/docker/rocketpool-dockerfile b/docker/rocketpool-dockerfile index 85ec4d96b..dbfe1c5d5 100644 --- a/docker/rocketpool-dockerfile +++ b/docker/rocketpool-dockerfile @@ -1,4 +1,4 @@ -FROM --platform=$BUILDPLATFORM golang:1.27.0-bookworm AS smartnode_dependencies +FROM --platform=$BUILDPLATFORM golang:1.27.2-bookworm AS smartnode_dependencies ARG BUILDPLATFORM # Install build tools diff --git a/go.mod b/go.mod index 3baa5cd35..f2ad97702 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/rocket-pool/smartnode -go 1.27.0 +go 1.27.2 require ( github.com/ProtonMail/go-crypto v1.1.6 From e67bab41bc9deecefaf808857fadcc520aa06442 Mon Sep 17 00:00:00 2001 From: Fornax <23104993+0xfornax@users.noreply.github.com> Date: Fri, 9 Oct 2026 14:42:07 -0300 Subject: [PATCH 02/12] golang.org/x/net:0.60.0 --- go.mod | 16 ++++++++-------- go.sum | 32 ++++++++++++++++---------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/go.mod b/go.mod index f2ad97702..e4cc60722 100644 --- a/go.mod +++ b/go.mod @@ -47,9 +47,9 @@ require ( github.com/wealdtech/go-eth2-util v1.8.2 github.com/wealdtech/go-eth2-wallet-encryptor-keystorev4 v1.4.1 github.com/wealdtech/go-merkletree v1.0.1-0.20190605192610-2bb163c2ea2a - golang.org/x/sync v0.22.0 - golang.org/x/term v0.45.0 - golang.org/x/text v0.41.0 + golang.org/x/sync v0.23.0 + golang.org/x/term v0.46.0 + golang.org/x/text v0.42.0 google.golang.org/protobuf v1.36.11 gopkg.in/yaml.v2 v2.4.0 ) @@ -189,11 +189,11 @@ require ( go.uber.org/atomic v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - golang.org/x/crypto v0.55.0 // indirect - golang.org/x/mod v0.38.0 // indirect - golang.org/x/net v0.58.0 // indirect - golang.org/x/sys v0.47.0 // indirect - golang.org/x/tools v0.48.0 // indirect + golang.org/x/crypto v0.57.0 // indirect + golang.org/x/mod v0.41.0 // indirect + golang.org/x/net v0.60.0 // indirect + golang.org/x/sys v0.48.0 // indirect + golang.org/x/tools v0.49.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect google.golang.org/grpc v1.83.2 // indirect diff --git a/go.sum b/go.sum index 2c8695f40..9ec89aa55 100644 --- a/go.sum +++ b/go.sum @@ -1036,8 +1036,8 @@ golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWP golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.55.0 h1:+KWHjbgOaAQ66dh/YlkZKHlz9ZUlq61AFirAR9ntP8M= -golang.org/x/crypto v0.55.0/go.mod h1:uq0V9dE/fzQuJtbnL+2EhWOE63vo164FY8xqEnV9xis= +golang.org/x/crypto v0.57.0 h1:3ZVCjf8Ggz7zneR/EHRVx68Ctf+2pmIMP2UFhh9cC6M= +golang.org/x/crypto v0.57.0/go.mod h1:Fdz0i5U6CoizGwLda9DttjSk6qlZo25zYNtR+ycvuZA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1078,8 +1078,8 @@ golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.38.0 h1:MECBjubtXD7yj4HrhIUcywNaGeNVUdfVnxmPajOk4yk= -golang.org/x/mod v0.38.0/go.mod h1:V6Xz0pq8TQ3dGqVQ1FVHuelZpAL0uNhSkk9ogYP3c40= +golang.org/x/mod v0.41.0 h1:qJmnOUb4YB+FsEuM3HcWucdZASCPGhsX6uljO6pog0c= +golang.org/x/mod v0.41.0/go.mod h1:Ek9pY8RKWXwsWvd3rQiHYtMqkjSUV+s1Rj7j4H5Ur6o= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1127,8 +1127,8 @@ golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.58.0 h1:ynWG7rqYi4ccpTEuPZ2QGWHktVEM9DMCj9yzDE0Q7To= -golang.org/x/net v0.58.0/go.mod h1:YwCddHnFlT7eLQqVprV19OnhLGtc5xOKgE0RyqgfWAU= +golang.org/x/net v0.60.0 h1:79p50tfZlm0J9YfoDsSi639qSXNGVwEzOPLCxM2FsYU= +golang.org/x/net v0.60.0/go.mod h1:2DA/G1UfVbCpQPeWTmMPGY7Cs2PkBkwu743bVX5PIVg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1156,8 +1156,8 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= -golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sync v0.23.0 h1:KameEIfc1IkluZyXWLn39Wd4tURc6GbCiISGiZm2bQk= +golang.org/x/sync v0.23.0/go.mod h1:sUUOizhqBxiL6pEWpqNLUiaJn1ShEbZ6BBqskPbjZm0= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1231,15 +1231,15 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= -golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.48.0 h1:bbX/i/6MgT9BVLM9RT1thmxL04yeTAhbEz4SyadbXoo= +golang.org/x/sys v0.48.0/go.mod h1:hNLxWAXmnKAxqDtdwIYC4bM9oQPEecfsnNMuSxOs3og= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.45.0 h1:NwWyBmoJCbfTHpxrWoZ9C6/VxOf7ic219I8xZZFdrf0= -golang.org/x/term v0.45.0/go.mod h1:9aqxs0blBcrm/n0L9QW0aRVD+ktan8ssZromtqJC43w= +golang.org/x/term v0.46.0 h1:3+OXuTbaKDgwk8jTi3aSLHRlmWqHEUDUtxnbFigO4YE= +golang.org/x/term v0.46.0/go.mod h1:+K02xbkittuwc0Am4abfA3Fc+XRGXkvBXNO88NCXPoc= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1252,8 +1252,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.41.0 h1:vz/seA0lnX87Othu2f/0L24RcgrXD9/YFTSuGjj3rH8= -golang.org/x/text v0.41.0/go.mod h1:jvf1O8ajNzZqhSrQBPbutR/EB83Cc0CFrezNQIwbb5M= +golang.org/x/text v0.42.0 h1:JbOZXgfeCPU9gacVtYliJqOhD+zhrEqK4LfdpmlUZqI= +golang.org/x/text v0.42.0/go.mod h1:ojzP1Z+2QtioaF8DTtO8K5q7JWVVYwZKenzujK0Zd0E= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1317,8 +1317,8 @@ golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= -golang.org/x/tools v0.48.0 h1:3+hClM1aLL5mjMKm5ovokw9epgRXPuu2tILgismM6RE= -golang.org/x/tools v0.48.0/go.mod h1:08xX0orndb/F7jJxGDicx061tyd5pcMto75YMAXr6lk= +golang.org/x/tools v0.49.0 h1:3NI7VXzL9+1WZD52Dx2ttoPwD5DWrFGpl9mFZDlmisI= +golang.org/x/tools v0.49.0/go.mod h1:SJNXV9DBKT0UbdttsQjbfJlAE/q+y36++zo3uL3N0Oo= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 990ed31f4182d600872021dda3299bf068bbf534 Mon Sep 17 00:00:00 2001 From: Fornax <23104993+0xfornax@users.noreply.github.com> Date: Fri, 9 Oct 2026 14:57:39 -0300 Subject: [PATCH 03/12] update the docker-sdk --- go.mod | 12 +- go.sum | 36 ++--- .../node/check-megapool-exit-requests.go | 2 +- .../node/check-minipool-exit-requests.go | 2 +- rocketpool/node/defend-challenge-exit.go | 2 +- .../node/defend-challenge-performance.go | 2 +- rocketpool/node/distribute-minipools.go | 2 +- rocketpool/node/download-reward-trees.go | 2 +- rocketpool/node/manage-fee-recipient.go | 2 +- rocketpool/node/notify-final-balance.go | 2 +- rocketpool/node/notify-validator-exit.go | 2 +- .../node/prestake-megapool-validator.go | 2 +- rocketpool/node/provision-express-tickets.go | 2 +- rocketpool/node/set-latest-delegate.go | 2 +- rocketpool/node/stake-megapool-validator.go | 2 +- rocketpool/validator/fee-recipient.go | 15 +- rocketpool/validator/fee-recipient_test.go | 135 ++++++++++++++++++ shared/services/services.go | 4 +- 18 files changed, 175 insertions(+), 53 deletions(-) create mode 100644 rocketpool/validator/fee-recipient_test.go diff --git a/go.mod b/go.mod index e4cc60722..8601fabe3 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,6 @@ require ( github.com/blang/semver/v4 v4.0.0 github.com/btcsuite/btcd v0.24.2 github.com/btcsuite/btcd/btcutil v1.1.5 - github.com/docker/docker v28.5.2+incompatible github.com/dustin/go-humanize v1.0.1 github.com/ethereum/go-ethereum v1.17.5 github.com/fatih/color v1.19.0 @@ -31,6 +30,7 @@ require ( github.com/ipfs/go-datastore v0.6.0 github.com/klauspost/compress v1.19.2 github.com/mitchellh/go-homedir v1.1.0 + github.com/moby/moby/client v0.6.2 github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 github.com/pk910/dynamic-ssz v1.3.2 github.com/princjef/gomarkdoc v0.4.1 @@ -72,14 +72,13 @@ require ( github.com/consensys/gnark-crypto v0.18.1 // indirect github.com/containerd/errdefs v1.0.0 // indirect github.com/containerd/errdefs/pkg v0.3.0 // indirect - github.com/containerd/log v0.1.0 // indirect github.com/crackcomm/go-gitignore v0.0.0-20170627025303-887ab5e44cc3 // indirect github.com/crate-crypto/go-eth-kzg v1.5.0 // indirect github.com/cyphar/filepath-securejoin v0.6.1 // indirect github.com/deckarep/golang-set/v2 v2.6.0 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/go-connections v0.4.0 // indirect + github.com/docker/go-connections v0.8.2 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/emicklei/dot v1.6.2 // indirect github.com/emirpasic/gods v1.18.1 // indirect @@ -132,10 +131,8 @@ require ( github.com/minio/sha256-simd v1.0.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect - github.com/moby/sys/atomicwriter v0.1.0 // indirect - github.com/moby/term v0.0.0-20221205130635-1aeaba878587 // indirect + github.com/moby/moby/api v1.56.1 // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect - github.com/morikuni/aec v1.0.0 // indirect github.com/mr-tron/base58 v1.3.0 // indirect github.com/multiformats/go-base32 v0.1.0 // indirect github.com/multiformats/go-base36 v0.2.0 // indirect @@ -146,7 +143,7 @@ require ( github.com/oklog/ulid v1.3.1 // indirect github.com/onsi/ginkgo v1.16.5 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.0.2 // indirect + github.com/opencontainers/image-spec v1.1.1 // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/pjbgf/sha1cd v0.6.0 // indirect github.com/pk910/hashtree-bindings v0.2.2 // indirect @@ -199,7 +196,6 @@ require ( google.golang.org/grpc v1.83.2 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - gotest.tools/v3 v3.4.0 // indirect lukechampine.com/blake3 v1.3.0 // indirect mvdan.cc/xurls/v2 v2.2.0 // indirect ) diff --git a/go.sum b/go.sum index 9ec89aa55..9ac67688b 100644 --- a/go.sum +++ b/go.sum @@ -39,8 +39,6 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9 dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c h1:pxW6RcqyfI9/kWtOwnv/G+AzdKuy2ZrqINhenH4HyNs= github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= @@ -170,8 +168,6 @@ github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE= github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk= -github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= -github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= @@ -211,10 +207,8 @@ github.com/deepmap/oapi-codegen v1.8.2 h1:SegyeYGcdi0jLLrpbCMoJxnUUn8GBXHsvr4rbz github.com/deepmap/oapi-codegen v1.8.2/go.mod h1:YLgSKSDv/bZQB7N4ws6luhozi3cEdRktEqrX88CvjIw= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/docker v28.5.2+incompatible h1:DBX0Y0zAjZbSrm1uzOkdr1onVghKaftjlSWt4AFexzM= -github.com/docker/docker v28.5.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= -github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-connections v0.8.2 h1:9d9DEokx5W7qlr0shkFXIxEA7+TTD+llwzcykSlxMNc= +github.com/docker/go-connections v0.8.2/go.mod h1:no1qkHdjq7kLMGUXYAduOhYPSJxxvgWBh7ogVvptn3Q= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= @@ -655,12 +649,10 @@ github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjU github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= -github.com/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w3A14Sw= -github.com/moby/sys/atomicwriter v0.1.0/go.mod h1:Ul8oqv2ZMNHOceF643P6FKPXeCmYtlQMvpizfsSoaWs= -github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU= -github.com/moby/sys/sequential v0.6.0/go.mod h1:uyv8EUTrca5PnDsdMGXhZe6CCe8U/UiTWd+lL+7b/Ko= -github.com/moby/term v0.0.0-20221205130635-1aeaba878587 h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA= -github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= +github.com/moby/moby/api v1.56.1 h1:PpWkvVPB7Fr/No8w+TfyJ/I6rWZ2YPZhT3JorIg+06c= +github.com/moby/moby/api v1.56.1/go.mod h1:sZ+THbVWkjOmBPPfbnzdD/G1LuIexWhqlSHHPTDQ1Uk= +github.com/moby/moby/client v0.6.2 h1:ekSPlMccrZGcw6Scb8T9D39qE0mB+XupU/yS0zNw9N4= +github.com/moby/moby/client v0.6.2/go.mod h1:DGcnO7qmPJrqobx/ggQgQ/AUk+2wgVdQv7uxB0/mEsc= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -670,8 +662,6 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= -github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= -github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mr-tron/base58 v1.1.0/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/mr-tron/base58 v1.1.3/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= @@ -738,8 +728,8 @@ github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k= github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM= -github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= +github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/orisano/pixelmatch v0.0.0-20220722002657-fb0b55479cde/go.mod h1:nZgzbfBr3hhjoZnS66nKrHmduYNpc34ny7RK4z5/HM0= @@ -1257,8 +1247,8 @@ golang.org/x/text v0.42.0/go.mod h1:ojzP1Z+2QtioaF8DTtO8K5q7JWVVYwZKenzujK0Zd0E= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= -golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= +golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -1470,8 +1460,8 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= -gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g= +gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= +gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -1491,6 +1481,8 @@ lukechampine.com/blake3 v1.3.0 h1:sJ3XhFINmHSrYCgl958hscfIa3bw8x4DqMP3u1YvoYE= lukechampine.com/blake3 v1.3.0/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= mvdan.cc/xurls/v2 v2.2.0 h1:NSZPykBXJFCetGZykLAxaL6SIpvbVy/UFEniIfHAa8A= mvdan.cc/xurls/v2 v2.2.0/go.mod h1:EV1RMtya9D6G5DMYPGD8zTQzaHet6Jh8gFlRgGRJeO8= +pgregory.net/rapid v1.2.0 h1:keKAYRcjm+e1F0oAuU5F5+YPAWcyxNNRK2wud503Gnk= +pgregory.net/rapid v1.2.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/rocketpool/node/check-megapool-exit-requests.go b/rocketpool/node/check-megapool-exit-requests.go index f638047d3..029fbac7b 100644 --- a/rocketpool/node/check-megapool-exit-requests.go +++ b/rocketpool/node/check-megapool-exit-requests.go @@ -7,8 +7,8 @@ import ( "strconv" "time" - "github.com/docker/docker/client" "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/moby/moby/client" "github.com/urfave/cli/v3" eth2types "github.com/wealdtech/go-eth2-types/v2" diff --git a/rocketpool/node/check-minipool-exit-requests.go b/rocketpool/node/check-minipool-exit-requests.go index 07d35bad9..7db67e7b4 100644 --- a/rocketpool/node/check-minipool-exit-requests.go +++ b/rocketpool/node/check-minipool-exit-requests.go @@ -6,9 +6,9 @@ import ( "strconv" "time" - "github.com/docker/docker/client" "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" + "github.com/moby/moby/client" "github.com/urfave/cli/v3" eth2types "github.com/wealdtech/go-eth2-types/v2" diff --git a/rocketpool/node/defend-challenge-exit.go b/rocketpool/node/defend-challenge-exit.go index 8f3bb24a2..6d843efdf 100644 --- a/rocketpool/node/defend-challenge-exit.go +++ b/rocketpool/node/defend-challenge-exit.go @@ -4,9 +4,9 @@ import ( "fmt" "math/big" - "github.com/docker/docker/client" "github.com/ethereum/go-ethereum/accounts/abi/bind" coretypes "github.com/ethereum/go-ethereum/core/types" + "github.com/moby/moby/client" "github.com/urfave/cli/v3" "github.com/rocket-pool/smartnode/bindings/megapool" diff --git a/rocketpool/node/defend-challenge-performance.go b/rocketpool/node/defend-challenge-performance.go index 8a093bf82..2c5c98a6a 100644 --- a/rocketpool/node/defend-challenge-performance.go +++ b/rocketpool/node/defend-challenge-performance.go @@ -4,9 +4,9 @@ import ( "math/big" "time" - "github.com/docker/docker/client" "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" + "github.com/moby/moby/client" "github.com/urfave/cli/v3" "github.com/rocket-pool/smartnode/bindings/megapool" diff --git a/rocketpool/node/distribute-minipools.go b/rocketpool/node/distribute-minipools.go index 306d04609..2b80a9074 100644 --- a/rocketpool/node/distribute-minipools.go +++ b/rocketpool/node/distribute-minipools.go @@ -4,9 +4,9 @@ import ( "fmt" "math/big" - "github.com/docker/docker/client" "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" + "github.com/moby/moby/client" "github.com/urfave/cli/v3" "github.com/rocket-pool/smartnode/bindings/minipool" diff --git a/rocketpool/node/download-reward-trees.go b/rocketpool/node/download-reward-trees.go index 6578b58ce..544de50f3 100644 --- a/rocketpool/node/download-reward-trees.go +++ b/rocketpool/node/download-reward-trees.go @@ -4,7 +4,7 @@ import ( "fmt" "os" - "github.com/docker/docker/client" + "github.com/moby/moby/client" "github.com/urfave/cli/v3" "github.com/rocket-pool/smartnode/bindings/rocketpool" diff --git a/rocketpool/node/manage-fee-recipient.go b/rocketpool/node/manage-fee-recipient.go index 4833ecb22..866280eab 100644 --- a/rocketpool/node/manage-fee-recipient.go +++ b/rocketpool/node/manage-fee-recipient.go @@ -3,8 +3,8 @@ package node import ( "fmt" - "github.com/docker/docker/client" "github.com/ethereum/go-ethereum/common" + "github.com/moby/moby/client" "github.com/urfave/cli/v3" "github.com/rocket-pool/smartnode/bindings/rocketpool" diff --git a/rocketpool/node/notify-final-balance.go b/rocketpool/node/notify-final-balance.go index 58fdda568..6dd7fd27c 100644 --- a/rocketpool/node/notify-final-balance.go +++ b/rocketpool/node/notify-final-balance.go @@ -5,7 +5,7 @@ import ( "math/big" "strconv" - "github.com/docker/docker/client" + "github.com/moby/moby/client" "github.com/urfave/cli/v3" "github.com/rocket-pool/smartnode/bindings/megapool" diff --git a/rocketpool/node/notify-validator-exit.go b/rocketpool/node/notify-validator-exit.go index cc304f9f7..93caa68fc 100644 --- a/rocketpool/node/notify-validator-exit.go +++ b/rocketpool/node/notify-validator-exit.go @@ -5,7 +5,7 @@ import ( "math/big" "strconv" - "github.com/docker/docker/client" + "github.com/moby/moby/client" "github.com/urfave/cli/v3" "github.com/rocket-pool/smartnode/bindings/megapool" diff --git a/rocketpool/node/prestake-megapool-validator.go b/rocketpool/node/prestake-megapool-validator.go index ed667bfae..4dc225cda 100644 --- a/rocketpool/node/prestake-megapool-validator.go +++ b/rocketpool/node/prestake-megapool-validator.go @@ -6,8 +6,8 @@ import ( "math/big" "time" - "github.com/docker/docker/client" "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/moby/moby/client" "github.com/urfave/cli/v3" "github.com/rocket-pool/smartnode/bindings/deposit" diff --git a/rocketpool/node/provision-express-tickets.go b/rocketpool/node/provision-express-tickets.go index 256cacfdd..e00c9ad15 100644 --- a/rocketpool/node/provision-express-tickets.go +++ b/rocketpool/node/provision-express-tickets.go @@ -3,8 +3,8 @@ package node import ( "math/big" - "github.com/docker/docker/client" "github.com/ethereum/go-ethereum/common" + "github.com/moby/moby/client" "github.com/urfave/cli/v3" "github.com/rocket-pool/smartnode/bindings/node" diff --git a/rocketpool/node/set-latest-delegate.go b/rocketpool/node/set-latest-delegate.go index 573e469ac..0be654203 100644 --- a/rocketpool/node/set-latest-delegate.go +++ b/rocketpool/node/set-latest-delegate.go @@ -5,9 +5,9 @@ import ( "math/big" "time" - "github.com/docker/docker/client" "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" + "github.com/moby/moby/client" "github.com/urfave/cli/v3" "github.com/rocket-pool/smartnode/bindings/minipool" diff --git a/rocketpool/node/stake-megapool-validator.go b/rocketpool/node/stake-megapool-validator.go index 040156f3a..6d07123e9 100644 --- a/rocketpool/node/stake-megapool-validator.go +++ b/rocketpool/node/stake-megapool-validator.go @@ -4,8 +4,8 @@ import ( "math/big" "strconv" - "github.com/docker/docker/client" "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/moby/moby/client" "github.com/urfave/cli/v3" "github.com/rocket-pool/smartnode/bindings/megapool" diff --git a/rocketpool/validator/fee-recipient.go b/rocketpool/validator/fee-recipient.go index a1e656d13..e9a968b21 100644 --- a/rocketpool/validator/fee-recipient.go +++ b/rocketpool/validator/fee-recipient.go @@ -9,8 +9,7 @@ import ( "strings" "time" - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/client" + "github.com/moby/moby/client" log "github.com/rocket-pool/smartnode/shared/logger" "github.com/rocket-pool/smartnode/shared/services/beacon" @@ -53,14 +52,14 @@ func RestartValidator(cfg *config.RocketPoolConfig, bc beacon.Client, log *log.C } // Get all containers - containers, err := d.ContainerList(context.Background(), container.ListOptions{All: true}) + containers, err := d.ContainerList(context.Background(), client.ContainerListOptions{All: true}) if err != nil { return fmt.Errorf("Could not get docker containers: %w", err) } // Get validator container ID var validatorContainerId string - for _, container := range containers { + for _, container := range containers.Items { if container.Names[0] == "/"+containerName { validatorContainerId = container.ID break @@ -72,7 +71,7 @@ func RestartValidator(cfg *config.RocketPoolConfig, bc beacon.Client, log *log.C // Restart validator container timeout := int(validatorRestartTimeout.Seconds()) - if err := d.ContainerRestart(context.Background(), validatorContainerId, container.StopOptions{Timeout: &timeout}); err != nil { + if _, err := d.ContainerRestart(context.Background(), validatorContainerId, client.ContainerRestartOptions{Timeout: &timeout}); err != nil { return fmt.Errorf("Could not restart validator container: %w", err) } @@ -135,14 +134,14 @@ func StopValidator(cfg *config.RocketPoolConfig, bc beacon.Client, log *log.Colo } // Get all containers - containers, err := d.ContainerList(context.Background(), container.ListOptions{All: true}) + containers, err := d.ContainerList(context.Background(), client.ContainerListOptions{All: true}) if err != nil { return fmt.Errorf("Could not get docker containers: %w", err) } // Get validator container ID var validatorContainerId string - for _, container := range containers { + for _, container := range containers.Items { if container.Names[0] == "/"+containerName { validatorContainerId = container.ID break @@ -154,7 +153,7 @@ func StopValidator(cfg *config.RocketPoolConfig, bc beacon.Client, log *log.Colo } // Stop validator container - if err := d.ContainerPause(context.Background(), validatorContainerId); err != nil { + if _, err := d.ContainerPause(context.Background(), validatorContainerId, client.ContainerPauseOptions{}); err != nil { if strings.Contains(err.Error(), "is not running") { // Handle situations where the container is already stopped if log != nil { diff --git a/rocketpool/validator/fee-recipient_test.go b/rocketpool/validator/fee-recipient_test.go new file mode 100644 index 000000000..8d706f4bf --- /dev/null +++ b/rocketpool/validator/fee-recipient_test.go @@ -0,0 +1,135 @@ +package validator + +import ( + "fmt" + "io" + "net/http" + "strings" + "testing" + + "github.com/moby/moby/client" + + "github.com/rocket-pool/smartnode/shared/services/beacon" + "github.com/rocket-pool/smartnode/shared/services/config" +) + +type validatorTestBeacon struct { + beacon.Client + clientType beacon.BeaconClientType +} + +func (b validatorTestBeacon) GetClientType() (beacon.BeaconClientType, error) { + return b.clientType, nil +} + +type validatorTestTransport func(*http.Request) (*http.Response, error) + +func (f validatorTestTransport) RoundTrip(req *http.Request) (*http.Response, error) { + return f(req) +} + +func TestValidatorDockerRequests(t *testing.T) { + for _, tt := range []struct { + name string + clientType beacon.BeaconClientType + restart bool + missingContainer bool + listError bool + operationStatus int + operationBody string + wantError string + }{ + {name: "restart split process", clientType: beacon.SplitProcess, restart: true}, + {name: "restart single process", clientType: beacon.SingleProcess, restart: true}, + {name: "pause split process", clientType: beacon.SplitProcess}, + {name: "pause single process", clientType: beacon.SingleProcess}, + {name: "restart missing container", restart: true, missingContainer: true, wantError: "Validator container not found"}, + {name: "pause missing container", missingContainer: true, wantError: "Validator container test_validator not found"}, + {name: "list failure", listError: true, wantError: "Could not get docker containers: Error response from daemon: list failed"}, + {name: "restart failure", restart: true, operationStatus: http.StatusInternalServerError, operationBody: `{"message":"restart failed"}`, wantError: "Could not restart validator container: Error response from daemon: restart failed"}, + {name: "pause failure", operationStatus: http.StatusInternalServerError, operationBody: `{"message":"pause failed"}`, wantError: "Could not stop validator container test_validator: Error response from daemon: pause failed"}, + {name: "pause already stopped", operationStatus: http.StatusConflict, operationBody: `{"message":"Container selected is not running"}`}, + } { + t.Run(tt.name, func(t *testing.T) { + cfg, err := config.NewRocketPoolConfig(t.TempDir(), false) + if err != nil { + t.Fatal(err) + } + cfg.Smartnode.ProjectName.Value = "test" + containerName := "/test_validator" + if tt.clientType == beacon.SingleProcess { + containerName = "/test_eth2" + } + operation, query := "pause", "" + if tt.restart { + operation, query = "restart", "t=5" + } + requests := 0 + transport := validatorTestTransport(func(req *http.Request) (*http.Response, error) { + requests++ + status, body := http.StatusNoContent, "" + switch requests { + case 1: + if req.Method != http.MethodGet || req.URL.Path != "/v1.44/containers/json" || req.URL.RawQuery != "all=1" { + t.Fatalf("unexpected container list request: %s %s", req.Method, req.URL) + } + status = http.StatusOK + body = fmt.Sprintf(`[{"Id":"unrelated","Names":["/other_validator"]},{"Id":"selected","Names":[%q]}]`, containerName) + if tt.missingContainer { + body = `[{"Id":"unrelated","Names":["/other_validator"]}]` + } + if tt.listError { + status, body = http.StatusInternalServerError, `{"message":"list failed"}` + } + case 2: + if tt.missingContainer || tt.listError { + t.Fatal("container operation must not run when lookup fails") + } + if req.Method != http.MethodPost || req.URL.Path != "/v1.44/containers/selected/"+operation || req.URL.RawQuery != query { + t.Fatalf("unexpected container operation: %s %s", req.Method, req.URL) + } + if tt.operationStatus != 0 { + status, body = tt.operationStatus, tt.operationBody + } + default: + t.Fatalf("unexpected extra Docker request: %s %s", req.Method, req.URL) + } + return &http.Response{ + StatusCode: status, + Header: http.Header{"Content-Type": []string{"application/json"}}, + Body: io.NopCloser(strings.NewReader(body)), + Request: req, + }, nil + }) + d, err := client.New(client.WithHost("http://docker.test"), client.WithAPIVersion("1.44"), client.WithHTTPClient(&http.Client{Transport: transport})) + if err != nil { + t.Fatal(err) + } + t.Cleanup(func() { + if err := d.Close(); err != nil { + t.Error(err) + } + }) + bc := validatorTestBeacon{clientType: tt.clientType} + if tt.restart { + err = RestartValidator(cfg, bc, nil, d) + } else { + err = StopValidator(cfg, bc, nil, d) + } + if tt.wantError == "" { + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + } else if err == nil || !strings.Contains(err.Error(), tt.wantError) { + t.Fatalf("error = %v, want %q", err, tt.wantError) + } + wantRequests := 2 + if tt.missingContainer || tt.listError { + wantRequests = 1 + } + if requests != wantRequests { + t.Errorf("got %d Docker requests, want %d", requests, wantRequests) + } + }) + } +} diff --git a/shared/services/services.go b/shared/services/services.go index 47d571d65..fd1efc302 100644 --- a/shared/services/services.go +++ b/shared/services/services.go @@ -7,9 +7,9 @@ import ( "path/filepath" "sync" - "github.com/docker/docker/client" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/ethclient" + "github.com/moby/moby/client" "github.com/urfave/cli/v3" "github.com/rocket-pool/smartnode/bindings/rocketpool" @@ -161,7 +161,7 @@ func GetBeaconClient(c *cli.Command) (*BeaconClientManager, error) { func GetDocker(c *cli.Command) (*client.Client, error) { var err error initDocker.Do(func() { - docker, err = client.NewClientWithOpts(client.WithVersion(dockerAPIVersion)) + docker, err = client.New(client.WithAPIVersion(dockerAPIVersion)) }) return docker, err } From d90676a318de380b742a79620e8eaf279e21275b Mon Sep 17 00:00:00 2001 From: Fornax <23104993+0xfornax@users.noreply.github.com> Date: Fri, 9 Oct 2026 15:10:07 -0300 Subject: [PATCH 04/12] grafana:13.2.3 --- .../services/rocketpool/assets/install/grafana-dashboards.yml | 2 +- .../rocketpool/assets/install/grafana-prometheus-datasource.yml | 1 + shared/services/rocketpool/assets/install/mainnet.env | 2 +- .../assets/install/templates/grafana-prometheus-datasource.tmpl | 1 + .../services/rocketpool/assets/install/templates/grafana.tmpl | 2 ++ 5 files changed, 6 insertions(+), 2 deletions(-) diff --git a/shared/services/rocketpool/assets/install/grafana-dashboards.yml b/shared/services/rocketpool/assets/install/grafana-dashboards.yml index 85b337c92..7ef1b0cb5 100644 --- a/shared/services/rocketpool/assets/install/grafana-dashboards.yml +++ b/shared/services/rocketpool/assets/install/grafana-dashboards.yml @@ -6,7 +6,7 @@ providers: orgId: 1 type: file allowUiUpdates: false + updateIntervalSeconds: 300 options: path: /etc/grafana/default_dashboards/ - updateIntervalSeconds: 300 diff --git a/shared/services/rocketpool/assets/install/grafana-prometheus-datasource.yml b/shared/services/rocketpool/assets/install/grafana-prometheus-datasource.yml index f90b695d5..5ee450716 100644 --- a/shared/services/rocketpool/assets/install/grafana-prometheus-datasource.yml +++ b/shared/services/rocketpool/assets/install/grafana-prometheus-datasource.yml @@ -6,6 +6,7 @@ deleteDatasources: datasources: - name: Prometheus + uid: PBFA97CFB590B2093 type: prometheus access: proxy orgId: 1 diff --git a/shared/services/rocketpool/assets/install/mainnet.env b/shared/services/rocketpool/assets/install/mainnet.env index 9ab2917d0..7ffff0273 100644 --- a/shared/services/rocketpool/assets/install/mainnet.env +++ b/shared/services/rocketpool/assets/install/mainnet.env @@ -26,7 +26,7 @@ RP_IMAGE_COMMIT_BOOST=ghcr.io/commit-boost/commit-boost:v0.11.0@sha256:b4fb57591 RP_IMAGE_PROMETHEUS=prom/prometheus:v3.15.0@sha256:efd719c99d83b060d9daefdcf00360461adf279f45ef5391f8d111892118753e RP_IMAGE_EXPORTER=prom/node-exporter:v1.12.1@sha256:1b4e4438faca4dd7e001dd445d161a4a2091b0fededa84093b3a8dfeae1f1be0 RP_IMAGE_ALERTMANAGER=prom/alertmanager:v0.26.0@sha256:361db356b33041437517f1cd298462055580585f26555c317df1a3caf2868552 -RP_IMAGE_GRAFANA=grafana/grafana:9.5.18@sha256:42bb294e8807526658eceb19461e7646171ca48d15f9ac2ac511f1fe63599c54 +RP_IMAGE_GRAFANA=grafana/grafana:13.2.3@sha256:b28bae15e219c998fb0e0424ed724930cc61b1f61fb404d47c862f9a23f9e572 RP_IMAGE_GWW=rocketpool/graffiti-wall-addon:v1.0.1@sha256:bf3c224047d1c098d1f714e0ea1aae55d729521b99729ab5a4ddba4d5aec22f1 RP_IMAGE_CURL=curlimages/curl:8.13.0@sha256:d43bdb28bae0be0998f3be83199bfb2b81e0a30b034b6d7586ce7e05de34c3fd RP_IMAGE_ALPINE=alpine:3.21.3@sha256:a8560b36e8b8210634f77d9f7f9efd7ffa463e380b75e2e74aff4511df3ef88c diff --git a/shared/services/rocketpool/assets/install/templates/grafana-prometheus-datasource.tmpl b/shared/services/rocketpool/assets/install/templates/grafana-prometheus-datasource.tmpl index f90b695d5..5ee450716 100644 --- a/shared/services/rocketpool/assets/install/templates/grafana-prometheus-datasource.tmpl +++ b/shared/services/rocketpool/assets/install/templates/grafana-prometheus-datasource.tmpl @@ -6,6 +6,7 @@ deleteDatasources: datasources: - name: Prometheus + uid: PBFA97CFB590B2093 type: prometheus access: proxy orgId: 1 diff --git a/shared/services/rocketpool/assets/install/templates/grafana.tmpl b/shared/services/rocketpool/assets/install/templates/grafana.tmpl index 4705a6306..5e84d06e4 100644 --- a/shared/services/rocketpool/assets/install/templates/grafana.tmpl +++ b/shared/services/rocketpool/assets/install/templates/grafana.tmpl @@ -13,6 +13,8 @@ services: restart: unless-stopped environment: - GF_SERVER_HTTP_PORT={{$port}} + # The bundled dashboards use built-in plugins; avoid unpinned startup downloads. + - GF_PLUGINS_PREINSTALL_DISABLED=true ports: [{{.GetGrafanaOpenPorts}}] volumes: - "{{.RocketPoolDirectory}}/grafana-prometheus-datasource.yml:/etc/grafana/provisioning/datasources/prometheus.yml" From 781d8b9dbcef82dfc8f473b946c623b0cb503692 Mon Sep 17 00:00:00 2001 From: Fornax <23104993+0xfornax@users.noreply.github.com> Date: Fri, 9 Oct 2026 15:51:44 -0300 Subject: [PATCH 05/12] update sn --- shared/services/rocketpool/assets/install/mainnet.env | 2 +- shared/version.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/shared/services/rocketpool/assets/install/mainnet.env b/shared/services/rocketpool/assets/install/mainnet.env index 7ffff0273..3b900df8b 100644 --- a/shared/services/rocketpool/assets/install/mainnet.env +++ b/shared/services/rocketpool/assets/install/mainnet.env @@ -4,7 +4,7 @@ # plataberget.env, ...): only keys present there replace these defaults. # TUI container-tag changes are set in the Compose process environment and win over both. -RP_IMAGE_SMARTNODE=rocketpool/smartnode:v1.24.4@sha256:2bf48367aec6e3cf4f0efefceb928babae208f0a310ade6439874f6968dceaa0 +RP_IMAGE_SMARTNODE=rocketpool/smartnode:v1.24.5-dev RP_IMAGE_GETH=ethereum/client-go:v1.17.8@sha256:abf3605177f8bdcfce436985a8054cca4ae59256323a4ffb72c56c04f3d1fadd RP_IMAGE_NETHERMIND=nethermind/nethermind:2.1.0@sha256:25f72063f6fc8ba89f1c08abe1ed3211203b3cf303c9618cc3a2488e1e4ab2e0 diff --git a/shared/version.txt b/shared/version.txt index 2f4320f67..8f359f7b9 100644 --- a/shared/version.txt +++ b/shared/version.txt @@ -1 +1 @@ -1.24.4 +1.24.5-dev From 2ac1458cf62136b6d7deefc390b8f6984063c8a2 Mon Sep 17 00:00:00 2001 From: Fornax <23104993+0xfornax@users.noreply.github.com> Date: Fri, 9 Oct 2026 16:13:02 -0300 Subject: [PATCH 06/12] update curl --- shared/services/config/images_test.go | 266 -------------------------- shared/services/rocketpool/client.go | 2 +- 2 files changed, 1 insertion(+), 267 deletions(-) delete mode 100644 shared/services/config/images_test.go diff --git a/shared/services/config/images_test.go b/shared/services/config/images_test.go deleted file mode 100644 index 0df3fa43e..000000000 --- a/shared/services/config/images_test.go +++ /dev/null @@ -1,266 +0,0 @@ -package config - -import ( - "os" - "path/filepath" - "strings" - "testing" - - "github.com/rocket-pool/smartnode/shared/types/config" -) - -func TestParseEnvFile(t *testing.T) { - data := []byte(` -# comment -RP_IMAGE_GETH=ethereum/client-go:v1.17.5@sha256:abc - -RP_IMAGE_CURL="curlimages/curl:8.13.0" -RP_IMAGE_ALPINE='alpine:3.21.3' -`) - got, err := ParseEnvFile(data) - if err != nil { - t.Fatal(err) - } - if got["RP_IMAGE_GETH"] != "ethereum/client-go:v1.17.5@sha256:abc" { - t.Fatalf("geth: %q", got["RP_IMAGE_GETH"]) - } - if got["RP_IMAGE_CURL"] != "curlimages/curl:8.13.0" { - t.Fatalf("curl: %q", got["RP_IMAGE_CURL"]) - } - if got["RP_IMAGE_ALPINE"] != "alpine:3.21.3" { - t.Fatalf("alpine: %q", got["RP_IMAGE_ALPINE"]) - } -} - -func TestParseEnvFileRejectsBadLine(t *testing.T) { - if _, err := ParseEnvFile([]byte("not-a-key-value")); err == nil { - t.Fatal("expected error") - } -} - -func TestLoadImageCatalogsEmbedded(t *testing.T) { - mainnet, overlays, err := LoadImageCatalogs("", nil) - if err != nil { - t.Fatal(err) - } - if !strings.Contains(mainnet.Must(ImageGeth), "ethereum/client-go:") { - t.Fatalf("unexpected geth image %s", mainnet.Must(ImageGeth)) - } - if len(overlays) != 0 { - t.Fatalf("expected no overlays without networks, got %v", overlays) - } -} - -func TestLoadImageCatalogsPrefersDisk(t *testing.T) { - dir := t.TempDir() - mainnet, _, err := LoadImageCatalogs("", nil) - if err != nil { - t.Fatal(err) - } - values := mainnet.Map() - values[ImageGeth] = "example.com/geth:custom" - if err := WriteEnvFile(filepath.Join(dir, ImagesMainnetFile), values); err != nil { - t.Fatal(err) - } - loaded, _, err := LoadImageCatalogs(dir, nil) - if err != nil { - t.Fatal(err) - } - if loaded.Must(ImageGeth) != "example.com/geth:custom" { - t.Fatalf("got %s", loaded.Must(ImageGeth)) - } -} - -func TestNetworkOverlayOverridesMainnet(t *testing.T) { - dir := t.TempDir() - mainnet, _, err := LoadImageCatalogs("", nil) - if err != nil { - t.Fatal(err) - } - if err := WriteEnvFile(filepath.Join(dir, ImagesMainnetFile), mainnet.Map()); err != nil { - t.Fatal(err) - } - if err := os.WriteFile(filepath.Join(dir, ImagesTestnetFile), []byte("RP_IMAGE_GETH=example.com/geth:testnet\n"), 0644); err != nil { - t.Fatal(err) - } - networks, err := LoadNetworks("") - if err != nil { - t.Fatal(err) - } - cfg := mustNewRocketPoolConfig(t, dir, false) - cfg.networks = networks - cfg.Smartnode.Network.Value = config.Network("testnet") - if got := cfg.imageForNetwork(ImageGeth, config.Network("testnet")); got != "example.com/geth:testnet" { - t.Fatalf("testnet geth %s", got) - } - if got := cfg.imageForNetwork(ImageLighthouse, config.Network("testnet")); got != mainnet.Must(ImageLighthouse) { - t.Fatalf("testnet lighthouse should inherit mainnet, got %s", got) - } - if got := cfg.imageForNetwork(ImageGeth, config.Network("mainnet")); got != mainnet.Must(ImageGeth) { - t.Fatalf("mainnet geth should be unchanged, got %s", got) - } -} - -func TestUpdateEnvFilePreservesComments(t *testing.T) { - dir := t.TempDir() - path := filepath.Join(dir, ImagesMainnetFile) - if err := os.WriteFile(path, []byte("# comment\nRP_IMAGE_GETH=old/geth:1\nRP_IMAGE_CURL=keep/curl:1\n"), 0644); err != nil { - t.Fatal(err) - } - if err := UpdateEnvFile(path, map[string]string{ImageGeth: "my/geth:custom"}); err != nil { - t.Fatal(err) - } - data, err := os.ReadFile(path) - if err != nil { - t.Fatal(err) - } - text := string(data) - if !strings.Contains(text, "# comment") { - t.Fatalf("lost comment: %s", text) - } - parsed, err := ParseEnvFile(data) - if err != nil { - t.Fatal(err) - } - if parsed[ImageGeth] != "my/geth:custom" { - t.Fatalf("geth %q", parsed[ImageGeth]) - } - if parsed[ImageCurl] != "keep/curl:1" { - t.Fatalf("curl %q", parsed[ImageCurl]) - } -} - -func TestClientImageEnvRefs(t *testing.T) { - cfg := mustNewRocketPoolConfig(t, "", false) - cfg.ExecutionClientMode.Value = config.Mode_Local - cfg.ExecutionClient.Value = config.ExecutionClient_Geth - cfg.ConsensusClientMode.Value = config.Mode_Local - cfg.ConsensusClient.Value = config.ConsensusClient_Lighthouse - cfg.Smartnode.Network.Value = config.Network("mainnet") - - ref, err := cfg.GetECImageEnvRef() - if err != nil { - t.Fatal(err) - } - if ref != ImageTagRef(ECImageTagOverride, ECImageTagDefault) { - t.Fatalf("ec ref %s", ref) - } - bn, err := cfg.GetBeaconImageEnvRef() - if err != nil { - t.Fatal(err) - } - if bn != ImageTagRef(BNImageTagOverride, BNImageTagDefault) { - t.Fatalf("bn ref %s", bn) - } - vc, err := cfg.GetVCImageEnvRef() - if err != nil { - t.Fatal(err) - } - if vc != ImageTagRef(VCImageTagOverride, VCImageTagDefault) { - t.Fatalf("vc ref %s", vc) - } - - cfg.ChangeNetwork(config.Network("testnet")) - ref, err = cfg.GetECImageEnvRef() - if err != nil { - t.Fatal(err) - } - if ref != ImageTagRef(ECImageTagOverride, ECImageTagDefault) { - t.Fatalf("ec test ref %s", ref) - } - if !cfg.IsTestnet() { - t.Fatal("expected IsTestnet") - } - if cfg.TestnetOnly() != "" { - t.Fatalf("TestnetOnly on testnet should be empty, got %q", cfg.TestnetOnly()) - } - files := cfg.ImagesEnvFiles() - if len(files) < 1 || files[0] != ImagesMainnetFile { - t.Fatalf("expected mainnet.env first, got %v", files) - } -} - -func TestComposeEnvOverrides(t *testing.T) { - cfg := mustNewRocketPoolConfig(t, "", false) - cfg.Smartnode.Network.Value = config.Network("mainnet") - if err := cfg.Geth.ContainerTag.SetToDefault(config.Network("mainnet")); err != nil { - t.Fatal(err) - } - if len(cfg.ComposeEnvOverrides()) != 0 { - t.Fatalf("expected no overrides, got %v", cfg.ComposeEnvOverrides()) - } - cfg.Geth.ContainerTag.Value = "my/geth:custom" - overrides := cfg.ComposeEnvOverrides() - if overrides[ECImageTagOverride] != "my/geth:custom" { - t.Fatalf("got %v", overrides) - } - defaults := cfg.ComposeImageDefaults() - if defaults[ECImageTagDefault] == "" || defaults[ECImageTagDefault] == "my/geth:custom" { - t.Fatalf("default should stay the catalog pin, got %q", defaults[ECImageTagDefault]) - } - env, err := cfg.ComposeImageEnv() - if err != nil { - t.Fatal(err) - } - if env[ECImageTagDefault] != defaults[ECImageTagDefault] { - t.Fatalf("merged default %q", env[ECImageTagDefault]) - } - if env[ECImageTagOverride] != "my/geth:custom" { - t.Fatalf("merged override %q", env[ECImageTagOverride]) - } -} - -func TestComposeEnvAssignmentsSorted(t *testing.T) { - cfg := mustNewRocketPoolConfig(t, "", false) - cfg.Smartnode.Network.Value = config.Network("mainnet") - cfg.ExecutionClientMode.Value = config.Mode_Local - cfg.ExecutionClient.Value = config.ExecutionClient_Geth - cfg.Geth.ContainerTag.Value = "my/geth:custom" - cfg.Prometheus.ContainerTag.Value = "my/prom:custom" - got, err := cfg.ComposeEnvAssignments() - if err != nil { - t.Fatal(err) - } - if len(got) < 2 { - t.Fatalf("expected multiple assignments, got %v", got) - } - for i := 1; i < len(got); i++ { - if got[i-1] >= got[i] { - t.Fatalf("assignments not sorted: %v", got) - } - } -} - -func TestComposeEnvAssignmentsRejectsWhitespace(t *testing.T) { - cfg := mustNewRocketPoolConfig(t, "", false) - cfg.Smartnode.Network.Value = config.Network("mainnet") - cfg.ExecutionClientMode.Value = config.Mode_Local - cfg.ExecutionClient.Value = config.ExecutionClient_Geth - cfg.Geth.ContainerTag.Value = "my/geth custom" - if _, err := cfg.ComposeEnvAssignments(); err == nil { - t.Fatal("expected error for whitespace in override value") - } -} - -func TestTestnetOnlyComment(t *testing.T) { - cfg := mustNewRocketPoolConfig(t, "", false) - cfg.Smartnode.Network.Value = config.Network("mainnet") - if cfg.IsTestnet() { - t.Fatal("mainnet should not be testnet") - } - if cfg.TestnetOnly() != "#" { - t.Fatalf("TestnetOnly on mainnet should be #, got %q", cfg.TestnetOnly()) - } - if cfg.DevnetOnly() != "#" { - t.Fatalf("DevnetOnly on mainnet should be #, got %q", cfg.DevnetOnly()) - } -} - -func TestContainerTagsAreSerialized(t *testing.T) { - cfg := mustNewRocketPoolConfig(t, "", false) - cfg.Geth.ContainerTag.Value = "my/geth:custom" - serialized := cfg.Serialize() - if tag, ok := serialized["geth"]["containerTag"]; !ok || tag != "my/geth:custom" { - t.Fatalf("container tags should be saved to user-settings.yml, got %v", serialized["geth"]["containerTag"]) - } -} diff --git a/shared/services/rocketpool/client.go b/shared/services/rocketpool/client.go index bd4d54374..c81b756f3 100644 --- a/shared/services/rocketpool/client.go +++ b/shared/services/rocketpool/client.go @@ -986,7 +986,7 @@ func (c *Client) RunNethermindPruneStarter(executionContainerName string) error for i := 0; i < retryCount; i++ { command := fmt.Sprintf(`-m 30 -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"admin_prune","params":[],"id":%d}' %s`, i+1, nethermindAdminUrl) - cmdText := fmt.Sprintf(`docker run --quiet --rm --name curl%s --network container:%s %s -Ss %s`, pruneStarterContainerSuffix, executionContainerName, shellescape.Quote(c.resolvedImage(config.ImageCurl, "curlimages/curl:8.13.0")), command) + cmdText := fmt.Sprintf(`docker run --quiet --rm --name curl%s --network container:%s %s -Ss %s`, pruneStarterContainerSuffix, executionContainerName, shellescape.Quote(c.resolvedImage(config.ImageCurl, "curlimages/curl:8.22.0")), command) if i != 0 { fmt.Printf("Trying again in %v... (%d/%d)\n", retryTime, i+1, retryCount) From eb2e89cda8fdab67792914d41414a160b9accf0b Mon Sep 17 00:00:00 2001 From: Fornax <23104993+0xfornax@users.noreply.github.com> Date: Fri, 9 Oct 2026 16:15:16 -0300 Subject: [PATCH 07/12] update alpine --- shared/services/rocketpool/assets/install/mainnet.env | 2 +- shared/services/rocketpool/client.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/shared/services/rocketpool/assets/install/mainnet.env b/shared/services/rocketpool/assets/install/mainnet.env index 3b900df8b..417c2090c 100644 --- a/shared/services/rocketpool/assets/install/mainnet.env +++ b/shared/services/rocketpool/assets/install/mainnet.env @@ -29,4 +29,4 @@ RP_IMAGE_ALERTMANAGER=prom/alertmanager:v0.26.0@sha256:361db356b33041437517f1cd2 RP_IMAGE_GRAFANA=grafana/grafana:13.2.3@sha256:b28bae15e219c998fb0e0424ed724930cc61b1f61fb404d47c862f9a23f9e572 RP_IMAGE_GWW=rocketpool/graffiti-wall-addon:v1.0.1@sha256:bf3c224047d1c098d1f714e0ea1aae55d729521b99729ab5a4ddba4d5aec22f1 RP_IMAGE_CURL=curlimages/curl:8.13.0@sha256:d43bdb28bae0be0998f3be83199bfb2b81e0a30b034b6d7586ce7e05de34c3fd -RP_IMAGE_ALPINE=alpine:3.21.3@sha256:a8560b36e8b8210634f77d9f7f9efd7ffa463e380b75e2e74aff4511df3ef88c +RP_IMAGE_ALPINE=alpine:3.24.2@sha256:294b683cb724975bec92580e1e685676bd4b50bda910ddb8c51d4cabeaec77e6 diff --git a/shared/services/rocketpool/client.go b/shared/services/rocketpool/client.go index c81b756f3..96d720897 100644 --- a/shared/services/rocketpool/client.go +++ b/shared/services/rocketpool/client.go @@ -947,7 +947,7 @@ func (c *Client) resolvedImage(key, fallback string) string { // Creates a marker file on the execution client volume (used for prune and DB migrations). func (c *Client) TouchEthclientMarker(container, volume, marker string) error { - cmd := fmt.Sprintf("docker run --rm --name %s -v %s:/ethclient %s sh -c 'touch /ethclient/%s'", container, volume, shellescape.Quote(c.resolvedImage(config.ImageAlpine, "alpine:3.21.3")), marker) + cmd := fmt.Sprintf("docker run --rm --name %s -v %s:/ethclient %s sh -c 'touch /ethclient/%s'", container, volume, shellescape.Quote(c.resolvedImage(config.ImageAlpine, "alpine:3.24.2")), marker) output, err := c.readOutput(cmd) if err != nil { return err From 8552471c491cc87eb229c02288459fe96900306b Mon Sep 17 00:00:00 2001 From: Fornax <23104993+0xfornax@users.noreply.github.com> Date: Fri, 9 Oct 2026 16:21:14 -0300 Subject: [PATCH 08/12] update alertmanager --- .../assets/install/alerting/alertmanager.tmpl | 16 ++++++++-------- .../rocketpool/assets/install/mainnet.env | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/shared/services/rocketpool/assets/install/alerting/alertmanager.tmpl b/shared/services/rocketpool/assets/install/alerting/alertmanager.tmpl index 74d13caae..b250acf5a 100644 --- a/shared/services/rocketpool/assets/install/alerting/alertmanager.tmpl +++ b/shared/services/rocketpool/assets/install/alerting/alertmanager.tmpl @@ -22,14 +22,14 @@ route: repeat_interval: 4h routes: # severity=info: Don't send the follow-up resolved notification. - - match: - severity: info + - matchers: + - 'severity="info"' continue: false # The notification destination receiver: "node_operator_no_resolved" # all other alerts get sent notifications for the initial firing _and_ resolved notifications. - receiver: "node_operator_default" - #match: We want this to match all alerts (severity=info is first though so it will stop) + # Match all remaining alerts after the severity="info" route. # The notification destination receiver: "node_operator_default" @@ -78,11 +78,11 @@ receivers: inhibit_rules: # Inhibit rules mute a new alert (target) that matches an existing alert (source). - - source_match: + - source_matchers: # if the existing alert (source) is severity=critical - severity: "critical" - target_match: + - 'severity="critical"' + target_matchers: # and the new alert (target) is severity=warning - severity: "warning" - # and the alertname, job, and instance labels have the same value + - 'severity="warning"' + # and the alertname, job, and instance labels have the same value equal: ["alertname", "job", "instance"] diff --git a/shared/services/rocketpool/assets/install/mainnet.env b/shared/services/rocketpool/assets/install/mainnet.env index 417c2090c..ac585b5dc 100644 --- a/shared/services/rocketpool/assets/install/mainnet.env +++ b/shared/services/rocketpool/assets/install/mainnet.env @@ -25,7 +25,7 @@ RP_IMAGE_COMMIT_BOOST=ghcr.io/commit-boost/commit-boost:v0.11.0@sha256:b4fb57591 RP_IMAGE_PROMETHEUS=prom/prometheus:v3.15.0@sha256:efd719c99d83b060d9daefdcf00360461adf279f45ef5391f8d111892118753e RP_IMAGE_EXPORTER=prom/node-exporter:v1.12.1@sha256:1b4e4438faca4dd7e001dd445d161a4a2091b0fededa84093b3a8dfeae1f1be0 -RP_IMAGE_ALERTMANAGER=prom/alertmanager:v0.26.0@sha256:361db356b33041437517f1cd298462055580585f26555c317df1a3caf2868552 +RP_IMAGE_ALERTMANAGER=prom/alertmanager:v0.34.1@sha256:e9733bafb1bdef9b00e25a21f8f99dc26a22224bf16641ad754d1649f4c3357a RP_IMAGE_GRAFANA=grafana/grafana:13.2.3@sha256:b28bae15e219c998fb0e0424ed724930cc61b1f61fb404d47c862f9a23f9e572 RP_IMAGE_GWW=rocketpool/graffiti-wall-addon:v1.0.1@sha256:bf3c224047d1c098d1f714e0ea1aae55d729521b99729ab5a4ddba4d5aec22f1 RP_IMAGE_CURL=curlimages/curl:8.13.0@sha256:d43bdb28bae0be0998f3be83199bfb2b81e0a30b034b6d7586ce7e05de34c3fd From 931f391694130e4b66b0e450a679dea73e2c0224 Mon Sep 17 00:00:00 2001 From: Fornax <23104993+0xfornax@users.noreply.github.com> Date: Fri, 9 Oct 2026 16:32:51 -0300 Subject: [PATCH 09/12] update go-crypto and add a signature test --- go.mod | 2 +- go.sum | 4 +- rocketpool-cli/update/assets/keyring_test.go | 110 ++++++++++++++++++ .../update/assets/testdata/signed-message | Bin 0 -> 54 bytes .../update/assets/testdata/signed-message.sig | Bin 0 -> 438 bytes .../update/assets/testdata/signing-key.asc | 24 ++++ 6 files changed, 137 insertions(+), 3 deletions(-) create mode 100644 rocketpool-cli/update/assets/keyring_test.go create mode 100644 rocketpool-cli/update/assets/testdata/signed-message create mode 100644 rocketpool-cli/update/assets/testdata/signed-message.sig create mode 100644 rocketpool-cli/update/assets/testdata/signing-key.asc diff --git a/go.mod b/go.mod index 8601fabe3..2edcae595 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/rocket-pool/smartnode go 1.27.2 require ( - github.com/ProtonMail/go-crypto v1.1.6 + github.com/ProtonMail/go-crypto v1.5.2 github.com/alessio/shellescape v1.4.1 github.com/blang/semver/v4 v4.0.0 github.com/btcsuite/btcd v0.24.2 diff --git a/go.sum b/go.sum index 9ac67688b..0daac9edc 100644 --- a/go.sum +++ b/go.sum @@ -50,8 +50,8 @@ github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERo github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6 h1:1zYrtlhrZ6/b6SAjLSfKzWtdgqK0U+HtH/VcBWh1BaU= github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6/go.mod h1:ioLG6R+5bUSO1oeGSDxOV3FADARuMoytZCSX6MEMQkI= -github.com/ProtonMail/go-crypto v1.1.6 h1:ZcV+Ropw6Qn0AX9brlQLAUXfqLBc7Bl+f/DmNxpLfdw= -github.com/ProtonMail/go-crypto v1.1.6/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= +github.com/ProtonMail/go-crypto v1.5.2 h1:cucYnvqcY7UOXVD//mSyjeaPY0SSN3v5cDkYPxumINk= +github.com/ProtonMail/go-crypto v1.5.2/go.mod h1:/RaSu30DaKO4RY+XdV/ACcCcZkGr7AhUIduq5sjzzCo= github.com/RaduBerinde/axisds v0.1.0 h1:YItk/RmU5nvlsv/awo2Fjx97Mfpt4JfgtEVAGPrLdz8= github.com/RaduBerinde/axisds v0.1.0/go.mod h1:UHGJonU9z4YYGKJxSaC6/TNcLOBptpmM5m2Cksbnw0Y= github.com/RaduBerinde/btreemap v0.0.0-20250419174037-3d62b7205d54 h1:bsU8Tzxr/PNz75ayvCnxKZWEYdLMPDkUgticP4a4Bvk= diff --git a/rocketpool-cli/update/assets/keyring_test.go b/rocketpool-cli/update/assets/keyring_test.go new file mode 100644 index 000000000..bbee68585 --- /dev/null +++ b/rocketpool-cli/update/assets/keyring_test.go @@ -0,0 +1,110 @@ +package assets + +import ( + "bytes" + "errors" + "io" + "os" + "testing" + + "github.com/ProtonMail/go-crypto/openpgp" +) + +// The fixtures were signed independently with GnuPG 2.4.4 using an RSA-3072 +// test key and SHA-512, matching the release signing format. The test key and +// signature were created at 2026-01-01T00:00:00Z without an expiration date. +// Only the public key is retained; no production signing key is used. +func TestVerifySignedBinary(t *testing.T) { + readFixture := func(name string) []byte { + t.Helper() + data, err := os.ReadFile("testdata/" + name) + if err != nil { + t.Fatal(err) + } + return data + } + + payload := readFixture("signed-message") + signature := readFixture("signed-message.sig") + testKeys, err := openpgp.ReadArmoredKeyRing(bytes.NewReader(readFixture("signing-key.asc"))) + if err != nil { + t.Fatal(err) + } + + // VerifySignedBinary uses the embedded keyring. These subtests must remain + // sequential while temporarily substituting a test trust root. + releaseKeys := entityList + t.Cleanup(func() { entityList = releaseKeys }) + entityList = testKeys + + t.Run("valid GnuPG signature", func(t *testing.T) { + var downloaded bytes.Buffer + signer, err := VerifySignedBinary(io.TeeReader(bytes.NewReader(payload), &downloaded), bytes.NewReader(signature)) + if err != nil { + t.Fatalf("verify signed payload: %v", err) + } + if signer == nil || !bytes.Equal(signer.PrimaryKey.Fingerprint, testKeys[0].PrimaryKey.Fingerprint) { + t.Fatal("verification did not return the trusted signer") + } + if !bytes.Equal(downloaded.Bytes(), payload) { + t.Fatal("verification did not consume the complete binary stream") + } + }) + + corruptedPayload := bytes.Clone(payload) + corruptedPayload[0] ^= 1 + corruptedSignature := bytes.Clone(signature) + corruptedSignature[len(corruptedSignature)-1] ^= 1 + + for _, tt := range []struct { + name string + payload []byte + signature []byte + }{ + {"modified binary", corruptedPayload, signature}, + {"truncated binary", payload[:len(payload)-1], signature}, + {"appended binary data", append(bytes.Clone(payload), 0), signature}, + {"empty binary", nil, signature}, + {"corrupted signature", payload, corruptedSignature}, + {"truncated signature", payload, signature[:len(signature)/2]}, + {"empty signature", payload, nil}, + {"malformed signature", payload, []byte("not an OpenPGP signature")}, + } { + t.Run(tt.name, func(t *testing.T) { + if _, err := VerifySignedBinary(bytes.NewReader(tt.payload), bytes.NewReader(tt.signature)); err == nil { + t.Fatal("verification accepted invalid input") + } + }) + } + + t.Run("binary read failure", func(t *testing.T) { + readErr := errors.New("binary download interrupted") + reader := io.MultiReader(bytes.NewReader(payload[:5]), signatureErrorReader{readErr}) + if _, err := VerifySignedBinary(reader, bytes.NewReader(signature)); !errors.Is(err, readErr) { + t.Fatalf("expected binary read error, got %v", err) + } + }) + + t.Run("signature read failure", func(t *testing.T) { + readErr := errors.New("signature download interrupted") + if _, err := VerifySignedBinary(bytes.NewReader(payload), signatureErrorReader{readErr}); !errors.Is(err, readErr) { + t.Fatalf("expected signature read error, got %v", err) + } + }) + + t.Run("untrusted signer", func(t *testing.T) { + entityList = releaseKeys + t.Cleanup(func() { entityList = testKeys }) + if _, err := VerifySignedBinary(bytes.NewReader(payload), bytes.NewReader(signature)); err == nil { + t.Fatal("release keyring accepted a signature from an unrelated key") + } + }) +} + +type signatureErrorReader struct { + err error +} + +func (r signatureErrorReader) Read([]byte) (int, error) { + return 0, r.err +} diff --git a/rocketpool-cli/update/assets/testdata/signed-message b/rocketpool-cli/update/assets/testdata/signed-message new file mode 100644 index 0000000000000000000000000000000000000000..556644a95ef5365e29d269155d6e574696cd7388 GIT binary patch literal 54 zcmWH}O)M(O%TGyFC`!#qO)O5;EzV5OODriZN>wOJEy_&GOinDx%+FIu%d7wi>Txmr H=j8$bLf{le literal 0 HcmV?d00001 diff --git a/rocketpool-cli/update/assets/testdata/signed-message.sig b/rocketpool-cli/update/assets/testdata/signed-message.sig new file mode 100644 index 0000000000000000000000000000000000000000..37170198da296697c2ce047c433052868a6378ba GIT binary patch literal 438 zcmV;n0ZIOe0kZ@E0SW*e79j+rFvbgY&_+0LUH>rWNs)VSEy3dj0%=vb000UJ5a&se zdvGnmvZT_fG(M#J(Rzj7`gjamk%_H8U1IZhu=QQh*&`R5&Lr=U{0SBWt3*em!BJTGJYqa)1wD+mBkb8 z55QQ*xKVL%i1z&8V&nTAcy5y372a;ON^guYMUWYWR=61B8>q{`y;KrudL@m?Ovp)S zP~myYX?v7c9=+1N>z4GQVs}BH+G*4;` Date: Fri, 9 Oct 2026 16:41:25 -0300 Subject: [PATCH 10/12] update prometheus/client_golang --- go.mod | 14 +++++++------- go.sum | 44 +++++++++++++++++++++++++------------------- 2 files changed, 32 insertions(+), 26 deletions(-) diff --git a/go.mod b/go.mod index 2edcae595..4d5b16a41 100644 --- a/go.mod +++ b/go.mod @@ -28,13 +28,13 @@ require ( github.com/ipfs/boxo v0.8.0 github.com/ipfs/go-cid v0.6.1 github.com/ipfs/go-datastore v0.6.0 - github.com/klauspost/compress v1.19.2 + github.com/klauspost/compress v1.20.1 github.com/mitchellh/go-homedir v1.1.0 github.com/moby/moby/client v0.6.2 github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 github.com/pk910/dynamic-ssz v1.3.2 github.com/princjef/gomarkdoc v0.4.1 - github.com/prometheus/client_golang v1.20.0 + github.com/prometheus/client_golang v1.25.0 github.com/prysmaticlabs/go-bitfield v0.0.0-20240328144219-a1caa50c3a1e github.com/prysmaticlabs/prysm/v5 v5.3.3 github.com/rivo/tview v0.0.0-20230208211350-7dfff1ce7854 @@ -50,7 +50,7 @@ require ( golang.org/x/sync v0.23.0 golang.org/x/term v0.46.0 golang.org/x/text v0.42.0 - google.golang.org/protobuf v1.36.11 + google.golang.org/protobuf v1.36.12 gopkg.in/yaml.v2 v2.4.0 ) @@ -59,7 +59,7 @@ require ( github.com/Microsoft/go-winio v0.6.2 // indirect github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6 // indirect github.com/VividCortex/ewma v1.2.0 // indirect - github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect + github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bits-and-blooms/bitset v1.20.0 // indirect @@ -151,9 +151,9 @@ require ( github.com/polydawn/refmt v0.89.1-0.20231129105047-37766d95467a // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect github.com/princjef/mageutil v1.0.0 // 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/prometheus/client_model v0.6.3 // indirect + github.com/prometheus/common v0.72.0 // indirect + github.com/prometheus/procfs v0.22.0 // indirect github.com/prysmaticlabs/fastssz v0.0.0-20241008181541-518c4ce73516 // indirect github.com/prysmaticlabs/gohashtree v0.0.4-beta.0.20240624100937-73632381301b // indirect github.com/rivo/uniseg v0.4.7 // indirect diff --git a/go.sum b/go.sum index 0daac9edc..1faa19054 100644 --- a/go.sum +++ b/go.sum @@ -62,8 +62,8 @@ github.com/VividCortex/ewma v1.1.1/go.mod h1:2Tkkvm3sRDVXaiyucHiACn4cqf7DpdyLvmx github.com/VividCortex/ewma v1.2.0 h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1ow= github.com/VividCortex/ewma v1.2.0/go.mod h1:nz4BbCtbLyFDeC9SUHbtcT5644juEuWfUAUnGx7j5l4= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= -github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAuRjVTiNNhvNRfY2Wxp9nhfyel4rklc= -github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= +github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b h1:mimo19zliBX/vSQ6PWWSL9lK8qwHozUj03+zLoEB8O0= +github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b/go.mod h1:fvzegU4vN3H1qMT+8wDmzjAcDONcgo2/SZ/TyfdUOFs= github.com/alessio/shellescape v1.4.1 h1:V7yhSDDn8LP4lc4jS8pFkt0zCnzVJlG5JXy9BVKJUX0= github.com/alessio/shellescape v1.4.1/go.mod h1:PZAiSCk0LJaZkiCSkPv8qIobYglO3FPpyFjDCtHLS30= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= @@ -553,8 +553,8 @@ github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= -github.com/klauspost/compress v1.19.2 h1:hMRETovs/pu/dVWN7zIT1PGG8t509MwT6bO7XSi26R8= -github.com/klauspost/compress v1.19.2/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ= +github.com/klauspost/compress v1.20.1 h1:T7kKElXUMXrUJ2E9QhQhxFtcK5rPyLdsGZvdbLMPdiQ= +github.com/klauspost/compress v1.20.1/go.mod h1:LUdAzn7YLVvxLpc7y3V1m40wESHTgc1422pwwBSKYuI= github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= @@ -789,7 +789,6 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/polydawn/refmt v0.0.0-20190221155625-df39d6c2d992/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= github.com/polydawn/refmt v0.0.0-20190807091052-3d65705ee9f1/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= @@ -802,15 +801,15 @@ github.com/princjef/gomarkdoc v0.4.1 h1:Ubt5OiHYi2PdxrDkWMeWM4ROrbvAGkIXBz3Pquxg github.com/princjef/gomarkdoc v0.4.1/go.mod h1:+o04FW4GNL2vPr/35yxMV/8eXjhsdNBBPMVVDOOTLec= github.com/princjef/mageutil v1.0.0 h1:1OfZcJUMsooPqieOz2ooLjI+uHUo618pdaJsbCXcFjQ= github.com/princjef/mageutil v1.0.0/go.mod h1:mkShhaUomCYfAoVvTKRcbAs8YSVPdtezI5j6K+VXhrs= -github.com/prometheus/client_golang v1.20.0 h1:jBzTZ7B099Rg24tny+qngoynol8LtVYlA2bqx3vEloI= -github.com/prometheus/client_golang v1.20.0/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.25.0 h1:cDtW1TcFsMi1RJc8khwCKB4VhzwV04aKqbYtNOXuiK0= +github.com/prometheus/client_golang v1.25.0/go.mod h1:j2X/4/kaQHLPnmyEU8zjmkndo1T317VpCIQEml8LTKk= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= -github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= -github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= -github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= -github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/prometheus/client_model v0.6.3 h1:O0jaTVAYNxTHYInEPFJt5I3+sN8zqBtVMPTB1qyxiEo= +github.com/prometheus/client_model v0.6.3/go.mod h1:gpN5P9S7Rr6Yr92PiQ+Ixvhf6JZEkF1dnxsYL2aPBEM= +github.com/prometheus/common v0.72.0 h1:tAYsE+sPJxIncDAobm4H5aQjmox9ZxEIIqPbiffa8G4= +github.com/prometheus/common v0.72.0/go.mod h1:77NWqAQ2tXT7BIK40qjJdw5Acrsrg1TlHAnsQi3i6mk= +github.com/prometheus/procfs v0.22.0 h1:6q9+/JL9IKAPbCmBrv9n5O5Ty3NKnciV5X7YGw0oics= +github.com/prometheus/procfs v0.22.0/go.mod h1:CvmFr/GVhIjIvWJZW3tgkODBQMRIf0EyWMQLHCHab58= github.com/prysmaticlabs/fastssz v0.0.0-20241008181541-518c4ce73516 h1:xuVAdtz5ShYblG2sPyb4gw01DF8InbOI/kBCQjk7NiM= github.com/prysmaticlabs/fastssz v0.0.0-20241008181541-518c4ce73516/go.mod h1:h2OlIZD/M6wFvV3YMZbW16lFgh3Rsye00G44J2cwLyU= github.com/prysmaticlabs/go-bitfield v0.0.0-20240328144219-a1caa50c3a1e h1:ATgOe+abbzfx9kCPeXIW4fiWyDdxlwHw07j8UGhdTd4= @@ -883,6 +882,7 @@ github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -893,8 +893,10 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= -github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.12.1 h1:EuwCh5fleGS7H32xRwO3wRGT7DxrDhLAT6FF8MpWDWE= +github.com/stretchr/testify v1.12.1/go.mod h1:MDEgiDPPsNp5cuIrHPPCyornHKgEVbtFUmoNlxoYthg= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/supranational/blst v0.3.16 h1:bTDadT+3fK497EvLdWRQEjiGnUtzJ7jjIUMF0jqwYhE= github.com/supranational/blst v0.3.16/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= @@ -1012,6 +1014,10 @@ go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= +go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= +go.yaml.in/yaml/v3 v3.0.5 h1:N6y/pJk8buWs9NY5ERU2HSMfm+IuD/OtfdAnq6kESPw= +go.yaml.in/yaml/v3 v3.0.5/go.mod h1:HVTZu1O7/Vkt2N+BFy8Zza+lnLsABggaTM2ZpNIGuKg= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1131,8 +1137,8 @@ golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= -golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= +golang.org/x/oauth2 v0.37.0 h1:JUlcxA8oAtauLfiH8FX2/FkAWHAdi0QtGCGc+hofE98= +golang.org/x/oauth2 v0.37.0/go.mod h1:IxwZNxUULJmpBFf9K/9NTMSIfZZuvuTy1gGxhigP/58= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1424,8 +1430,8 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= -google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.12 h1:pJOKDDOyeXErUroCihFAd5LQuwXBSpVnKGrj5o/fwxc= +google.golang.org/protobuf v1.36.12/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/VividCortex/ewma.v1 v1.1.1/go.mod h1:TekXuFipeiHWiAlO1+wSS23vTcyFau5u3rxXUSXj710= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From d7045abfbaf72348c9ec4d763d8d1fb9fb8c2bc7 Mon Sep 17 00:00:00 2001 From: Fornax <23104993+0xfornax@users.noreply.github.com> Date: Fri, 9 Oct 2026 16:46:36 -0300 Subject: [PATCH 11/12] update x/sync --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 4d5b16a41..c86fd7fa2 100644 --- a/go.mod +++ b/go.mod @@ -47,7 +47,7 @@ require ( github.com/wealdtech/go-eth2-util v1.8.2 github.com/wealdtech/go-eth2-wallet-encryptor-keystorev4 v1.4.1 github.com/wealdtech/go-merkletree v1.0.1-0.20190605192610-2bb163c2ea2a - golang.org/x/sync v0.23.0 + golang.org/x/sync v0.24.0 golang.org/x/term v0.46.0 golang.org/x/text v0.42.0 google.golang.org/protobuf v1.36.12 diff --git a/go.sum b/go.sum index 1faa19054..a47333df0 100644 --- a/go.sum +++ b/go.sum @@ -1152,8 +1152,8 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.23.0 h1:KameEIfc1IkluZyXWLn39Wd4tURc6GbCiISGiZm2bQk= -golang.org/x/sync v0.23.0/go.mod h1:sUUOizhqBxiL6pEWpqNLUiaJn1ShEbZ6BBqskPbjZm0= +golang.org/x/sync v0.24.0 h1:iqiDrGoDgyuvAKrhLQthUEzU/R378N78gXbBjxed7oA= +golang.org/x/sync v0.24.0/go.mod h1:sUUOizhqBxiL6pEWpqNLUiaJn1ShEbZ6BBqskPbjZm0= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= From 4f35ab076a76d92d1fd91503dc4aecdcd46279fb Mon Sep 17 00:00:00 2001 From: Fornax <23104993+0xfornax@users.noreply.github.com> Date: Fri, 9 Oct 2026 16:48:02 -0300 Subject: [PATCH 12/12] update go-ethereum --- go.mod | 10 +++++----- go.sum | 56 ++++++++++++++++++++++++++++---------------------------- 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/go.mod b/go.mod index c86fd7fa2..1130bf68a 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/btcsuite/btcd v0.24.2 github.com/btcsuite/btcd/btcutil v1.1.5 github.com/dustin/go-humanize v1.0.1 - github.com/ethereum/go-ethereum v1.17.5 + github.com/ethereum/go-ethereum v1.17.8 github.com/fatih/color v1.19.0 github.com/felixge/fgprof v0.9.5 github.com/ferranbt/fastssz v0.1.4 @@ -179,10 +179,10 @@ require ( go.mongodb.org/mongo-driver v1.17.7 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.70.0 // indirect - go.opentelemetry.io/otel v1.45.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.45.0 // indirect - go.opentelemetry.io/otel/metric v1.45.0 // indirect - go.opentelemetry.io/otel/trace v1.45.0 // indirect + go.opentelemetry.io/otel v1.46.0 // indirect + go.opentelemetry.io/otel/metric v1.46.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.46.0 // indirect + go.opentelemetry.io/otel/trace v1.46.0 // indirect go.uber.org/atomic v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect diff --git a/go.sum b/go.sum index a47333df0..6ef9e69cd 100644 --- a/go.sum +++ b/go.sum @@ -158,8 +158,8 @@ github.com/cockroachdb/pebble/v2 v2.1.4 h1:j9wPgMDbkErFdAKYFGhsoCcvzcjR+6zrJ4jhK github.com/cockroachdb/pebble/v2 v2.1.4/go.mod h1:Reo1RTniv1UjVTAu/Fv74y5i3kJ5gmVrPhO9UtFiKn8= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= -github.com/cockroachdb/swiss v0.0.0-20251224182025-b0f6560f979b h1:VXvSNzmr8hMj8XTuY0PT9Ane9qZGul/p67vGYwl9BFI= -github.com/cockroachdb/swiss v0.0.0-20251224182025-b0f6560f979b/go.mod h1:yBRu/cnL4ks9bgy4vAASdjIW+/xMlFwuHKqtmh3GZQg= +github.com/cockroachdb/swiss v0.0.0-20260820225851-333444432258 h1:IJ+uNItEm0qx9FE2AgIc1PMsCUtk8nbSIzhQE1t5GWw= +github.com/cockroachdb/swiss v0.0.0-20260820225851-333444432258/go.mod h1:yBRu/cnL4ks9bgy4vAASdjIW+/xMlFwuHKqtmh3GZQg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/consensys/gnark-crypto v0.18.1 h1:RyLV6UhPRoYYzaFnPQA4qK3DyuDgkTgskDdoGqFt3fI= @@ -230,8 +230,8 @@ github.com/ethereum/c-kzg-4844/v2 v2.1.8 h1:oQ48q/TMe2SKU8qBE3N7e4/HlG3EpJftom6E github.com/ethereum/c-kzg-4844/v2 v2.1.8/go.mod h1:8HMkUZ5JRv4hpw/XUrYWSQNAUzhHMg2UDb/U+5m+XNw= github.com/ethereum/go-bigmodexpfix v0.0.0-20250911101455-f9e208c548ab h1:rvv6MJhy07IMfEKuARQ9TKojGqLVNxQajaXEp/BoqSk= github.com/ethereum/go-bigmodexpfix v0.0.0-20250911101455-f9e208c548ab/go.mod h1:IuLm4IsPipXKF7CW5Lzf68PIbZ5yl7FFd74l/E0o9A8= -github.com/ethereum/go-ethereum v1.17.5 h1:o9BIXs2Q/3cPHVxw49n+Zjn2i6rB9TOXatev46duOC4= -github.com/ethereum/go-ethereum v1.17.5/go.mod h1:vz2YvG7RewA4sFHTgzLyW+WmFG1N4jfk/hgXQVhhn9c= +github.com/ethereum/go-ethereum v1.17.8 h1:iKuXrT38t1PaU6aBw6MjBJhGoCl/+Ir0vf5aqQhYT38= +github.com/ethereum/go-ethereum v1.17.8/go.mod h1:Iui379BD7ryQSFeIDn3sh9Od2I1uheqJD2/6N0m4xm0= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= @@ -422,8 +422,8 @@ github.com/graph-gophers/graphql-go v1.3.0 h1:Eb9x/q6MFpCLz7jBCiP/WTxjSDrYLR1QY4 github.com/graph-gophers/graphql-go v1.3.0/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 h1:5VipnvEpbqr2gA2VbM+nYVbkIF28c5ZQfqCBQ5g2xfk= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0/go.mod h1:Hyl3n6Twe1hvtd9XUXDec4pTvgMSEixRuQKPTMH2bNs= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.30.0 h1:/Tnpcb2E0Pz/tN9s3bfEY2Q8ePCEX9iuS+cneUwncnw= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.30.0/go.mod h1:zOBXOsUaBSjKgmH4OGzV1esUpR3oUSCPYVd2cUBjKYY= github.com/gxed/hashland/keccakpg v0.0.1/go.mod h1:kRzw3HkwxFU1mpmPP8v1WyQzwdGfmKFJ6tItnhQ67kU= github.com/gxed/hashland/murmur3 v0.0.1/go.mod h1:KjXop02n4/ckmZSnY2+HKcLud/tcmvhST0bie/0lS48= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= @@ -745,8 +745,8 @@ github.com/pion/datachannel v1.5.8 h1:ph1P1NsGkazkjrvyMfhRBUAWMxugJjq2HfQifaOoSN github.com/pion/datachannel v1.5.8/go.mod h1:PgmdpoaNBLX9HNzNClmdki4DYW5JtI7Yibu8QzbL3tI= github.com/pion/dtls/v2 v2.2.12 h1:KP7H5/c1EiVAAKUmXyCzPiQe5+bCJrpOeKg/L05dunk= github.com/pion/dtls/v2 v2.2.12/go.mod h1:d9SYc9fch0CqK90mRk1dC7AkzzpwJj6u2GU3u+9pqFE= -github.com/pion/dtls/v3 v3.1.2 h1:gqEdOUXLtCGW+afsBLO0LtDD8GnuBBjEy6HRtyofZTc= -github.com/pion/dtls/v3 v3.1.2/go.mod h1:Hw/igcX4pdY69z1Hgv5x7wJFrUkdgHwAn/Q/uo7YHRo= +github.com/pion/dtls/v3 v3.1.5 h1:9xJtVsHwMYeSjPp5Hh1FTis4DchnQWtnOa5o+6ygqfc= +github.com/pion/dtls/v3 v3.1.5/go.mod h1:gz1K4jg6c+fq86oQMH4pilpCEOEPwmEr2jY+VcF/mkU= github.com/pion/ice/v2 v2.3.34 h1:Ic1ppYCj4tUOcPAp76U6F3fVrlSw8A9JtRXLqw6BbUM= github.com/pion/ice/v2 v2.3.34/go.mod h1:mBF7lnigdqgtB+YHkaY/Y6s6tsyRyo4u4rPGRuOjUBQ= github.com/pion/interceptor v0.1.30 h1:au5rlVHsgmxNi+v/mjOPazbW1SHzfx7/hYOEYQnUcxA= @@ -769,12 +769,12 @@ github.com/pion/srtp/v2 v2.0.20 h1:HNNny4s+OUmG280ETrCdgFndp4ufx3/uy85EawYEhTk= github.com/pion/srtp/v2 v2.0.20/go.mod h1:0KJQjA99A6/a0DOVTu1PhDSw0CXF2jTkqOoMg3ODqdA= github.com/pion/stun v0.6.1 h1:8lp6YejULeHBF8NmV8e2787BogQhduZugh5PdhDyyN4= github.com/pion/stun v0.6.1/go.mod h1:/hO7APkX4hZKu/D0f2lHzNyvdkTGtIy3NDmLR7kSz/8= -github.com/pion/stun/v3 v3.1.2 h1:86IhD8wFn6IDW4b1/0QzoQS+f5PeA8OHHRn8UZW5ErY= -github.com/pion/stun/v3 v3.1.2/go.mod h1:H7gDic7nNwlUL05pbs6T1dtaBehh/KjupxfWw3ZI7cA= +github.com/pion/stun/v3 v3.1.7 h1:uRXMTlGLf89WgItGNyZ6aR5jMTX0NBbybXADpQCzn+E= +github.com/pion/stun/v3 v3.1.7/go.mod h1:Nq77RW4aRrSNrltf2ksUJLjxWeipj4lnlgdsYIxC8g8= github.com/pion/transport/v2 v2.2.10 h1:ucLBLE8nuxiHfvkFKnkDQRYWYfp8ejf4YBOPfaQpw6Q= github.com/pion/transport/v2 v2.2.10/go.mod h1:sq1kSLWs+cHW9E+2fJP95QudkzbK7wscs8yYgQToO5E= -github.com/pion/transport/v4 v4.0.1 h1:sdROELU6BZ63Ab7FrOLn13M6YdJLY20wldXW2Cu2k8o= -github.com/pion/transport/v4 v4.0.1/go.mod h1:nEuEA4AD5lPdcIegQDpVLgNoDGreqM/YqmEx3ovP4jM= +github.com/pion/transport/v4 v4.1.0 h1:8S+nF2reM2cJuqC6g78OVy2BBgmbdns+acx3jA97BvQ= +github.com/pion/transport/v4 v4.1.0/go.mod h1:06hFI+jCFcok2X2MekVufNZ/uzNZXivGBPfviSVcjgM= github.com/pion/turn/v2 v2.1.6 h1:Xr2niVsiPTB0FPtt+yAWKFUkU1eotQbGgpTIld4x1Gc= github.com/pion/turn/v2 v2.1.6/go.mod h1:huEpByKKHix2/b9kmTAM3YoX6MKP+/D//0ClgUYR2fY= github.com/pion/webrtc/v3 v3.3.0 h1:Rf4u6n6U5t5sUxhYPQk/samzU/oDv7jk6BA5hyO2F9I= @@ -979,20 +979,20 @@ go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.70.0 h1:LMuyCAyfalSjDyjdC65nK6N0zoTT63+E/u95X0JovZI= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.70.0/go.mod h1:085m8qbm4hgc8rZWGDEa4vmyyo2c3nPxUslYUKUIU04= -go.opentelemetry.io/otel v1.45.0 h1:pdrWmLHofpubmArBv1LgFSv1Z0Ie/ppdZzu+kUN5EeU= -go.opentelemetry.io/otel v1.45.0/go.mod h1:XZxIqPapzEYnhNSScF5DIqXhm/rYi0FzCe2XddAwZfQ= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.45.0 h1:QRefszxJmfPdjXUUm3j6iDzY03mTPXMjqErFqQ67vUg= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.45.0/go.mod h1:Tiz03lTBVBrm7eWZBOidzEaYaJa8tjwGUGv6d8mlTyk= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.45.0 h1:QBajQ2SrwQijzHyZbQlPsuIzpl/ll8DY6wPWsajeGcI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.45.0/go.mod h1:08ZQLjrPLQ6R4kAXvuOvODEer5Yh4CoFvll5qB2BCI8= -go.opentelemetry.io/otel/metric v1.45.0 h1:7Eg1uH7CJ5cXv9is6tnBe1FI6rj1nwUdbFypRm3br/M= -go.opentelemetry.io/otel/metric v1.45.0/go.mod h1:HAPbm1nd3p1PmFH7v2dR+6BjXxw+Lq4a2+pndMAm08s= -go.opentelemetry.io/otel/sdk v1.45.0 h1:4VVSMgQ83dUgW2aoX5f6JgLvHwIvzcuLnF9lUdCSpCw= -go.opentelemetry.io/otel/sdk v1.45.0/go.mod h1:Sr40LgXV7DsKMMJMKOhUWOgMWTfAaqvm2kF0g7ilwuA= -go.opentelemetry.io/otel/sdk/metric v1.45.0 h1:oVFszMfyj1Am6s24Vtc7wBb8BKLcwepJjNEYILuiE3o= -go.opentelemetry.io/otel/sdk/metric v1.45.0/go.mod h1:vUWUxDZvu1WVRj8JA8S0AdhsPrZoDpA2DdZauIh4mDA= -go.opentelemetry.io/otel/trace v1.45.0 h1:l/mP6Uv7oNO7/TblbhpbgMidxhq1uO/rPsikOyVhxag= -go.opentelemetry.io/otel/trace v1.45.0/go.mod h1:qoJJA2xNMnxRrdISU/kLtfUH2wNeQbiv+jhs/CxI8bc= +go.opentelemetry.io/otel v1.46.0 h1:FHt5/CDyVxi/8IM1CH7VE/rRgq3kLHa2mSTVMO8AWyc= +go.opentelemetry.io/otel v1.46.0/go.mod h1:Gj3SEScelsNC45tp4nSxRYlS+f5iez7W8XPMCt905kE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.46.0 h1:OFnwLJr+pF3iHrlGSzbxyuo6/6HyBlnlN1CWEJmBVcw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.46.0/go.mod h1:716wFneO0ov19A2beH5hjfh9AK5z/VWNAtDijp1Y0/g= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.46.0 h1:KrC1YrQeSt46ITMWAbgQx1M1eV1/1TKzttrBzymPmss= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.46.0/go.mod h1:zDSEzoEqsOrgBeGvH66KRgxh90VonFyJqBHA0Pk3+rM= +go.opentelemetry.io/otel/metric v1.46.0 h1:yBnkXvgV7AXFILZc5K6IZe/CBFF3OS7BJ8ov6/lj0K8= +go.opentelemetry.io/otel/metric v1.46.0/go.mod h1:iPmdWqifKUdzziPkvvzIJXITl56fQx2mGM/DHLB3/2o= +go.opentelemetry.io/otel/sdk v1.46.0 h1:h5CNQQjEbuQXY/JfZtgt3i7HVFV3aHPO2OAwO2eTYPI= +go.opentelemetry.io/otel/sdk v1.46.0/go.mod h1:GAERFXFt5SYCEB+YiKUbMBeza6UaDH7GmGOZEfh2gSM= +go.opentelemetry.io/otel/sdk/metric v1.46.0 h1:0piZ26EG4RBfebb2jhDH6ERCYHoVWduc3kLgPCwSnSE= +go.opentelemetry.io/otel/sdk/metric v1.46.0/go.mod h1:I1PbKrdVc8Qu8HYVDNtqVIwLwjNrhsV/uFuxfwg8mO4= +go.opentelemetry.io/otel/trace v1.46.0 h1:OULy7ccdJnZtJ0UDYFOIGaCmiWzJ8Vi2G/Rsu60qs1c= +go.opentelemetry.io/otel/trace v1.46.0/go.mod h1:J7GAXweO77XSFkB/rmAqk9D6ihszhFjLU+d9WuUxDLI= go.opentelemetry.io/proto/otlp v1.11.0 h1:5rrYs0Ykyj50sdU/JU0x8etU+LubXWb+gED6TbEdMIk= go.opentelemetry.io/proto/otlp v1.11.0/go.mod h1:SmVizdCOAm3XBtG1g1NnOdhW6jtddT72hLMhv8VwA8E= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= @@ -1253,8 +1253,8 @@ golang.org/x/text v0.42.0/go.mod h1:ojzP1Z+2QtioaF8DTtO8K5q7JWVVYwZKenzujK0Zd0E= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= -golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= +golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=