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
410console . log ( 'Compiling circuits...' ) ;
5- const programVk = ( await sideloadedProgram . compile ( ) ) . verificationKey ;
11+ const sideVk = ( await sideloadedProgram . compile ( ) ) . verificationKey ;
612const mainVk = ( await mainProgram . compile ( ) ) . verificationKey ;
713
814const tree = new MerkleTree ( 64 ) ;
915
1016console . log ( 'Proving deployment of side-loaded key' ) ;
1117const rootBefore = tree . getRoot ( ) ;
12- tree . setLeaf ( 1n , programVk . hash ) ;
18+ tree . setLeaf ( 1n , sideVk . hash ) ;
1319const witness = new MerkleTreeWitness ( tree . getWitness ( 1n ) ) ;
1420
1521const { proof : proof1 } = await mainProgram . addSideloadedProgram (
1622 new MainProgramState ( {
1723 treeRoot : rootBefore ,
1824 state : Field ( 0 ) ,
1925 } ) ,
20- programVk ,
26+ sideVk ,
2127 witness
2228) ;
2329
2430console . 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
2733console . log ( 'Proving verification inside main program' ) ;
2834const { 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
3642const validProof2 = await verify ( proof2 , mainVk ) ;
@@ -40,13 +46,13 @@ console.log('Proving different method of child program');
4046const { proof : childProof2 } = await sideloadedProgram . assertAndAdd ( Field ( 0 ) , Field ( 10 ) ) ;
4147
4248console . 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