Skip to content

Commit f632101

Browse files
committed
test: lazy mode zkprogram unit test
1 parent c5d1135 commit f632101

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import { Field } from '../provable/field.js';
2+
import { Cache } from '../proof-system/cache.js';
3+
import { ZkProgram } from '../proof-system/zkprogram.js';
4+
import { Spec, fieldWithRng } from '../testing/equivalent.js';
5+
import { Random } from '../testing/property.js';
6+
import { assert } from '../provable/gadgets/common.js';
7+
import { Gadgets } from '../provable/gadgets/gadgets.js';
8+
import { wasm } from '../../bindings.js';
9+
10+
11+
function getMemory() {
12+
return {
13+
wasm: (wasm as any).__wasm.memory.buffer.byteLength / (1024 * 1024),
14+
js: process.memoryUsage().heapTotal / (1024 * 1024),
15+
};
16+
}
17+
18+
let uint = (n: number | bigint): Spec<bigint, Field> => {
19+
return fieldWithRng(Random.bignat((1n << BigInt(n)) - 1n));
20+
};
21+
22+
23+
// dummy circuit
24+
let LazyMode = ZkProgram({
25+
name: 'lazy-mode',
26+
methods: {
27+
baseCase: {
28+
privateInputs: [Field],
29+
async method(v: Field) {
30+
for (let i = 0; i < 1 << 15; i++) {
31+
let w = v.add(new Field(i));
32+
Gadgets.rangeCheck64(w);
33+
}
34+
},
35+
},
36+
},
37+
});
38+
39+
40+
async function testLazyMode(lazyMode: boolean) {
41+
42+
console.log(`(${lazyMode ? 'Lazy' : 'Eager'}) Memory before compilation`, getMemory());
43+
44+
await LazyMode.compile({
45+
lazyMode,
46+
cache: Cache.None,
47+
forceRecompile: true,
48+
});
49+
50+
console.log(`(${lazyMode ? 'Lazy' : 'Eager'}) Memory after compilation`, getMemory());
51+
console.log(' ');
52+
console.log(`(${lazyMode ? 'Lazy' : 'Eager'}) Memory before proof`, getMemory());
53+
54+
let { proof } = await LazyMode.baseCase(new Field(1n));
55+
56+
console.log(`(${lazyMode ? 'Lazy' : 'Eager'}) Memory after proof`, getMemory());
57+
console.log(' ');
58+
59+
let isValid = await LazyMode.verify(proof);
60+
61+
console.log(`(${lazyMode ? 'Lazy' : 'Eager'}) Memory after verify`, getMemory());
62+
63+
assert(isValid);
64+
65+
}
66+
67+
await testLazyMode(false);

0 commit comments

Comments
 (0)