From b525447e2d2e5b22baaaeec262b4449027c08c46 Mon Sep 17 00:00:00 2001 From: Sergio Chouhy Date: Thu, 2 Apr 2026 18:24:11 -0300 Subject: [PATCH] refactor so that indexer checks clock constraints --- artifacts/program_methods/amm.bin | Bin 520828 -> 520784 bytes .../associated_token_account.bin | Bin 450288 -> 450288 bytes .../authenticated_transfer.bin | Bin 385676 -> 385676 bytes artifacts/program_methods/clock.bin | Bin 389660 -> 389660 bytes artifacts/program_methods/pinata.bin | Bin 391888 -> 391888 bytes artifacts/program_methods/pinata_token.bin | Bin 401592 -> 401656 bytes .../privacy_preserving_circuit.bin | Bin 524640 -> 524616 bytes artifacts/program_methods/token.bin | Bin 480148 -> 480128 bytes artifacts/test_program_methods/burner.bin | Bin 386164 -> 386164 bytes .../test_program_methods/chain_caller.bin | Bin 403280 -> 403308 bytes .../test_program_methods/changer_claimer.bin | Bin 388780 -> 388756 bytes artifacts/test_program_methods/claimer.bin | Bin 384792 -> 384792 bytes .../clock_chain_caller.bin | Bin 392016 -> 392028 bytes .../test_program_methods/data_changer.bin | Bin 387588 -> 387588 bytes .../test_program_methods/extra_output.bin | Bin 384784 -> 384784 bytes .../malicious_authorization_changer.bin | Bin 391220 -> 391196 bytes artifacts/test_program_methods/minter.bin | Bin 381488 -> 381488 bytes .../test_program_methods/missing_output.bin | Bin 384856 -> 384856 bytes .../modified_transfer.bin | Bin 384852 -> 384852 bytes .../test_program_methods/nonce_changer.bin | Bin 385440 -> 385440 bytes artifacts/test_program_methods/noop.bin | Bin 384644 -> 384620 bytes .../program_owner_changer.bin | Bin 384784 -> 384780 bytes .../simple_balance_transfer.bin | Bin 383996 -> 383996 bytes .../test_program_methods/validity_window.bin | Bin 387000 -> 387000 bytes .../validity_window_chain_caller.bin | Bin 409192 -> 409192 bytes common/src/transaction.rs | 52 ++++++++-- indexer/core/src/block_store.rs | 23 ++++- programs/clock/core/Cargo.toml | 11 ++ programs/clock/core/src/lib.rs | 49 +++++++++ sequencer/core/src/lib.rs | 96 ++++-------------- 30 files changed, 141 insertions(+), 90 deletions(-) create mode 100644 programs/clock/core/Cargo.toml create mode 100644 programs/clock/core/src/lib.rs diff --git a/artifacts/program_methods/amm.bin b/artifacts/program_methods/amm.bin index 1c7fb30c6f4c9a7c27277ccd9d96568d7a66fe6c..f71d77d0b559a4eda7cab82021b11cf3230702fc 100644 GIT binary patch delta 12616 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 delta 12607 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 delta 824 zcmeycSNg+V>4p}@7N!>F7M3ln%H2Z7mZqkr1{RiPMrLMaCT6Cl=F<%)vZ_yy>1O4? zBDuW`D9(sYVnPq=Uu+W71*frUNSW&89W&V9kEG*f=b%V7^j`n_w=$>PuHEn zT7*sa#u==Y*u=r6ni%0W6{JAQ1gEvrKYV1>+5UPa>pLcF#=oA!S}lMc5z}YyVvQEW zh@a^VyIGy4_X@Eph~sb$NJW}3hDKmIdU%daV*8tUti4zR9q0!QNgQTE6Cs|+grq8* qAz(h;e+g?7HqV2sRlu!}AwJ5_%w+n+NvsO(-b-1xdoN{MY6$@5YS#+@ diff --git a/artifacts/program_methods/authenticated_transfer.bin b/artifacts/program_methods/authenticated_transfer.bin index dcd1b43436db45feafc87a2c25a018a3f4de7f46..aa64dac092c7eacd9747778765dc58dcc63e6750 100644 GIT binary patch delta 76 zcmeAD5W|qbVCZ-nCS8ikZB#bF;IK6QT Ri&XoG?JV0*Y-c^91puMW7`*@h diff --git a/artifacts/program_methods/clock.bin b/artifacts/program_methods/clock.bin index 677c569df5b655d5cba380e317a8a947972135d8..60556fdcc57e5f46e71d79e32a0bf91c8dbfc9d3 100644 GIT binary patch delta 736 zcmbR9M10N@@rD-07N!>FEi5+=2$`9gnp+weTACP{85o;dTAG?ne|>;u9yamBODq~v zCVDwJWx0CBSoDGA&2h?amp{bP&W6Ka_38IduyA0L{CR@qG&b>rI;_IeYmc%hOy@ks zvL2_3yQf$Zu}K0Qt1fL~h|{&xAqq@!D%gJIG|MeUY(^hA%TkR^ydje%c>02KEbQ1M z7wE7gNaD0?I#AkSx|}jA@ALk`9OG=yIahLvX7Mb?WD=gbPudq&*1pu+x#^C?} delta 736 zcmbR9M10N@@rD-07N!>FEi5+=2$`Cj85o(F8=IJz7#o=xnwlF=e|>;u9yamBODq~v zCVDwJWx0CBSoDGA&2h?amp{bP&W6Ka_38IduyA0L{CR@qG&b>rI;_IeYmc%hOy@ks zvL2_3yQf$Zu}K0Qt1fL~h|{&xAqq@!D%gJIG|MeUY(^hA%TkR^ydje%c>02KEbQ1M z7wE7gNaD0?I#AkSx|}jA@ALk`9OG=yIahLvX7Mb?WD=gbPudq&*1pucO#d!b# diff --git a/artifacts/program_methods/pinata.bin b/artifacts/program_methods/pinata.bin index 6fccf4d622ea90d291dd7cd7de27bd1c3b127133..c3d70477ec8e89f73ca3e01c8aa9d41f2a5ffb54 100644 GIT binary patch delta 848 zcmcccRs6zN@rD-07N!>FEiB$Ag)GgDjSLJd3=B<8jV&xJO)V{_$DU-FhD|)+HjBn| z-BT>=I3@E=v2b9KT;73QeEY0REOm@nG)xCtr75A8lT((fhsA-}S6EJC)8%oMB>;=~ z_ElF|gs@uk@hPkL^rzQYii9z3F`T~7g~ew2vg<73Sj?P${yIwxHgVeQ_=#Tw1$+4Aujp$hj&@F KKfKHOUIqX_aN;=t delta 848 zcmcccRs6zN@rD-07N!>FEiB$Ag)EHCO-&4qOpT39fuy;GiTU){lPuG)i3i+f(U`7# ziiI7gWZo$j4lI((JFtsypLL0)juDH7=|HPACG>J~%5wFvI57JP%V})7Jg%|?U=iQG z>MDy6R%<>!Wfho1_d)@yTmSTHuq`kTNmECExz=F3a|Z JcUj-d008Vu;L!j8 diff --git a/artifacts/program_methods/pinata_token.bin b/artifacts/program_methods/pinata_token.bin index b6d979376ac1a7686a45b49e26e6ceb5a0039b0a..22dbc5e88bac066452e5bebc3684bb2bfe92a9f5 100644 GIT binary patch delta 10665 zcmaKxeOOgh*1*@f=Uzp_4+M=A?A!|$niVK27UmZfex`b1rxn;dmUG@Z<-a74p2o8LKiU(WG;P@acBetYeYwbov1 z?S1yG-VxupBfcy_8?!PoNh@D8c)-;VaLP9#nem3i zD_#socfuew{w%x>uC_Rci?ff5RLpcdunf+*0vD?ZMtmz$?y~q4ydCbx1lE>i)QMEN zJhTwbbj>&AJCWSZhHO&v?T2#;1Ja%GL2H7p-(xWikrW{ zMk#O)yw}x#JzPc1v{Ulq@HY4|#XV1m90<$%+7`^F;T#Qjst$+YAF(J)aku}9jK!j1 zimS|1r#)A;2#%^{+?;^Ks`eFd>Rcx_p2yO{S&m_OKZr!pKce^xaN}%8UJI{6-d@f3 z7J9Vz8xjXw$xwhE^#+azb5Ksw(6g%{JC$d?JBj741s`k>sdVv*QzC3Qn~-iM>B3(hiGTstya_PH-E=Tg^V_JsY*bT}a#7 z8x5&cX}h;pWXw=QioIdWUPtko2OP_zexwZaH)O6d?3K;k^xHITO=zB`Z%q5-JUKhe z3GvDnnykxKA&sA&X{pJc2c6kI4UPBczod6mzprKj;ajU}!b%2h=*+EDwx3P2!{d%NnyjDa z#PeFX9F7>iAI_NX@B%Da#eAu1zQ!0$cEc(hJIH+<@C*%+(sRh{)=F=uP3;lQ&fMh` z<#*xYd}^jrG_kEFl~WDLQsJ^YR+FI*J7F0Ur^#@*wNiW>oa5r>LaSS|(=*MZt@Sxt zU=DW5J%$u2JxzEy9Ld9^*wFlF{omSe&GBvYcD`VnD>P}CVMvkcKOWAS#Re*_gmYZ{ zEj%5LR`QI_n#^_aQn(n-RPw*U8)h4_L2>^s>?iV(VGhb-8oYE^uR44O=RE2}Xleoh zi=iB22NJ~3nprEfc}w<{4<=nz{wn6S54|3Fyx5s|8z|z(BO4-2&HJU zgb60FfR$?d;5wHAiQPkMV)ak&Uf-RFdDw}FdiYi5X`#mT>Y>R-n04%Vir`vT1ik~i zQ@Rl@X1)YvnDjJ1jMHE61bcVVBz}QYG7bea*}KSD_|_ys8IDo|Ux%w;Lvb9TW;|j@ zy5gJR1{R9Qi{RahobmsLUGoPetJ{SOtcTqT#9YOexfU1#yBBx>b}z6Wjw)`t$Vi*3 zsR1SA60Wj}$O!lt@-eo;+%p!@Q2LlNU<;hO(2%{#qHp2spdlG*g6_no7qkIF<2{1NA9*mutR{;R6l_rA=?P(P@w|@KzT;2d6A0 z^9Vr8i}A#EE)~r{0V|F>_0?q1a;I`0gCD`5OeOEpkNMyn#k1ha%%5*_tVbr{-ks4& zb{uIQue@y@?W$kz2?j5x#FSBT^zg#n`fxUt;|ax;aKgwePP<@-vilB_9s2 z3x+RMmZHnxRd6JOcfq?|+~x)n)Zw7~9}Tr70f|wXx4Dr4aAbnp;5{6k5nc&5K4-`v z`dbRM%_KzVAFalZfeT&ZpM`s{;6x?=9R3B)x7q8FjsrrS0{Z*GkJ*CyN+wpd=#Bv- z&TpN}+6-60gOuf0+;rg&vBZIR3b``OBOjRKlk|3;;G+gE zdeuqsBXF{dNBL27y;Bk%hd05I67mK--PJ!nz^UNkMetVF__yH=&iK$*-Sk5-1BnZ_ z+w((TT%}L(bjUFKUag<^X|I@luGL?RN{bmvy{Texl^IXM1{}%G&*7BCO;*Z;kgu=4 zF{Wb{VdZKrH$R|R3uX<$_P3n_^{;R?Y_MC_ZqK_J+ZY!~JQL1w&2t8BaPf_|P&^o) zpvG6jHJc1+RGWOotru*fNAk>58TyMcY4gXR$giA}tQu~BBVjme99JDUa?orvKNzmR zs09~~Bx*i&j^Iz=YB)|Qa2_sO=7j6OQAEw>&iU{>d~7%0p~|0Mz!miG!Fan6jMgN2 zxueG&aDv0rWGxLP42USY56=J0*^sMlqjER{qyX+u|17n@tMG>|J`VS!|1c%*IVN<= zD1Ek;Yi=H;uh7Q6G?r4h&yX_Z(N;KS{TEG_NXdk&|KT{`7`zLfuF@#?b_{mubBnq9 zHa+M`dn$)AUT4TI<+!tOIvfeCTgT&wGRMwR^X75-L0>R-D(ij6rCE)un2!C8hSVuO z02i!u#&x}iD;{iRkLBQec%6%1f=8Y)WRDtu7|wN#Pretu;H2>Q4stIIkI)d=vGt+N zx%v-dZ=b@tZIbLesOIs>S~%k@}Q%TO0VH?Ipc{7^z=!kd1|7* z(Hr~-KRog?{#EmInm|GS#kr$TgNwv3*(#u_;H{d!=`MU0&Su?swa$P$Sl1;lg;QPf zkKqJQ)A*ot%q4=E+zck7|479{ zL-VHT8#@RQnz_nxP_LP0-|6~Yda&O#Y7&A-s4jp@mpYf!Kf%?mfnUzV)6xE>n^a;U zp$n&~^;W}`u8@kKMW`^oEpjUrCd1wszm$ag_m-mB#H{OxGvVb7=&1($1iJ>vfH~$Z z1=NbEd6p+){ZbH~Niy(6b_ajcchqz65?0!&K@vcyZUu}fa9X0Uk<2w$H9X-`DKYpmi_Q<*R?+JK|H|tj>@3B;PoyKy=-=z zt#6A?E2qembn!QRDD}kfTsTFovjjcr5*+?03*qE4u8p<_a@g)kG9x+xk~@kJ9y#~#PC~A zBy55=yzN9nuf;@0mES&|tZK3p-tY%U)4!UVH*+tEX|+U?_i3+D8op+BtJdeV^!T1O z*KE^Aw+fC}$`&2-i$r`@N^(e`scK|Djr?0bwJ&VRz~!7%uFxofuig+4pITrCyy|DR zSoJS>hPry*FNWfnU*pnW{B~}jxH;`3eXK9|dsf-OEV#pVp-)xB`w;>l5(%E_wPgP5$Z{|1kWa!$EnM2Gcd*9Q={fK_;U1$1Xm)g3Be0*K7r^ zF4N>a7vB$Wfg=XJ4%fKGe-9V74yc-AzWq17LrZ@vd{xse&~)}y!6``rX;8j<#yt8D z{cn1(!t!CyfYhr!`zKu9ox6(Sl;<@0-DYR;nQ$Q-P|CgmpMoRat%py;5o3C<;!@|5 z&xg-A@}aVYhI6hC=iqg4Bu@se#yjw}YQZPqBQAMhjX8h6KHC@U^eoZxjx+F=HJn)) zfu?8~71HGRy8*jYTM4!TzTrJAL3NA&4(DyhDn*O1O@&3ljN zH)-1Q<{ysg+gfO!oA=b|8+Gj-vtvCscx{^b!3q5bpSCx&`A7XlPxABTghu^MEjVu< zkLhoOPvs8m$Tx6fARHJLm+j{X`PJ}Smc=*yi#O*2L#j~3;$8f}QhC22IVf&%&svc) ze9(e?JNo4BaLPK~wx~pwyvt!;a{m}E!EjJ!eZ_)r7`BV74h?WloZo)!wD|KQJOv;1 z+ZS1jJ^X-@w=?`$X7L~4+z-Q_5*F{^_miye!U=A%?^}_w6Mm^u3jP`{9~r(lcHjpG zdB0AiBs*Xq|JHyLaC&z5G0fsxer}k)j8{-)@pTO-MCseE_>b_a;f?`;QzAvDsW{5w z0(kC0P8V{~ns5GTk>uBSt+Nyg(lD%%A5cukg`dC)8^a%t)_}{-i0rx5kbJe^S~&Ih zd@L!hgwIXpH!sCs!`Zx!Rwz#YiJzqM_*Fo8;32r2El5Tlv=(@shUFu|uND>`f-8mx z>~qTEwr54+Mg{Bv7N0-I&jep`7$}Q+aZYBjCGl#(CGaj3j#B&;+~|sl?!4FMM+L0k z)PlB4X3&se6&^L9t_4LK4a*fj5k)yZV2DA5uoUYH9J6t++2};l~4u$H8-n zfqXUo6L`Ik@~jkY-J1DY2Bebp?FqAKs6EIQM2C4}Tkfiy++&!)isB>i&Mi*V7q%l% zsb^Vgfh}+{Sz~>TSPFD$&-d>p$ACY>buLbh;rQH)ob~MiPts6&DtsrkCioNF*ou0f zIB(n$I$2-P|#I3?iz>(*%D&fmbVzhVYJ?Wgp*Q}HgM2>AyN%j(vU~gqo5u2cf<9t z_1B&(xDU>E$xp&H)QyqK!s`cPAwk>}bnvRPetQXPi@${P2)bm|KV}H^Kdw*s+GKS& zLv+ORER@QE7GHleUrvLZy70oS$WQwvPszWA^Qaq&u; z^`AcimvcBJD|rA{xhv&Q!7=3NNki7DpjdmmCJT22xLsIV;E``&_i1)`Dp@kZsci9g zQ<&nNv`XTWV}ompCct}KTng`Xaqvt59b)}bqBMMP#)WD28SGB8qM77vXTPnWW#Q;T zO0{dkL$J}#Z~qiz$zPboRgKfNNO|lBxUqjAau@~W^n;|)NWaWg9d3UJmvYz?sx)lJ zNO$Rc0Cp?%Ib4xM-mCE~=Me)v{F0z}0GyXf8Y%-{hcmB=7|i~EO~c+ar_xMKHlo@`*Cai&14e;AP!&nQRh4;`u zl9mtR)uNli4;q&I_wYKnRE?is!r3wygCghuaT*Q`aWuYR5tZ#$UTjn?p9$C97?54c z;y=J!;Ygi04DU=2U(>Ax15apD(u?C+xqJjQ*nOX6a2*K36@0H1s|9z#@$nqjEyD`j@hmQNUE%8BsFZ+|sUZGf zHI*+l&{PShuR&odZ>tT;LLS(C-Y56PrKR>x>(eK#Uq-+5)IO={eN%g-_YG;sy(yiq zD=eHp>$>LT<|nn@mRj>e%g%WV&2fjlHNNKM*3?~kU3~7)j$3@OX2~({H5XaHl81JG z%EsZFUFBqhu*07Ml~;96z{t)wz<7MG|YQ>Xu=8a zU0s{;QeT-eX>`BdQ<6vKgtQo6La6S9cW(0w*c;jJqSo0#bag^{>cxAQ_5bybyvQzF z)+O}mbMe7ejM5|H5a$-QZnwsWtjuLP2|tE@_uo!cyXr(QJ1}zw`_#mt5lS sKVB@zB{k~7^7Z4F8I4X_I!=?6SZYpDp@~vz&2!G(mvejv^~WF2{#bjhwbxpE zpMC3hBvtH4DoxhnmR`|G%bq`E;Sg=(5TAb9O#4h^&-9SQiHPR&$y&G|#*jI%&!@@A zLn1Yv{!LXPC+PRzyD$RaJm*MGtI7KUtBeDh(E^j3yc_#*vKU-|A-7qG9*dy zbU3yx2C4an;WcoD%_c7H@r}sJdtDFQ3um>*#Y#Z;Z$-*H7Jm$HhX)|Q-m=y;BIOCSx97I2D&Od6sw(D!>3@^B#>n{0@o_VCmX>^c2C zl>&WhMLzY8hs%kXR;qskybW%l_%vJ<>F@7YkbaUqqTx<8;1&2R7G)~_8Xkv5BNP`{ zb!U9PX=2_~&Aj_U(nhsE1*aCcu~C3w`7>O@dZBm>ew^aPF)$bSIdTmG|X>a1%1`B%1av>_#0MA>xFB)QPt<{~%~jwZw=I312|<5_sShch%y>VIoUrE67e zti);dHb2T=&aH;TMb`VBT%l`{pJhldrN9=rY`h_4zBAztQnmQDXid>%2fWh5y#tz5 zz|j)%3T$M%CE*HdV?aObGmqof3fimGI$t%{WasUM#Hw{(X`x9u+s~#s;gQ%dA&=s&ILxjV429yJ5K(9tk&BipM2rlI7uX;pNTQ>F(CC=K6hF zs5i^WR73KWo<(p89L>Wct;4fo^)IwLtnn@NRsnN2wf6Kqh7_vtZQ2tMGuS}Ili(~5 zzXnf%V^#kdxWL0hJ769>NcBGrubXMeI>l$<3i?My*pwlc6WI({s|NfP&U(m=(C^`V z52qz-l6@cPrN$S-m2hX}ziY41q>Ay;jVy)-J?v)AdvMMDh8%VLpRP$lM-=c37@wla z0tDQ~0(PpE!8INQ4yA-ww9!BM-L&pR%xpIz-h^L6P7^h+7G4jtjw7c}4^65)5m*R& zQ+g9T4|&PTu&q6vHh|(_rrcd*Lk40@C&31+Id<3%mfw%xk#F$Zoi} zm|VhDb`fdTO_LM!k98F0o^d@5iym<&%!X6v8uF>K=rwq_X-I|=@HL#l_=o^au0V3$ zqwf5wE0Kr7&OL$!^RHt3TsLOsr?Ta2opWefN0Rg({pOzulMVCSII4!@9&zWq$DEkQ z+`G`wG)+q3YNg{|xZrWtR66?lU<31`2kMRR9*?|5aFxrZ?54qR8|1RSnr!j#I5=e? znMVNHUOWhAQ_&0*u;chZKTQUgxRvvj{+i6eph2qt1iS^#QrvTZCU+n|*WorkNy5E5 zV>>x)nIU*$8eZAXbIrR3<5g})-H3d`_>;z=x=u?)qiy|!W>A*b`xlyub} zGms4o{41R6u-_;92Zh^)^sVM1Twc2x!KxM| zUQ6Qq$<3?>;c|Gevix7LcZ-s)Bhx)wHWBvEcVpxa@M(`?hu~%OE5m&9xHZ0$-pXeV zFmTapZi>GMclL0LAd0SaOTr*{0~{?O_rg;=;}61_9=<+Ata#=Z!0X)k;jg;rN8&HE zz1Zy?!~g86-{spk!0O*k|0SSJwfgneSH-05y@7gD&f+RFGKXqnz|rhn3a32YV5KC4 z1O4^&@%w4c@HF3My-%}d`VhC^ZTCQ32oHx1cFW%FzBghU^P-7Y1ZR2VSnz2N{{-hT zKUvM6HH-sigCX^5lm7*KHqj>?thx++ReW0dSQJ_8o@BG&({MBld)~rT2aX;zGpzSV z>Z>$!$S9)bBliei0$0EZN`WnK=@K_wFThFr-SZ)PH05(2-=WH%&%-Mj--G#1A%J5` zTs;zh%bn2WyJZ3m#Y~7QS_bES;%>-Mc#b6iMd3Y_{i}52=|2Jd8 z!$#{fwYJvA(fYI6xZH7+!p{sTRUZ8SUi;66OQie^R~&R5@CuIG15Z(D)b>^k_UPlc zmXFa*U)qgXl<^uv_9(|~hST9_U7oC}Zo$&dqT{%SbeGyh9C9qtsF-P!@)E}cWhdC zW48XoxcIwRw`C{i4yySAG6BvwM>$b`TL8yA=jyc!u0hP@O0O8~Dq}uzft~@GWYta7 z*Za*U@xz=8_*cm}0GIsg-qC}%QP3qQ!&N}dgtutHhP&`)csT1Osddi5HJ<)q6WCu* z{~|cq*D&9d{WK(b1|(+VFb1qcpq;XRhvj+K!7V3ZC>#yYv2Z=(6O@9F!LfdqH^4@~ z<>PRAlc20|dY8Els=deRKSiIUn{~gVCeaZM)eHtMTIgO<=fV}9iOcWB)3L#Zo75pV z8%|a0-I~wWizlQG!iCJgjD9;6+Rxwwiw{b1WPD%gGn1J09C1Z(2@`s$2^Fwsf}ERa z4a=ieOzx0}C)xxhFCt0Kz{6Vy8@{8);fV#Tv{Ut8cOO^#<*o}%c({kR!<8%?ElQe| zc#pnHpZr__3VFuuho>Y4rAo<-yI+&RZG*BvCCdx&KF_uO5M0RoL}gI&0~9llho)GG zGxcq;X}3+L$X*_7_)z)=Pi4a?YMmQcw_TulEJ2(TmL+lQ@b3-m{0;@=?ul74)vjMH0weUIp@a6Hn=5qW`2}-4Mc&=6SCf82iw#Tej%Jq-@L)tw?48P?@ z!UOQSx7|png%^|uo#V-_CPN>m|7BOxh1SN6+)Ls=pnWUtl}f`rt4oD`UsKwvf z^xrl!n=NFEP6S1wK3ha`NT{J|G}C^N^}J*4uma)=h&S;JeB$p@y?>CcaAP6q3`*cQ;$d4(fY# z^LCV}>J^e&wP#_ttUGrV#mAr11fCTeA-7GXv&ERJZwAIA;r=S&Bb~tE`Y@tA*Q?aVS=VWS`>kuzzz% zjz`A(By3GRqHpuvP(m7%Wrn1X4m+Q^K0&G2>MHg&+!^km1YPqaAChqN8uDqGHSMT= zou*}5FCWvlHPMz@Q)~3~y4J}`tmOu;1+Di_>OTau72%C%^;NzvU$Abg*Wc94`#<9` z{f)?}+?pLZ2G@rofnoFFLp&kB7J19EIpcHQobwDRM-iKMeZiCRbVIUG+~%&;B0up# z3-aw4klk>~8s4_3M0S7tm%QZuEmDGEQzn1Kf^Qg(i|hf%;jDz9^V(_idq;T+J{EK? zvNoTBb9P1^%WQs$A5^k;MLs2Lev98vGQW!?xXoYj^F`^&pp+{G@A;OWFGfW!j;;B@ zL6+5s6b}zM$G<({12}zno!2^BA(Mut_56Thxh`A+C$EouINB3Fgb&lToSS=4I7abb;CfF?d=2NugzVqc zOvfcDJTxcUg-1?99x#JcspDG_fkBnE%P6WyzbfZOJRRnNX%?C;O{i7 z#f2$~XSdU2EPI@!xB|}b@HyC9CnhCP!2TKez_u6IpUjp#Xf$lugpMfuJr@QQguQ>m zIbUm-&Wn{jVJZy?9v2^nOV;r-p;F+N9v8cCQcvYV)o=eAQhtQXl!}poaOFF^U#k9f za3P$fxI=Gl*|BCPC#vK54I_t!vOi*hac)DxCVETZmGwy4b~U z!m+hnYL&%xa1G@8jn=MZ$A)%d+bsQ(H5BG)E+fJJm9 z@hp_ef;N8#R}6ORLe5R}p9xBi>VFx|p>9N@K4$pETa*W9P=umj!`8~Hx4<)0mH za&J5Dy0qsAER0kpM}aADd5fTPp4$_4!g*9WLs`&$Bnyx=1xlgC@S^u4zs%U<({JXF z!>P0CuZF#qvceoop8jaa8Wj{1ZYB43gt%SUTi}ydVee_SdNNsZvs>8?!aI}Pv^p}4 zd$?zd68Ho;;NfBLrye$~JO;E0O0m)~^`48|s0^51MA~(Y8qEH`Ov9&XZl(Jcu3-S_=?EyA zg}{`c^9f^H^fP=EE>!|&&!(_+4>pwQ3-AdzJ=#A9gL)FQ%Ami&%X%vX?DPK+4O^}W zilHW4!&hG=F17R4K73BVqfoF!^>60mt#%qW8Wl5R=5gs92Q$G|aD&ar8>Ggchm!`m zXG`WI{3r%z)9;-BB{UqMAzJ$n!iAn7%XpMMq`yoFd;(r}ZP57{#$IqUe1P%Mv`odT zh1W$MH0=J#@EUlLnx9_G*)jx!qUZlw8mew^HLiy{-^7cJs^#71vnAJrWRJ4=Zg>kE ztrM%^o#~Nly1igET-=A_S-HF!HQ0NfcpZ)$&+7ai!S%ahQ&4uQ1!~}W3eRe#Kpxlc zdGGQ>bXmm3r{Ve!@mR|UKk_86v7Zry%EJ9{nTNYA;;eB1pSA9vkvbr)|A4fC{W4P12lnHCc-$#}O4612`LkwR z`MK|@ zH`@mWSRKFhFZad&kMiNPT>rJ-{P1`(4Uu;fd${(;AyL`DEj3eRI;kqOtMzUbi1` z$z^OU!oQyKH*I9D)!|3~s75yqq1`(4yR`C={)|hlx~b0pMx%0fobg}Ph$41?b!(q? zDREABc*faAjR-pymY?-sI&v>9_@jjZBiy^b@c>0|qsrO=8a~(fBx}r1{-v*4U#t#1 Ps%h=5J6{a^@zMVR;k5i9 diff --git a/artifacts/program_methods/privacy_preserving_circuit.bin b/artifacts/program_methods/privacy_preserving_circuit.bin index e846c2f907e3abea00c394fdf8fc28d0cf0db225..b2c09b79b896bcb0fc64b5c5d8bca27eaba92d69 100644 GIT binary patch delta 12233 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

