Contract con_uw_master_season_1


Contract Code


  
1 import currency
2 import con_uwarriors_lst001
3
4 I = importlib
5 S = Hash(default_value='')
6 balances = Hash(default_value=0)
7 metadata = Hash(default_value=0)
8 nicks = Hash(default_value=0)
9 wp = ForeignHash(foreign_contract='con_uwarriors_lst001', foreign_name='balances')
10
11 @construct
12 def seed():
13 metadata['operator'] = ctx.caller
14 metadata['withdrawal'] = False
15 metadata['starter_pack_price'] = 1500
16 metadata['game_cost'] = 2
17 metadata['time'] = 14
18 metadata['fees'] = decimal('0.15')
19 metadata['fees_withdrawal'] = decimal('0.20')
20
21 @export
22 def set_nick_name(nickname: str):
23 caller = ctx.caller
24 assert len(nickname) <= 25, 'Nickname too long (25 chars max).'
25 assert len(nickname) > 0, 'Nickname too short.'
26 names_uid = hashlib.sha256(nickname.lower().replace(' ', ''))
27 assert not nicks['nicknames', names_uid], 'A form of this name already belongs to ' + nicks['nicknames', names_uid]
28 nicks[caller, 'nickname'] = nickname
29 nicks['nicknames', names_uid] = nickname
30
31 @export
32 def change_nick_name(nickname: str, change: str):
33 assert ctx.caller == metadata['operator'], 'Only operator can set metadata!'
34 assert len(nickname) <= 25, 'Nickname too long (25 chars max).'
35 assert len(nickname) > 0, 'Nickname too short.'
36 names_uid = hashlib.sha256(nickname.lower().replace(' ', ''))
37 assert not nicks['nicknames', names_uid], 'A form of this name already belongs to ' + nicks['nicknames', names_uid]
38 nicks[nickname, 'nickname'] = change
39 nicks['nicknames', names_uid] = change
40
41
42 @export
43 def play():
44 sender = ctx.caller
45 amount = metadata['game_cost']
46 operator = metadata['operator']
47 assert wp[sender] > amount , 'Not enough coins to send!'
48 con_uwarriors_lst001.transfer_from(amount, metadata['operator'], sender)
49
50
51 @export
52 def buy_character():
53 sender = ctx.caller
54 amount = metadata['starter_pack_price']
55 operator = metadata['operator']
56 assert wp[sender] > amount , 'Not enough coins to send!'
57 con_uwarriors_lst001.transfer_from(amount, metadata['operator'], sender)
58
59 @export
60 def change_auction(uid: str, auction: bool, contract: str):
61 assert ctx.caller == metadata['operator'], 'Only operator can set metadata!'
62 thing_info = I.import_module(contract)
63 sender = ctx.caller
64 thing_uid = thing_info.change_auction(uid, auction)
65 return thing_uid
66
67
68 @export
69 def change_thing_meta(uid: str, meta: dict, contract: str):
70 assert ctx.caller == metadata['operator'], 'Only operator can set metadata!'
71 thing_info = I.import_module(contract)
72 thing_uid = thing_info.change_meta(uid, meta)
73 return thing_uid
74
75 @export
76 def rewards(uid: str, amount: float):
77 assert ctx.caller == metadata['operator'], 'Only operator'
78
79 if metadata['withdrawal'] == True:
80 balances[uid, 'rewards'] += amount
81 balances[uid, 'total_rewards'] += amount
82 if balances[uid, 'rewards', 'time'] is None:
83 balances[uid, 'rewards', 'time'] = now
84 else:
85 balances[uid, 'total_rewards'] += amount
86 con_uwarriors_lst001.transfer_from(amount, uid, metadata['operator'])
87
88
89 @export
90 def withdrawal():
91 sender = ctx.caller
92 assert balances[sender, 'rewards'] > 0, 'Cannot send negative balances!'
93
94
95 if metadata['withdrawal'] == True:
96 if (now - balances[sender, 'rewards', 'time']).days > metadata['time']:
97 amount = balances[sender, 'rewards']
98 con_uwarriors_lst001.transfer_from(amount, sender, metadata['operator'])
99 balances[sender, 'rewards'] = 0
100 balances[uid, 'rewards', 'time'] = now
101 else:
102 con_uwarriors_lst001.transfer_from(amount - (amount * metadata['fees_withdrawal']), sender, metadata['operator'])
103 balances[sender, 'rewards'] = 0
104 balances[uid, 'rewards', 'time'] = now
105
106
107
108 @export
109 def add_meta(uid: str, meta:str, contract: str, value: Any):
110 assert ctx.caller == metadata['operator'], 'Only operator can set metadata!'
111 thing_info = I.import_module(contract)
112 thing_uid = thing_info.add_meta(uid, meta, value)
113
114 return thing_uid
115
116
117 @export
118 def change_metadata(key: str, value: Any):
119 assert ctx.caller == metadata['operator'], 'Only operator can set metadata!'
120 metadata[key] = value
121
122
123
124 @export
125 def create_thing(contract: str, thing_string: str, name: str, owner: str, meta: dict = {}):
126 assert ctx.caller == metadata['operator'], 'Only operator can set metadata!'
127 thing_info = I.import_module(contract)
128 sender = ctx.caller
129 thing_uid = thing_info.add_thing(thing_string, name, meta, owner)
130
131 return thing_uid
132
133 @export
134 def buy_thing(uid: str, contract:str):
135 thing_info = I.import_module(contract)
136 sender = ctx.caller
137 owner = thing_info.get_owner(uid)
138 creator = thing_info.get_creator(uid)
139
140 assert_already_owned(uid, sender, contract)
141
142 price_amount = thing_info.get_price_amount(uid)
143
144 assert price_amount, uid + ' is not for sale'
145 assert price_amount > 0, uid + ' is not for sale'
146
147 price_amount_pay = price_amount - (price_amount * metadata['fees'])
148
149 con_uwarriors_lst001.transfer_from(price_amount_pay, owner, sender)
150 con_uwarriors_lst001.transfer_from((price_amount * metadata['fees']), metadata['operator'], sender)
151
152 transfer_ownership(uid, sender, contract)
153
154
155 @export
156 def sell_thing(uid: str, amount: float, description: str, contract:str):
157 thing_info = I.import_module(contract)
158 auction = thing_info.get_auction(uid)
159
160 assert auction == False, ' is on auction'
161
162 assert_ownership(uid, ctx.caller, contract)
163
164 thing_info.set_price(uid, amount)
165
166 @export
167 def transfer(uid: str, new_owner: str, contract:str):
168 sender = ctx.caller
169 assert_ownership(uid, sender, contract)
170 assert_already_owned(uid, new_owner, contract)
171 transfer_ownership(uid, new_owner, contract)
172
173 @export
174 def approve(uid: str, to: str, contract:str):
175 sender = ctx.caller
176 assert_ownership(uid, sender, contract)
177 balances[sender, uid, to] = True
178
179
180 @export
181 def revoke(uid: str, to: str):
182 balances[ctx.caller, uid, to] = None
183
184
185 @export
186 def transfer_from(uid: str, to: str, main_account: str, contract: str):
187 sender = ctx.caller
188
189 assert balances[main_account, uid, sender], "You have not been given approval to transfer this user's item."
190 assert_ownership(uid, main_account, contract)
191 assert_already_owned(uid, to, contract)
192 transfer_ownership(uid, to, contract)
193
194 balances[main_account, uid, sender] = None
195
196
197 def assert_already_owned(uid: str, sender: str, contract: str):
198 thing_info = I.import_module(contract)
199 owner = thing_info.get_owner(uid)
200 assert owner != sender, uid + ' already owned by ' + sender
201
202
203 def assert_ownership(uid: str, sender, contract: str):
204 thing_info = I.import_module(contract)
205 owner = thing_info.get_owner(uid)
206 assert owner == sender, uid + ' not owned by ' + sender
207
208
209 def transfer_ownership(uid:str, new_owner: str, contract: str):
210 thing_info = I.import_module(contract)
211 old_owner = thing_info.get_owner(uid)
212 thing_info.set_owner(uid, new_owner)
213 if thing_info.get_price_amount(uid) > 0:
214 thing_info.set_price(uid, 0)
215
216
217
218
219
220

