Skip to content

Commit 8d1462c

Browse files
Merge pull request #2459 from o1-labs/shigoto/fix-side-loading-example
Fix side-loading zkprogram example to use the second child proof
2 parents 9f4741f + acb2ee0 commit 8d1462c

File tree

2 files changed

+26
-16
lines changed

2 files changed

+26
-16
lines changed

src/examples/zkprogram/side-loading/dynamic-keys-merkletree.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import {
22
DynamicProof,
33
FeatureFlags,
44
Field,
5-
MerkleTree,
65
MerkleWitness,
76
Proof,
87
SelfProof,
@@ -11,7 +10,13 @@ import {
1110
ZkProgram,
1211
} from 'o1js';
1312

14-
export { mainProgram, sideloadedProgram, SideloadedProgramProof,MerkleTreeWitness, MainProgramState };
13+
export {
14+
mainProgram,
15+
sideloadedProgram,
16+
SideloadedProgramProof,
17+
MerkleTreeWitness,
18+
MainProgramState,
19+
};
1520

1621
/**
1722
* This example showcases how DynamicProofs can be used along with a merkletree that stores
@@ -127,4 +132,3 @@ const mainProgram = ZkProgram({
127132
},
128133
},
129134
});
130-
Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,42 @@
1-
import { Field, MerkleTree, verify } from "o1js";
2-
import { sideloadedProgram, mainProgram, SideloadedProgramProof, MerkleTreeWitness, MainProgramState } from "./dynamic-keys-merkletree.js";
1+
import { Field, MerkleTree, verify } from 'o1js';
2+
import {
3+
sideloadedProgram,
4+
mainProgram,
5+
SideloadedProgramProof,
6+
MerkleTreeWitness,
7+
MainProgramState,
8+
} from './dynamic-keys-merkletree.js';
39

410
console.log('Compiling circuits...');
5-
const programVk = (await sideloadedProgram.compile()).verificationKey;
11+
const sideVk = (await sideloadedProgram.compile()).verificationKey;
612
const mainVk = (await mainProgram.compile()).verificationKey;
713

814
const tree = new MerkleTree(64);
915

1016
console.log('Proving deployment of side-loaded key');
1117
const rootBefore = tree.getRoot();
12-
tree.setLeaf(1n, programVk.hash);
18+
tree.setLeaf(1n, sideVk.hash);
1319
const witness = new MerkleTreeWitness(tree.getWitness(1n));
1420

1521
const { proof: proof1 } = await mainProgram.addSideloadedProgram(
1622
new MainProgramState({
1723
treeRoot: rootBefore,
1824
state: Field(0),
1925
}),
20-
programVk,
26+
sideVk,
2127
witness
2228
);
2329

2430
console.log('Proving child program execution');
25-
const { proof: childProof } = await sideloadedProgram.compute(Field(0), Field(10));
31+
const { proof: childProof1 } = await sideloadedProgram.compute(Field(0), Field(10));
2632

2733
console.log('Proving verification inside main program');
2834
const { proof: proof2 } = await mainProgram.validateUsingTree(
2935
proof1.publicOutput,
3036
proof1,
31-
programVk,
37+
sideVk,
3238
witness,
33-
SideloadedProgramProof.fromProof(childProof)
39+
SideloadedProgramProof.fromProof(childProof1)
3440
);
3541

3642
const validProof2 = await verify(proof2, mainVk);
@@ -40,13 +46,13 @@ console.log('Proving different method of child program');
4046
const { proof: childProof2 } = await sideloadedProgram.assertAndAdd(Field(0), Field(10));
4147

4248
console.log('Proving verification inside main program');
43-
const proof3 = await mainProgram.validateUsingTree(
49+
const { proof: proof3 } = await mainProgram.validateUsingTree(
4450
proof1.publicOutput,
4551
proof1,
46-
programVk,
52+
sideVk,
4753
witness,
48-
SideloadedProgramProof.fromProof(childProof)
54+
SideloadedProgramProof.fromProof(childProof2)
4955
);
5056

51-
const validProof3 = await verify(proof2, mainVk);
52-
console.log('ok?', validProof2);
57+
const validProof3 = await verify(proof3, mainVk);
58+
console.log('ok?', validProof3);

0 commit comments

Comments
 (0)