Skip to main content

Commands and configuration

info

For details about operatorsInfo and operatorsInfoPath, see Operators Data.

Supported commands

  • init - start a new DKG ceremony and generate validator key shares
  • generate-reshare-msg - generate the owner-signed message required before a reshare ceremony
  • reshare - generate new key shares for a different operator set
  • generate-resign-msg - generate the owner-signed message required before a resign ceremony
  • resign - regenerate signed key shares metadata for the same validator public key
  • ping - check operator health endpoints before starting a ceremony
  • start-operator - run the DKG server as an operator (for instructions, refer to Operator section)

Config input methods

You can provide config in either of these ways:

  • a YAML file with --configPath (recommended)
  • command-line flags

The config options below are used by init, and are also reused by generate-resign-msg, resign, generate-reshare-msg, and reshare where relevant.

Base initiator options

YAML variables

VariableTypeDescription
validatorsuintNumber of validators to generate. Valid range: 1 to 100.
operatorIDsnumber[]Operator IDs used in the ceremony.
operatorsInfostringRaw JSON string with operator IDs, RSA public keys, and endpoints.
operatorsInfoPathstringLocal path to the operator info JSON file.
owneraddressSSV cluster owner address.
nonceuint64Owner nonce for the SSV contract operations.
withdrawAddressaddressWithdrawal address used to build Beacon Chain withdrawal credentials.
compoundingboolIf true, use 0x02 compounding 0x02 withdrawal credentials. If false, use 0x01 ETH1 withdrawal credentials.
amountuint64Deposit amount in Gwei.
networkstringNetwork name: mainnet, hoodi, or sepolia.
outputPathstringLocal output directory.
logLevelstringLog level.
logFormatstringLog format.
logLevelFormatstringLog level formatting.
logFilePathstringLocal log file path.
tlsInsecurebooltrue Skips TLS certificate verification for operator endpoints.
clientCACertPathstring[]Local path(s) to CA certificates when tlsInsecure is false.

Base YAML example

validators: 1
operatorIDs: [1, 2, 3, 4]
withdrawAddress: 0xaA184b86B4cdb747F4A3BF6e6FCd5e27c1d92c5a
owner: 0xaA184b86B4cdb747F4A3BF6e6FCd5e27c1d92c5a
nonce: 0
network: hoodi
compounding: false
amount: 32000000000
operatorsInfoPath: ./data/operators_info.json
outputPath: ./data/output
logFilePath: ./data/debug.log
logLevel: info
logFormat: json
logLevelFormat: capitalColor
tlsInsecure: true
# Optional if tlsInsecure is false:
# clientCACertPath:
# - /etc/ssl/certs/ca-certificates.crt

Notes

  • Local file paths only are allowed.
  • operatorsInfo and operatorsInfoPath are mutually exclusive.
  • When compounding: true is set, generated deposit_data.json uses 0x02 withdrawal credentials.
  • nonce is the owner address' nonce used for SSV contract operations. Source the current nonce from the SSV Subgraph

Additional options by command

generate-resign-msg

Additional inputs:

Key or flagTypeDescription
proofsFilePath / --proofsFilePathstringLocal path to proofs.json.
proofsString / --proofsStringstringStringified proof content.

Use exactly one of proofsFilePath or proofsString.

resign

Additional inputs:

Key or flagTypeDescription
proofsFilePath / --proofsFilePathstringLocal path to proofs.json.
proofsString / --proofsStringstringStringified proof content.
signatures / --signaturesstringOwner signature for the resign message.

generate-reshare-msg

Additional inputs:

Key or flagTypeDescription
proofsFilePath / --proofsFilePathstringLocal path to proofs.json.
proofsString / --proofsStringstringStringified proof content.
newOperatorIDs / --newOperatorIDsnumber[]Operator IDs for the new operator set.

reshare

Additional inputs:

Key or flagTypeDescription
proofsFilePath / --proofsFilePathstringLocal path to proofs.json.
proofsString / --proofsStringstringStringified proof content.
newOperatorIDs / --newOperatorIDsnumber[]Operator IDs for the new operator set.
signatures / --signaturesstringOwner signature for the reshare message.

ping

Optional inputs:

Key or flagTypeDescription
ip / --ipstringIP address that will overwrite address from operatorsInfo.