Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions cmd/edit_addoperators.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ func newAddOperatorsCmd(runFunc func(context.Context, dkg.AddOperatorsConfig, dk
bindLogFlags(cmd.Flags(), &dkgConfig.Log)
bindEth1Flag(cmd.Flags(), &dkgConfig.ExecutionEngineAddr)
bindShutdownDelayFlag(cmd.Flags(), &dkgConfig.ShutdownDelay)
bindPublishFlags(cmd.Flags(), &dkgConfig)

return cmd
}
Expand Down
1 change: 1 addition & 0 deletions cmd/edit_addvalidators.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ func newAddValidatorsCmd(runFunc func(context.Context, addValidatorsConfig) erro
bindLogFlags(cmd.Flags(), &config.DKG.Log)
bindShutdownDelayFlag(cmd.Flags(), &config.DKG.ShutdownDelay)
bindEth1Flag(cmd.Flags(), &config.DKG.ExecutionEngineAddr)
bindPublishFlags(cmd.Flags(), &config.DKG)
cmd.Flags().DurationVar(&config.DKG.Timeout, "timeout", 1*time.Minute, "Timeout for the command, should be increased if the command times out.")

// Bind `create dkg` flags.
Expand Down
1 change: 1 addition & 0 deletions cmd/edit_recreateprivatekeys.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ func newRecreatePrivateKeysCmd(runFunc func(context.Context, dkg.ReshareConfig)
bindLogFlags(cmd.Flags(), &config.DKGConfig.Log)
bindEth1Flag(cmd.Flags(), &config.DKGConfig.ExecutionEngineAddr)
bindShutdownDelayFlag(cmd.Flags(), &config.DKGConfig.ShutdownDelay)
bindPublishFlags(cmd.Flags(), &config.DKGConfig)

return cmd
}
Expand Down
1 change: 1 addition & 0 deletions cmd/edit_removeoperators.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ func newRemoveOperatorsCmd(runFunc func(context.Context, dkg.RemoveOperatorsConf
bindLogFlags(cmd.Flags(), &dkgConfig.Log)
bindEth1Flag(cmd.Flags(), &dkgConfig.ExecutionEngineAddr)
bindShutdownDelayFlag(cmd.Flags(), &dkgConfig.ShutdownDelay)
bindPublishFlags(cmd.Flags(), &dkgConfig)

return cmd
}
Expand Down
1 change: 1 addition & 0 deletions cmd/edit_replaceoperator.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ func newReplaceOperatorCmd(runFunc func(context.Context, dkg.ReplaceOperatorConf
bindLogFlags(cmd.Flags(), &dkgConfig.Log)
bindEth1Flag(cmd.Flags(), &dkgConfig.ExecutionEngineAddr)
bindShutdownDelayFlag(cmd.Flags(), &dkgConfig.ShutdownDelay)
bindPublishFlags(cmd.Flags(), &dkgConfig)

return cmd
}
Expand Down
8 changes: 8 additions & 0 deletions dkg/protocolsteps.go
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,14 @@ func (s *writeArtifactsProtocolStep) Run(ctx context.Context, pctx *ProtocolCont

log.Info(ctx, "Stored artifacts", z.Str("output_dir", s.outputDir))

if pctx.Config.Publish {
if _, err := writeLockToAPI(ctx, pctx.Config.PublishAddr, *pctx.Lock, pctx.Config.PublishTimeout); err != nil {
return errors.Wrap(err, "publish lock to API")
}

log.Info(ctx, "The new cluster lock has been published to Obol API")
}

return nil
}

Expand Down
29 changes: 29 additions & 0 deletions dkg/protocolsteps_internal_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@ package dkg

import (
"encoding/hex"
"encoding/json"
"io"
"math/rand"
"net/http"
"net/http/httptest"
"os"
"path/filepath"
"testing"
Expand Down Expand Up @@ -213,12 +217,34 @@ func TestWriteArtifactsProtocolStep(t *testing.T) {

shares := valKeysToSharesNode0(t, valKeys, lock.Validators)

var receivedLock cluster.Lock

mockServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
require.Equal(t, "/lock", r.URL.Path)
require.Equal(t, http.MethodPost, r.Method)
require.Equal(t, "application/json", r.Header.Get("Content-Type"))

body, err := io.ReadAll(r.Body)
require.NoError(t, err)

err = json.Unmarshal(body, &receivedLock)
require.NoError(t, err)

w.WriteHeader(http.StatusOK)
}))
defer mockServer.Close()

pctx := &ProtocolContext{
Lock: &lock,
PrivateKeyPath: p2p.KeyPath(dataDir),
ENRPrivateKey: nodeKeys[0],
Shares: shares,
ThisNodeIdx: cluster.NodeIdx{PeerIdx: 0, ShareIdx: 1},
Config: Config{
PublishAddr: mockServer.URL,
PublishTimeout: 30 * time.Second,
Publish: true,
},
}
err = step.Run(t.Context(), pctx)

Expand All @@ -227,6 +253,9 @@ func TestWriteArtifactsProtocolStep(t *testing.T) {
require.DirExists(t, filepath.Join(step.outputDir, validatorKeysSubDir))
require.FileExists(t, p2p.KeyPath(step.outputDir))

require.NotZero(t, receivedLock.LockHash, "Expected lock to be published to mock server")
require.Equal(t, lock.LockHash, receivedLock.LockHash)

enrPrivKey, err := os.ReadFile(p2p.KeyPath(step.outputDir))
require.NoError(t, err)
enrPrivKeyBytes, err := hex.DecodeString(string(enrPrivKey))
Expand Down
Loading