Contract con_uw_setnick_name


Contract Code


  
1 import currency
2 import con_uwarriors_lst001
3
4
5 metadata = Hash(default_value=0)
6 nicks = Hash(default_value=0)
7 wp = ForeignHash(foreign_contract='con_uwarriors_lst001', foreign_name='balances')
8
9 @construct
10 def seed():
11 metadata['operator'] = ctx.caller
12 metadata['cost'] = 100
13 metadata['recost'] = 50
14
15 @export
16 def change_metadata(key: str, value: int):
17 assert ctx.caller == metadata['operator'], 'Only operator can set metadata!'
18 metadata[key] = value
19
20 @export
21 def set_nick_name(nickname: str):
22 caller = ctx.caller
23 amount = metadata['cost']
24
25 if nicks[caller, 'pay'] == True:
26 amount = metadata['recost']
27
28 assert wp[caller] >= amount , 'Not enough coins to send!'
29 assert len(nickname) <= 25, 'Nickname too long (25 chars max).'
30 assert len(nickname) > 0, 'Nickname too short.'
31
32 names_uid = hashlib.sha256(nickname.lower().replace(' ', ''))
33
34 if nicks[caller, 'hash']:
35 nicks['nicknames', nicks[caller, 'hash']] = False
36
37 assert not nicks['nicknames', names_uid], 'A form of this name already belongs to ' + nicks['nicknames', names_uid]
38 con_uwarriors_lst001.transfer_from(amount, metadata['operator'], caller)
39 nicks[caller, 'nickname'] = nickname
40 nicks[caller, 'hash'] = names_uid
41 nicks['nicknames', names_uid] = nickname
42 nicks[caller, 'pay'] = True
43
44
45 @export
46 def change_nick_name(nickname: str, change: str):
47 assert ctx.caller == metadata['operator'], 'Only operator can set metadata!'
48 assert len(nickname) <= 25, 'Nickname too long (25 chars max).'
49 assert len(nickname) > 0, 'Nickname too short.'
50 names_uid = hashlib.sha256(nickname.lower().replace(' ', ''))
51 assert not nicks['nicknames', names_uid], 'A form of this name already belongs to ' + nicks['nicknames', names_uid]
52 nicks[nickname, 'nickname'] = change
53 nicks['nicknames', names_uid] = change
54
55

Byte Code

e30000000000000000000000000600000040000000738e000000640064016c005a00640064016c015a01650264006402640364048d035a03650264006402640564048d035a046505640664076402640864098d045a06640a640b84005a076508640283016509650a640c9c02640d640e840483015a0b6508640283016509640f9c0164106411840483015a0c6508640283016509650964129c0264136414840483015a0d640153002915e9000000004eda13636f6e5f75775f7365746e69636b5f6e616d65da086d657461646174612903da0d64656661756c745f76616c7565da08636f6e7472616374da046e616d65da056e69636b73da14636f6e5f7577617272696f72735f6c7374303031da0862616c616e636573da0277702904da10666f726569676e5f636f6e7472616374da0c666f726569676e5f6e616d6572050000007206000000630000000000000000000000000300000043000000731e00000074006a01740264013c006402740264033c006404740264053c006400530029064eda086f70657261746f72e964000000da04636f7374e932000000da067265636f73742903da03637478da0663616c6c6572da0a5f5f6d65746164617461a90072150000007215000000da00da045f5f5f5f0a000000730600000000010a01080172170000002902da036b6579da0576616c7565630200000000000000020000000300000043000000732200000074006a017402640119006b02731674036402830182017c0174027c003c006400530029034e720d0000007a1f4f6e6c79206f70657261746f722063616e20736574206d65746164617461212904721200000072130000007214000000da0e417373657274696f6e4572726f72290272180000007219000000721500000072150000007216000000da0f6368616e67655f6d65746164617461100000007306000000000210010601721b0000002901da086e69636b6e616d65630100000000000000040000000600000043000000730001000074006a017d017402640119007d0274037c0164026602190064036b0272267402640419007d0274047c0119007c026b05733a740564058301820174067c00830164066b01734e740564078301820174067c00830164086b047362740564098301820174076a087c006a0983006a0a640a640b830283017d0374037c01640c660219007298640d7403640e74037c01640c6602190066023c007403640e7c03660219000c0073ba7405640f7403640e7c0366021900170083018201740b6a0c7c027402641019007c01830301007c0074037c01641166023c007c0374037c01640c66023c007c007403640e7c0366023c00640374037c01640266023c006400530029124e720f000000da037061795472110000007a194e6f7420656e6f75676820636f696e7320746f2073656e6421e9190000007a214e69636b6e616d6520746f6f206c6f6e6720283235206368617273206d6178292e72010000007a134e69636b6e616d6520746f6f2073686f72742efa01207216000000da046861736846da096e69636b6e616d65737a274120666f726d206f662074686973206e616d6520616c72656164792062656c6f6e677320746f20720d000000721c000000290d721200000072130000007214000000da075f5f6e69636b73da045f5f7770721a000000da036c656eda07686173686c6962da06736861323536da056c6f776572da077265706c6163657208000000da0d7472616e736665725f66726f6d2904721c0000007213000000da06616d6f756e74da096e616d65735f756964721500000072150000007216000000da0d7365745f6e69636b5f6e616d651700000073240000000002060108011001080114011401140116010c011401100106010c0112010c010c010c01722c0000002902721c000000da066368616e6765630200000000000000030000000500000043000000739200000074006a017402640119006b027316740364028301820174047c00830164036b01732a740364048301820174047c00830164056b04733e740364068301820174056a067c006a0783006a0864076408830283017d02740964097c02660219000c0073767403640a740964097c02660219001700830182017c0174097c00640b66023c007c01740964097c0266023c0064005300290c4e720d0000007a1f4f6e6c79206f70657261746f722063616e20736574206d6574616461746121721e0000007a214e69636b6e616d6520746f6f206c6f6e6720283235206368617273206d6178292e72010000007a134e69636b6e616d6520746f6f2073686f72742e721f000000721600000072210000007a274120666f726d206f662074686973206e616d6520616c72656164792062656c6f6e677320746f20721c000000290a721200000072130000007214000000721a0000007224000000722500000072260000007227000000722800000072220000002903721c000000722d000000722b000000721500000072150000007216000000da106368616e67655f6e69636b5f6e616d652d0000007314000000000210010601140114011601100106010c010c01722e000000290eda0863757272656e63797208000000da044861736872140000007222000000da0b466f726569676e4861736872230000007217000000da085f5f6578706f7274da03737472da03696e74721b000000722c000000722e0000007215000000721500000072150000007216000000da083c6d6f64756c653e01000000731a00000008010801060108010e0104010c03080606011206060110150601