kzg-ceremony-specs
kzg-ceremony-specs copied to clipboard
Specs for Ethereum's KZG Powers of Tau Ceremony
Powers of Tau Specification
These documents comprise a specification for Ethereum's Powers of Tau (PoT) setup for use in KZG commitments in EIP-4844 (Proto-Danksharding) and ultimately Full Danksharding.
The ceremony takes place between participants and the sequencer. Participants are the entities that contribute their secret randomness to the final output $\tau$ s. The role of the sequencer is to act as the common point of interaction for all participants as well as verifying participants' contribution as the ceremony progresses.
Table of contents
- 10,000 ft Overview
- Cryptography
- BLS
- SDK
- Contributions
- Object Definitions
- Sequencer
- Requirements
- Contributor Qualification
- Contribution Queuing
- API Definition (Open API + JSON Schema)
- Participant/Client
- Requirements
- API Lifecycle
- Initialization
10,000 ft Overview
We are performing a ceremony to generate Powers of Tau for KZG proofs on Ethereum. The output of the ceremony consists of 4 (distinct) sets of Powers of Tau each with a different maximum power:
- $([\tau_1^0]_1, [\tau_1^1]_1, \dots, [\tau_1^{2^{12}-1}]_1])$, $([\tau_1^0]_2, [\tau_1^1]_2, \dots, [\tau_1^{64}]_2])$
- $([\tau_2^0]_1, [\tau_2^1]_1, \dots, [\tau_2^{2^{13}-1}]_1])$, $([\tau_2^0]_2, [\tau_2^1]_2, \dots, [\tau_2^{64}]_2])$
- $([\tau_3^0]_1, [\tau_3^1]_1, \dots, [\tau_3^{2^{14}-1}]_1])$, $([\tau_3^0]_2, [\tau_3^1]_2, \dots, [\tau_3^{64}]_2])$
- $([\tau_4^0]_1, [\tau_4^1]_1, \dots, [\tau_4^{2^{15}-1}]_1])$, $([\tau_4^0]_2, [\tau_4^1]_2, \dots, [\tau_4^{64}]_2])$
BLS Cryptography
Due to a lack of standardisation for a complete API for BLS curves, we define our own in BLS.md.
Contributions
Due to the simplicity of this PoT setup, the full contribution is sent as a json file between the sequencer & participants. This allows the use of a RESTful API between the two. See contribution documentation for the contribution format requirements.
Initialization
The ceremony is initialized to initialContribution.json.