Contract con_new_neb6
Creator | ae7d14d6d9b8443f881ba6244727b69b681010e782d4fe482dbfb0b6aca02d5d |
Creation Hash | c90de5cbfc7262abff7ecc67d1a672150714e7b48d036654cda6b24bafa7c2d1 |
Created On | 452 days ago - 2/6/2023, 10:20:44 PM UTC+0 |
Contract Code
1
I = importlib
2
3
metadata = Hash()
4
balances = Hash(default_value=0)
5
allowances = Hash(default_value=0)
6
multisig = Hash(default_value=False)
7
8
total_supply = Variable()
9
swap_end_date = Variable()
10
11
@construct
12
def seed():
13
balances[ctx.submission_name] = 142487438
14
15
metadata['token_name'] = "NEB2"
16
metadata['token_symbol'] = "NEB2"
17
18
# TODO: Change
19
metadata['operator'] = [
20
'6351a80d32cbb3c173e490b093a95b15bcf4f6190251863669202d7fe2257af3',
21
'ae7d14d6d9b8443f881ba6244727b69b681010e782d4fe482dbfb0b6aca02d5d',
22
'c913e1c146f1426a8c0dc042e92ccc18a54dd612d878c84e433ecc9705d91ee5'
23
]
24
25
# TODO: Change
26
swap_end_date.set(now + datetime.timedelta(minutes=5))
27
total_supply.set(0)
28
29
@export
30
def change_metadata(key: str, value: Any):
31
assert_caller_is_owner()
32
metadata[key] = value
33
34
@export
35
def transfer(amount: float, to: str):
36
assert amount > 0, 'Cannot send negative balances!'
37
assert balances[ctx.caller] >= amount, 'Not enough tokens to send!'
38
39
balances[ctx.caller] -= amount
40
balances[to] += amount
41
42
@export
43
def approve(amount: float, to: str):
44
assert amount > 0, 'Cannot send negative balances!'
45
allowances[ctx.caller, to] += amount
46
47
@export
48
def transfer_from(amount: float, to: str, main_account: str):
49
approved = allowances[main_account, ctx.caller]
50
51
assert amount > 0, 'Cannot send negative balances!'
52
assert approved >= amount, f'You approved {approved} but need {amount}'
53
assert balances[main_account] >= amount, 'Not enough tokens to send!'
54
55
allowances[main_account, ctx.caller] -= amount
56
balances[main_account] -= amount
57
balances[to] += amount
58
59
@export
60
def balance_of(address: str):
61
return balances[address]
62
63
@export
64
def time_until_swap_end():
65
return swap_end_date.get() - now
66
67
@export
68
def total_supply():
69
return int(total_supply.get())
70
71
def multisig_agrees(topic: str):
72
yes = 0
73
74
# TODO: Change
75
if multisig[metadata['operator'][0], topic]: yes += 1
76
if multisig[metadata['operator'][1], topic]: yes += 1
77
if multisig[metadata['operator'][2], topic]: yes += 1
78
79
if yes > 1:
80
# TODO: Change
81
multisig[metadata['operator'][0], topic] = False
82
multisig[metadata['operator'][1], topic] = False
83
multisig[metadata['operator'][2], topic] = False
84
85
return True
86
87
return False
88
89
@export
90
def allow_swap(address: str, amount: float, decision: bool):
91
multisig[ctx.caller, f'swap{address}{amount}'] = decision
92
assert_caller_is_owner()
93
94
@export
95
def swap_neb(amount: float):
96
assert amount > 0, 'Cannot swap negative balances!'
97
98
if now > swap_end_date.get():
99
assert multisig_agrees(f'swap{ctx.signer}{amount}'), 'Swap period ended'
100
101
# TODO: Change
102
I.import_module('con_nebula2').transfer_from(
103
amount=amount,
104
to='NEBULA_BURN_ADDRESS',
105
main_account=ctx.caller
106
)
107
108
swap_amount = amount * 0.1
109
balances[ctx.caller] += swap_amount
110
total_supply.set(total_supply.get() + swap_amount)
111
112
@export
113
def allow_withdraw(token_contract: str, amount: float, decision: bool):
114
multisig[ctx.caller, f'withdraw{token_contract}{amount}'] = decision
115
assert_caller_is_owner()
116
117
@export
118
def withdraw(token_contract: str, amount: float):
119
assert_caller_is_owner()
120
topic = f'withdraw{token_contract}{amount}'
121
assert multisig_agrees(topic), 'Not enough votes!'
122
I.import_module(token_contract).transfer(amount, ctx.caller)
123
124
def assert_caller_is_owner():
125
assert ctx.caller in metadata['operator'], 'Only executable by operators!'
126
Byte Code
e30000000000000000000000000500000040000000736e01000065005a0165026400640164028d025a03650264036400640464058d035a04650264036400640664058d035a05650264076400640864058d035a0665076400640964028d025a0865076400640a64028d025a09640b640c84005a0a650b64008301650c650d640d9c02640e640f840483015a0e650b64008301650f650c64109c0264116412840483015a10650b64008301650f650c64109c0264136414840483015a11650b64008301650f650c650c64159c0364166417840483015a12650b64008301650c64189c016419641a840483015a13650b64008301641b641c840083015a14650b64008301641d6409840083015a15650c641e9c01641f642084045a16650b64008301650c650f651764219c0364226423840483015a18650b64008301650f64249c0164256426840483015a19650b64008301650c650f651764279c0364286429840483015a1a650b64008301650c650f642a9c02642b642c840483015a1b642d642e84005a1c642f53002930da0c636f6e5f6e65775f6e656236da086d657461646174612902da08636f6e7472616374da046e616d65e900000000da0862616c616e6365732903da0d64656661756c745f76616c756572030000007204000000da0a616c6c6f77616e63657346da086d756c7469736967da0c746f74616c5f737570706c79da0d737761705f656e645f64617465630000000000000000000000000500000043000000734c0000006401740074016a023c006402740364033c006402740364043c006405640664076703740364083c0074046a05740674076a086409640a8d0117008301010074096a05640b8301010064005300290c4e698e2f7e08da044e454232da0a746f6b656e5f6e616d65da0c746f6b656e5f73796d626f6cda4036333531613830643332636262336331373365343930623039336139356231356263663466363139303235313836333636393230326437666532323537616633da4061653764313464366439623834343366383831626136323434373237623639623638313031306537383264346665343832646266623062366163613032643564da4063393133653163313436663134323661386330646330343265393263636331386135346464363132643837386338346534333365636339373035643931656535da086f70657261746f72e9050000002901da076d696e757465737205000000290ada0a5f5f62616c616e636573da03637478da0f7375626d697373696f6e5f6e616d65da0a5f5f6d65746164617461da0f5f5f737761705f656e645f64617465da03736574da036e6f77da086461746574696d65da0974696d6564656c7461da0e5f5f746f74616c5f737570706c79a900721f000000721f000000da00da045f5f5f5f0c000000731000000000010a0108010802020102010a01160172210000002902da036b6579da0576616c756563020000000000000002000000030000004300000073120000007400830001007c0174017c003c006400530029014e2902da185f5f6173736572745f63616c6c65725f69735f6f776e65727218000000290272220000007223000000721f000000721f0000007220000000da0f6368616e67655f6d657461646174611800000073040000000002060172250000002902da06616d6f756e74da02746f630200000000000000020000000400000043000000734c0000007c0064016b0473107400640283018201740174026a0319007c006b0573267400640383018201740174026a03050019007c00380003003c0074017c01050019007c00370003003c006400530029044e72050000007a1e43616e6e6f742073656e64206e656761746976652062616c616e636573217a1a4e6f7420656e6f75676820746f6b656e7320746f2073656e64212904da0e417373657274696f6e4572726f7272150000007216000000da0663616c6c6572290272260000007227000000721f000000721f0000007220000000da087472616e736665721e00000073080000000002100116011201722a000000630200000000000000020000000400000043000000732a0000007c0064016b0473107400640283018201740174026a037c016602050019007c00370003003c006400530029034e72050000007a1e43616e6e6f742073656e64206e656761746976652062616c616e6365732129047228000000da0c5f5f616c6c6f77616e63657372160000007229000000290272260000007227000000721f000000721f0000007220000000da07617070726f766526000000730400000000021001722c000000290372260000007227000000da0c6d61696e5f6163636f756e74630300000000000000040000000500000043000000738800000074007c0274016a02660219007d037c0064016b04731e74036402830182017c037c006b05733a740364037c039b0064047c009b009d048301820174047c0219007c006b05734e740364058301820174007c0274016a026602050019007c00380003003c0074047c02050019007c00380003003c0074047c01050019007c00370003003c006400530029064e72050000007a1e43616e6e6f742073656e64206e656761746976652062616c616e636573217a0d596f7520617070726f766564207a0a20627574206e656564207a1a4e6f7420656e6f75676820746f6b656e7320746f2073656e64212905722b0000007216000000722900000072280000007215000000290472260000007227000000722d000000da08617070726f766564721f000000721f0000007220000000da0d7472616e736665725f66726f6d2c000000730e00000000020e0110011c01140116011001722f0000002901da0761646472657373630100000000000000010000000200000043000000730800000074007c001900530029014e2901721500000029017230000000721f000000721f0000007220000000da0a62616c616e63655f6f6637000000730200000000027231000000630000000000000000000000000200000043000000730c00000074006a01830074021800530029014e29037219000000da03676574721b000000721f000000721f000000721f0000007220000000da1374696d655f756e74696c5f737761705f656e643c000000730200000000027233000000630000000000000000000000000200000043000000730c000000740074016a0283008301530029014e2903da03696e74721e0000007232000000721f000000721f000000721f0000007220000000720a00000041000000730200000000022901da05746f70696363010000000000000002000000040000004300000073a400000064017d017400740164021900640119007c006602190072207c01640337007d017400740164021900640319007c0066021900723c7c01640337007d017400740164021900640419007c006602190072587c01640337007d017c0164036b0472a064057400740164021900640119007c0066023c0064057400740164021900640319007c0066023c0064057400740164021900640419007c0066023c00640653006405530029074e72050000007212000000e901000000e90200000046542902da0a5f5f6d756c7469736967721800000029027235000000da03796573721f000000721f0000007220000000da115f5f6d756c74697369675f61677265657346000000731a0000000001040114010801140108011401080108011401140114010401723a000000290372300000007226000000da086465636973696f6e63030000000000000003000000060000004300000073220000007c02740074016a0264017c009b007c019b009d0366023c007403830001006400530029024eda047377617029047238000000721600000072290000007224000000290372300000007226000000723b000000721f000000721f0000007220000000da0a616c6c6f775f7377617056000000730400000000021801723d0000002901722600000063010000000000000002000000050000004300000073840000007c0064016b0473107400640283018201740174026a0383006b0472387404640374056a069b007c009b009d0383017338740064048301820174076a08640583016a097c00640674056a0a64078d0301007c00740b6408830114007d01740c74056a0a050019007c01370003003c00740d6a0e740d6a0383007c011700830101006400530029094e72050000007a1e43616e6e6f742073776170206e656761746976652062616c616e63657321723c0000007a115377617020706572696f6420656e646564da0b636f6e5f6e6562756c6132da134e4542554c415f4255524e5f41444452455353290372260000007227000000722d0000007a03302e31290f7228000000721b00000072190000007232000000723a0000007216000000da067369676e6572da0149da0d696d706f72745f6d6f64756c65722f0000007229000000da07646563696d616c7215000000721e000000721a00000029027226000000da0b737761705f616d6f756e74721f000000721f0000007220000000da08737761705f6e65625c0000007312000000000210010c01160106010c010c010c01120172450000002903da0e746f6b656e5f636f6e74726163747226000000723b00000063030000000000000003000000060000004300000073220000007c02740074016a0264017c009b007c019b009d0366023c007403830001006400530029024eda08776974686472617729047238000000721600000072290000007224000000290372460000007226000000723b000000721f000000721f0000007220000000da0e616c6c6f775f7769746864726177690000007304000000000218017248000000290272460000007226000000630200000000000000030000000300000043000000733c00000074008300010064017c009b007c019b009d037d0274017c0283017324740264028301820174036a047c0083016a057c0174066a07830201006400530029034e72470000007a114e6f7420656e6f75676820766f7465732129087224000000723a000000722800000072410000007242000000722a000000721600000072290000002903724600000072260000007235000000721f000000721f000000722000000072470000006f0000007308000000000206010e0110017247000000630000000000000000000000000300000043000000731a00000074006a017402640119006b06731674036402830182016400530029034e72120000007a1d4f6e6c792065786563757461626c65206279206f70657261746f72732129047216000000722900000072180000007228000000721f000000721f000000721f000000722000000072240000007700000073040000000001100172240000004e291dda09696d706f72746c69627241000000da044861736872180000007215000000722b0000007238000000da085661726961626c65721e00000072190000007221000000da085f5f6578706f7274da03737472da03416e797225000000da05666c6f6174722a000000722c000000722f00000072310000007233000000720a000000723a000000da04626f6f6c723d0000007245000000724800000072470000007224000000721f000000721f000000721f0000007220000000da083c6d6f64756c653e01000000733a00000004010c010e010e020e020c010c03080c0601120506011207060112050601140a06011004100510050e10060114050601100c0601140506011207