mirror of
https://github.com/arnaucube/go-circom-prover-verifier.git
synced 2026-02-06 19:06:43 +01:00
Update proof sync.WaitGroup scooped variables & Add time prints in cli proof generation
This commit is contained in:
@@ -73,39 +73,39 @@ func GenerateProof(pk *types.Pk, w types.Witness) (*types.Proof, []*big.Int, err
|
||||
proof.C = new(bn256.G1).ScalarBaseMult(big.NewInt(0))
|
||||
proofBG1 := new(bn256.G1).ScalarBaseMult(big.NewInt(0))
|
||||
|
||||
var waitGroup sync.WaitGroup
|
||||
waitGroup.Add(4)
|
||||
go func(wg *sync.WaitGroup) {
|
||||
var wg sync.WaitGroup
|
||||
wg.Add(4)
|
||||
go func() {
|
||||
for i := 0; i < pk.NVars; i++ {
|
||||
proof.A = new(bn256.G1).Add(proof.A, new(bn256.G1).ScalarMult(pk.A[i], w[i]))
|
||||
}
|
||||
wg.Done()
|
||||
}(&waitGroup)
|
||||
go func(wg *sync.WaitGroup) {
|
||||
}()
|
||||
go func() {
|
||||
for i := 0; i < pk.NVars; i++ {
|
||||
proof.B = new(bn256.G2).Add(proof.B, new(bn256.G2).ScalarMult(pk.B2[i], w[i]))
|
||||
}
|
||||
wg.Done()
|
||||
}(&waitGroup)
|
||||
go func(wg *sync.WaitGroup) {
|
||||
}()
|
||||
go func() {
|
||||
for i := 0; i < pk.NVars; i++ {
|
||||
proofBG1 = new(bn256.G1).Add(proofBG1, new(bn256.G1).ScalarMult(pk.B1[i], w[i]))
|
||||
}
|
||||
wg.Done()
|
||||
}(&waitGroup)
|
||||
go func(wg *sync.WaitGroup) {
|
||||
}()
|
||||
go func() {
|
||||
for i := pk.NPublic + 1; i < pk.NVars; i++ {
|
||||
proof.C = new(bn256.G1).Add(proof.C, new(bn256.G1).ScalarMult(pk.C[i], w[i]))
|
||||
}
|
||||
wg.Done()
|
||||
}(&waitGroup)
|
||||
waitGroup.Wait()
|
||||
}()
|
||||
wg.Wait()
|
||||
|
||||
h := calculateH(pk, w)
|
||||
|
||||
var waitGroup2 sync.WaitGroup
|
||||
waitGroup2.Add(2)
|
||||
go func(wg *sync.WaitGroup) {
|
||||
var wg2 sync.WaitGroup
|
||||
wg2.Add(2)
|
||||
go func() {
|
||||
proof.A = new(bn256.G1).Add(proof.A, pk.VkAlpha1)
|
||||
proof.A = new(bn256.G1).Add(proof.A, new(bn256.G1).ScalarMult(pk.VkDelta1, r))
|
||||
|
||||
@@ -114,15 +114,15 @@ func GenerateProof(pk *types.Pk, w types.Witness) (*types.Proof, []*big.Int, err
|
||||
|
||||
proofBG1 = new(bn256.G1).Add(proofBG1, pk.VkBeta1)
|
||||
proofBG1 = new(bn256.G1).Add(proofBG1, new(bn256.G1).ScalarMult(pk.VkDelta1, s))
|
||||
wg.Done()
|
||||
}(&waitGroup2)
|
||||
go func(wg *sync.WaitGroup) {
|
||||
wg2.Done()
|
||||
}()
|
||||
go func() {
|
||||
for i := 0; i < len(h); i++ {
|
||||
proof.C = new(bn256.G1).Add(proof.C, new(bn256.G1).ScalarMult(pk.HExps[i], h[i]))
|
||||
}
|
||||
wg.Done()
|
||||
}(&waitGroup2)
|
||||
waitGroup2.Wait()
|
||||
wg2.Done()
|
||||
}()
|
||||
wg2.Wait()
|
||||
|
||||
proof.C = new(bn256.G1).Add(proof.C, new(bn256.G1).ScalarMult(proof.A, s))
|
||||
proof.C = new(bn256.G1).Add(proof.C, new(bn256.G1).ScalarMult(proofBG1, r))
|
||||
|
||||
Reference in New Issue
Block a user