Contract con_smack_that_4


Contract Code


  
1 import currency
2 __settings = Hash(default_value=0, contract='con_smack_that_4', name='settings'
3 )
4 random.seed()
5
6
7 def ____():
8 __settings['pot_max'] = 20000
9 __settings['refund_per'] = decimal('0.01')
10 __settings['refund_div'] = 100
11 __settings['dev_contract'] = 'con_smackeroos_2'
12 __settings['operator'] = ctx.caller
13 __settings['list'] = ['pot_max', 'refund_per', 'refund_div',
14 'dev_contract', 'operator']
15
16
17 @__export('con_smack_that_4')
18 def smack(bet_amount: int):
19 bet = __determine_cost(bet_amount)
20 currency.transfer_from(amount=bet, to=ctx.this, main_account=ctx.caller)
21 x = random.randint(0, 10)
22 if x >= 6:
23 win_amount = bet * 2
24 currency.transfer(amount=win_amount, to=ctx.caller)
25 return {'bet': bet, 'won': win_amount, 'status': 1}
26 else:
27 __give_dev_token()
28 __check_overflow()
29 return {'bet': bet, 'status': 0}
30
31
32 def __determine_cost(bet_amount: int):
33 max_bet = int(currency.balance_of(ctx.this) * decimal('0.08') // 1)
34 if bet_amount < max_bet:
35 return bet_amount
36 else:
37 return max_bet
38
39
40 def __give_dev_token():
41 dev_contract = importlib.import_module(__settings['dev_contract'])
42 refund = dev_contract.balance_of(ctx.this) * (__settings['refund_per'] /
43 __settings['refund_div'])
44 dev_contract.transfer(refund, ctx.caller)
45
46
47 def __check_overflow():
48 overflow = currency.balance_of(ctx.this) - __settings['pot_max']
49 if overflow > 0:
50 currency.transfer(amount=overflow, to=__settings['dev_contract'])
51
52
53 @__export('con_smack_that_4')
54 def change_settings(setting: str, new_value: Any):
55 __assert_operator()
56 assert setting in __settings['list'
57 ], setting + ' is not a configurable setting.'
58 __settings[setting] = new_value
59
60
61 @__export('con_smack_that_4')
62 def transfer(amount: float, to: str):
63 __assert_operator()
64 currency.transfer(amount=amount, to=to)
65
66
67 @__export('con_smack_that_4')
68 def transfer_dev_token(amount: float, to: str):
69 __assert_operator()
70 dev_contract = importlib.import_module(__settings['dev_contract'])
71 dev_contract.transfer(amount=amount, to=to)
72
73
74 def __assert_operator():
75 assert ctx.caller == __settings['operator'
76 ], 'Only operator can call this method.'
77

Byte Code

e3000000000000000000000000050000004000000073ae000000640064016c005a00650164006402640364048d035a0265036a04830001006405640684005a05650664028301650764079c0164086409840483015a08650764079c01640a640b84045a09640c640d84005a0a640e640f84005a0b650664028301650c650d64109c0264116412840483015a0e650664028301650f650c64139c0264146415840483015a10650664028301650f650c64139c0264166417840483015a116418641984005a1264015300291ae9000000004eda10636f6e5f736d61636b5f746861745f34da0873657474696e67732903da0d64656661756c745f76616c7565da08636f6e7472616374da046e616d6563000000000000000000000000050000004300000073440000006401740064023c00740164038301740064043c006405740064063c006407740064083c0074026a03740064093c006402640464066408640967057400640a3c0064005300290b4e69204e0000da07706f745f6d61787a04302e3031da0a726566756e645f706572e964000000da0a726566756e645f646976da10636f6e5f736d61636b65726f6f735f32da0c6465765f636f6e7472616374da086f70657261746f72da046c6973742904da0a5f5f73657474696e6773da07646563696d616cda03637478da0663616c6c6572a90072130000007213000000da00da045f5f5f5f07000000730e000000000108010c01080108010a01060172150000002901da0a6265745f616d6f756e74630100000000000000040000000500000043000000736e00000074007c0083017d0174016a027c0174036a0474036a0564018d03010074066a076402640383027d027c0264046b0572547c01640514007d0374016a087c0374036a0564068d0201007c017c03640764089c035300740983000100740a830001007c01640264099c02530064005300290a4e2903da06616d6f756e74da02746fda0c6d61696e5f6163636f756e747201000000e90a000000e906000000e902000000290272170000007218000000e9010000002903da03626574da03776f6eda067374617475732902721e0000007220000000290bda105f5f64657465726d696e655f636f7374da0863757272656e6379da0d7472616e736665725f66726f6d7211000000da04746869737212000000da0672616e646f6dda0772616e64696e74da087472616e73666572da105f5f676976655f6465765f746f6b656eda105f5f636865636b5f6f766572666c6f7729047216000000721e000000da0178da0a77696e5f616d6f756e74721300000072130000007214000000da05736d61636b1100000073140000000002080114010c010801080110010c0206010601722c0000006301000000000000000200000004000000430000007330000000740074016a0274036a048301740564018301140064021a0083017d017c007c016b0072287c0053007c0153006400530029034e7a04302e3038721d0000002906da03696e747222000000da0a62616c616e63655f6f6672110000007224000000721000000029027216000000da076d61785f626574721300000072130000007214000000722100000020000000730800000000011c01080104027221000000630000000000000000020000000400000043000000733c00000074006a0174026401190083017d007c006a0374046a0583017402640219007402640319001b0014007d017c006a067c0174046a07830201006400530029044e720c0000007208000000720a0000002908da09696d706f72746c6962da0d696d706f72745f6d6f64756c65720f000000722e00000072110000007224000000722700000072120000002902720c000000da06726566756e64721300000072130000007214000000722800000028000000730800000000010e0110010c017228000000630000000000000000010000000400000043000000733200000074006a0174026a03830174046401190018007d007c0064026b04722e74006a057c0074046403190064048d0201006400530029054e72070000007201000000720c00000029027217000000721800000029067222000000722e00000072110000007224000000720f00000072270000002901da086f766572666c6f7772130000007213000000721400000072290000002f000000730600000000011401080172290000002902da0773657474696e67da096e65775f76616c7565630200000000000000020000000300000043000000732a0000007400830001007c007401640119006b06731e74027c0064021700830182017c0174017c003c006400530029034e720e0000007a1f206973206e6f74206120636f6e666967757261626c652073657474696e672e2903da115f5f6173736572745f6f70657261746f72720f000000da0e417373657274696f6e4572726f72290272340000007235000000721300000072130000007214000000da0f6368616e67655f73657474696e6773350000007308000000000206010e010a017238000000290272170000007218000000630200000000000000020000000400000043000000731800000074008300010074016a027c007c0164018d0201006400530029024e290272170000007218000000290372360000007222000000722700000029027217000000721800000072130000007213000000721400000072270000003d0000007304000000000206017227000000630200000000000000030000000400000043000000732600000074008300010074016a0274036401190083017d027c026a047c007c0164028d0201006400530029034e720c0000002902721700000072180000002905723600000072300000007231000000720f0000007227000000290372170000007218000000720c000000721300000072130000007214000000da127472616e736665725f6465765f746f6b656e430000007306000000000206010e017239000000630000000000000000000000000300000043000000731a00000074006a017402640119006b02731674036402830182016400530029034e720d0000007a234f6e6c79206f70657261746f722063616e2063616c6c2074686973206d6574686f642e290472110000007212000000720f0000007237000000721300000072130000007213000000721400000072360000004a000000730400000000011001723600000029137222000000da0448617368720f0000007225000000da04736565647215000000da085f5f6578706f7274722d000000722c000000722100000072280000007229000000da03737472da03416e797238000000da05666c6f61747227000000723900000072360000007213000000721300000072130000007214000000da083c6d6f64756c653e01000000731e00000008010e020803080a0601100e0e0808070806060112070601120506011206