Skip to content

Commit d6ecbb2

Browse files
committed
Add missing hash prefixes for Mina merkle trees and account hashing
1 parent 2265adc commit d6ecbb2

File tree

3 files changed

+278
-50
lines changed

3 files changed

+278
-50
lines changed

flake.lock

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/bindings/crypto/constants.ts

Lines changed: 218 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,50 @@ let prefixes = {
1818
zkappBodyTestnet: 'TestnetZkappBody****',
1919
accountUpdateCons: 'MinaAcctUpdateCons**',
2020
accountUpdateNode: 'MinaAcctUpdateNode**',
21+
account: 'MinaAccount*********',
2122
zkappMemo: 'MinaZkappMemo*******',
2223
signatureMainnet: 'MinaSignatureMainnet',
2324
signatureTestnet: 'CodaSignature*******',
2425
zkappUri: 'MinaZkappUri********',
2526
deriveTokenId: 'MinaDeriveTokenId***',
2627
sideLoadedVK: 'MinaSideLoadedVk****',
28+
merkleTree: [
29+
'MinaMklTree000******',
30+
'MinaMklTree001******',
31+
'MinaMklTree002******',
32+
'MinaMklTree003******',
33+
'MinaMklTree004******',
34+
'MinaMklTree005******',
35+
'MinaMklTree006******',
36+
'MinaMklTree007******',
37+
'MinaMklTree008******',
38+
'MinaMklTree009******',
39+
'MinaMklTree010******',
40+
'MinaMklTree011******',
41+
'MinaMklTree012******',
42+
'MinaMklTree013******',
43+
'MinaMklTree014******',
44+
'MinaMklTree015******',
45+
'MinaMklTree016******',
46+
'MinaMklTree017******',
47+
'MinaMklTree018******',
48+
'MinaMklTree019******',
49+
'MinaMklTree020******',
50+
'MinaMklTree021******',
51+
'MinaMklTree022******',
52+
'MinaMklTree023******',
53+
'MinaMklTree024******',
54+
'MinaMklTree025******',
55+
'MinaMklTree026******',
56+
'MinaMklTree027******',
57+
'MinaMklTree028******',
58+
'MinaMklTree029******',
59+
'MinaMklTree030******',
60+
'MinaMklTree031******',
61+
'MinaMklTree032******',
62+
'MinaMklTree033******',
63+
'MinaMklTree034******',
64+
],
2765
};
2866
let prefixHashes = {
2967
'CodaReceiptUC*******': [
@@ -181,6 +219,11 @@ let prefixHashes = {
181219
'5852213322332241594845871336918115662219071361771346507406094569679662937607',
182220
'21122827334147180286039671993443893600964526985496742826857975683524856341379',
183221
],
222+
'MinaAccount*********': [
223+
'21547009634669789644192675386133007766042650219024716227935570378579547706642',
224+
'3869977418072959680344087467966431440327948593054069717779845397512987438978',
225+
'17591003611016737523041467644989399067682599282318802410210271366172380277153',
226+
],
184227
'MinaAcctUpdStckFrm**': [
185228
'1223279431820750727612295994589444883292600761079562536688416996919972234987',
186229
'1873141333924103856860857609363983758885824745969813373245393521390926426683',
@@ -256,6 +299,181 @@ let prefixHashes = {
256299
'2903435713642676558047328375873609628346075739786101737671585224825766548393',
257300
'25831764682100331646870313396659195191400312071282528592914032765816857800473',
258301
],
302+
'MinaMklTree000******': [
303+
'8397268313679062041369959431253823194029931472150942928062160502284391094281',
304+
'24767884761786058961844271624848183563027832662151526765582126547150580343286',
305+
'15520161476079946346223794435136450862321049619449569410496603974021593252201',
306+
],
307+
'MinaMklTree001******': [
308+
'12373852158717286419843731546435335382149645091717657472272709119680142489615',
309+
'13564003298811293044133692367818358732199958610489782205113648738971877309993',
310+
'5337043262085238844960907983211959910580364187637104432942748885155441259131',
311+
],
312+
'MinaMklTree002******': [
313+
'15051812550454916172932351641588540140427950452718257831984749683884179659477',
314+
'28383195182051628320454520194171815630993209993126957580698595309541504912011',
315+
'4277691878710291748308373204686233213493236676960343422888557635834505390473',
316+
],
317+
'MinaMklTree003******': [
318+
'6575607106027019342374634884807079936125440627705088279356425488661046931690',
319+
'526224612349672274315011399400566806883023700724847451269254308717318755497',
320+
'4003207773096098875040917033101823533304203798100315080652105415888406223352',
321+
],
322+
'MinaMklTree004******': [
323+
'24963240007694741581504536598446662705874548366155724154174858737449434658477',
324+
'3025643334447992593201368502593388460692780911680818037147500927887943605498',
325+
'17577291971615136405466944877064852825800866932005309965300049909875838083076',
326+
],
327+
'MinaMklTree005******': [
328+
'11625519336224216740433997623839523639549293720171430638848267458495647838261',
329+
'14197827690168556134026805733901328807809311762374992007209622464122527394871',
330+
'24909546339148248646747762490876591451430974658068769530058833648954096301456',
331+
],
332+
'MinaMklTree006******': [
333+
'20496141241824212441237352225390586578798287226209999878764321364949616437960',
334+
'4155590369081069691345914612081918410248481482116023511739814856893535749559',
335+
'25280235590916436988517501437699802702512719636909687680088402215172012465734',
336+
],
337+
'MinaMklTree007******': [
338+
'10298068926909347382132883731000773194312572157088286708479172422210086260995',
339+
'14412862431845107093626156618901720148499279341044373322107997590840338638158',
340+
'18738278293927842151520671915277777211638038066182255367951771829184874598427',
341+
],
342+
'MinaMklTree008******': [
343+
'28632592040294076899303724277173923788865287530305670556694222869732793988004',
344+
'14134336299867672225741933845142646509776280694779004162993533642733541282015',
345+
'28037399410478206961594894531712592987717708818866863005767179190210518183828',
346+
],
347+
'MinaMklTree009******': [
348+
'28322440793030270460307522165077799886504360112793805560745845785393893720792',
349+
'3680990636041985093510751436516424061735738733660682549379374982251492126646',
350+
'7896824890513378496611723513283689788600212799489558200026291296328182622221',
351+
],
352+
'MinaMklTree010******': [
353+
'1478825754917601949043978332728751378179798684550333324122027096810422078645',
354+
'19955446483411426559697602372431961972639316232014088927090908136220581190127',
355+
'22937261898125224845285209761802309482795401959887338893419704202246881755471',
356+
],
357+
'MinaMklTree011******': [
358+
'3025669655948979260146450778546273335663805909503078623788468939889184085065',
359+
'15993847354573651974906488175776892699808218007882158173582011967178852672755',
360+
'6728962834255630075044411175238909144357249010478126045082535701512206099100',
361+
],
362+
'MinaMklTree012******': [
363+
'4677165292950275428044379611682530196143565581952109747023715412205031133122',
364+
'21513899673761352699672092079955767010402365369617552725870531290648558067173',
365+
'5823386711670711136557441661686775439019939642112594994252954772574341048476',
366+
],
367+
'MinaMklTree013******': [
368+
'4137450619603133353679529278148472140169709465994051450094506977210968350741',
369+
'20777878603100506442428451439085789382190751853558867746947762486311334171694',
370+
'27969424486066619381654224557897167292901506145568220790334189049235066613665',
371+
],
372+
'MinaMklTree014******': [
373+
'7462353831830439752760657933641455151117269082035084708085558232378403435178',
374+
'1787244519320006617494344121814759180988090836648336932002915182844592150859',
375+
'7682306724592829108592527309756770669512991144597346665572702844909814248134',
376+
],
377+
'MinaMklTree015******': [
378+
'12849982892801603879697133836957604723592408109307896931233575279534184819695',
379+
'27109175861581264256359157262042451197946512419680432940872313012019233881553',
380+
'13815104575456051899693190094329831931582197916170277640933492195480185919492',
381+
],
382+
'MinaMklTree016******': [
383+
'6644594317394622409746632037064067639690803096240195936787541353591870145229',
384+
'11503303739151441813791807558499068063822922776334355558577285976158398952971',
385+
'9337125879737469121869180649342064063336965090821029559184624332617319461193',
386+
],
387+
'MinaMklTree017******': [
388+
'16104414183099799176590675567463444044322697144434744941137050377134055108298',
389+
'17358877713925634221311853575857896650017793698150943722268889332978652414223',
390+
'7234126597295300967301107936467282549695978865424211233580228640451399578381',
391+
],
392+
'MinaMklTree018******': [
393+
'17030714373021103124485584722642520216144771996601835120521405613273080127695',
394+
'26509950438240323122836106956137067463028271669140328718474012128935499432293',
395+
'9818889955393545543887790759741008577636326202190253983607321653665940190431',
396+
],
397+
'MinaMklTree019******': [
398+
'2270411531086562128123060093007384197084198453711890037231329803621300858719',
399+
'21192327485899043676835708468201514580084416399939158033379551466586666938111',
400+
'16033989106273371309578845565218498940092011786025881685960320194668952032796',
401+
],
402+
'MinaMklTree020******': [
403+
'24198821385641779512630219367024089801694762674171638444197433117564329069692',
404+
'17399215024068249103454892742127252703846599060950907551709080066119343928674',
405+
'6797496550859701647209308902606013125966581359799331801777446461476502619719',
406+
],
407+
'MinaMklTree021******': [
408+
'15260363122901687259348044007172490341059494245069079855983853109440904252201',
409+
'21842382560395200222478365766257143008580907092198481707074219770380221343296',
410+
'19876442709041612567866226719534012751674476537343454328432936802993088542055',
411+
],
412+
'MinaMklTree022******': [
413+
'10163265845587027789352563667609980510844248093141311984644246724416434726269',
414+
'13369107363202464111086659762824590159914641657154062683624651983805608000703',
415+
'259175261445126704640807316250901216510411826120741654939526054707099272571',
416+
],
417+
'MinaMklTree023******': [
418+
'25461412540439968937539737336272713843660028687121793297700520674608023616092',
419+
'10755893000209302712577283259218096030828962406298481790491258793159046533447',
420+
'8866387537961409494137849949417794325538964245944495058838310355591599158861',
421+
],
422+
'MinaMklTree024******': [
423+
'10609060102237336747496673704618826236585593118726760088941627829244492026235',
424+
'6641853671926028367004819143507613339775735721213578606129119394262986889972',
425+
'9176598236393962999771652301435919857376442200780273350376009302991599772639',
426+
],
427+
'MinaMklTree025******': [
428+
'8743110049886111146439413671080530377154252710287926017043338548443560750915',
429+
'18208706295395849104423491533560000448355322792628322573027110778397939938163',
430+
'2334327064299326913052261993744862803507079864714736582625500368508312407812',
431+
],
432+
'MinaMklTree026******': [
433+
'5402818389523730021623225031229797943489634186744070457165886896537635439065',
434+
'3692115584159570188352953749250318597861823862334166671448537184963748474804',
435+
'6395188055016804845192781987569287073677422173381065069566010090740896063910',
436+
],
437+
'MinaMklTree027******': [
438+
'23003820738793392288354347717848227276238967632076473726115713990146403158695',
439+
'1543444712754301638361713310613005045560110448825211620606741790481631721785',
440+
'25595274127363608001744519321284450036093000747866790144244029941400855918414',
441+
],
442+
'MinaMklTree028******': [
443+
'1371490494959146551400088557556657100677286767912367568372761029147549710248',
444+
'9732076291970119043155961140210107725581877672949581468560495192803834949972',
445+
'25880816593631896400945395886425311206250378130295778852027160152013445398428',
446+
],
447+
'MinaMklTree029******': [
448+
'5026966843162353429404633270081859806361860129654116093869475139616692501822',
449+
'14399077456078098196809897303466976088446801284524532382221120510698115179718',
450+
'19173688776848337916142856590169111672948615917148745778746830767290062051975',
451+
],
452+
'MinaMklTree030******': [
453+
'28464430208663194459267079800760461073547794864536029383346306150717295227411',
454+
'28914474904259440678682001469840084119186056954595456498123242804122927256626',
455+
'26203211860047183178968105249611310661035109372798510229151816437426414875870',
456+
],
457+
'MinaMklTree031******': [
458+
'10406444365958122823322321566809921419619436370846100318015238317663537713508',
459+
'19324027736939870254907794657369430751886546066724762856165204189536200502231',
460+
'27910908481683556223061499853457824695327274417786658997051526597466420105059',
461+
],
462+
'MinaMklTree032******': [
463+
'1799233325885428173215288721205732918055309618518578057591098186182492814731',
464+
'9573156486615047627167271384099786785626031045209045718144391096893253044237',
465+
'21011100500969260736212187791129169911216589801480194154796681238630801173303',
466+
],
467+
'MinaMklTree033******': [
468+
'3148460134537259154192780209825660438770489205065565102219398141630842726179',
469+
'10416076901773723654263170420888517757942744365709722512723508899712187445722',
470+
'9749070751601048371099954046702168187173097100747088073519924283619949053060',
471+
],
472+
'MinaMklTree034******': [
473+
'16036605154418397696690227738898261818934103448455753144542686857246049934251',
474+
'13116195790811852398580983299275910910260911290232634459841017490947920635760',
475+
'20914357145334136112903459144371894839046767011252485660349261543687439240515',
476+
],
259477
};
260478
let prefixHashesLegacy = {
261479
'CodaReceiptUC*******': [

src/bindings/ocaml/o1js_constants.ml

Lines changed: 57 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ let field f = `String (Field.to_string f)
1414

1515
let array element array = `List (array |> Array.map ~f:element |> Array.to_list)
1616

17+
let ledger_merkle_tree_depth = 35
18+
1719
let prefixes =
1820
let open Hash_prefixes in
1921
`Assoc
@@ -24,12 +26,17 @@ let prefixes =
2426
; ("zkappBodyTestnet", `String (zkapp_body_testnet :> string))
2527
; ("accountUpdateCons", `String (account_update_cons :> string))
2628
; ("accountUpdateNode", `String (account_update_node :> string))
29+
; ("account", `String (account :> string))
2730
; ("zkappMemo", `String (zkapp_memo :> string))
2831
; ("signatureMainnet", `String (signature_mainnet :> string))
2932
; ("signatureTestnet", `String (signature_testnet :> string))
3033
; ("zkappUri", `String (zkapp_uri :> string))
3134
; ("deriveTokenId", `String (derive_token_id :> string))
3235
; ("sideLoadedVK", `String (side_loaded_vk :> string))
36+
; ( "merkleTree"
37+
, `List
38+
(List.init ledger_merkle_tree_depth ~f:(fun idx ->
39+
`String (merkle_tree idx :> string) ) ) )
3340
]
3441

3542
type hash_prefix_kind = Kimchi | Legacy
@@ -48,53 +55,56 @@ let prefix_hashes =
4855
let open Hash_prefixes in
4956
`Assoc
5057
(List.map ~f:(prefix_hash_entry Kimchi)
51-
[ (receipt_chain_user_command :> string)
52-
; (receipt_chain_zkapp :> string)
53-
; (coinbase :> string)
54-
; (pending_coinbases :> string)
55-
; (coinbase_stack_data :> string)
56-
; (coinbase_stack_state_hash :> string)
57-
; (coinbase_stack :> string)
58-
; (checkpoint_list :> string)
59-
; (merge_snark :> string)
60-
; (base_snark :> string)
61-
; (protocol_state :> string)
62-
; (protocol_state_body :> string)
63-
; (vrf_message :> string)
64-
; (signature_mainnet :> string)
65-
; (signature_testnet :> string)
66-
; (vrf_output :> string)
67-
; (vrf_evaluation :> string)
68-
; (epoch_seed :> string)
69-
; (transition_system_snark :> string)
70-
; (account :> string)
71-
; (side_loaded_vk :> string)
72-
; (zkapp_account :> string)
73-
; (zkapp_payload :> string)
74-
; (zkapp_body_mainnet :> string)
75-
; (zkapp_body_testnet :> string)
76-
; (zkapp_precondition :> string)
77-
; (zkapp_precondition_account :> string)
78-
; (zkapp_precondition_protocol_state :> string)
79-
; (account_update_account_precondition :> string)
80-
; (account_update_cons :> string)
81-
; (account_update_node :> string)
82-
; (account_update_stack_frame :> string)
83-
; (account_update_stack_frame_cons :> string)
84-
; (zkapp_uri :> string)
85-
; (zkapp_event :> string)
86-
; (zkapp_events :> string)
87-
; (zkapp_actions :> string)
88-
; (zkapp_memo :> string)
89-
; (zkapp_test :> string)
90-
; (derive_token_id :> string)
91-
; "CodaReceiptEmpty"
92-
; "MinaZkappEventsEmpty"
93-
; "MinaZkappActionsEmpty"
94-
; "MinaZkappActionStateEmptyElt"
95-
; "CoinbaseStack"
96-
; "PendingCoinbaseMerkleTree"
97-
] )
58+
( [ (receipt_chain_user_command :> string)
59+
; (receipt_chain_zkapp :> string)
60+
; (coinbase :> string)
61+
; (pending_coinbases :> string)
62+
; (coinbase_stack_data :> string)
63+
; (coinbase_stack_state_hash :> string)
64+
; (coinbase_stack :> string)
65+
; (checkpoint_list :> string)
66+
; (merge_snark :> string)
67+
; (base_snark :> string)
68+
; (protocol_state :> string)
69+
; (protocol_state_body :> string)
70+
; (vrf_message :> string)
71+
; (signature_mainnet :> string)
72+
; (signature_testnet :> string)
73+
; (vrf_output :> string)
74+
; (vrf_evaluation :> string)
75+
; (epoch_seed :> string)
76+
; (transition_system_snark :> string)
77+
; (account :> string)
78+
; (side_loaded_vk :> string)
79+
; (zkapp_account :> string)
80+
; (zkapp_payload :> string)
81+
; (zkapp_body_mainnet :> string)
82+
; (zkapp_body_testnet :> string)
83+
; (zkapp_precondition :> string)
84+
; (zkapp_precondition_account :> string)
85+
; (zkapp_precondition_protocol_state :> string)
86+
; (account_update_account_precondition :> string)
87+
; (account_update_cons :> string)
88+
; (account_update_node :> string)
89+
; (account :> string)
90+
; (account_update_stack_frame :> string)
91+
; (account_update_stack_frame_cons :> string)
92+
; (zkapp_uri :> string)
93+
; (zkapp_event :> string)
94+
; (zkapp_events :> string)
95+
; (zkapp_actions :> string)
96+
; (zkapp_memo :> string)
97+
; (zkapp_test :> string)
98+
; (derive_token_id :> string)
99+
; "CodaReceiptEmpty"
100+
; "MinaZkappEventsEmpty"
101+
; "MinaZkappActionsEmpty"
102+
; "MinaZkappActionStateEmptyElt"
103+
; "CoinbaseStack"
104+
; "PendingCoinbaseMerkleTree"
105+
]
106+
@ List.init ledger_merkle_tree_depth ~f:(fun idx ->
107+
(merkle_tree idx :> string) ) ) )
98108

99109
let prefix_hashes_legacy =
100110
let open Hash_prefixes in

0 commit comments

Comments
 (0)