kzg-ceremony-specs icon indicating copy to clipboard operation
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:

  1. $([\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])$
  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])$
  3. $([\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])$
  4. $([\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.