{"type":"deploy","id":"at1x9uurx3j309g9pal3fgsdqlvtywmlm0wzxupayk9ug2e0ude8gyqmgdmgz","owner":{"address":"aleo1z8fuly2un2qq8nms8njdxksjaw8rg60ftg3gn465230vw4ddtgpq32qa05","signature":"sign1xgh33cs8tm37n4c94y6rkxnexygmptv9nnsav256sh4vk6sh0vqhssmnxq5gfkjh8u6lv5d3mfmfkqh9zduly0myhv33zj0ny2m2kqkry2kgmw837xvupmshtps5d6qnajz5gdhqujfx46ts3a6x63q8p9ltjavyzm4kcdmk4lvhfn49tk9veysluf0j0f46uuq7pranh2tqkqxnxz6"},"deployment":{"edition":0,"program":"import credits.aleo;\n\nprogram geopredict_private_v3.aleo;\n\nrecord Bet:\n    owner as address.private;\n    market_id as field.private;\n    position as u8.private;\n    amount as u64.private;\n\nrecord WinProof:\n    owner as address.private;\n    amount_won as u64.private;\n    proof_hash as field.private;\n\nstruct MarketTotals:\n    total_yes as u64;\n    total_no as u64;\n    outcome as u8;\n\nmapping market_totals:\n    key as field.public;\n    value as MarketTotals.public;\n\nmapping admin_set:\n    key as u8.public;\n    value as address.public;\n\nfunction place_bet:\n    input r0 as credits.aleo/credits.record;\n    input r1 as field.public;\n    input r2 as u8.private;\n    input r3 as u64.private;\n    assert.eq r0.owner self.signer;\n    is.eq r2 1u8 into r4;\n    is.eq r2 2u8 into r5;\n    or r4 r5 into r6;\n    assert.eq r6 true;\n    gt r3 0u64 into r7;\n    assert.eq r7 true;\n    call credits.aleo/transfer_private_to_public r0 geopredict_private_v3.aleo r3 into r8 r9;\n    cast self.signer r1 r2 r3 into r10 as Bet.record;\n    async place_bet r1 r2 r3 r9 into r11;\n    output r10 as Bet.record;\n    output r8 as credits.aleo/credits.record;\n    output r11 as geopredict_private_v3.aleo/place_bet.future;\n\nfinalize place_bet:\n    input r0 as field.public;\n    input r1 as u8.public;\n    input r2 as u64.public;\n    input r3 as credits.aleo/transfer_private_to_public.future;\n    await r3;\n    cast 0u64 0u64 0u8 into r4 as MarketTotals;\n    get.or_use market_totals[r0] r4 into r5;\n    assert.eq r5.outcome 0u8;\n    is.eq r1 1u8 into r6;\n    add r5.total_yes r2 into r7;\n    ternary r6 r7 r5.total_yes into r8;\n    is.eq r1 2u8 into r9;\n    add r5.total_no r2 into r10;\n    ternary r9 r10 r5.total_no into r11;\n    cast r8 r11 0u8 into r12 as MarketTotals;\n    set r12 into market_totals[r0];\n\nfunction resolve_market:\n    input r0 as field.public;\n    input r1 as u8.public;\n    is.eq r1 1u8 into r2;\n    is.eq r1 2u8 into r3;\n    or r2 r3 into r4;\n    assert.eq r4 true;\n    async resolve_market self.caller r0 r1 into r5;\n    output r5 as geopredict_private_v3.aleo/resolve_market.future;\n\nfinalize resolve_market:\n    input r0 as address.public;\n    input r1 as field.public;\n    input r2 as u8.public;\n    get admin_set[0u8] into r3;\n    assert.eq r0 r3;\n    get market_totals[r1] into r4;\n    assert.eq r4.outcome 0u8;\n    cast r4.total_yes r4.total_no r2 into r5 as MarketTotals;\n    set r5 into market_totals[r1];\n\nfunction claim_winnings:\n    input r0 as Bet.record;\n    input r1 as u8.public;\n    input r2 as u64.public;\n    input r3 as field.private;\n    assert.eq self.signer r0.owner;\n    is.eq r1 1u8 into r4;\n    is.eq r1 2u8 into r5;\n    or r4 r5 into r6;\n    assert.eq r6 true;\n    assert.eq r0.position r1;\n    gte r2 r0.amount into r7;\n    assert.eq r7 true;\n    hash.bhp256 r0.owner into r8 as field;\n    add r8 r0.market_id into r9;\n    add r9 r3 into r10;\n    hash.bhp256 r10 into r11 as field;\n    call credits.aleo/transfer_public_to_private r0.owner r2 into r12 r13;\n    cast r0.owner r2 r11 into r14 as WinProof.record;\n    async claim_winnings r0.market_id r1 r0.amount r2 r13 into r15;\n    output r14 as WinProof.record;\n    output r12 as credits.aleo/credits.record;\n    output r15 as geopredict_private_v3.aleo/claim_winnings.future;\n\nfinalize claim_winnings:\n    input r0 as field.public;\n    input r1 as u8.public;\n    input r2 as u64.public;\n    input r3 as u64.public;\n    input r4 as credits.aleo/transfer_public_to_private.future;\n    get market_totals[r0] into r5;\n    assert.eq r5.outcome r1;\n    is.eq r1 1u8 into r6;\n    ternary r6 r5.total_yes r5.total_no into r7;\n    ternary r6 r5.total_no r5.total_yes into r8;\n    gt r7 0u64 into r9;\n    assert.eq r9 true;\n    mul r2 r8 into r10;\n    div r10 r7 into r11;\n    add r2 r11 into r12;\n    assert.eq r3 r12;\n    await r4;\n\nconstructor:\n    set program_owner into admin_set[0u8];\n","verifying_keys":[["place_bet",["verifier1qysqqqqqqqqqqqzwugqqqqqqqqqx0csqqqqqqqqqammszqqqqqqqpdz2qgqqqqqqqq44xqgqqqqqqqqvqqqqqqqqqqq2glk9k8chzs5wg37az6uhkgf2yuf6jrlnrzj9lgm6a8s25nfrxke77wcfhz3u72dsm2hq3lcv66ypw9d6gwrc8fam60fqrw27aqlfsj7el9pj52zprnkxz9u0m8644rnkrqff494249at64pht9kvz28qqt5mxs7q3msc5fm53jmze9rt4uarf666ztsefw9mp2wtujkynw0d0wgfg2f7s4gmwm672utudlq0sz4k8dpj5eldkreuamyaqzpph8jsmlsevjc3cxgulfte65tlst9a6g7rwsvykjhk707nx5nz4xkydqxyzrcth9aqprafz76k3vwhxguguks9wlemmtnx79qy7vz4z3mdt7nntff7q0069nv3yg06vkdrpwqt6fqvdafvtpnpk0ym2hrx2pcw75am57gj6k8ceuuecq3c866zdn0ezs52hqn67dmd5r8kq9kt7tuqgxm4xsjathj29jfsuzrqp6wgdhjcrcejh94jv0p833dnq8crtpgz6rvnttala9dgwshn35ekahccqmcq9n0xrfg06grydrx07qws9wun3pqqfzj29ush3tee7z7ys4gyuny9gg0de0n5h5s9mszyj2pdqqdfv3cnmnjy3h06rf06fzmdpwyg2g7ppeddhmm90dlpnda7s5vtq0khd672ed2z7e88p7386chpfqvtag4hezfxgdk7ngvdnzcqavwjdruzvpfrpt3rvqjuaaduxrkcwfg968x7gf3a8j5xcl2vdh4xszqxjf20fye53tjrhtynu23c5ksqj5kv9p0c4dxslnna644y5pgzh9r4eyn5huxlpfn6sryg9jj9gr5qqmgra8tx33k0mchnc7fjwc3xmy9hjt4yrg7d9qp0e45yv046heahg7j860zyh6w90nrus5vghh3spky7k0lnm0efwjnd9p6qysxc75826al0ls6pxvupw6k04nnf3kl84g4qzqqqqqqqqty04ln","certificate1qyqsqqqqqqqqqqqwh7254d7jj69653jklwaxzqtkdgtl8n9t8qapsspu6slaextmcf6gu4lt0rdujj3grm46nd0jwkqqq327qxz"]],["resolve_market",["verifier1qygqqqqqqqqqqq839uqqqqqqqqqwwtcqqqqqqqqq3eksqqqqqqqqq4vnqqqqqqqqqqw5zqqqqqqqqqqvqqqqqqqqqqq8htn2fzcwhlhccsqz3w622ek0a8vqlx6g93t770p0075kagqdtaadmdfgrttcu5xuggged4pfck5pvcp5dnku2dxrx9rhdx7k40nd5fwxdyh5l2jzu7ppxlz4k8hnusrnvnpn87cu05aqljhy2s8veptczyxeckrxywxua6w4j9p2khnmrkcu2wpl8xz3vjjc48ngf5ad93vansfz87d28ucc4v6ppyqlwv92sry3tkh8h3gm09z3kvghxtu8jap4uzxwevxdhtujckxx5sgctw7nxway40pvkh876p7awmeq4muz5qqdwa2jjg4qm8zg0lnauvltjkuwftxuvyexcxvefjp9ud6jugfky8hpx77q3t2a5m379fzxdytyvwq6qcgc8ykpez4le66wn3ut9yud2rjzj4jewl57pp5yujdj4gq95awx5pfexd4pherj0qsdqntwequpt5q6r7p449lz68kef292whkuxqzsd32yemgtdqytk4e4l6vz6t8zl4v09xusas0yjtyd4cfk7pssrr6l2qdt7hsatqcjz3qguvyzqrkuc5dulx66d98u046ev3qr0hwcfchc5nptfm05fpfkusgqkdy3qxpa64wupppx09599ty9xrpmej7lc2cq2mvd8jd9zcsavd7y9tp7dj286hscsap2x03pam45t9h8mq2j48gjvzefacy6t896l6lrurtcc8hjveh0exzcfe04t5uldwsvjsc079dpnrh93ww4j6g7pk8h6uqqs4y3a5kve9dvq9gv7q59zws9ladlqmwy6fh4fqj465yjx9w5zkfyuet8ftmhfdu3t97dte394qsq9cjdzunuhlp0jnlmy3azc3vja0sfpag227f40t78uny8qatxag8kzdxtxprh9s3sdj3s5ymkml0cpg8ycuf0uq974k59gmpxw84xhupffucmu2w3v5f0nedmfjc9v0ztkezqqqqqqqqqqsmllv7","certificate1qyqsqqqqqqqqqq9pgat69w6cj5mggdk572ujlxnvs4hdhr3nq6e25x8acmfgj0knumr943z7v4ndmgwhf94grkz2rgqqqe6z3fw"]],["claim_winnings",["verifier1qysqqqqqqqqqqqq4zgqsqqqqqqqyqyspqqqqqqqqm9qqyqqqqqqqq9y9qgqqqqqqqq6fuqgqqqqqqqqvqqqqqqqqqqqq8zfdcvvfkxe0yvm2nfl40e8jsh2w6s2v0wjl4gf7pcf5jjrcl3r6k54rww6rxlr4zlqjvjepcj5qzttuy8e6crqzehwddtk3fdk6jthk47vrv7xk30pshrgevxmm90c9ddewyhyy4xzt67eytqam59tcznr575pm5uxz4um2slwa5htzj6edunhzxh5upvmeml7qrys8mf8fe68llmerdv5znunwenu6cs84qqdxvxqwlmnzrdadkywxg4t4l8nj5psqaa0fqaqw0fzd4vrg7v5dh0q3x8p9jhlr4nr8a6amw734dqdyjgh8ens8y54cwk8307hhx7qegcclgc377mmkm42dqjwy59w4cp9elxzu4px2udzky9gr30l7r7qrp9hgfhgfnkhzyp3l5v83r0y0zszl2u5jyxcwnea4epn8z8sqhvveg4xd6gkh66fercfxtmmr9aqq5zlxda87w4fux2lxn57wsva5y5h43c6qmpalra860ywvkvpnfu5atyvje8ss7pff9q098qxyulmcpwaemgkp709v0xl7upejhkhkutn5v7fvyqsqjpg090qtsm2j02a48rrerem26asvz6ya6d3wrdv0syxa8p7pw64n6syq5npqfq8dg7m2ml98d4t7t9qc5s48gkr7dyepfmpggytc9xs4mdamuk27usp4fqfw933frucfmnghjpwlhevjxjf8kfw4vqxxd6skzve7d88g470nkz9tug8c7nmn2wns8ke8spy96vq2guyfngkn25zs7e9px60w52j5lg3cewxd8n7uryxp0kue2ynffuvn30mse2f4zdv4rwjm3yvrz8qqtdjsx6cq4myumel5m903n6603hc0n55yzjq2t9s9nrvetq4s4sg4xau7t392m6354etle3q2qk0sq6vpd862k8cvvrrczhnuzjej305m672z0vqmxjmuk6ru8eu7v4ydq94qzqqqqqqqqkxdrpd","certificate1qyqsqqqqqqqqqq86xjp842djtg4kd5ygn6ynftqxqyf7dc556kg2nyst4uccctye2zue4hnqchjy6jyrv96yze3qrcqqqw95vlp"]]],"program_checksum":["138u8","132u8","223u8","74u8","249u8","16u8","95u8","20u8","111u8","45u8","163u8","250u8","167u8","77u8","139u8","125u8","148u8","187u8","20u8","237u8","108u8","94u8","197u8","223u8","158u8","156u8","47u8","10u8","190u8","54u8","157u8","11u8"],"program_owner":"aleo1z8fuly2un2qq8nms8njdxksjaw8rg60ftg3gn465230vw4ddtgpq32qa05"},"fee":{"transition":{"id":"au1cdz2zjh8p3n74pg8wjhwak0a5639ctss0ne4tk5eqrps0d0gusrswfxnh0","program":"credits.aleo","function":"fee_public","inputs":[{"id":"7467278596517599148179359301446832568205602293420726969010645979742394342427field","type":"public","value":"5680351u64"},{"id":"109132771227103256128799047243317682616842241354337491642160051122198445370field","type":"public","value":"0u64"},{"id":"8344552291992168691298164030877799099886937325879389810490979314743421207593field","type":"public","value":"1961693292217017492540104081239129259003083264733872820280864980081036044807field"}],"outputs":[{"id":"2061507239876187903143757014797359257520743217816308139224226663905537080935field","type":"future","value":"{\n  program_id: credits.aleo,\n  function_name: fee_public,\n  arguments: [\n    aleo1z8fuly2un2qq8nms8njdxksjaw8rg60ftg3gn465230vw4ddtgpq32qa05,\n    5680351u64\n  ]\n}"}],"tpk":"4296440488573049699845935355049855778175919379078053874143192827508907492634group","tcm":"3178217944287542065927473743946449467055916637600611470041174064022187501032field","scm":"403476730476369943256585900941497484947852015044277158529080942746552128426field"},"global_state_root":"sr17gwfyrp9qsevvt8vunhxtt580d64z39ag0kjfy6urquz7j9hzurszy0fgj","proof":"proof1qyqsqqqqqqqqqqqpqqqqqqqqqqq9q4gf6akz8azwu62875wrc8ukj42vzpyzyznq3x52j6yxtc7at0rk6t9lxcelrmhzzy2m35c80fyqqyxu22t82y25j58lpn2cqu0nfwrd9kl2ajnxkh5fp0q8nzhdl926cdxualhv539p0pl2uz8ukn9e2qzz3zkgfu9wrdv0rpnm9n6n7cc7uc4mzmjr5mqcq2m77j9rwaruwafexlrwx5kgkrsd5mesk26qngq84zdlwjlx802xeydell9wtrv86gn2npe39lsl68z2kmxfcr856nf42gmu84quqjgcc8zahgrauwgp93ykh20x3gyv7akwk85zng7xwfakrsdwz66d4df3p7x3rx42mupmvhr92wtqs4g78p27hc5e2yzgq5kqfxqufypd89nuv45ljdceyft8m68map9s4zx624wvkmm9pzcvq4d36y7uamqwufpt8z4jl6sqqqpnpr685q8knm3rwq7hhs3nrcxq4lswazywv957mvlqd9tnth5fxu6xju3hnz957jgp27wt8k4zzqqjpn25xlhrla2c76cm3dksvsmkx83q3q7rkmj4qe0q333950fv73da75h8wpdglgvadwp868nvpkq0fgsan65l5qt4g4f3t8367qs55v5fefqqs66adfgvm6dyzuefdsyktarscyd22paneh0msz04vpuqw03vg6zxfl3gznzuaq7acp5u49nca5wp60r64rh2yqwdfv4dlv8fy7rdl9vwrwc2yd7txgdnmfmvaczsj77t9h23wxrt3durl5v2vz0thjnzdml8ulgn4af98g9u2en7urmkt27fh2aprfyddv4kvmajpxxwz94jg39lesqprfjsg67zuhsg6lyj5tqsp2uhcd8unkl2f7kscl6l3m4pannwfen0032hlljufws02pjzmq0d76yhtdxn477svjggr2eq83whdmewsfntxqflxh9d7pn6cej5nmv5sn4v5jmj6f93ucqacg5hhd6ztda8jn4ldzu94muqetfnavg9t9mwfc0elsnwn8axcrpm92h9njha5kykfc2c8g8af7prtnvntnq943seefwhefxkjva5qjcnv2umlfrzdmn3m3qqexfgrtcx6vttl69zqqaklsrhe9a36w4qp8wtcv9qqjxpclec074mn6yp3swzugjsldfglrxn0xjmgwe6k4sxqvqqqqqqqqqqpglwup6um4axnn5jwqpe6gzcue539xu83ytcc3k83z8kdy4mv4wmw3jgskfjqds0kxpluks27ghxsqqp8ldy47us6tg56esrsfh9c4shpqpyyp2w4yntt4nra8ys33h44l953yh9e2um5rdnjmlshdeu7a5pqyptktt9yp4veg462d08f5ts7s2gpwgsm2pta88yqxxfqy76jrlsxw5k65mzl2zyp59yjyppkj45fpm2dmdyzfrag9hu8tvkpm8keztw0wnw93g55fh3wjnftjlpg8x7qqqqfyzuua"}}