Byte Code

e300000000000000000000000008000000400000007338020000640064016c005a00640064016c015a0165025a03650464026403640464058d035a05650464006403640664058d035a06650464006403640764058d035a07650464006403640864058d035a086509640964066403640a640b8d045a0a640c640d84005a0b650c64038301650d640e9c01640f6410840483015a0e650c64038301650d650d64119c0264126413840483015a0f650c6403830164146415840083015a10650c6403830164166417840083015a11650c64038301650d6512650d64189c036419641a840483015a13650c64038301650d6514650d641b9c03641c641d840483015a15650c64038301650d6516641e9c02641f6420840483015a17650c6403830164216422840083015a18650c64038301650d650d650d651964239c0464246425840483015a1a650c64038301650d651964269c0264276428840483015a1b650c6403830169006601650d650d650d650d651464299c05642a642b840583015a1c650c64038301650d650d642c9c02642d642e840483015a1d650c64038301650d6516650d650d642f9c0464306431840483015a1e650c64038301650d650d650d64329c0364336434840483015a1f650c64038301650d650d650d64359c0364366437840483015a20650c64038301650d650d64389c026439643a840483015a21650c64038301650d650d650d650d643b9c04643c643d840483015a22650d650d650d643e9c03643f644084045a23650d650d642c9c026441644284045a24650d650d650d64329c036443644484045a25640153002945e9000000004eda00da16636f6e5f75775f6d61737465725f736561736f6e5f31da01532903da0d64656661756c745f76616c7565da08636f6e7472616374da046e616d65da0862616c616e636573da086d65746164617461da056e69636b73da14636f6e5f7577617272696f72735f6c7374303031da0277702904da10666f726569676e5f636f6e7472616374da0c666f726569676e5f6e616d6572060000007207000000630000000000000000000000000300000043000000734600000074006a01740264013c006402740264033c006404740264053c006406740264073c006408740264093c007403640a83017402640b3c007403640c83017402640d3c0064005300290e4eda086f70657261746f7246da0a7769746864726177616c69dc050000da12737461727465725f7061636b5f7072696365e902000000da0967616d655f636f7374e90e000000da0474696d657a04302e3135da04666565737a04302e3230da0f666565735f7769746864726177616c2904da03637478da0663616c6c6572da0a5f5f6d65746164617461da07646563696d616ca900721c000000721c0000007202000000da045f5f5f5f0f000000730e00000000010a0108010801080108010c01721d0000002901da086e69636b6e616d65630100000000000000030000000500000043000000738200000074006a017d0174027c00830164016b01731a740364028301820174027c00830164036b04732e740364048301820174046a057c006a0683006a0764056406830283017d02740864077c02660219000c00736674036408740864077c02660219001700830182017c0074087c01640966023c007c00740864077c0266023c0064005300290a4ee9190000007a214e69636b6e616d6520746f6f206c6f6e6720283235206368617273206d6178292e72010000007a134e69636b6e616d6520746f6f2073686f72742efa01207202000000da096e69636b6e616d65737a274120666f726d206f662074686973206e616d6520616c72656164792062656c6f6e677320746f20721e000000290972180000007219000000da036c656eda0e417373657274696f6e4572726f72da07686173686c6962da06736861323536da056c6f776572da077265706c616365da075f5f6e69636b732903721e0000007219000000da096e616d65735f756964721c000000721c0000007202000000da0d7365745f6e69636b5f6e616d6519000000731200000000020601140114011601100106010c010c01722a0000002902721e000000da066368616e6765630200000000000000030000000500000043000000739200000074006a017402640119006b027316740364028301820174047c00830164036b01732a740364048301820174047c00830164056b04733e740364068301820174056a067c006a0783006a0864076408830283017d02740964097c02660219000c0073767403640a740964097c02660219001700830182017c0174097c00640b66023c007c01740964097c0266023c0064005300290c4e720f0000007a1f4f6e6c79206f70657261746f722063616e20736574206d6574616461746121721f0000007a214e69636b6e616d6520746f6f206c6f6e6720283235206368617273206d6178292e72010000007a134e69636b6e616d6520746f6f2073686f72742e7220000000720200000072210000007a274120666f726d206f662074686973206e616d6520616c72656164792062656c6f6e677320746f20721e000000290a72180000007219000000721a00000072230000007222000000722400000072250000007226000000722700000072280000002903721e000000722b0000007229000000721c000000721c0000007202000000da106368616e67655f6e69636b5f6e616d65260000007314000000000210010601140114011601100106010c010c01722c000000630000000000000000030000000400000043000000734000000074006a017d007402640119007d017402640219007d0274037c0019007c016b04732a740464038301820174056a067c017402640219007c00830301006400530029044e7213000000720f0000007a194e6f7420656e6f75676820636f696e7320746f2073656e6421290772180000007219000000721a000000da045f5f77707223000000720b000000da0d7472616e736665725f66726f6d2903da0673656e646572da06616d6f756e74720f000000721c000000721c0000007202000000da04706c617934000000730a000000000206010801080114017231000000630000000000000000030000000400000043000000734000000074006a017d007402640119007d017402640219007d0274037c0019007c016b04732a740464038301820174056a067c017402640219007c00830301006400530029044e7211000000720f0000007a194e6f7420656e6f75676820636f696e7320746f2073656e6421290772180000007219000000721a000000722d0000007223000000720b000000722e0000002903722f0000007230000000720f000000721c000000721c0000007202000000da0d6275795f6368617261637465723d000000730a0000000002060108010801140172320000002903da03756964da0761756374696f6e7206000000630300000000000000060000000300000043000000733600000074006a017402640119006b027316740364028301820174046a057c0283017d0374006a017d047c036a067c007c0183027d057c05530029034e720f0000007a1f4f6e6c79206f70657261746f722063616e20736574206d6574616461746121290772180000007219000000721a0000007223000000da0149da0d696d706f72745f6d6f64756c65da0e6368616e67655f61756374696f6e2906723300000072340000007206000000da0a7468696e675f696e666f722f000000da097468696e675f756964721c000000721c0000007202000000723700000046000000730c0000000002100106010a0106010c01723700000029037233000000da046d6574617206000000630300000000000000050000000300000043000000733000000074006a017402640119006b027316740364028301820174046a057c0283017d037c036a067c007c0183027d047c04530029034e720f0000007a1f4f6e6c79206f70657261746f722063616e20736574206d6574616461746121290772180000007219000000721a000000722300000072350000007236000000da0b6368616e67655f6d65746129057233000000723a000000720600000072380000007239000000721c000000721c0000007202000000da116368616e67655f7468696e675f6d65746150000000730a0000000002100106010a010c01723c000000290272330000007230000000630200000000000000020000000500000043000000739600000074006a017402640119006b027316740364028301820174026403190064046b02726c74047c0064056602050019007c01370003003c0074047c0064066602050019007c01370003003c0074047c00640564076603190064006b087292740574047c006405640766033c006e2674047c0064066602050019007c01370003003c0074066a077c017c00740264011900830301006400530029084e720f0000007a0d4f6e6c79206f70657261746f72721000000054da0772657761726473da0d746f74616c5f726577617264737215000000290872180000007219000000721a0000007223000000da0a5f5f62616c616e636573da036e6f77720b000000722e000000290272330000007230000000721c000000721c0000007202000000723d000000590000007310000000000216010c0114011401120110021401723d00000063000000000000000002000000050000004300000073bc00000074006a017d0074027c0064016602190064026b04731e740364038301820174046404190064056b0272b8740574027c00640164066603190018006a067404640619006b04728074027c006401660219007d0174076a087c017c0074046407190083030100640274027c00640166023c007405740274096401640666033c006e3874076a087c017c01740464081900140018007c0074046407190083030100640274027c00640166023c007405740274096401640666033c006400530029094e723d00000072010000007a1e43616e6e6f742073656e64206e656761746976652062616c616e636573217210000000547215000000720f0000007217000000290a72180000007219000000723f0000007223000000721a0000007240000000da0464617973720b000000722e00000072330000002902722f0000007230000000721c000000721c0000007202000000721000000066000000731c0000000002060118010c01140108010c010a0108010c0110020a0114010c01721000000029047233000000723a0000007206000000da0576616c7565630400000000000000060000000400000043000000733200000074006a017402640119006b027316740364028301820174046a057c0283017d047c046a067c007c017c0383037d057c05530029034e720f0000007a1f4f6e6c79206f70657261746f722063616e20736574206d6574616461746121290772180000007219000000721a000000722300000072350000007236000000da086164645f6d65746129067233000000723a0000007206000000724200000072380000007239000000721c000000721c0000007202000000724300000079000000730a0000000002100106010a010e0172430000002902da036b65797242000000630200000000000000020000000300000043000000732200000074006a017402640119006b02731674036402830182017c0174027c003c006400530029034e720f0000007a1f4f6e6c79206f70657261746f722063616e20736574206d6574616461746121290472180000007219000000721a0000007223000000290272440000007242000000721c000000721c0000007202000000da0f6368616e67655f6d65746164617461820000007306000000000210010601724500000029057206000000da0c7468696e675f737472696e677207000000da056f776e6572723a000000630500000000000000080000000500000043000000733a00000074006a017402640119006b027316740364028301820174046a057c0083017d0574006a017d067c056a067c017c027c047c0383047d077c07530029034e720f0000007a1f4f6e6c79206f70657261746f722063616e20736574206d6574616461746121290772180000007219000000721a000000722300000072350000007236000000da096164645f7468696e6729087206000000724600000072070000007247000000723a0000007238000000722f0000007239000000721c000000721c0000007202000000da0c6372656174655f7468696e6789000000730c0000000003100106010a0106011001724900000029027233000000720600000063020000000000000008000000040000004300000073a600000074006a017c0183017d0274026a037d037c026a047c0083017d047c026a057c0083017d0574067c007c037c01830301007c026a077c0083017d067c06734a74087c0064011700830182017c0664026b04735e74087c0064011700830182017c067c06740964031900140018007d07740a6a0b7c077c047c0383030100740a6a0b7c0674096403190014007409640419007c0383030100740c7c007c037c01830301006400530029054e7a10206973206e6f7420666f722073616c6572010000007216000000720f000000290d7235000000723600000072180000007219000000da096765745f6f776e6572da0b6765745f63726561746f72da165f5f6173736572745f616c72656164795f6f776e6564da106765745f70726963655f616d6f756e747223000000721a000000720b000000722e000000da145f5f7472616e736665725f6f776e6572736869702908723300000072060000007238000000722f0000007247000000da0763726561746f72da0c70726963655f616d6f756e74da1070726963655f616d6f756e745f706179721c000000721c0000007202000000da096275795f7468696e6794000000731a00000000020a0106010a010a010c010a011001140110010e010e010c017252000000290472330000007230000000da0b6465736372697074696f6e7206000000630400000000000000060000000400000043000000734200000074006a017c0383017d047c046a027c0083017d057c0564016b027324740364028301820174047c0074056a067c03830301007c046a077c007c01830201006400530029034e467a0e206973206f6e2061756374696f6e290872350000007236000000da0b6765745f61756374696f6e7223000000da125f5f6173736572745f6f776e65727368697072180000007219000000da097365745f70726963652906723300000072300000007253000000720600000072380000007234000000721c000000721c0000007202000000da0a73656c6c5f7468696e67a5000000730a00000000020a010a0110010e01725700000029037233000000da096e65775f6f776e65727206000000630300000000000000040000000400000043000000732e00000074006a017d0374027c007c037c028303010074037c007c017c028303010074047c007c017c02830301006400530029014e2905721800000072190000007255000000724c000000724e0000002904723300000072580000007206000000722f000000721c000000721c0000007202000000da087472616e73666572ae0000007308000000000206010c010c01725900000029037233000000da02746f7206000000630300000000000000040000000500000043000000732400000074006a017d0374027c007c037c0283030100640174037c037c007c0166033c006400530029024e542904721800000072190000007255000000723f00000029047233000000725a0000007206000000722f000000721c000000721c0000007202000000da07617070726f7665b60000007306000000000206010c01725b00000029027233000000725a00000063020000000000000002000000050000004300000073140000006400740074016a027c007c0166033c006400530029014e2903723f0000007218000000721900000029027233000000725a000000721c000000721c0000007202000000da067265766f6b65bd00000073020000000002725c00000029047233000000725a000000da0c6d61696e5f6163636f756e747206000000630400000000000000050000000500000043000000735200000074006a017d0474027c027c007c0466031900731c740364018301820174047c007c027c038303010074057c007c017c038303010074067c007c017c0383030100640074027c027c007c0466033c006400530029024e7a3e596f752068617665206e6f74206265656e20676976656e20617070726f76616c20746f207472616e73666572207468697320757365722773206974656d2e290772180000007219000000723f00000072230000007255000000724c000000724e00000029057233000000725a000000725d0000007206000000722f000000721c000000721c0000007202000000722e000000c2000000730e00000000020601100106010c010c010c01722e00000029037233000000722f0000007206000000630300000000000000050000000300000043000000733000000074006a017c0283017d037c036a027c0083017d047c047c016b03732c74037c00640117007c011700830182016400530029024e7a1220616c7265616479206f776e656420627920290472350000007236000000724a000000722300000029057233000000722f000000720600000072380000007247000000721c000000721c0000007202000000724c000000cd000000730600000000010a010a01724c000000630300000000000000050000000300000043000000733000000074006a017c0283017d037c036a027c0083017d047c047c016b02732c74037c00640117007c011700830182016400530029024e7a0e206e6f74206f776e656420627920290472350000007236000000724a000000722300000029057233000000722f000000720600000072380000007247000000721c000000721c00000072020000007255000000d3000000730600000000010a010a017255000000630300000000000000050000000300000043000000733e00000074006a017c0283017d037c036a027c0083017d047c036a037c007c01830201007c036a047c00830164016b04723a7c036a057c006401830201006400530029024e7201000000290672350000007236000000724a000000da097365745f6f776e6572724d000000725600000029057233000000725800000072060000007238000000da096f6c645f6f776e6572721c000000721c0000007202000000724e000000d9000000730a00000000010a010a010c010e01724e0000002926da0863757272656e6379720b000000da09696d706f72746c69627235000000da0448617368da035f5f53723f000000721a0000007228000000da0b466f726569676e48617368722d000000721d000000da085f5f6578706f7274da03737472722a000000722c00000072310000007232000000da04626f6f6c7237000000da0464696374723c000000da05666c6f6174723d0000007210000000da03416e79724300000072450000007249000000725200000072570000007259000000725b000000725c000000722e000000724c0000007255000000724e000000721c000000721c000000721c0000007202000000da083c6d6f64756c653e01000000735a0000000801080104010e0106010801060108010e0204010c03080a0601100c0601120d1009100906011409060114080601120c1013060116080601120606021c0906011210060116080601140706011406060112040601160a12061006