zkjson 0.6.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +537 -0
- package/assets/collection.png +0 -0
- package/assets/db.png +0 -0
- package/assets/encode.png +0 -0
- package/assets/query.png +0 -0
- package/assets/rollup.png +0 -0
- package/assets/structure.png +0 -0
- package/assets/weavedb.png +0 -0
- package/assets/zkjson.png +0 -0
- package/benchmark/components/ui/avatar.jsx +49 -0
- package/benchmark/components/ui/checkbox.jsx +17 -0
- package/benchmark/components/ui/close-button.jsx +20 -0
- package/benchmark/components/ui/color-mode.jsx +89 -0
- package/benchmark/components/ui/dialog.jsx +54 -0
- package/benchmark/components/ui/drawer.jsx +44 -0
- package/benchmark/components/ui/field.jsx +22 -0
- package/benchmark/components/ui/input-group.jsx +39 -0
- package/benchmark/components/ui/popover.jsx +49 -0
- package/benchmark/components/ui/provider.jsx +12 -0
- package/benchmark/components/ui/radio.jsx +17 -0
- package/benchmark/components/ui/slider.jsx +107 -0
- package/benchmark/components/ui/tooltip.jsx +35 -0
- package/benchmark/jsconfig.json +7 -0
- package/benchmark/lib/cbor.js +387 -0
- package/benchmark/lib/msgpack.js +651 -0
- package/benchmark/next.config.mjs +6 -0
- package/benchmark/package.json +22 -0
- package/benchmark/pages/_app.js +9 -0
- package/benchmark/pages/_document.js +13 -0
- package/benchmark/pages/api/hello.js +5 -0
- package/benchmark/pages/index.js +438 -0
- package/benchmark/public/favicon.ico +0 -0
- package/benchmark/public/file.svg +1 -0
- package/benchmark/public/globe.svg +1 -0
- package/benchmark/public/next.svg +1 -0
- package/benchmark/public/vercel.svg +1 -0
- package/benchmark/public/window.svg +1 -0
- package/benchmark/yarn.lock +2448 -0
- package/circom/collection/collection.circom +32 -0
- package/circom/collection/compile.sh +10 -0
- package/circom/collection/gen.js +34 -0
- package/circom/collection/generateInput.js +10 -0
- package/circom/collection/index.circom +4 -0
- package/circom/collection/test.js +21 -0
- package/circom/collection/verifier.sol +247 -0
- package/circom/db/compile.sh +10 -0
- package/circom/db/db.circom +39 -0
- package/circom/db/gen.js +30 -0
- package/circom/db/generateInput.js +10 -0
- package/circom/db/index.circom +4 -0
- package/circom/db/test.js +21 -0
- package/circom/db/verifier.sol +261 -0
- package/circom/ipfs/calculate_total.circom +17 -0
- package/circom/ipfs/compile.sh +10 -0
- package/circom/ipfs/gen.js +18 -0
- package/circom/ipfs/generateInput.js +10 -0
- package/circom/ipfs/index.circom +4 -0
- package/circom/ipfs/ipfs.circom +62 -0
- package/circom/ipfs/parse.circom +289 -0
- package/circom/ipfs/sha256.circom +99 -0
- package/circom/ipfs/test.js +167 -0
- package/circom/ipfs/verifier.sol +261 -0
- package/circom/json/compile.sh +10 -0
- package/circom/json/gen.js +22 -0
- package/circom/json/gen2.js +21 -0
- package/circom/json/generateInput.js +20 -0
- package/circom/json/index.circom +4 -0
- package/circom/json/json.circom +81 -0
- package/circom/json/test.js +100 -0
- package/circom/json/verifier.sol +247 -0
- package/circom/query/compile.sh +10 -0
- package/circom/query/gen.js +28 -0
- package/circom/query/generateInput.js +11 -0
- package/circom/query/index.circom +4 -0
- package/circom/query/query.circom +58 -0
- package/circom/query/test.js +20 -0
- package/circom/query/verifier.sol +177 -0
- package/circom/rollup/compile.sh +10 -0
- package/circom/rollup/gen.js +36 -0
- package/circom/rollup/generateInput.js +11 -0
- package/circom/rollup/index.circom +4 -0
- package/circom/rollup/rollup.circom +43 -0
- package/circom/rollup/test.js +35 -0
- package/circom/rollup/verifier.sol +240 -0
- package/circom/scripts/ceremony.js +39 -0
- package/circom/scripts/ceremony.sh +6 -0
- package/circom/scripts/compile.js +113 -0
- package/circom/scripts/compile.sh +16 -0
- package/circom/utils/uint.circom +512 -0
- package/circom/utils/utils.circom +628 -0
- package/demos/arweave/jsconfig.json +7 -0
- package/demos/arweave/lib/ZKArweave.json +617 -0
- package/demos/arweave/lib/encoder.js +375 -0
- package/demos/arweave/next.config.js +6 -0
- package/demos/arweave/package.json +26 -0
- package/demos/arweave/pages/_app.js +9 -0
- package/demos/arweave/pages/_document.js +19 -0
- package/demos/arweave/pages/api/arweave.js +31 -0
- package/demos/arweave/pages/api/hello.js +5 -0
- package/demos/arweave/pages/index.js +869 -0
- package/demos/arweave/public/circuit.wasm +0 -0
- package/demos/arweave/public/circuit_final.zkey +0 -0
- package/demos/arweave/public/verification_key.json +149 -0
- package/demos/arweave/vercel.json +7 -0
- package/demos/arweave/yarn.lock +2510 -0
- package/demos/simple/jsconfig.json +7 -0
- package/demos/simple/lib/encoder.js +375 -0
- package/demos/simple/next.config.js +6 -0
- package/demos/simple/package.json +24 -0
- package/demos/simple/pages/_app.js +9 -0
- package/demos/simple/pages/_document.js +13 -0
- package/demos/simple/pages/api/hello.js +5 -0
- package/demos/simple/pages/index.js +342 -0
- package/demos/simple/public/circuit.wasm +0 -0
- package/demos/simple/public/circuit_final.zkey +0 -0
- package/demos/simple/public/verification_key.json +149 -0
- package/demos/simple/yarn.lock +2519 -0
- package/docs/README.md +17 -0
- package/docs/simple-zkjson.md +210 -0
- package/docs/solidity-contracts.md +216 -0
- package/docs/zk-circuits.md +125 -0
- package/docs/zkdb-rollup.md +218 -0
- package/docs/zkjson-sdk.md +254 -0
- package/docs/zkjson-v1_5.md +365 -0
- package/package.json +16 -7
- package/sdk/contracts/NORollup.sol +13 -0
- package/sdk/package.json +15 -0
- package/sdk/yarn.lock +881 -0
- package/solidity/README.md +13 -0
- package/solidity/arguments.js +4 -0
- package/solidity/contracts/NORollup.sol +13 -0
- package/solidity/contracts/OPRollup.sol +14 -0
- package/solidity/contracts/ZKIPFS.sol +95 -0
- package/solidity/contracts/ZKJson.sol +21 -0
- package/solidity/contracts/ZKQuery.sol +286 -0
- package/solidity/contracts/ZKRollup.sol +35 -0
- package/solidity/contracts/apps/NORU.sol +66 -0
- package/solidity/contracts/apps/SimpleJSON.sol +64 -0
- package/solidity/contracts/apps/SimpleOPRU.sol +67 -0
- package/solidity/contracts/apps/SimpleRU.sol +67 -0
- package/solidity/contracts/apps/Token.sol +12 -0
- package/solidity/contracts/apps/ZKArweave.sol +89 -0
- package/solidity/contracts/apps/ZKBridge.sol +74 -0
- package/solidity/contracts/apps/ZKNFT.sol +63 -0
- package/solidity/contracts/verifiers/verifier_db.sol +275 -0
- package/solidity/contracts/verifiers/verifier_ipfs.sol +464 -0
- package/solidity/contracts/verifiers/verifier_json.sol +261 -0
- package/solidity/contracts/verifiers/verifier_rollup.sol +240 -0
- package/solidity/package.json +27 -0
- package/solidity/scripts/deploy.js +33 -0
- package/solidity/test/NORU.js +66 -0
- package/solidity/test/ZKArweave.js +97 -0
- package/solidity/test/arweave.js +55 -0
- package/solidity/test/bridge.js +71 -0
- package/solidity/test/simple.js +76 -0
- package/solidity/test/simpleOPRU.js +98 -0
- package/solidity/test/simpleRU.js +94 -0
- package/solidity/test/zknft.js +98 -0
- package/solidity/yarn.lock +4152 -0
- package/test/test.js +304 -0
- /package/{circomlibjs.js → sdk/circomlibjs.js} +0 -0
- /package/{collection.js → sdk/collection.js} +0 -0
- /package/{contracts → sdk/contracts}/OPRollup.sol +0 -0
- /package/{contracts → sdk/contracts}/ZKIPFS.sol +0 -0
- /package/{contracts → sdk/contracts}/ZKJson.sol +0 -0
- /package/{contracts → sdk/contracts}/ZKQuery.sol +0 -0
- /package/{contracts → sdk/contracts}/ZKRollup.sol +0 -0
- /package/{contracts → sdk/contracts}/apps/SimpleJSON.sol +0 -0
- /package/{contracts → sdk/contracts}/apps/SimpleOPRU.sol +0 -0
- /package/{contracts → sdk/contracts}/apps/SimpleRU.sol +0 -0
- /package/{contracts → sdk/contracts}/apps/Token.sol +0 -0
- /package/{contracts → sdk/contracts}/apps/ZKArweave.sol +0 -0
- /package/{contracts → sdk/contracts}/apps/ZKBridge.sol +0 -0
- /package/{contracts → sdk/contracts}/apps/ZKNFT.sol +0 -0
- /package/{contracts → sdk/contracts}/verifiers/verifier_db.sol +0 -0
- /package/{contracts → sdk/contracts}/verifiers/verifier_ipfs.sol +0 -0
- /package/{contracts → sdk/contracts}/verifiers/verifier_json.sol +0 -0
- /package/{contracts → sdk/contracts}/verifiers/verifier_rollup.sol +0 -0
- /package/{db.js → sdk/db.js} +0 -0
- /package/{doc.js → sdk/doc.js} +0 -0
- /package/{encoder-v1_5.js → sdk/encoder-v1_5.js} +0 -0
- /package/{encoder.js → sdk/encoder.js} +0 -0
- /package/{index.js → sdk/index.js} +0 -0
- /package/{json.js → sdk/json.js} +0 -0
- /package/{nft.js → sdk/nft.js} +0 -0
- /package/{parse.js → sdk/parse.js} +0 -0
- /package/{uint.js → sdk/uint.js} +0 -0
@@ -0,0 +1,342 @@
|
|
1
|
+
import Head from "next/head"
|
2
|
+
import Link from "next/link"
|
3
|
+
import { Select, Box, Flex, Input, Textarea } from "@chakra-ui/react"
|
4
|
+
import { useState, useEffect } from "react"
|
5
|
+
import { map } from "ramda"
|
6
|
+
import {
|
7
|
+
encode,
|
8
|
+
encodeVal,
|
9
|
+
encodePath,
|
10
|
+
decodePath,
|
11
|
+
pad,
|
12
|
+
toSignal,
|
13
|
+
} from "zkjson"
|
14
|
+
const snarkjs = require("snarkjs")
|
15
|
+
import { flattenPath, _encode } from "../lib/encoder"
|
16
|
+
export default function Home() {
|
17
|
+
const [signals, setSignals] = useState(null)
|
18
|
+
const [proof, setProof] = useState(null)
|
19
|
+
const [result, setResult] = useState(null)
|
20
|
+
const [type, setType] = useState("number")
|
21
|
+
const [json, setJSON] = useState("")
|
22
|
+
const [path, setPath] = useState("")
|
23
|
+
const [num, setNum] = useState("")
|
24
|
+
const [bool, setBool] = useState(true)
|
25
|
+
const [str, setStr] = useState("")
|
26
|
+
let valid = false
|
27
|
+
try {
|
28
|
+
let _j = null
|
29
|
+
eval("_j = " + json)
|
30
|
+
valid = true
|
31
|
+
} catch (e) {}
|
32
|
+
return (
|
33
|
+
<>
|
34
|
+
<Head>
|
35
|
+
<title>zkJSON Demo</title>
|
36
|
+
<meta name="description" content="Zero Knowledge Provable JSON" />
|
37
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
38
|
+
<link rel="icon" href="/favicon.ico" />
|
39
|
+
</Head>
|
40
|
+
<Flex w="100%" h="100%" justify="center" p={4} fontSize="14px">
|
41
|
+
<Box>
|
42
|
+
<Flex align="center" justify="center" w="750px">
|
43
|
+
<Box fontSize="30px" fontWeight="bold" color="#5037C6">
|
44
|
+
zkJSON
|
45
|
+
</Box>
|
46
|
+
<Box ml={4}>Zero Knowledge Provable JSON</Box>
|
47
|
+
</Flex>
|
48
|
+
<Box
|
49
|
+
w="750px"
|
50
|
+
bg="#eee"
|
51
|
+
py={2}
|
52
|
+
px={8}
|
53
|
+
mt={4}
|
54
|
+
sx={{ borderRadius: "10px" }}
|
55
|
+
>
|
56
|
+
<Box align="center" mt={4} color="#5037C6">
|
57
|
+
Using a zero knowledge circuit, you can prove any data in JSON
|
58
|
+
without revealing the JSON itself.
|
59
|
+
</Box>
|
60
|
+
<Box mt={4}>
|
61
|
+
<Flex>
|
62
|
+
<Box as="label" color={valid ? "" : "crimson"}>
|
63
|
+
JSON (private, this data won't be revealed){" "}
|
64
|
+
{valid ? "" : "Invalid JSON"}
|
65
|
+
</Box>
|
66
|
+
<Box flex={1} />
|
67
|
+
<Box
|
68
|
+
mr={2}
|
69
|
+
color="#5037C6"
|
70
|
+
sx={{
|
71
|
+
textDecoration: "underline",
|
72
|
+
cursor: "pointer",
|
73
|
+
":hover": { opacity: 0.75 },
|
74
|
+
}}
|
75
|
+
onClick={() => {
|
76
|
+
const rand = (i, start = 0) =>
|
77
|
+
Math.floor(Math.random() * i) + start
|
78
|
+
let alpha = [
|
79
|
+
"a",
|
80
|
+
"b",
|
81
|
+
"c",
|
82
|
+
"d",
|
83
|
+
"e",
|
84
|
+
"f",
|
85
|
+
"g",
|
86
|
+
"h",
|
87
|
+
"i",
|
88
|
+
"j",
|
89
|
+
"k",
|
90
|
+
"l",
|
91
|
+
]
|
92
|
+
const getOBJ = () => {
|
93
|
+
let obj = {}
|
94
|
+
let num = rand(3) + 3
|
95
|
+
for (let i = 0; i < num; i++) {
|
96
|
+
const type = rand(6)
|
97
|
+
if (type === 2) {
|
98
|
+
obj[alpha[rand(alpha.length)]] = rand(10)
|
99
|
+
} else if (type === 3) {
|
100
|
+
obj[alpha[rand(alpha.length)]] =
|
101
|
+
alpha[rand(alpha.length)]
|
102
|
+
} else if (type === 1) {
|
103
|
+
obj[alpha[rand(alpha.length)]] = rand(2) === 0
|
104
|
+
} else if (type === 4) {
|
105
|
+
obj[alpha[rand(alpha.length)]] = [
|
106
|
+
rand(10),
|
107
|
+
rand(10),
|
108
|
+
rand(10),
|
109
|
+
]
|
110
|
+
} else if (type === 0) {
|
111
|
+
obj[alpha[rand(alpha.length)]] = rand(2) === null
|
112
|
+
} else if (type === 5) {
|
113
|
+
obj[alpha[rand(alpha.length)]] = getOBJ()
|
114
|
+
}
|
115
|
+
}
|
116
|
+
return obj
|
117
|
+
}
|
118
|
+
setJSON(JSON.stringify(getOBJ()))
|
119
|
+
}}
|
120
|
+
>
|
121
|
+
generate
|
122
|
+
</Box>
|
123
|
+
</Flex>
|
124
|
+
<Textarea
|
125
|
+
bg="white"
|
126
|
+
placeholder="{ a : 1 }"
|
127
|
+
value={json}
|
128
|
+
onChange={e => setJSON(e.target.value)}
|
129
|
+
/>
|
130
|
+
</Box>
|
131
|
+
<Box mt={4}>
|
132
|
+
<Flex>
|
133
|
+
<Box as="label">Path (public)</Box> <Box flex={1} />
|
134
|
+
<Box
|
135
|
+
mr={2}
|
136
|
+
color="#5037C6"
|
137
|
+
sx={{
|
138
|
+
textDecoration: "underline",
|
139
|
+
cursor: "pointer",
|
140
|
+
":hover": { opacity: 0.75 },
|
141
|
+
}}
|
142
|
+
onClick={() => {
|
143
|
+
const rand = (i, start = 0) =>
|
144
|
+
Math.floor(Math.random() * i) + start
|
145
|
+
const enc = _encode(JSON.parse(json))
|
146
|
+
const v = enc[rand(enc.length)]
|
147
|
+
setPath(decodePath(flattenPath(v[0])))
|
148
|
+
}}
|
149
|
+
>
|
150
|
+
generate
|
151
|
+
</Box>
|
152
|
+
</Flex>
|
153
|
+
<Input
|
154
|
+
bg="white"
|
155
|
+
placeholder="a"
|
156
|
+
value={path}
|
157
|
+
onChange={e => setPath(e.target.value)}
|
158
|
+
/>
|
159
|
+
</Box>
|
160
|
+
<Box mt={4}>
|
161
|
+
<Flex>
|
162
|
+
<Box flex={1} pr={4}>
|
163
|
+
<Box as="label">Data Type (public)</Box>
|
164
|
+
<Select
|
165
|
+
value={type}
|
166
|
+
onChange={e => setType(e.target.value)}
|
167
|
+
bg="white"
|
168
|
+
>
|
169
|
+
{map(v => <option>{v}</option>)([
|
170
|
+
"null",
|
171
|
+
"boolean",
|
172
|
+
"number",
|
173
|
+
"string",
|
174
|
+
])}
|
175
|
+
</Select>
|
176
|
+
</Box>
|
177
|
+
<Box flex={1} pl={4}>
|
178
|
+
<Box as="label">Value (public)</Box>
|
179
|
+
{type === "string" ? (
|
180
|
+
<Input
|
181
|
+
placeholder="1"
|
182
|
+
bg="white"
|
183
|
+
value={str}
|
184
|
+
onChange={e => setStr(e.target.value)}
|
185
|
+
/>
|
186
|
+
) : type === "number" ? (
|
187
|
+
<Input
|
188
|
+
placeholder="1"
|
189
|
+
bg="white"
|
190
|
+
value={num}
|
191
|
+
onChange={e => {
|
192
|
+
if (!Number.isNaN(e.target.value * 1)) {
|
193
|
+
setNum(e.target.value)
|
194
|
+
}
|
195
|
+
}}
|
196
|
+
/>
|
197
|
+
) : type === "null" ? (
|
198
|
+
<Input
|
199
|
+
placeholder="1"
|
200
|
+
bg="white"
|
201
|
+
value="null"
|
202
|
+
disabled={true}
|
203
|
+
/>
|
204
|
+
) : (
|
205
|
+
<Select
|
206
|
+
value={bool}
|
207
|
+
onChange={e =>
|
208
|
+
setBool(e.target.value === "true" ? true : false)
|
209
|
+
}
|
210
|
+
bg="white"
|
211
|
+
>
|
212
|
+
{map(v => (
|
213
|
+
<option value={v === "true" ? true : false}>{v}</option>
|
214
|
+
))(["true", "false"])}
|
215
|
+
</Select>
|
216
|
+
)}
|
217
|
+
</Box>
|
218
|
+
</Flex>
|
219
|
+
</Box>
|
220
|
+
<Flex justify="center" mt={4}>
|
221
|
+
<Flex
|
222
|
+
py={3}
|
223
|
+
bg={valid ? "#5037C6" : "#aaa"}
|
224
|
+
w="100%"
|
225
|
+
justify="center"
|
226
|
+
color="white"
|
227
|
+
fontSize="16px"
|
228
|
+
sx={{
|
229
|
+
borderRadius: "5px",
|
230
|
+
cursor: valid ? "pointer" : "default",
|
231
|
+
":hover": { opacity: 0.75 },
|
232
|
+
}}
|
233
|
+
onClick={async () => {
|
234
|
+
if (valid) {
|
235
|
+
let _json = null
|
236
|
+
try {
|
237
|
+
eval("_json = " + json)
|
238
|
+
} catch (e) {}
|
239
|
+
_json = pad(toSignal(encode(_json)), 256)
|
240
|
+
const _path = pad(toSignal(encodePath(path)), 5)
|
241
|
+
let _val =
|
242
|
+
type === "number"
|
243
|
+
? num * 1
|
244
|
+
: type === "string"
|
245
|
+
? str
|
246
|
+
: type === "boolean"
|
247
|
+
? bool
|
248
|
+
: null
|
249
|
+
const _val2 = pad(toSignal(encodeVal(_val)), 5)
|
250
|
+
const { proof, publicSignals } =
|
251
|
+
await snarkjs.groth16.fullProve(
|
252
|
+
{ json: _json, path: _path, val: _val2 },
|
253
|
+
"circuit.wasm",
|
254
|
+
"circuit_final.zkey"
|
255
|
+
)
|
256
|
+
setSignals(publicSignals)
|
257
|
+
setProof(proof)
|
258
|
+
setResult(null)
|
259
|
+
}
|
260
|
+
}}
|
261
|
+
>
|
262
|
+
Generate Proof
|
263
|
+
</Flex>
|
264
|
+
</Flex>
|
265
|
+
<Box mt={6}>
|
266
|
+
<Box as="label">Public Signals</Box>
|
267
|
+
<Textarea
|
268
|
+
bg="white"
|
269
|
+
value={JSON.stringify(signals)}
|
270
|
+
fontSize="10px"
|
271
|
+
disabled={true}
|
272
|
+
/>
|
273
|
+
</Box>
|
274
|
+
<Box mt={4}>
|
275
|
+
<Box as="label">Proof</Box>
|
276
|
+
<Textarea
|
277
|
+
bg="white"
|
278
|
+
value={JSON.stringify(proof)}
|
279
|
+
fontSize="10px"
|
280
|
+
disabled={true}
|
281
|
+
/>
|
282
|
+
</Box>
|
283
|
+
<Flex justify="center" mt={4}>
|
284
|
+
<Flex
|
285
|
+
py={3}
|
286
|
+
w="100%"
|
287
|
+
bg={proof ? "#5037C6" : "#aaa"}
|
288
|
+
justify="center"
|
289
|
+
color="white"
|
290
|
+
fontSize="16px"
|
291
|
+
sx={{
|
292
|
+
borderRadius: "5px",
|
293
|
+
cursor: proof ? "pointer" : "default",
|
294
|
+
":hover": { opacity: 0.75 },
|
295
|
+
}}
|
296
|
+
onClick={async () => {
|
297
|
+
if (proof) {
|
298
|
+
const vkey = await fetch("verification_key.json").then(
|
299
|
+
function (res) {
|
300
|
+
return res.json()
|
301
|
+
}
|
302
|
+
)
|
303
|
+
const res = await snarkjs.groth16.verify(
|
304
|
+
vkey,
|
305
|
+
signals,
|
306
|
+
proof
|
307
|
+
)
|
308
|
+
setResult(res)
|
309
|
+
}
|
310
|
+
}}
|
311
|
+
>
|
312
|
+
Verify Proof
|
313
|
+
</Flex>
|
314
|
+
</Flex>
|
315
|
+
<Flex justify="center" mt={6} fontSize="20px">
|
316
|
+
<Flex
|
317
|
+
fontWeight="bold"
|
318
|
+
h="70px"
|
319
|
+
bg="white"
|
320
|
+
w="100%"
|
321
|
+
mb={4}
|
322
|
+
justify="center"
|
323
|
+
align="center"
|
324
|
+
color="#5037C6"
|
325
|
+
sx={{ borderRadius: "5px" }}
|
326
|
+
>
|
327
|
+
{result
|
328
|
+
? `VALID ( ${signals[0] === "1" ? "exist" : "not exist"} )`
|
329
|
+
: ""}
|
330
|
+
</Flex>
|
331
|
+
</Flex>
|
332
|
+
</Box>
|
333
|
+
<Flex justify="center" mt={4} color="#5037C6">
|
334
|
+
<Link href="https://github.com/weavedb/zkjson" target="_blank">
|
335
|
+
Built by WeaveDB
|
336
|
+
</Link>
|
337
|
+
</Flex>
|
338
|
+
</Box>
|
339
|
+
</Flex>
|
340
|
+
</>
|
341
|
+
)
|
342
|
+
}
|
Binary file
|
Binary file
|
@@ -0,0 +1,149 @@
|
|
1
|
+
{
|
2
|
+
"protocol": "groth16",
|
3
|
+
"curve": "bn128",
|
4
|
+
"nPublic": 12,
|
5
|
+
"vk_alpha_1": [
|
6
|
+
"20906723375066628996538723964948705883807515490851236717549543933647949219571",
|
7
|
+
"16603277405602064515576336929405274585704793668006611444340674010517699111175",
|
8
|
+
"1"
|
9
|
+
],
|
10
|
+
"vk_beta_2": [
|
11
|
+
[
|
12
|
+
"2598197794696234583089212408001367512889853689394097760090270035862816362448",
|
13
|
+
"15094144295718056060696456976805274960280819890173699163580614297205641683890"
|
14
|
+
],
|
15
|
+
[
|
16
|
+
"17948608722772603517072567060031950359342932415845723852078363636578090462964",
|
17
|
+
"13019389669452630605176375079598340867413494236340581417103700533129069013294"
|
18
|
+
],
|
19
|
+
[
|
20
|
+
"1",
|
21
|
+
"0"
|
22
|
+
]
|
23
|
+
],
|
24
|
+
"vk_gamma_2": [
|
25
|
+
[
|
26
|
+
"10857046999023057135944570762232829481370756359578518086990519993285655852781",
|
27
|
+
"11559732032986387107991004021392285783925812861821192530917403151452391805634"
|
28
|
+
],
|
29
|
+
[
|
30
|
+
"8495653923123431417604973247489272438418190587263600148770280649306958101930",
|
31
|
+
"4082367875863433681332203403145435568316851327593401208105741076214120093531"
|
32
|
+
],
|
33
|
+
[
|
34
|
+
"1",
|
35
|
+
"0"
|
36
|
+
]
|
37
|
+
],
|
38
|
+
"vk_delta_2": [
|
39
|
+
[
|
40
|
+
"15520575756658013837683278837606855996748441404177081834144665047696535354396",
|
41
|
+
"10711072566124686834265841982715732378697448459012409505902998706903901541084"
|
42
|
+
],
|
43
|
+
[
|
44
|
+
"18602518854483670884905553918154837342133779460402958263587772213821882545891",
|
45
|
+
"21670795361216273264901615496631029269219518939720252741040441908211802206706"
|
46
|
+
],
|
47
|
+
[
|
48
|
+
"1",
|
49
|
+
"0"
|
50
|
+
]
|
51
|
+
],
|
52
|
+
"vk_alphabeta_12": [
|
53
|
+
[
|
54
|
+
[
|
55
|
+
"12474611102233718866490708245674223823179908264800813022477257119053614163132",
|
56
|
+
"19638923536391672813008675588811600469590660017381971590485853473118727526175"
|
57
|
+
],
|
58
|
+
[
|
59
|
+
"16107488476924656661834598442681605942094353782607193169840313830538871273023",
|
60
|
+
"17490735369486042718859641940585608932279159487520676351901268258970747883134"
|
61
|
+
],
|
62
|
+
[
|
63
|
+
"7527593643954722488554251757140899302585601025455438925504608502742089873340",
|
64
|
+
"3742017767886794788902981825363284368305107208244176715207488775845979234421"
|
65
|
+
]
|
66
|
+
],
|
67
|
+
[
|
68
|
+
[
|
69
|
+
"6196645528503356645410022864048334785007631624439101890087629340834596920449",
|
70
|
+
"11382571521501085696191499568585567625302967914657355634223492663644507989170"
|
71
|
+
],
|
72
|
+
[
|
73
|
+
"21243113262754674736956480709100146006917208130404149582605613807117145963965",
|
74
|
+
"11368558209297805634728327300607481542009318809835375455921783989682060449080"
|
75
|
+
],
|
76
|
+
[
|
77
|
+
"3278479966045108546410706555014734125203250776751525560389552766634128824145",
|
78
|
+
"15726477296338580745181895727220747569103127004127982994488818525133292360522"
|
79
|
+
]
|
80
|
+
]
|
81
|
+
],
|
82
|
+
"IC": [
|
83
|
+
[
|
84
|
+
"11086791052709537593958527982551466373543557342479473456486918346706557110272",
|
85
|
+
"20506728735254563637401848289764804706365355653222631223947955738675551382105",
|
86
|
+
"1"
|
87
|
+
],
|
88
|
+
[
|
89
|
+
"3395672018504856885331557568801382430991065622809977080049087938633695466505",
|
90
|
+
"16008515660025396265007279223380117478922266924915694760300639683710667540804",
|
91
|
+
"1"
|
92
|
+
],
|
93
|
+
[
|
94
|
+
"21765086794018723313508040688349754864858333265049520578918793850946099000275",
|
95
|
+
"697811386339903182398036069234656900767187661360875928460814734795207770242",
|
96
|
+
"1"
|
97
|
+
],
|
98
|
+
[
|
99
|
+
"19890134840469468860269808836413274874961102551504281644286795822862783578836",
|
100
|
+
"10501563686653873312925081348712045837799559277882754134863746661191456585317",
|
101
|
+
"1"
|
102
|
+
],
|
103
|
+
[
|
104
|
+
"3369539760301949842926296294765952701286437018123521538030683232199073077793",
|
105
|
+
"17029305206701174018920590641604979023986372135961726666915339433517762654894",
|
106
|
+
"1"
|
107
|
+
],
|
108
|
+
[
|
109
|
+
"16249858468384073197585049724261300836640451596079332252974671216468387477562",
|
110
|
+
"15430518669979717234332245816406403303816581724709051740811390921375347110404",
|
111
|
+
"1"
|
112
|
+
],
|
113
|
+
[
|
114
|
+
"15005432332128787752647304265070458721246744260154464921566645180007742802279",
|
115
|
+
"12228853074973908182958795852882093001137862796451033278357411806506635324421",
|
116
|
+
"1"
|
117
|
+
],
|
118
|
+
[
|
119
|
+
"8279149102391716348028737479566814742618645832848275208331642895717107868296",
|
120
|
+
"9028245630419080537816021983399031211599915437683007034212436702559232452386",
|
121
|
+
"1"
|
122
|
+
],
|
123
|
+
[
|
124
|
+
"9920315178591554201395269399878868095438996004668427910727172420497691574268",
|
125
|
+
"13977539708344722958417991918934496531835259337681036150638988886470196226252",
|
126
|
+
"1"
|
127
|
+
],
|
128
|
+
[
|
129
|
+
"64865284880675837338119066159408029670824664912895548295809933993597129855",
|
130
|
+
"16596614162936398597796948615700133880646516840294055167278997135786201638865",
|
131
|
+
"1"
|
132
|
+
],
|
133
|
+
[
|
134
|
+
"20041216278333661355857000399562164892538427870735609885548447419114215265900",
|
135
|
+
"7188425125877597681508434156838946918685965411196380330181753494345911319474",
|
136
|
+
"1"
|
137
|
+
],
|
138
|
+
[
|
139
|
+
"10344667596317540812042141319424780533548696928275174590606414302423871416439",
|
140
|
+
"15177912543756596934916481207669485500307163540835148656062032711878901603531",
|
141
|
+
"1"
|
142
|
+
],
|
143
|
+
[
|
144
|
+
"3003572233500184455318954446784006239696026573012811847295348627074111281539",
|
145
|
+
"6485361686957307324235352983357156310358934769793375149333110905137006337248",
|
146
|
+
"1"
|
147
|
+
]
|
148
|
+
]
|
149
|
+
}
|