Contract con_smack_that_2


Contract Code


  
1 import currency
2 import con_smackeroos
3 __stats = Hash(default_value=0, contract='con_smack_that_2', name='stats')
4 __settings = Hash(default_value=0, contract='con_smack_that_2', name='settings'
5 )
6 random.seed()
7
8
9 def ____(vk: str):
10 __settings['cost'] = 10
11 __settings['prize'] = 200
12 __settings['odds'] = 21
13 __settings['refund_div'] = 100
14 __settings['operator'] = vk
15
16
17 @__export('con_smack_that_2')
18 def smack():
19 currency.transfer_from(amount=__settings['cost'], to=ctx.this,
20 main_account=ctx.caller)
21 __stats['plays', ctx.caller] += 1
22 x = random.randint(1, __settings['odds'])
23 if x == __settings['odds']:
24 __stats['wins', ctx.caller] += 1
25 currency.transfer(amount=__settings['prize'], to=ctx.caller)
26 return 1
27 else:
28 __give_refund()
29 return 0
30
31
32 def __give_refund():
33 refund = con_smackeroos.balance_of(ctx.this) * (decimal('0.01') /
34 __settings['refund_div'])
35 con_smackeroos.transfer(refund, ctx.caller)
36
37
38 @__export('con_smack_that_2')
39 def change_refund(new_refund_div: int):
40 __assert_operator()
41 __settings['refund_div'] = new_refund_div
42
43
44 @__export('con_smack_that_2')
45 def change_odds(new_odds: int):
46 __assert_operator()
47 __settings['odds'] = new_odds
48
49
50 @__export('con_smack_that_2')
51 def change_prize(new_prize: int):
52 __assert_operator()
53 __settings['prize'] = new_prize
54
55
56 @__export('con_smack_that_2')
57 def change_cost(new_cost: int):
58 __assert_operator()
59 __settings['cost'] = new_cost
60
61
62 @__export('con_smack_that_2')
63 def change_operator(new_operator: str):
64 __assert_operator()
65 __settings['operator'] = new_operator
66
67
68 def __assert_operator():
69 assert ctx.caller == __settings['operator'
70 ], 'Only operator can change refund amount'
71

Byte Code

e3000000000000000000000000050000004000000073d4000000640064016c005a00640064016c015a01650264006402640364048d035a03650264006402640564048d035a0465056a0683000100650764069c016407640884045a086509640283016409640a840083015a0a640b640c84005a0b650964028301650c640d9c01640e640f840483015a0d650964028301650c64109c0164116412840483015a0e650964028301650c64139c0164146415840483015a0f650964028301650c64169c0164176418840483015a10650964028301650764199c01641a641b840483015a11641c641d84005a1264015300291ee9000000004eda10636f6e5f736d61636b5f746861745f32da0573746174732903da0d64656661756c745f76616c7565da08636f6e7472616374da046e616d65da0873657474696e67732901da02766b630100000000000000010000000300000043000000732c0000006401740064023c006403740064043c006405740064063c006407740064083c007c00740064093c0064005300290a4ee90a000000da04636f7374e9c8000000da057072697a65e915000000da046f646473e964000000da0a726566756e645f646976da086f70657261746f722901da0a5f5f73657474696e677329017208000000a9007213000000da00da045f5f5f5f09000000730a000000000108010801080108017215000000630000000000000000010000000500000043000000738600000074006a0174026401190074036a0474036a0564028d0301007406640374036a056602050019006404370003003c0074076a08640474026405190083027d007c007402640519006b0272787406640674036a056602050019006404370003003c0074006a0974026407190074036a0564088d02010064045300740a830001006409530064005300290a4e720a0000002903da06616d6f756e74da02746fda0c6d61696e5f6163636f756e74da05706c617973e901000000720e000000da0477696e73720c0000002902721600000072170000007201000000290bda0863757272656e6379da0d7472616e736665725f66726f6d7212000000da03637478da0474686973da0663616c6c6572da075f5f7374617473da0672616e646f6dda0772616e64696e74da087472616e73666572da0d5f5f676976655f726566756e642901da0178721300000072130000007214000000da05736d61636b11000000731400000000020e010a01160110010c0116011401040206017227000000630000000000000000010000000400000043000000732e00000074006a0174026a0383017404640183017405640219001b0014007d0074006a067c0074026a07830201006400530029034e7a04302e303172100000002908da0e636f6e5f736d61636b65726f6f73da0a62616c616e63655f6f66721e000000721f000000da07646563696d616c7212000000722400000072200000002901da06726566756e647213000000721300000072140000007225000000200000007306000000000110010c0172250000002901da0e6e65775f726566756e645f64697663010000000000000001000000030000004300000073120000007400830001007c00740164013c006400530029024e72100000002902da115f5f6173736572745f6f70657261746f7272120000002901722c000000721300000072130000007214000000da0d6368616e67655f726566756e6426000000730400000000020601722e0000002901da086e65775f6f64647363010000000000000001000000030000004300000073120000007400830001007c00740164013c006400530029024e720e0000002902722d00000072120000002901722f000000721300000072130000007214000000da0b6368616e67655f6f6464732c00000073040000000002060172300000002901da096e65775f7072697a6563010000000000000001000000030000004300000073120000007400830001007c00740164013c006400530029024e720c0000002902722d000000721200000029017231000000721300000072130000007214000000da0c6368616e67655f7072697a653200000073040000000002060172320000002901da086e65775f636f737463010000000000000001000000030000004300000073120000007400830001007c00740164013c006400530029024e720a0000002902722d000000721200000029017233000000721300000072130000007214000000da0b6368616e67655f636f73743800000073040000000002060172340000002901da0c6e65775f6f70657261746f7263010000000000000001000000030000004300000073120000007400830001007c00740164013c006400530029024e72110000002902722d000000721200000029017235000000721300000072130000007214000000da0f6368616e67655f6f70657261746f723e0000007304000000000206017236000000630000000000000000000000000300000043000000731a00000074006a017402640119006b02731674036402830182016400530029034e72110000007a264f6e6c79206f70657261746f722063616e206368616e676520726566756e6420616d6f756e742904721e00000072200000007212000000da0e417373657274696f6e4572726f727213000000721300000072130000007214000000722d00000044000000730400000000011001722d0000002913721c0000007228000000da0448617368722100000072120000007222000000da0473656564da037374727215000000da085f5f6578706f727472270000007225000000da03696e74722e0000007230000000723200000072340000007236000000722d0000007213000000721300000072130000007214000000da083c6d6f64756c653e010000007324000000080108010e010e0208030e08100f08060601100506011005060110050601100506011005