forked from yetanotherco/aligned_layer
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathproving_systems.go
More file actions
137 lines (119 loc) · 2.97 KB
/
proving_systems.go
File metadata and controls
137 lines (119 loc) · 2.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
package common
import (
"encoding/json"
"fmt"
"log"
"github.com/fxamacker/cbor/v2"
)
type ProvingSystemId uint16
const (
GnarkPlonkBls12_381 ProvingSystemId = iota
GnarkPlonkBn254
GnarkGroth16Bn254
SP1
Risc0
CircomGroth16Bn256
Mina
MinaAccount
)
func (t *ProvingSystemId) String() string {
return [...]string{"GnarkPlonkBls12_381", "GnarkPlonkBn254", "GnarkGroth16Bn254", "SP1", "Mina", "MinaAccount"}[*t]
}
func ProvingSystemIdFromString(provingSystem string) (ProvingSystemId, error) {
switch provingSystem {
case "GnarkPlonkBls12_381":
return GnarkPlonkBls12_381, nil
case "GnarkPlonkBn254":
return GnarkPlonkBn254, nil
case "GnarkGroth16Bn254":
return GnarkGroth16Bn254, nil
case "SP1":
return SP1, nil
case "Risc0":
return Risc0, nil
case "CircomGroth16Bn256":
return CircomGroth16Bn256, nil
case "Mina":
return Mina, nil
case "MinaAccount":
return MinaAccount, nil
}
return 0, fmt.Errorf("unknown proving system: %s", provingSystem)
}
func ProvingSystemIdToString(provingSystem ProvingSystemId) (string, error) {
switch provingSystem {
case GnarkPlonkBls12_381:
return "GnarkPlonkBls12_381", nil
case GnarkPlonkBn254:
return "GnarkPlonkBn254", nil
case GnarkGroth16Bn254:
return "GnarkGroth16Bn254", nil
case SP1:
return "SP1", nil
case Risc0:
return "Risc0", nil
case CircomGroth16Bn256:
return "CircomGroth16Bn256", nil
case Mina:
return "Mina", nil
case MinaAccount:
return "MinaAccount", nil
}
return "", fmt.Errorf("unknown proving system: %d", provingSystem)
}
func (t *ProvingSystemId) UnmarshalJSON(b []byte) error {
var s string
err := json.Unmarshal(b, &s)
if err != nil {
return err
}
*t, err = ProvingSystemIdFromString(s)
return err
}
func (t ProvingSystemId) MarshalJSON() ([]byte, error) {
// Check if the enum value has a corresponding string representation
if str, ret := ProvingSystemIdToString(t); ret == nil {
// If yes, marshal the string representation
return json.Marshal(str)
}
// If not, return an error
return nil, fmt.Errorf("invalid ProvingSystemId value: %d", t)
}
func (t *ProvingSystemId) UnmarshalBinary(data []byte) error {
// get string from bytes
str := string(data[:])
log.Printf("ProvingSystemId.UnmarshalBinary: %s\n", str)
// get enum from string
var err error
*t, err = ProvingSystemIdFromString(str)
return err
}
func (s *ProvingSystemId) UnmarshalCBOR(data []byte) error {
var statusStr string
if err := cbor.Unmarshal(data, &statusStr); err != nil {
return err
}
switch statusStr {
case "GnarkPlonkBls12_381":
*s = GnarkPlonkBls12_381
case "GnarkPlonkBn254":
*s = GnarkPlonkBn254
case "GnarkGroth16Bn254":
*s = GnarkGroth16Bn254
case "SP1":
*s = SP1
case "Risc0":
*s = Risc0
case "CircomGroth16Bn256":
*s = CircomGroth16Bn256
case "Mina":
*s = Mina
case "MinaAccount":
*s = MinaAccount
}
return nil
}
func (t ProvingSystemId) MarshalBinary() ([]byte, error) {
// needs to be defined but should never be called
return nil, fmt.Errorf("not implemented")
}