Skip to main content

Ceremony Output Summary

After launching the ssv-dkg tool as shown above, it will commence a DKG ceremony with the selected operators. Following the successful completion of the DKG ceremony, several files have been generated and placed in the directory where the command was launched from:

ceremony-[timestamp]
├── 0..[nonce]-0x...[validator public key]
├── deposit_data.json
├── keyshares.json
└── proof.json
├── 0..[nonce]-0x...[validator public key] ...
├── deposit_data.json
├── keyshares.json
└── proof.json
.....
├── deposit_data.json # aggregated
├── keyshares.json # aggregated
└── proofs.json # aggregated

Files:

Proofs

An example of proofs.json structure:

[
{
"proof": {
"validator": "VALIDATOR_PUBKEY",
"encrypted_share": "ENCRYPTED_SHARE_FOR_I-TH_OPERATOR_IN_CEREMONY",
"share_pub": "PUB_KEY_OF_OPERATOR_THAT_ENCRYPTED_THE_SHARE",
"owner": "OWNER_ADDRESS_USED_IN_CEREMONY"
},
"signature": "CONTENT_OF_PROOF_SIGNED_BY_OPERATOR_PRIVATE_KEY"
},
{
"proof": {...},
"signature": "..."
},
...
]

Details about the structure:

  • Each validator will have X proofs, where X is the number of operators in the cluster
  • X proofs of a validator are in an array []
  • One file can contain proofs for multiple validators, by having nested arrays [[],[],[]]
  • Each proof has 4 parameters:
    • validator - validator's public key, not encrypted
    • encrypted_share- validator share for i-th operator, encrypted by operator's private key
    • share_pub - Public key of i-th operator, not encrypted
    • owner - Address of validator owner, not encrypted
  • Last parameter signature is the content of proof signed by private key of i-th operator.

How proofs secure the ceremony for both parties:

  • Owner/initiator can't change their owner address, because the address is part of proof's content and this is signed by operator's private key.
  • Operator signs the proof with their private key and the proof itself has their public key which can be used to verify the signature.

Keyshares

Keyshares file structure can be found on this separate page.