Contract con_liquidity_locker_v1_2


Contract Code


  
1 # SURPRISE! SIMPLE SECURE Liquidity Lockers by mintorburn.com
2 # Create Locker by executing create_locker
3 # End and withdraw locked assets by executing end_locker
4 import con_rocketswap_official_v1_1 as rocketswap
5
6 lockers = Hash(default_value=0)
7 metadata = Hash()
8
9 @construct
10 def seed():
11 metadata['FEE_PERCENTAGE'] = decimal('2')
12 metadata['FEE_WALLET'] = "ff61544ea94eaaeb5df08ed863c4a938e9129aba6ceee5f31b6681bdede11b89"
13 metadata['OWNER'] = ctx.caller
14
15 @export
16 def create_locker(token_contract: str, locker_name: str, lp_amount: float, lock_end_day: int, lock_end_month: int, lock_end_year: int):
17 assert lp_amount > 0, 'Must provide lp points amount!'
18 assert token_contract != None, 'Must provide token contract!'
19 assert lock_end_day != None, 'Must provide end day of lock!'
20 assert lock_end_month != None, 'Must provide end month of lock!'
21 assert lock_end_year != None, 'Must provide end year of lock!'
22 assert datetime.datetime(year=lock_end_year, month=lock_end_month, day=lock_end_day) >= now, 'Lock end cannot be in the past!'
23 rocketswap.transfer_liquidity_from(contract=token_contract, to=ctx.this, main_account=ctx.caller, amount=lp_amount)
24 rocketswap.transfer_liquidity(contract=token_contract, to=metadata['FEE_WALLET'], amount=(lp_amount/100*metadata['FEE_PERCENTAGE']))
25 if(lockers[token_contract, ctx.caller, locker_name]) == 0:
26 lockers[token_contract, ctx.caller, locker_name] = [lp_amount, datetime.datetime(year=lock_end_year, month=lock_end_month, day=lock_end_day, hour=0, minute=0, microsecond=0)]
27 else:
28 lockers[token_contract, ctx.caller, locker_name] = [lockers[token_contract, ctx.caller, locker_name][0] + lp_amount, datetime.datetime(year=lock_end_year, month=lock_end_month, day=lock_end_day)]
29
30 @export
31 def end_locker(token_contract: str, locker_name: str):
32 assert token_contract != None, 'Must provide token contract!'
33 assert lockers[token_contract, ctx.caller, locker_name][1] <= now, 'The end of liquidity lock is not reached yet!'
34 rocketswap.transfer_liquidity(contract=token_contract, to=ctx.caller, amount=lockers[token_contract, ctx.caller, locker_name][0])
35 lockers[token_contract, ctx.caller, locker_name].clear()
36
37 @export
38 def change_metadata(key: str, value: Any):
39 assert ctx.caller == metadata['OWNER'
40 ], 'Only owner can set metadata!'
41 metadata[key] = value

Byte Code