N2Y2l*h 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 diff --git a/artifacts/test_program_methods/burner.bin b/artifacts/test_program_methods/burner.bin index b4b961c4bd1f43f86c62b51848fbd4dc428f0d51..a740bdb85b2e6b499d9973aca6c6c6277f15286c 100644 GIT binary patch delta 8688 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 VqDR?N3Zmy~S{wVj>Cvw}`TxYtb=&{| delta 8688 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 U0Xz5Qzzj|6V86LO@WSl>06{W*7ytkO delta 9839 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 P$~CQt{o(4+UuOLm14w5I diff --git a/artifacts/test_program_methods/changer_claimer.bin b/artifacts/test_program_methods/changer_claimer.bin index fb94bf44deb4e1a75092cb3d255251b3369cfcd3..a130510bdf979e79360b292ed66f3205beef7728 100644 GIT binary patch delta 9898 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 delta 9864 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 Qe}Se=vUV=?zw-3|0t%7wEC2ui delta 9148 zcmZ{pdwdkdvVd!Lb|pd(5?%oU%q-y@F@%J-5(G3#6vRX#21t-7NQ8iZAdy7{MMXgl zxE#U5TTpW)Uf~Sh%lUyC1ic&uFTRdZ0`fNU5C~B@a=+Q_$qe@=@YmN}U0qdORo%0x zsBX5ey4m7HZPP2Q+G=N?8Zdu=wsnB7`=LXCQ=2XCbE7q-0^-_fAVpWr6YsVh4q$iE|5uQiL__KGPn{08z{%l!Drxlic`;t#A1Lm{}_BTJSsBZ z*e6>UXoYC-imYsN9(Et=LSy!E(mbGLyPM6&w0N7?E!N7LIq%DVp+**V&cz>x5= z6TU0m_8@ka;TWZMA!6hDx)~F5g$!ZdIgqB-u9Lo@T4>Zok-S?BS*ZL!569%Y2cK3g zk^=WsdZ)t%>}2NO;ZhG@f=~1}WRD&_;MXn@&w+-lWWAlaH`n0aAVV5P_Zuq}4CD9F8O{Dnt+7pzy@Int)!JA;`01JQT#P4tqu)@0dlkcD}w1K#8 zV!T4_vsN_OGQ^NrwNIg@NfqbfSB@UQ*rf$Q>7ux)uE{*uaXc4J8td|<0Q2ZeQTo=` z(PSswG0O4MC`OYL4EU7+FNF)w_^uReWZ$fz*sF$nvhR^$h9oI|jeTN<8!|{$$eY(| za?^uurJaI%z;%_KUFvF*;o+k2uCpBUAgjqa-(=0K!tL=nh7>6?)7bt3+*tAF;SIm| z7HKoA^z*(3fzYuV*nOlS)6{g=2AbsNaeRtr!Q(w#4$p+0sK#;5^E^BnUJUnB>o>tW zM;TJ8I6h93z07AtIV5=uBp|R!34Ck|jC1qz`gp?S;Viglv?0Yxeg#|sC#mq|Hqs=! z&^@*l@D?}*dArm8080U#G7|nYV%=Di5|2P}YfUb*;eBesd+<2s6BJjs4$t`2_gTSH zZ8Rx;$jygOVDq7%T&Lvf8Jcu}*(b8`U2q}=>g3-d*jv#1;l=1nMBXl>Z>njZ#n!=S?!Cmr~&4#Ilf&D$t}CT=J;9{t~6P5`(v?_0P4_q>PiY zbKXvomF+okICA${AN=8a%pZE6EJ+yerqS>4G}u}518WkekcLX<=nk5!hbtAIg6B);HRLvoCPd7ceBb<)Ie1*8b>H;ux(E}91C;6b!A0|RWQ za_GMav)#7Y;YRA_;b5dt?fD6?f&OeIUkdMl^CR5ICx7jV!b`zO9%(+moU;b|^_zU5 z-19H#ho?BGwmrwlG))>8kFEqR<^|0Kn@PELU!!EaP zhM}<25k|lZVW)#U3-|M^KL;mzcqAQYsb~F*@H}^YcwjyKP+S6O;f;FlaC)phM!Uya z7OP(gXveH&@%pNmZo_(0d#l)6)x|Ej=5KCo#`n>r@uXTOWm&kerM@{Xo8ctS@Yhzm zM18XsdWIg5x5m9puS1;y8=RGW)?4~&GK_UjOsnAxkDgxrh_Q#CfHPR{H04Y1>UD zAMX7dJCN#t8!HEHhD&C+$vOu<`+<8qd<*Z~VaQAs&&Gq;2l>uwpB%UbcIK?u6qB$U7er6T=%)^~qY;YSLX_ zq}_AqcJ}|oki{yXnZ#vodF}I2X2Xkjx&C*!gT4xnQ$-Yp4|vR(Z(U5&L%wbw-^nHQ zogsTM%Rcx%Lo|tn9XFnZYo4g}TXtI;dg=!Qq2VLguY%{YTKC;Z+&^wemEx8UkU%Bw zx>4|6*sdM>99O{$J$wjGI>GmkT5sl&P@eSc=X;5AAnmbyPk&=YMj?dKn_|t{q@cMP)rv7R1sel z{~UPSY4>%$7S1|j2*(hK;~9AAS@-qP=PvH8C*3?Rfy+JfyWs@S{PlP99ChbIlFfj4 z1YU)c&bbf9AwzMTc_+Xx!)IY9f%n7vkmo**7^n~9wegF~>2S??mmh{>FB-Bwav;1e zsu?I_AWfan{CiLU=Q|ZNoEI+}Hdm1x0lxw}mHQg(H8|zot9keTeR@iaynKC}ANFE=<#+q6C z1@#4-C#ICE`5oxF>~TaM!tl9nKnB2N%sVaVX>0mWeU)C&=wa;f$YsO*{H9bWy|2It z0aNCwT4^z!RPwy&^WZ$zH&On)4tMkf=%_XQUVTSwx3B3jxpmFjZ={LDAqDQJ_W20= z%Imot6E4ix55~oDK8;(MlA+S$B`c>u-%%$t10YTwR|P&_ZVhv3oFmXERPva zksr(3GOt?bZ=~IL=A(HLkfVgVs!IW7zzRHYTP4*p74liBo+IgMT zWQ9J)7nk{jCT}plN7;AMn*X{!xelMy7uV|tV+vlF&G~$7iZ}tA!yWsxS=%w5ql={c z%akg0Fms;fPV?l&4!A)$C;_Eko}mz{IA0|nW2L{Nj|qehqvuWJa5r+7w3|!4!-z$A zJp8tY--b&)@~7c>aDtLgc?!Qg^N+!sJ?sAtzvFU9eq~^lXF*>Kf7ca|Ve`1#JzO!L z4=I?qL=0^GtS0L`oDZ*o9f#J!WuEm%;iMW<{iI?o*`mkSF*AwI+(yCLXY@w6vSCmz zsA$czcKx^hxgPop#w=|Sl(Xto_QAuN@eonm=6Ow?U+r!_7S4u)%GmYr_plS)Pz!8tYd3Yi0ltGUdi4J_D+He-U*E8ST%Gs$;4utA2;7PZ} zU01!3CrJAsEiPIXgI?0)iw(iZ=dAt2coq)6fg{Y@yayh%kq;=vbzdgc*9Ik5?VANB zt_#XO#V^BE@Uf`8Pxe`ZKh}5n2GlPhf~i57rZ(OPU*6;z*8NHP-J3yap%iV02g1%9 zBhDK9iQZq+Ua{tXs)w%AKD7e-_076=i?#Itk8|x?tMDuROhC&C=Tz|4ZE0Ps(1-d$ zgMJiQO_}aQZ9K=Z08Z*1{e{Qoo=5ma@u(>VZNlc=aN2v(pP+0Wb(CLtKQkifoUEIXpEzy#!kXgpl51g`v>4gSXvLwS__he*-MXveb^u7nqy z!9ykgIh;v|9lrC5Nd9?K5~zGz{yBK&MN?KQ`Cag~&u}1CBxDOD`>7o~9EO1HVFA2y zQ|%eaNx1ZMw3XZPJpvSGgJ9%YZS!(Cd7bM(|Ldp$53hmq*1Pk19o{+zO#8EgKN+AP zm4W;tX5_79^8~o;k{S73)aGW_(>;0xBbTDh@6_cjaF|O{d3XU{O@#I;5Bt``0pyDm ze+PGjlNCQ4i@x#pZ&;ydh~8#kd+TV`+8Z2&^9gZBwO~no6nsob75^{X(8En{z+g|3 z&4P>V4=E*oI-YJd)~G$wsf{uCdm>8yMIw;dghcrv`n!y6z+AX$qk9BeQ@#vV7_vnv zY;Im1;#sga#4YJh3-J<{U*QCsr9?zEI5>{2GZMVVvqxNnZ@xl>Em$m3wWSH z+$xE;@-8<5W8n*&=}NW!LpWxe+ZP75b3z<-@DupR4?N$L!wuWxz&0Z!+f`#JWS}t$ zRAZ3toq71IcFSrOyqYp|3_jC^M%^cBupP0=WbSLKAW~NFnH%Y!$WvUA2)~qq!LU=- zucs5y@{nus;2t#Cuz|R6ZiEMp{4%0=G+aT1us2dAYv5vDZuY;1RLvW3rDs01C*7`h zP_mTAli+fa+)2WJ!bPD|W@HcBgQmTRKpQ+#3x>gagV7g-J>RP@FE%3Lbh1fsaaXso ze19|ZY>n;S-p+Ou zUcfg>u96>|p-BdJgP|OF3qDKVC|2|J22fR7qFE~*^)<_=9BEG6V@5XZx&T&kwG+X+X&E9+2Z%Am2MXjB}T zbA-!Ag~(FRz-|O`J=|*yozG{=TxHO^`B#@+T*1|4_a0msV@3?L9eQaj7m!Dv@gP<7 z@95t@?D_9Q3~cEUz4h&ZuH$GV9fGyDU-|^fsxKi_9xQ>kko85XEbo5gYJO#Xf*Ut+J#Np+GQ+L=BDkD+swt9W)$oO;d?u*% zvmd3CHlw#Iu7R`IaGK&dlX$+vX;BVI4Fe5ZkhRLAw8@l3qH91NytK0^hElK{&LpI< zuzgugAT&uBxKPdanaT%Pjwxj-XZFEcGGG?i5l(*$Mqf0^IsYdaILp8|rC=AF-NmfU z>iW~j0l1@@9|33eag*$Q_yF_E)qI`lIFM{c{`g>T*at2}-YLs>;j9~@@9xO`f0%(1 z1{Np1O2ZZEx@vyuMRV_9~B$z|&x-Pna{&Pahek z^cTRr4BqNQJaYfPz$cjZ0n%mm)%W?Q@Zt@ol&cLMYzTc(uo&JPmm|fV&q^MYLk4vHb||Y!Z~kT8F5>_80khkfojxiv-v&)9VkjaAK33b(rN0Ht~uhEP>d>Zy#ZKf=&G5QI;-j z;u~#PY^JX~#v+ML^2#xmSV4@yo&NqZOOy!KP~UJItKX*w)Um`#;R&;cL9D{l7hGlG zpMK;7cBgCnZBX27?tC<5BS76pH~alVuD|@aO~? aJ-z2N_N4akG>c68k<%>OkDO+8kOKfJ^Wd8R delta 831 zcmZpHGGxNKS9q z$-+6^Y8Oks5T?567k09!OPlNET_dUpxfko%`;|E#l8L>!!{W87&FbgL($ytY4&R`R-IKmQ$P5kx|mM7T6FCJy- z!Y01ahQ((3%3~~&*d(tUV~NEk{^2r9qzKkv-*6nO=cfnMvBXK?3ABentisb5TxH>( ze&hspw}4_?#?Tax8B!0K6Y$xw<|NBJY`y`fB||(0gB2L#QSjgtivcc^WeiR5=mZ%( Zz2`LcwD#~ci%k2G(=6MMoMv^90|4I*-KPKm diff --git a/artifacts/test_program_methods/extra_output.bin b/artifacts/test_program_methods/extra_output.bin index 792c1225d2e17d9cb1fdfa131167617f73e9d106..1d682ec3005519f694af6bd6bc0a35eae7a6bc79 100644 GIT binary patch delta 743 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 diff --git a/artifacts/test_program_methods/minter.bin b/artifacts/test_program_methods/minter.bin index f0d9674e436267466a4b001468c3cb13b16203b6..ffd29461c131eb11a69370968fe15f2704181110 100644 GIT binary patch delta 154 zcmdn6M0~>%@rD-07N!>FEiB%Pg-r}COwA3AOpQzpEltc!%uS6ArpGO2X~rh8{mWvO o0w!!S(-jY~icjxb#%@rD-07N!>FEiB%Pg-y*3j7FEi5-T2pO208JHSbS{hlH8Cn{e7?@bJzuv&I{q+XcTs;7i C3J{3^ delta 46 zcmcbyPyEI{@rD-07N!>FEi5-T2$`CjTN+xJ7#SNI8CzHw8yT3kzuv&I{q+XcTs;7i CT@Z)> diff --git a/artifacts/test_program_methods/modified_transfer.bin b/artifacts/test_program_methods/modified_transfer.bin index 64c53aa2fb6b886003d92c9e5faf4776626d81bd..b44b123327e88cc5ee871c263f5a15c524316b9a 100644 GIT binary patch delta 8785 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 a>Et|G5mmX)$;gW?(zGeg2l>&jKlT4`--!+Y delta 8784 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 diff --git a/artifacts/test_program_methods/nonce_changer.bin b/artifacts/test_program_methods/nonce_changer.bin index 6a2b96b078db3e5e26da68894cb81cd0460d7177..e006fc75ca45d20b1ef550e2f2e12e29826dae82 100644 GIT binary patch delta 46 zcmZ2*SbV`@@rD-07N!>FEiBcWgiI~XjSP(p%`AFEiBcWge(jU&CCpp3{5S~3@t6qjSNiNdpEIc@7=^ItPcQg C`3|xG diff --git a/artifacts/test_program_methods/noop.bin b/artifacts/test_program_methods/noop.bin index d6e3e89e7572afadee8832e3dddaa69b79dcf37c..da811f60db6fbb2a652df8b130ca66aeb140e39f 100644 GIT binary patch delta 9653 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 KFf8V!r~U)go>;#C diff --git a/artifacts/test_program_methods/program_owner_changer.bin b/artifacts/test_program_methods/program_owner_changer.bin index 6c5bcf06aeee55dce46f184d205fe6a7ba2a352a..3963873e65dd9d7ee3f10f700c6b351cbaa61eda 100644 GIT binary patch delta 8797 zcmZ9SdstOf+Q8qv4+t8j7#0@hK1W7PQ9;o#u{3GMMoDrAF-ft=oPwk;owU?V4yBnE zcsp1)X*uQBLuuu-eah?PG*sTcq{b3M9m-2MTA8A$eZRfW+U)JXU%z#E*Lz#5=iX4~oqAjUiQ9gaNzI=Nw})dDn}F{e6!+x@HSWpkdFTr8I|qvSa`m#e>I%k(-78m z47?0iwe*|1{PtTc@@ZTH=lD4BJCR~|in6d0uIqutN?`0!`foC1qvBk+#;4FFxC#T? z(T~M)>oJix;Hzv-r@^FQhi||(xCa{ErzU8}MPd+`rFgiNy-&YQ(+b0j>hyJK72k_A z_ckO^>39E6B12(UpV4PT*4*Ves3KhQh5l<=Tbk==j#X0s4{qPr5CgUoA^R+WqQ9-` zA8)PvQXj3EuQrLq_A_LmS}x#iekvkKYL|I!K_Ovko5Ar)t48 zmYXrckYc6gOgQRJLlP7xSS1bm)F^Xf2TjsPqK0bExJHvr@FB%J;2F7IzO_owqz-o7 zb0=IqinMjjg3r+Jx^pXBagR4%@2JTtk4?FQhDM*j`EZ#xKt6+W?=mE_RU}XJYc=UX zd<+z{_vMOCERgHv!MoRMl8L-b)qe&qgL4(%e1j%kkYDKVHM&er(j?_*NYb5#DA{72 zY}EJY=IEhlfR zug2d7Zy49&c~c&vVd=ewPjW2&a#4nIIjn)+C|8<81g0oS{PVJe)FtOjY~| zoIBC0@x9w=QUDvydZs4JX_)03U~lGf*iHS(@L#a#PA1r)X!@`IG4WR}@ILI9XOMe- z508dh6bKJGt`FBf49`BU@0m2cwI-!wLqZNXD_QWLU@UR?JS=u`iZ2I*+u7Wqg zb~4)Xj=)Vt-myF?T9an_M@9NgSx!S11J}0mH z9$9d43^5<)CEXYBLO2%rcE}QA>7QaqBmUF%{+j%ehFsr(8n})H^VEb>a3=kUiu+k7 zPwRbkvmNJH+)Nf$=fMJa?=&nYB(~*6LCV!*)Faiuv>S$$P|g+ahNs;dlADy=cHNl+ z+n%=-&4E|>xDw9w*p$&daQ*m@#H$IF@G969un%6tf#-6^o2VNoIF#|Wf{Wq4jJHE+ zFIWd>`sQETQ(jv`ezH%_Y;bbpaKZ4i4=bbe-4(8B%$B-GypX1@Z>I%l$=*B}$%=6Ah-ya|tZ$P>^6w`P2nTA(+EFZc1I@I}}?D%OXyy9B0^ z2b;SDUexaHh97D_Fr-2`bP+uC{g&IKY=d(w&;H_}Bt2ZDHc>si(WlO**2-YO)YGoI zo%+4Yke$kJCcJZ}XU1o6{llIaaaMM6pds1}-^F^nxh<=C#u&`sZ%C8kLO7$?oA)Zb z0k-#!T|64$X+G}u2afKq45?G|C&N8_^Vh;raM#HE4swEq5j3~~O9^l888~(KzeZ72 zxvQi)`QL%sn@wCE2>vE3hug%pR^u`)}~C^8ZV4 z@*(eXeiV*7Y{&?ePw83Y^%3vo4-VeJ8eC_WT^KT4L3XXu+GdXk(c58LN_CH8OFT%zIo%vaf~*3m(bPlY1qy{J20K@r3Cvjsv6E>{?+u` zJD~xt{=ty4$oPKJJe~=@`}^PmE`3Z$Q4{9Cz6rA3%D#n4G3k))hcjFlB7$U79yR?( z@BMTgen^6MsQ#$?@QcroJK)4p&mqskRrI?R>7Q2T%)l#wN%<4d$2V>TeDP=AlS=NF z@cy%gl&h^WaUu@M_O70*;VkBNRQ4Q!+xr~U)9O4lur)3%X*Bv=^sa{M@yqF7THcYI zYiyxQ9%qN!W(OML^N3g7)j^@)IsX6Lx|AK*8e?ub&c?nzC>cu4!&I>O9fB4|%5+6QHXl6U%k-huJKmiJ`JL+p>o-SK)qDWRc; z26spHnR4Y7ycEu%zq9hoJ61_vz>JN5yo95xYf$2%B8v2}E=>r$7_A+&78L~=ZixSp zdE2srQmg#k&6-^n=&NhbSZ~b@?1>t7aH=N8;$X`=I-?Xrmjqk#;C(o$GU%L4cEYxP zj7LbBr{_p(^Sr=BJ$@1GFVJ4A^y_2wUJ#fX!-INdWuPH;(w_ezKD9v+*I|F+h;0bA zT%UHrr#}lylM2j7GdWUyc@g!bCg+|FNwkuG2b}Uvu;n$DZ5@0mFfrQf{)8r#^Fo5T z&IWoIu7DBi@LTW_AD@Po`o{O?%rA!BN;(~W!PmbL4*TZ+0x$R2lv`1Jo^L`KyuuqG z%bwEYB_9W8lc+F$aTI(2e%{A_g`b06gO0*gzWF`p*aa-8DvEW>>OhB>;3B*;G&>4u_-r?(i7yiWSzg>Q&VW)3E##~N**xd$C!R2sowcr+bgRg&rb*UyW zHQF3wa-*sA<_#`qyCjChPzFB-f3Pg%dSu7994EeXk9#rxno_`Aq>T{>DP-wkZlhmCn04N?sUl?jCZEO}qb7IF<3qk@2SJ4SW#gd}*&H?1t;taHUoPjYE8&Ta7?c z!xpd&Ub86ZTo7zN2bYqesS@d5d03>7y0cAj*CTv)Oo_bI?eRk!`JnoOYXH$Nr{VPL zkw=C-VEIvz^t8yG(dK8U@U;lAE40mxaG}pbJx_?_R~eG440s#f@S-=q3EqD+=zM^* z=lA}e@03w&Fzi?suXAa%mSMYF_Z^Zz$phJ70?!V7#?vL zkErnpX9>w}k6(n1Z-bJkLbwyoK%rHPH*EoJ&hgE18y3VxEPU)2k!e_%!vH%6UWW@_ zGGx74pwC4VbgKxh|9S2ZYwyMBe|p#^Xu zIgqOslulHYl#rYCG8r}wvujx2@j&wR9P4|7LUnQY5qJtQbaUd#8+cG45YI-&Cvlr2 zMD{j{=kr@qXYSb+F;@MP;0?IATJd(c_J1QE%xnYB!sTxoVs46x2poAMb%_CPj87OG z*X<*9%%1Rt??FG2-Wj=~3g-W_|Pkz}jTU>O2 zhSXWq0TsiilbNuGBvT&w9A33I^5M!>sLgM9DlIZ(gA(`}e9Y&8MtHA}yLUsr{j^o% zKktr*UNpTJ9!WtU1K0$P1q*s}!pt`yVG@@E*!fVR_%(P3A;5voF8L15=O$n*Sc0YN*0Oe`o;x$S+X+kHB>l9(Nb)hE0Ex^cjfDwnpx<_5$} z^n+ef{s8+cThE(`Id7DFwcr9+{%Sa9sXhM`yq>yIs`_&>G*b*pZ;fiWkb%o#JFD#p zuMgrgf$uDsb1PY2$LmogZRcT{jI74xtP{^grv$Fw<#}}SXtrgqU`u7Jh6~Q~eM))s zja=$~0x@%A_%%g5)5mf5aA5d&b{?0!Gm%%7t>D?QSMGwm{3~}sGra18;V5X2|9l)d z=9BlJc`y6+ROCCbJs>omYfO*GEx_i-;nGf_mgDrvLXs*47b*+>1y7@}6sujcWYU!i z{S5oJ<=FcPVHDd^%{QN?VMCjsP){6}Z->wD{wP-===%Uk(<&%siXVYXdEdB&<{h{^ zhFheXKez~au{;~p_-*j4)|7U|Lmp(`vz{vDrhG(084c;~fXO7`Rb;KQXeOL;wWq*p zI5#OMh8nLuMAqZdIM_a{-i90FBM&g!gXSN3ko_(w>s8Kld>D`QgPG7li2svz0|GOZ zz`w)m;UdLt9wA3M2V1gw3|tKNQ2o_#93d%Gd>LL!f0g1<_&Vjrpd36Xs5+7I+sfrSPm$wZ0Em z)r9Jx%(^;~Qy;(;Z{o4G5gtCB%J~6F$ofvwt)L!U-o(KrI+cm@CeqKukn|C2%eGflT{n61K~Fl#zrnA*oO< z*8a?6meQM{La+*6gUf1^g;mzBF9X}Yx~BiY0U7-V@;@MLKw8FtLH+s-v{tW=%6&V0 WdZ8X=U7Qd-L({_6^up+u=lnmiOo@pA delta 8803 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 diff --git a/artifacts/test_program_methods/validity_window_chain_caller.bin b/artifacts/test_program_methods/validity_window_chain_caller.bin index f574f82bb82afbff321a4b5552e0e8cda906e1ed..a7661f03113d0cae030f774e5df7cc86b63031e2 100644 GIT binary patch delta 757 zcmaFyN8-gFiG~)&7N!>FEi6BO3Y(c5n;2VI8k?FMSy-AHSelzyPUrc>G7p=?wBIc1 zGKS`QIXPvydWKkZ0u>lw)41LFHwy<3Hks*;TC8Hz*Riv5ZLecz^<&1S25had30`Z} zWsLE-YkDFJtNQjHZdP%e7EHg($I5}t_US+PSWin}@hn4pl%K_P0ZvxQ?O*s=ofxrd z{?E#4JiSJc)e)QQ_6vfn)!6mL3A4sv(=z?NI%}i|wy>W*QJN)T`UFK*Htf<1OIhNi zaEIaai6*S+SZz$;Vin)MSCmx%yGtL4vFc;f2Z}XmGu#$}FEi6BO3LBdlTbdbISQr}_S{hoITACS}P3QT=G7p=?wBIc1 zGKS`QIXPvydWKkZ0u>lw)41LFHwy<3Hks*;TC8Hz*Riv5ZLecz^<&1S25had30`Z} zWsLE-YkDFJtNQjHZdP%e7EHg($I5}t_US+PSWin}@hn4pl%K_P0ZvxQ?O*s=ofxrd z{?E#4JiSJc)e)QQ_6vfn)!6mL3A4sv(=z?NI%}i|wy>W*QJN)T`UFK*Htf<1OIhNi zaEIaai6*S+SZz$;Vin)MSCmx%yGtL4vFc;f2Z}XmGu#$} Result { + let diff = match self { + Self::Public(tx) => { + ValidatedStateDiff::from_public_transaction(tx, state, block_id, timestamp) + } + Self::PrivacyPreserving(tx) => ValidatedStateDiff::from_privacy_preserving_transaction( + tx, state, block_id, timestamp, + ), + Self::ProgramDeployment(tx) => { + ValidatedStateDiff::from_program_deployment_transaction(tx, state) + } + }?; + + let public_diff = diff.public_diff(); + let touches_clock = nssa::CLOCK_PROGRAM_ACCOUNT_IDS.iter().any(|id| { + public_diff + .get(id) + .is_some_and(|post| *post != state.get_account_by_id(*id)) + }); + if touches_clock { + return Err(nssa::error::NssaError::InvalidInput( + "Transaction modifies system clock accounts".into(), + )); + } + + Ok(diff) + } + + /// Validates the transaction against the current state, rejects modifications to clock + /// system accounts, and applies the resulting diff to the state. pub fn execute_check_on_state( self, state: &mut V03State, block_id: BlockId, timestamp: Timestamp, ) -> Result { - match &self { - Self::Public(tx) => state.transition_from_public_transaction(tx, block_id, timestamp), - Self::PrivacyPreserving(tx) => { - state.transition_from_privacy_preserving_transaction(tx, block_id, timestamp) - } - Self::ProgramDeployment(tx) => state.transition_from_program_deployment_transaction(tx), - } - .inspect_err(|err| warn!("Error at transition {err:#?}"))?; - + let diff = self + .validate_on_state(state, block_id, timestamp) + .inspect_err(|err| warn!("Error at transition {err:#?}"))?; + state.apply_state_diff(diff); Ok(self) } } diff --git a/indexer/core/src/block_store.rs b/indexer/core/src/block_store.rs index bd1992f7..73636790 100644 --- a/indexer/core/src/block_store.rs +++ b/indexer/core/src/block_store.rs @@ -122,7 +122,18 @@ impl IndexerStore { { let mut state_guard = self.current_state.write().await; - for transaction in &block.body.transactions { + let (clock_tx, user_txs) = block + .body + .transactions + .split_last() + .ok_or_else(|| anyhow::anyhow!("Block has no transactions"))?; + + anyhow::ensure!( + *clock_tx == NSSATransaction::clock_invocation(block.header.timestamp), + "Last transaction in block must be the clock invocation for the block timestamp" + ); + + for transaction in user_txs { transaction .clone() .transaction_stateless_check()? @@ -132,6 +143,16 @@ impl IndexerStore { block.header.timestamp, )?; } + + // Apply the clock invocation directly (it is expected to modify clock accounts). + let NSSATransaction::Public(clock_public_tx) = clock_tx else { + anyhow::bail!("Clock invocation must be a public transaction"); + }; + state_guard.transition_from_public_transaction( + clock_public_tx, + block.header.block_id, + block.header.timestamp, + )?; } // ToDo: Currently we are fetching only finalized blocks diff --git a/programs/clock/core/Cargo.toml b/programs/clock/core/Cargo.toml new file mode 100644 index 00000000..28acdb48 --- /dev/null +++ b/programs/clock/core/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "clock_core" +version = "0.1.0" +edition = "2024" +license = { workspace = true } + +[lints] +workspace = true + +[dependencies] +nssa_core.workspace = true diff --git a/programs/clock/core/src/lib.rs b/programs/clock/core/src/lib.rs new file mode 100644 index 00000000..33a08c50 --- /dev/null +++ b/programs/clock/core/src/lib.rs @@ -0,0 +1,49 @@ +//! Core data structures and constants for the Clock Program. + +use nssa_core::{Timestamp, account::AccountId}; + +/// The instruction type for the Clock Program. The sequencer passes the current block timestamp. +pub type Instruction = Timestamp; + +pub const CLOCK_01_PROGRAM_ACCOUNT_ID: AccountId = + AccountId::new(*b"/LEZ/ClockProgramAccount/0000001"); + +pub const CLOCK_10_PROGRAM_ACCOUNT_ID: AccountId = + AccountId::new(*b"/LEZ/ClockProgramAccount/0000010"); + +pub const CLOCK_50_PROGRAM_ACCOUNT_ID: AccountId = + AccountId::new(*b"/LEZ/ClockProgramAccount/0000050"); + +/// All clock program account ID int the order expected by the clock program +pub const CLOCK_PROGRAM_ACCOUNT_IDS: [AccountId; 3] = [ + CLOCK_01_PROGRAM_ACCOUNT_ID, + CLOCK_10_PROGRAM_ACCOUNT_ID, + CLOCK_50_PROGRAM_ACCOUNT_ID, +]; + +/// The data stored in a clock account: `[block_id: u64 LE | timestamp: u64 LE]`. +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub struct ClockAccountData { + pub block_id: u64, + pub timestamp: Timestamp, +} + +impl ClockAccountData { + #[must_use] + pub fn to_bytes(self) -> [u8; 16] { + let mut data = [0_u8; 16]; + data[..8].copy_from_slice(&self.block_id.to_le_bytes()); + data[8..].copy_from_slice(&self.timestamp.to_le_bytes()); + data + } + + #[must_use] + pub fn from_bytes(bytes: &[u8; 16]) -> Self { + let block_id = u64::from_le_bytes(bytes[..8].try_into().unwrap()); + let timestamp = u64::from_le_bytes(bytes[8..].try_into().unwrap()); + Self { + block_id, + timestamp, + } + } +} diff --git a/sequencer/core/src/lib.rs b/sequencer/core/src/lib.rs index be4906ee..9d4c71c8 100644 --- a/sequencer/core/src/lib.rs +++ b/sequencer/core/src/lib.rs @@ -15,8 +15,7 @@ use logos_blockchain_key_management_system_service::keys::{ED25519_SECRET_KEY_SI use mempool::{MemPool, MemPoolHandle}; #[cfg(feature = "mock")] pub use mock::SequencerCoreWithMockClients; -use nssa::{V03State, ValidatedStateDiff}; -use nssa_core::{BlockId, Timestamp}; +use nssa::V03State; pub use storage::error::DbError; use testnet_initial_state::initial_state; @@ -164,28 +163,6 @@ impl SequencerCore Result { - match &tx { - NSSATransaction::Public(tx) => self - .state - .transition_from_public_transaction(tx, block_id, timestamp), - NSSATransaction::PrivacyPreserving(tx) => self - .state - .transition_from_privacy_preserving_transaction(tx, block_id, timestamp), - NSSATransaction::ProgramDeployment(tx) => self - .state - .transition_from_program_deployment_transaction(tx), - } - .inspect_err(|err| warn!("Error at transition {err:#?}"))?; - - Ok(tx) - } - pub async fn produce_new_block(&mut self) -> Result { let (tx, _msg_id) = self .produce_new_block_with_mempool_transactions() @@ -204,30 +181,6 @@ impl SequencerCore Result { - match transaction { - NSSATransaction::Public(tx) => { - ValidatedStateDiff::from_public_transaction(tx, &self.state, block_id, timestamp) - } - NSSATransaction::PrivacyPreserving(tx) => { - ValidatedStateDiff::from_privacy_preserving_transaction( - tx, - &self.state, - block_id, - timestamp, - ) - } - NSSATransaction::ProgramDeployment(tx) => { - ValidatedStateDiff::from_program_deployment_transaction(tx, &self.state) - } - } - } - /// Produces new block from transactions in mempool and packs it into a `SignedMantleTx`. pub fn produce_new_block_with_mempool_transactions( &mut self, @@ -249,33 +202,15 @@ impl SequencerCore { - let touches_system = clock_accounts_pre.iter().any(|(id, pre)| { - diff.public_diff().get(id).is_some_and(|post| post != pre) - }); - if touches_system { - warn!( - "Dropping transaction from mempool: user transactions may not modify the system clock account" - ); - continue; - } - diff - } + Ok(diff) => diff, Err(err) => { error!( "Transaction with hash {tx_hash} failed execution check with error: {err:#?}, skipping it", @@ -319,13 +254,17 @@ impl SequencerCore tx, + _ => unreachable!("clock_invocation always returns Public"), + }, new_block_height, new_block_timestamp, ) - .context("Clock transaction failed \u{2014} aborting block production")?; + .context("Clock transaction failed. Aborting block production.")?; valid_transactions.push(clock_nssa_tx); let hashable_data = HashableBlockData { @@ -454,8 +393,6 @@ mod tests { use common::{test_utils::sequencer_sign_key_for_testing, transaction::NSSATransaction}; use logos_blockchain_core::mantle::ops::channel::ChannelId; use mempool::MemPoolHandle; - - use testnet_initial_state::{initial_accounts, initial_pub_accounts_private_keys}; use crate::{ @@ -582,7 +519,7 @@ mod tests { let tx = tx.transaction_stateless_check().unwrap(); // Signature is not from sender. Execution fails - let result = sequencer.execute_check_transaction_on_state(tx, 0, 0); + let result = tx.execute_check_on_state(&mut sequencer.state, 0, 0); assert!(matches!( result, @@ -608,7 +545,9 @@ mod tests { // Passed pre-check assert!(result.is_ok()); - let result = sequencer.execute_check_transaction_on_state(result.unwrap(), 0, 0); + let result = result + .unwrap() + .execute_check_on_state(&mut sequencer.state, 0, 0); let is_failed_at_balance_mismatch = matches!( result.err().unwrap(), nssa::error::NssaError::ProgramExecutionFailed(_) @@ -630,8 +569,7 @@ mod tests { acc1, 0, acc2, 100, &sign_key1, ); - sequencer - .execute_check_transaction_on_state(tx, 0, 0) + tx.execute_check_on_state(&mut sequencer.state, 0, 0) .unwrap(); let bal_from = sequencer.state.get_account_by_id(acc1).balance;