package types import ( "math/big" bn256 "github.com/ethereum/go-ethereum/crypto/bn256/cloudflare" ) // R is the mod of the finite field var R, _ = new(big.Int).SetString("21888242871839275222246405745257275088548364400416034343698204186575808495617", 10) // Proof is the data structure of the Groth16 zkSNARK proof type Proof struct { A *bn256.G1 B *bn256.G2 C *bn256.G1 } // Pk holds the data structure of the ProvingKey type Pk struct { A []*bn256.G1 B2 []*bn256.G2 B1 []*bn256.G1 C []*bn256.G1 NVars int NPublic int VkAlpha1 *bn256.G1 VkDelta1 *bn256.G1 VkBeta1 *bn256.G1 VkBeta2 *bn256.G2 VkDelta2 *bn256.G2 HExps []*bn256.G1 DomainSize int PolsA []map[int]*big.Int PolsB []map[int]*big.Int PolsC []map[int]*big.Int } // Witness contains the witness type Witness []*big.Int // Vk is the Verification Key data structure type Vk struct { Alpha *bn256.G1 Beta *bn256.G2 Gamma *bn256.G2 Delta *bn256.G2 IC []*bn256.G1 }