From a6707ed714fb544934213d5f4b0afb3d5c1a7aea Mon Sep 17 00:00:00 2001 From: Kevin Jue Date: Mon, 18 Dec 2023 13:04:43 -0800 Subject: [PATCH] fix for V-SCT-VUL-004 --- goldilocks/base.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/goldilocks/base.go b/goldilocks/base.go index 9a27802..2eae792 100644 --- a/goldilocks/base.go +++ b/goldilocks/base.go @@ -131,7 +131,8 @@ func (p *Chip) MulAdd(a Variable, b Variable, c Variable) Variable { quotient := NewVariable(result[0]) remainder := NewVariable(result[1]) - lhs := p.api.MulAcc(c.Limb, a.Limb, b.Limb) + cLimbCopy := p.api.Mul(c.Limb, 1) + lhs := p.api.MulAcc(cLimbCopy, a.Limb, b.Limb) rhs := p.api.MulAcc(remainder.Limb, MODULUS, quotient.Limb) p.api.AssertIsEqual(lhs, rhs) @@ -143,7 +144,8 @@ func (p *Chip) MulAdd(a Variable, b Variable, c Variable) Variable { // Multiplies two field elements and adds a field element such that x * y + z = c within the // Golidlocks field without reducing. func (p *Chip) MulAddNoReduce(a Variable, b Variable, c Variable) Variable { - return NewVariable(p.api.MulAcc(c.Limb, a.Limb, b.Limb)) + cLimbCopy := p.api.Mul(c.Limb, 1) + return NewVariable(p.api.MulAcc(cLimbCopy, a.Limb, b.Limb)) } // The hint used to compute MulAdd.