Howdy! Apologies for not getting back via email.
The current_accumulator
variable in the code you linked to is what contains what you’re looking for. It is a struct with the following composition:
/// The `Accumulator` is an object that participants of the ceremony contribute
/// randomness to. This object contains powers of trapdoor `tau` in G1 and in G2 over
/// fixed generators, and additionally in G1 over two other generators of exponents
/// `alpha` and `beta` over those fixed generators. In other words:
///
/// * (τ, τ<sup>2</sup>, ..., τ<sup>2<sup>22</sup> - 2</sup>, α, ατ, ατ<sup>2</sup>, ..., ατ<sup>2<sup>21</sup> - 1</sup>, β, βτ, βτ<sup>2</sup>, ..., βτ<sup>2<sup>21</sup> - 1</sup>)<sub>1</sub>
/// * (β, τ, τ<sup>2</sup>, ..., τ<sup>2<sup>21</sup> - 1</sup>)<sub>2</sub>
#[derive(PartialEq, Eq, Clone)]
pub struct Accumulator {
/// tau^0, tau^1, tau^2, ..., tau^{TAU_POWERS_G1_LENGTH - 1}
pub tau_powers_g1: Vec<G1Affine>,
/// tau^0, tau^1, tau^2, ..., tau^{TAU_POWERS_LENGTH - 1}
pub tau_powers_g2: Vec<G2Affine>,
/// alpha * tau^0, alpha * tau^1, alpha * tau^2, ..., alpha * tau^{TAU_POWERS_LENGTH - 1}
pub alpha_tau_powers_g1: Vec<G1Affine>,
/// beta * tau^0, beta * tau^1, beta * tau^2, ..., beta * tau^{TAU_POWERS_LENGTH - 1}
pub beta_tau_powers_g1: Vec<G1Affine>,
/// beta
pub beta_g2: G2Affine
}
You don’t really need the alpha or beta stuff. Your KZG10 parameters can be grabbed from the tau_powers_g1
field for the G1 parameters (that’ll be all the [tau^i] G
values), and you can get H
and [\tau] H
from the first two values in the tau_powers_g2
field – as well as higher powers of [\tau^i] H
in the remainder of of that field if you need them for some reason. (In vanilla KZG10 you don’t.)
If you’re going to piggyback on the utility you pointed out in order to extract the parameters you want, don’t forget to remove this call to the verification routine (expensive, pointless for your purpose) and set this to CheckForCorrectness::No
to speed things up. All you really need from the transcript
file is the final accumulator which is the current_accumulator
value after this loop finishes.
Speaking of which, let’s make sure you have the correct transcript
file locally so you wind up with the correct parameters. I have it on my machine and I get a BLAKE3 sum of 944872c4d7efebd9430877df5d400fed535edfba75594d86bf363ab7b4d2285e
.