e30000000000000000000000000800000040000000737e000000640064016c005a01650264006402640364048d035a0365026402640564068d025a046407640884005a0565066402830165076507650865096509650964099c06640a640b840483015a0a65066402830165076507640c9c02640d640e840483015a0b6506640283016507650c640f9c0264106411840483015a0d640153002912e9000000004eda19636f6e5f6c69717569646974795f6c6f636b65725f76315f32da076c6f636b6572732903da0d64656661756c745f76616c7565da08636f6e7472616374da046e616d65da086d657461646174612902720500000072060000006300000000000000000000000003000000430000007322000000740064018301740164023c006403740164043c0074026a03740164053c006400530029064eda0132da0e4645455f50455243454e54414745da4066663631353434656139346561616562356466303865643836336334613933386539313239616261366365656535663331623636383162646564653131623839da0a4645455f57414c4c4554da054f574e45522904da07646563696d616cda0a5f5f6d65746164617461da03637478da0663616c6c6572a90072110000007211000000da00da045f5f5f5f07000000730600000000010c02080172130000002906da0e746f6b656e5f636f6e7472616374da0b6c6f636b65725f6e616d65da096c705f616d6f756e74da0c6c6f636b5f656e645f646179da0e6c6f636b5f656e645f6d6f6e7468da0d6c6f636b5f656e645f7965617263060000000000000006000000090000004300000073160100007c0264016b04731074006402830182017c0064006b03732074006403830182017c0364006b03733074006404830182017c0464006b03734074006405830182017c0564006b037350740064068301820174016a017c057c047c0364078d0374026b05736c740064088301820174036a047c0074056a0674056a077c0264098d04010074036a087c007409640a19007c02640b1b007409640c19001400640d8d030100740a7c0074056a077c016603190064016b0272de7c0274016a017c057c047c03640164016401640e8d066702740a7c0074056a077c0166033c006e34740a7c0074056a077c0166031900640119007c02170074016a017c057c047c0364078d036702740a7c0074056a077c0166033c0064005300290f4e72010000007a1e4d7573742070726f76696465206c7020706f696e747320616d6f756e74217a1c4d7573742070726f7669646520746f6b656e20636f6e7472616374217a1d4d7573742070726f7669646520656e6420646179206f66206c6f636b217a1f4d7573742070726f7669646520656e64206d6f6e7468206f66206c6f636b217a1e4d7573742070726f7669646520656e642079656172206f66206c6f636b212903da0479656172da056d6f6e7468da036461797a1f4c6f636b20656e642063616e6e6f7420626520696e2074686520706173742129047205000000da02746fda0c6d61696e5f6163636f756e74da06616d6f756e74720b000000e964000000720900000029037205000000721d000000721f0000002906721a000000721b000000721c000000da04686f7572da066d696e757465da0b6d6963726f7365636f6e64290bda0e417373657274696f6e4572726f72da086461746574696d65da036e6f77da0a726f636b657473776170da177472616e736665725f6c69717569646974795f66726f6d720f000000da04746869737210000000da127472616e736665725f6c6971756964697479720e000000da095f5f6c6f636b6572732906721400000072150000007216000000721700000072180000007219000000721100000072110000007212000000da0d6372656174655f6c6f636b65720e0000007326000000000310011001100110011001080114010a010c01080118011401020108011e02020114010801722c000000290272140000007215000000630200000000000000020000000700000043000000736a0000007c0064006b037310740064018301820174017c0074026a037c01660319006402190074046b017330740064038301820174056a067c0074026a0374017c0074026a037c01660319006404190064058d03010074017c0074026a037c01660319006a07830001006400530029064e7a1c4d7573742070726f7669646520746f6b656e20636f6e747261637421e9010000007a2d54686520656e64206f66206c6971756964697479206c6f636b206973206e6f7420726561636865642079657421720100000029037205000000721d000000721f00000029087224000000722b000000720f000000721000000072260000007227000000722a000000da05636c656172290272140000007215000000721100000072110000007212000000da0a656e645f6c6f636b657227000000730c0000000002100112010e010a011801722f0000002902da036b6579da0576616c7565630200000000000000020000000300000043000000732200000074006a017402640119006b02731674036402830182017c0174027c003c006400530029034e720c0000007a1c4f6e6c79206f776e65722063616e20736574206d65746164617461212904720f0000007210000000720e0000007224000000290272300000007231000000721100000072110000007212000000da0f6368616e67655f6d65746164617461310000007304000000000216017232000000290eda1c636f6e5f726f636b6574737761705f6f6666696369616c5f76315f317227000000da0448617368722b000000720e0000007213000000da085f5f6578706f7274da03737472da05666c6f6174da03696e74722c000000722f000000da03416e7972320000007211000000721100000072110000007212000000da083c6d6f64756c653e0100000073160000000801060108010c030807060106011417060112090601