mirror of
https://github.com/arnaucube/go-snark-study.git
synced 2026-02-02 17:26:41 +01:00
cli
This commit is contained in:
@@ -144,7 +144,10 @@ func grabVar(signals []string, w []*big.Int, vStr string) *big.Int {
|
||||
}
|
||||
|
||||
// CalculateWitness calculates the Witness of a Circuit based on the given inputs
|
||||
func (circ *Circuit) CalculateWitness(inputs []*big.Int) []*big.Int {
|
||||
func (circ *Circuit) CalculateWitness(inputs []*big.Int) ([]*big.Int, error) {
|
||||
if len(inputs) != len(circ.Inputs) {
|
||||
return []*big.Int{}, errors.New("given inputs != circuit.Inputs")
|
||||
}
|
||||
w := r1csqap.ArrayOfBigZeros(len(circ.Signals))
|
||||
w[0] = big.NewInt(int64(1))
|
||||
for i, input := range inputs {
|
||||
@@ -162,5 +165,5 @@ func (circ *Circuit) CalculateWitness(inputs []*big.Int) []*big.Int {
|
||||
w[indexInArray(circ.Signals, constraint.Out)] = new(big.Int).Div(grabVar(circ.Signals, w, constraint.V1), grabVar(circ.Signals, w, constraint.V2))
|
||||
}
|
||||
}
|
||||
return w
|
||||
return w, nil
|
||||
}
|
||||
|
||||
@@ -78,6 +78,7 @@ func TestCircuitParser(t *testing.T) {
|
||||
b3 := big.NewInt(int64(3))
|
||||
inputs := []*big.Int{b3}
|
||||
// Calculate Witness
|
||||
w := circuit.CalculateWitness(inputs)
|
||||
w, err := circuit.CalculateWitness(inputs)
|
||||
assert.Nil(t, err)
|
||||
fmt.Println("w", w)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user