Skip to content

Commit d5c5eda

Browse files
Ensure correct verifying keys are used + check verification result
1 parent 3b7caec commit d5c5eda

File tree

2 files changed

+5
-4
lines changed

2 files changed

+5
-4
lines changed

sdk/tests/data/program.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Define an execution with imports, its imported programs, and the verifying keys for the functions called from the imported programs.
2-
const SPIN_VERIFYING_KEY: string = "verifier1qysqqqqqqqqqqqzzesqqqqqqqqq9fnqqqqqqqqqq2w7szqqqqqqqqjqmqgqqqqqqqrqzxqgqqqqqqqqvqqqqqqqqqqqt2dtvr8ymtdl3vrxtqnglst8n2y4dw4hq593utwy6nwq8klyyaxnyrhyhjs8x7zusy83anzzaxsgqjt72tq53yqkh8v4a6fwdft3rhle46d7zdw7txye2n2zmlxdgjuzq48sa0ed6pzwma7gmvwd9nv2gzgupptxnpuguu62uwlpgs7lrz4ydc25fgpld3snp7pe8k00t7ca2c6huf8wfw2sh732kgpm4wqqgqrr2vn20vyesyrkl5udy6smm0knuzfktqsffavp8mk3flgfz05d8jf6r9j9gke8gt48nn7lwygvm6qrprqq7rgmpt68f63krye0xwd3fwj79pt9cn49wmu4xld78qfqxnt8wtnxq9wluxmyn7jqv93zkljqvr5l96c5uz6xxf7xxqngf0788wjkqx29qntkl5jn96zwcnrxx75ez753ujk6ud44ltg5xkhd2cevqaj3asqd5d780uekchldlfcz2grpsfvnfy9wv3rth262xxkugw3w3pcdha2rmktf9n97uxtjdvpngzv23f4klaakas9tphfnwj4cy9y54vty7ndt93g5vzwp7pegyvegjlln3ura35jslp9fkkugpnnchsx62qysjlugey9qp342g9s63k6hxh7cf8xenn6gld9d2ep8neynx69v3yd5723ppez0qh4ukvq5yhq02n0fqt7gnhpfrnm709gldsfrc9gpf6p3gmqvpgupxdv56vvlgwjk68x5yzw229u2m6gn8a59e0zqkgjx03r98hkddusfthpj8mvapwfxm58cn402csj0jjqz9xp52snptcmtpemp44ugnxxhl4fnrgnup7h979ghu726u2j0hsy0rmxnukxhpak03su6w3lphhnz37sl87xc05lwu7fks0z3k7n4edtpxtezgqd59vkyu9l3zr8ueusmgut0cz9d0cz4z4mmya7238yegyjnuqv7wuhasqqqqqqqqq3ma3cg";
3-
const SPEND_VERIFYING_KEY: string = "verifier1qygqqqqqqqqqqqraj5qqqqqqqqqfr9gqqqqqqqqq5vtqzqqqqqqqpk3gqyqqqqqqqpdwxqqqqqqqqqqvqqqqqqqqqqqxkvyhsn4lxgveknmux6sx6x72vz89e4pmakfccprhka5hyfdjf3lhl87g754ndg9yk5mutpjc9f5qd0svjg7nmvwlhrwn9k8n8wphltna4tr3vq284lfvnxutsxwvnfs5vvdngs5wgyfv8lptaqcsze6cpj6mgha2yn94l6tf7uchsvhzej8wychzfgqjxa7pg2jf5hytkfe52zyelspw4v8zxuu8gyxhstvcqphj430e7j2d3k63hr3mvd79yamfh8svtfd75phnvevpwnm8eczkad32ydzjffm3awhneqgmlk655qw5xzmjclm48axw3cm872uacfnz7dzad5sy3c85x828dudl8jljw32h85th2hq9hf6gvq24jnw8ygqg778x837ws4lxma5nu7k374vx9gswldaccrjxj7403sra8yns8cr3jj8fg49qmzck7thqzf6g0yqpn62hqqw5c48rdc39gupk2mu5dpljuxx4h8gnrymc468up48zwf4qv8trn2kxfnlvkn949k6j3kdczutluvqdr6qs3yc8yt2hty4rfxkvwtazjvck2gp6d4kkslr4sk6g30325st6upkx0dw3f54w9g7pspy5aw8ar8qf4neyk8p2z4r7p9zswsr2gn5xualuvxkqq438tyx6rfwcdvwye6xw7fumf7lg0cx2zq95vkrt06hj2tyw7kswlcqnsjk9mn2f64n6pd5xj9d3zq5ktaesmajysv8znp2p7vqm35spm90er5qnmupulwrdf02davqnfnhlpkn3d2lgrhzcuqwmfza2zznrct9zfxqrp9nhzm6yf2axrcdaxczzeuyq4yvavzmuyt49pzx4t653f676qngkw4yc6qfgykym8luprh8zczptwh6z3j24mprqx50rcynr49rczdzwzu80h2a35d8tnmghpa5n9t2c6t2kaetgdk6yue7rvayetm8camyqqqqqqqqqqatv6mn";
4-
const MINT_VERIFYING_KEY: string = "verifier1qygqqqqqqqqqqqpgtgqqqqqqqqqzjksqqqqqqqqq4xmsqqqqqqqqqgknqqqqqqqqqpkgsqqqqqqqqqqvqqqqqqqqqqqpcgg25l40ndttqs5lv9s0a2guxc325jwh9ty3uvsymt3n0l80qye5eun67j64xl2tpa527gwfsduqng2shl7v4yflg4ggw38hnevja6klqyxf7rcxsm2hjlgddtkh6873cuhf2yqhn2hd98w3cmafduyqq57uqqjntmva5tk6w2cpjttyqsmxuy4tfj89v3jvjf9sxlyzjfupmf50est52jrh4anll8yangncs92vsscxhcuzy57qvuxdvh5mzt45ycyyfuh5dyfnrrd6kqv00aahxkhjdem7klh7kq9cx4xwvjqruqgdmnw9004n6qcxcmvna9fcaqzg2lujxf2cwecc28qheax7p0q993w5gpqa55qyf2qdvxdhuw0t3zqfgaapuc67lqpa5yw05lu9ylzfxhckkcy29cr7ps65nrcqralrvxh67g8m7rdudtf04rlyjxe2z0vqvrtqfyk5s0qtr0le9hdn430ep3uuc00ejuztqadfyf4hpklzdac8nrnkg5j04wwh3xq98z3a95dqrgmsdvkekpas97qg5ypqgzms4umeq7mwvydhr7fue5uv7zd5vtvwu2f036r88h77ta566nu4nfjnqxv25uf4qc7lpgsfm2hhc4mrddvsk38yf5dg5ahm7xft0j3wnt94k0y8txdgclu48ggfwenvxw4lwqy0df50pdy2kx96xl35hewqm33krxwhpa2kzkpy0xetk5tjscrwtpyjxkkjrex7qfpvtj8zx6nn8uqh9vhn3pxxcta7s04whvh8j4vx22krer0qv02gmeyv8q83muwn4lhmjwygrnk5k0fqlmj8u8r8tcyqxdwl52yc7ewqtpq38zkxfcvdpeksjnqpthun2hwmyuuk25vg4af96lyyl9ytlk8sac9cxhdnpefcrz637k6kazgryvnjd7tgslszuwg9vkchtv4tc3ylwyer0gd069y7q3usqqqqqqqqqkqr8dw";
2+
const SPIN_VERIFYING_KEY: string = "verifier1qysqqqqqqqqqqqxrjvqqqqqqqqqtaycqqqqqqqqqnpjszqqqqqqqpm9lqyqqqqqqqrddxqqqqqqqqqqvqqqqqqqqqqqt8ksvknxqn3yc8rlnf75w0d6v7h3kad4patlmn4rzq7yny8rawe4c58yq3t64v2p4ts3g506j2juq5mzxwk3z34zrjrvkhl99xju75derjkxv64ktsdzmu3mwkj486tnndw2x8cnwj9q469yf3l7304sqzyufsu8pqdcykenav93ms3uqh9sgahmxrr74f6wr8eqyxkud0xw2jlt9v674gj0ml4zrqzf3mz0pszntjt5mtw79spqcud6ekjpqc9u28snzyg8vdt78up3q6mlq7nh7ms06xyslj7s9jcna0r7s2t9pdqyvae8kcjqcl358u88qrcu83q3zta2rf58yvqrtvqmtux8d0h3sx9r44xw4a069lz989262kja6xuqzttnujfrthkj6fr0vlvz9fdzle8kupdqea0x8pe6xju962lskf7sajl3pddxx4arqd8aafuzxczypyk0cqvjt26th3hg845vrxx9vtzpgn5vpu5j49ednwvyf4yl86ujpknqcqzq2jvn5ux8sh286tkgsqv7mqz20629zxffvee9ncdl8mdw38uhqsfdam3585jdxcuu6wxds7m8mss5yxj2tmcu6cq93hh28s9ws33ey0vz9mv9xcy3pfyekzruxtznw0625ynvc4j2mtd8yl9drcftlkqqvl4em0dxz6umvxua9cqg9sesfw6gs6fwvgtadw79mkh48kwpvevypd0f6da8scpck2xnhxhe6zcxrknntkd92wcqccdfdy2qhwne53e3fhak42p0y73re7njr8xyraq7dy4ncvfcly5j2jler3ln04dgzkrdsm7vufdrarh7xy6vpw634mv2jyv088zj9upl63gntav65gskcyez0cg86wa6hzhjjjygqzh7mndqnk8yhdh9ppud0a7tqruvdqge9a9ltkk4vjua07kq2l7xqd55zjyh7jqq96tyglk55l4a25t2sqqqqqqqqqs6zqrd";
3+
const SPEND_VERIFYING_KEY: string = "verifier1qygqqqqqqqqqqqz33cqqqqqqqqqxrrsqqqqqqqqql5rqzqqqqqqqptslqyqqqqqqqpedvqqqqqqqqqqvqqqqqqqqqqqyudfp2mjt8zj3lskjzunts69hgx2kpwryn37p62f30mwqtca442epnw2dqstdnh88ljx44p5cmjyqnfx620nl9pwsh6qsaeughffgfrpxc5qhl5wda6ekss7pt3j72ps32wlrv7mlljjq9lq5jn8yn29gztqk8yz8ehq7smprjs3gzsllqpzaq07gk9yw50te0yarl5yd796xldapdfpc4n75ccy7z2jkmfyss8zz89gz7fw7937xjzt3k3cmhrekgjzzvxmqtzd20ffae8eym3lhq2gwejgqjmw9c8edum06s6a24q2zv9w3kcz5uavcgatlskxxy285nq5uhceusavwzu8rqu0e6lj6j5kgva00aw6x0khfyn4gg3ppeqqwmw3crvtgrdc8w45flwm4d9e8r3edct8hsgven70juqd9me3jk27cgr9fz90h57r2eqdctegc3ecqfh3kr9vx8u0tjhmfp4edpd9skke5yqw9u2ep8l5mwcuhdqcthr8u98wqsng6thy7wsfm2hut3musppwexfetnc7p46ckcjx2a3zvcxf8hht9yja03ymx5sy9wuhsmvsag676w6jg5yeqw3qzah5r38zpqxk8wzm0vk52ed4qtypnup37x2uj89lftvk4hfskd9wwumxvgawsm5xfum05p7vapjzpwu79k9hr7qf0wckhmkmmdxka8zz5qkaxrjsz3eny3x0vdsn5z9zcm8n2me44a56ej7893uduwv2l3ls7ua09dgqsvuddsgn4c9gn68hplup49rtfht0we6ruwn2sqe53z9sv4zq8924w7fku98fwpujykme2tumda4sqk54july0cd8gsvdx62t7gqjrfmrt6t7ezc8cvrxw99rq72h3qm3rr87fl47d5uw55pvdpfcj7weqqvks75erlpc73d08e2xsatay4vc2ey69wz8648wzqvagsyx4vs4lmnqqqqqqqqqqqwv0uty";
4+
const MINT_VERIFYING_KEY: string = "verifier1qygqqqqqqqqqqqyjvyqqqqqqqqqfvcgqqqqqqqqqar9sqqqqqqqqq282qqqqqqqqqpjexqqqqqqqqqqvqqqqqqqqqqqtj8lxtlmlrtwaffkdwfctwu2ujt795jnnwj0jsgyc57n0lcsqkjy5u04k25gf9wzt45xwaxt9vzsqwj2ad42zuukvjklg8r8t5uxw6sslpsjdetjnx0vpqdwp7rddernk8kdr6av3cpx6e5cd7tu579ucr47qrhz003d2xpwc5rejfp60acvra8edv3qmkp29ukhzv0htt8gnnkfk6afgj2vg9ys9hjl4ww3gszkd2zl2yh8ms0tfxn546w8q20dmj5fcxuyj8vevl9r0pk3fm0y27g5r25z97gjyxrgfdperxh490qxjhcffdfxdc65hvtan5q76ghfpqg3mzzs350s0jlu5pc4k3252nq93dctnjscmy3rgxypswpvucjqxreh6x5ahwfpa7yrl24s5pq2naz6fz0u3v2zhqp3fcx0ycq9ptxtqscnf3g6u8llurjer85g5zyqpwfd599vphjna37cjehn88y36u6hl0tp9r206grcdrssggawcjfcf3vuscy90sks8s0klryzmdgxszagsqqxzly4j92q7psv9a36exzuz7ckkrslcxtnv77vq9hcurdcxq98xvdz0a8pnct7lcr9x8dprsxhdsq2j4t3805e3dztss26h8p8e6q3mzhv0549fw8dktm06tjayvnu5xag8hx9k3hsgvjknyaaawqzcj0wm5nzffuq3tr0pfh0arw5qgsc326sccyn7wz3h0nu7vcz9pu4k39syt248t7hexlapdvffpzq0we245z8l70qk8c5kmqkfwmedmf0dje4kxtc0qntwc9yxl09jhcshytl73ddhuem5lyx9ns6qvcgpspr50m76j4c4aa5wrgrqvm40jl00whc5yajujcqlwmlpdsskfw3se2ghy25pg66wm7z8zxatz25sp6e63w6qr378h0ul7v5udurmc26fkkeqynypurffzz50lmcmqv67vjpqqqqqqqqqqa59tnr";
55
const PROGRAM: string = "import puzzle_arcade_coin_v002.aleo;\nimport puzzle_arcade_ticket_v002.aleo;\n\nprogram puzzle_spinner_v002.aleo;\n\nstruct Result:\n nonce as field;\n tickets as u64;\n\nmapping used_nonces:\n key as field.public;\n value as boolean.public;\n\nfunction spin:\n input r0 as puzzle_arcade_coin_v002.aleo/PuzzleArcadeCoin.record;\n input r1 as Result.public;\n input r2 as signature.private;\n sign.verify r2 aleo196a39wq9q8ea779cmlmff0c9pj2gl4f5e8fhjpvmufe5utuq7y8snz4h2l r1 into r3;\n assert.eq r3 true ;\n is.eq r1.tickets 1000000u64 into r4;\n is.eq r1.tickets 2000000u64 into r5;\n or r4 r5 into r6;\n is.eq r1.tickets 5000000u64 into r7;\n or r6 r7 into r8;\n is.eq r1.tickets 10000000u64 into r9;\n or r8 r9 into r10;\n assert.eq r10 true ;\n call puzzle_arcade_coin_v002.aleo/spend r0 1000000u64 into r11;\n call puzzle_arcade_ticket_v002.aleo/mint r0.owner r1.tickets into r12 r13;\n async spin r13 r1.nonce into r14;\n output r11 as puzzle_arcade_coin_v002.aleo/PuzzleArcadeCoin.record;\n output r12 as puzzle_arcade_ticket_v002.aleo/PuzzleArcadeTicket.record;\n output r14 as puzzle_spinner_v002.aleo/spin.future;\n\nfinalize spin:\n input r0 as puzzle_arcade_ticket_v002.aleo/mint.future;\n input r1 as field.public;\n get.or_use used_nonces[r1] false into r2;\n assert.eq r2 false ;\n set true into used_nonces[r1];\n await r0;\n";
66
const IMPORT_1: string = "program puzzle_arcade_coin_v002.aleo;\n\nrecord PuzzleArcadeCoin:\n owner as address.private;\n amount as u64.private;\n\nfunction mint:\n input r0 as address.public;\n input r1 as u64.public;\n assert.eq self.caller self.signer ;\n assert.eq self.caller aleo196a39wq9q8ea779cmlmff0c9pj2gl4f5e8fhjpvmufe5utuq7y8snz4h2l ;\n cast r0 r1 into r2 as PuzzleArcadeCoin.record;\n output r2 as PuzzleArcadeCoin.record;\n\nfunction spend:\n input r0 as PuzzleArcadeCoin.record;\n input r1 as u64.public;\n gte r0.amount r1 into r2;\n assert.eq r2 true ;\n sub r0.amount r1 into r3;\n cast r0.owner r3 into r4 as PuzzleArcadeCoin.record;\n output r4 as PuzzleArcadeCoin.record;\n";
77
const IMPORT_2: string = "program puzzle_arcade_ticket_v002.aleo;\n\nrecord PuzzleArcadeTicket:\n owner as address.private;\n amount as u64.private;\n\nmapping registry:\n key as address.public;\n value as boolean.public;\n\nfunction add_program_to_registry:\n input r0 as address.private;\n assert.eq self.caller self.signer ;\n assert.eq self.caller aleo196a39wq9q8ea779cmlmff0c9pj2gl4f5e8fhjpvmufe5utuq7y8snz4h2l ;\n async add_program_to_registry r0 into r1;\n output r1 as puzzle_arcade_ticket_v002.aleo/add_program_to_registry.future;\n\nfinalize add_program_to_registry:\n input r0 as address.public;\n set true into registry[r0];\n\nfunction mint:\n input r0 as address.public;\n input r1 as u64.public;\n cast r0 r1 into r2 as PuzzleArcadeTicket.record;\n async mint self.caller into r3;\n output r2 as PuzzleArcadeTicket.record;\n output r3 as puzzle_arcade_ticket_v002.aleo/mint.future;\n\nfinalize mint:\n input r0 as address.public;\n get.or_use registry[r0] false into r1;\n assert.eq r1 true ;\n\nfunction spend:\n input r0 as PuzzleArcadeTicket.record;\n input r1 as u64.public;\n gte r0.amount r1 into r2;\n assert.eq r2 true ;\n sub r0.amount r1 into r3;\n cast r0.owner r3 into r4 as PuzzleArcadeTicket.record;\n output r4 as PuzzleArcadeTicket.record;\n\nfunction join:\n input r0 as PuzzleArcadeTicket.record;\n input r1 as PuzzleArcadeTicket.record;\n gt r0.amount 0u64 into r2;\n assert.eq r2 true ;\n gt r1.amount 0u64 into r3;\n assert.eq r3 true ;\n add r0.amount r1.amount into r4;\n cast self.signer r4 into r5 as PuzzleArcadeTicket.record;\n output r5 as PuzzleArcadeTicket.record;\n\nfunction join3:\n input r0 as PuzzleArcadeTicket.record;\n input r1 as PuzzleArcadeTicket.record;\n input r2 as PuzzleArcadeTicket.record;\n gt r0.amount 0u64 into r3;\n assert.eq r3 true ;\n gt r1.amount 0u64 into r4;\n assert.eq r4 true ;\n gt r2.amount 0u64 into r5;\n assert.eq r5 true ;\n add r0.amount r1.amount into r6;\n add r6 r2.amount into r7;\n cast self.signer r7 into r8 as PuzzleArcadeTicket.record;\n output r8 as PuzzleArcadeTicket.record;\n\nfunction join4:\n input r0 as PuzzleArcadeTicket.record;\n input r1 as PuzzleArcadeTicket.record;\n input r2 as PuzzleArcadeTicket.record;\n input r3 as PuzzleArcadeTicket.record;\n gt r0.amount 0u64 into r4;\n assert.eq r4 true ;\n gt r1.amount 0u64 into r5;\n assert.eq r5 true ;\n gt r2.amount 0u64 into r6;\n assert.eq r6 true ;\n gt r3.amount 0u64 into r7;\n assert.eq r7 true ;\n add r0.amount r1.amount into r8;\n add r8 r2.amount into r9;\n add r9 r3.amount into r10;\n cast self.signer r10 into r11 as PuzzleArcadeTicket.record;\n output r11 as PuzzleArcadeTicket.record;\n\nfunction join5:\n input r0 as PuzzleArcadeTicket.record;\n input r1 as PuzzleArcadeTicket.record;\n input r2 as PuzzleArcadeTicket.record;\n input r3 as PuzzleArcadeTicket.record;\n input r4 as PuzzleArcadeTicket.record;\n gt r0.amount 0u64 into r5;\n assert.eq r5 true ;\n gt r1.amount 0u64 into r6;\n assert.eq r6 true ;\n gt r2.amount 0u64 into r7;\n assert.eq r7 true ;\n gt r3.amount 0u64 into r8;\n assert.eq r8 true ;\n gt r4.amount 0u64 into r9;\n assert.eq r9 true ;\n add r0.amount r1.amount into r10;\n add r10 r2.amount into r11;\n add r11 r3.amount into r12;\n add r12 r4.amount into r13;\n cast self.signer r13 into r14 as PuzzleArcadeTicket.record;\n output r14 as PuzzleArcadeTicket.record;\n";

sdk/tests/program-manager.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ describe('Program Manager', () => {
6666
if (!execution) {
6767
throw new Error("Execution is undefined");
6868
} else {
69-
const verify = verifyFunctionExecution(execution, verifyingKey, program, "spin", imports, importedVerifyingKeys);
69+
const verified = verifyFunctionExecution(execution, verifyingKey, program, "spin", imports, importedVerifyingKeys);
70+
expect(verified).equal(true);
7071
}
7172
}
7273
});

0 commit comments

Comments
 (0)