Ceremony Output Summary
After the ssv-dkg ceremony finishes successfully, the tool creates a ceremony-[timestamp] folder in the directory where you ran the command.
Example output:
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
├── keyshares.json
└── proofs.json
What each file is for
deposit_data.json: deposit data used to activate validators on Ethereumkeyshares.json: key shares used to register validators on SSV Networkproof.json: the per-validator proof file stored inside each validator subfolderproofs.json: the aggregated proof file for the whole ceremony, stored at the top level
proof.json vs proofs.json
Both files are valid artifacts, but they are used differently:
proof.jsonis the proof file for one validator inside that validator's own subfolder.proofs.jsonis the aggregated ceremony-level file that contains proofs for all validators generated in that ceremony.
When docs or tools refer to retaining proofs.json, they usually mean the top-level aggregated file. Keep it safe. You need it later if you want to reshare to a new operator set or update the owner nonce in key shares.
Proof structure
Example 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": "..."
},
...
]
Notes about the structure
- Each validator has one proof from each operator in the ceremony.
- A single aggregated file can include proofs for multiple validators.
- Each proof includes:
validator: the validator public keyencrypted_share: the encrypted share for one operatorshare_pub: the operator public key for that shareowner: the validator owner address
signatureis the operator signature over the proof content.
Why the proofs matter
The proofs protect both sides of the ceremony:
- the owner cannot change the owner address later without breaking the signed proof
- the operator signatures can be verified against the included operator public keys
Key shares
For the keyshares.json format, see Keyshares Structure.