Contract con_spange_jar


Contract Code


  
1 # Spare Change Jar - Locks a Jar for X days
2 # Big Jars - LP time-locker for SPANGE token liquidity
3 # Small Jars - Token time-locker for SPANGE token
4 import con_rocketswap_official_v1_1 as rocketswap
5 import con_spange as spange
6
7 metadata = Hash()
8 jars = Hash(default_value=0)
9 sealed_for = Variable()
10 sealed_until = Variable()
11
12 @construct
13 def seed(): metadata['OWNER'] = ctx.caller
14
15 @export
16 def Big_Spange_Jar(jar_label: str, lp_amount: float, sealed_for_days: int):
17 assert lp_amount > 0, 'Must provide lp points amount!'
18 assert sealed_for_days >= 1, 'Must seal jar for some time in days!'
19 sealed_for = datetime.timedelta(days=sealed_for_days)
20 sealed_until.set(now+sealed_for)
21
22 if(jars[ctx.caller, jar_label]) == 0:
23 rocketswap.transfer_liquidity_from(contract="con_spange", to=ctx.this, main_account=ctx.caller, amount=lp_amount)
24 jars[ctx.caller, jar_label] = [lp_amount, sealed_until.get()]
25 else:
26 return "There is already a jar with this label."
27
28 @export
29 def Small_Spange_Jar(jar_label: str, token_amount: float, sealed_for_days: int):
30 assert token_amount > 0, 'Must provide token amount!'
31 assert sealed_for_days >= 1, 'Must seal jar for some time in days!'
32 sealed_for = datetime.timedelta(days=sealed_for_days)
33 sealed_until.set(now+sealed_for)
34
35 if(jars[ctx.caller, jar_label]) == 0:
36 spange.transfer_from(to=ctx.this, main_account=ctx.caller, amount=token_amount)
37 jars[ctx.caller, jar_label] = [token_amount, sealed_until.get()]
38 else:
39 return "There is already a jar with this label."
40
41 @export
42 def Open_Big_Jar(jar_label: str):
43 assert not jars[ctx.caller, jar_label] == 0, 'Jar does not exist!'
44 assert not jars[ctx.caller, jar_label] == 1, "Jar has been emptied!"
45 assert jars[ctx.caller, jar_label][1] <= now, 'Jar Stuck!'
46 rocketswap.transfer_liquidity(contract="con_spange", to=ctx.caller, amount=jars[ctx.caller,jar_label][0])
47 jars[ctx.caller, jar_label] = 1
48
49 @export
50 def Open_Small_Jar(jar_label: str):
51 assert not jars[ctx.caller, jar_label] == 0, 'Jar does not exist!'
52 assert not jars[ctx.caller, jar_label] == 1, "Jar has been emptied!"
53 assert jars[ctx.caller, jar_label][1] <= now, 'Jar Stuck!'
54 spange.transfer(to=ctx.caller, amount=jars[ctx.caller,jar_label][0])
55 jars[ctx.caller, jar_label] = 1
56
57 @export
58 def change_metadata(key: str, value: Any):
59 assert ctx.caller == metadata['OWNER'], 'Only owner can set metadata!'
60 metadata[key] = value

Byte Code

e3000000000000000000000000050000004000000073c6000000640064016c005a01640064016c025a0365046402640364048d025a05650464006402640564068d035a0665076402640764048d025a0865076402640864048d025a096409640a84005a0a650b64028301650c650d650e640b9c03640c640d840483015a0f650b64028301650c650d650e640e9c03640f6410840483015a10650b64028301650c64119c0164126413840483015a11650b64028301650c64119c0164146415840483015a12650b64028301650c651364169c0264176418840483015a14640153002919e9000000004eda0e636f6e5f7370616e67655f6a6172da086d657461646174612902da08636f6e7472616374da046e616d65da046a6172732903da0d64656661756c745f76616c756572040000007205000000da0a7365616c65645f666f72da0c7365616c65645f756e74696c630000000000000000000000000300000043000000730e00000074006a01740264013c006400530029024eda054f574e45522903da03637478da0663616c6c6572da0a5f5f6d65746164617461a900720e000000720e000000da00da045f5f5f5f090000007302000000000172100000002903da096a61725f6c6162656cda096c705f616d6f756e74da0f7365616c65645f666f725f6461797363030000000000000004000000060000004300000073820000007c0164016b04731074006402830182017c0264036b057320740064048301820174016a027c0264058d017d0374036a0474057c03170083010100740674076a087c006602190064016b02727a74096a0a640674076a0b74076a087c0164078d0401007c0174036a0c83006702740674076a087c0066023c006e04640853006400530029094e72010000007a1e4d7573742070726f76696465206c7020706f696e747320616d6f756e7421e9010000007a244d757374207365616c206a617220666f7220736f6d652074696d6520696e2064617973212901da0464617973da0a636f6e5f7370616e676529047204000000da02746fda0c6d61696e5f6163636f756e74da06616d6f756e747a27546865726520697320616c72656164792061206a617220776974682074686973206c6162656c2e290dda0e417373657274696f6e4572726f72da086461746574696d65da0974696d6564656c7461da0e5f5f7365616c65645f756e74696cda03736574da036e6f77da065f5f6a617273720b000000720c000000da0a726f636b657473776170da177472616e736665725f6c69717569646974795f66726f6dda0474686973da036765742904721100000072120000007213000000da0c5f5f7365616c65645f666f72720e000000720e000000720f000000da0e4269675f5370616e67655f4a61720d00000073120000000002100110010c010e0112010a010c011802722600000029037211000000da0c746f6b656e5f616d6f756e74721300000063030000000000000004000000050000004300000073800000007c0164016b04731074006402830182017c0264036b057320740064048301820174016a027c0264058d017d0374036a0474057c03170083010100740674076a087c006602190064016b02727874096a0a74076a0b74076a087c0164068d0301007c0174036a0c83006702740674076a087c0066023c006e04640753006400530029084e72010000007a1a4d7573742070726f7669646520746f6b656e20616d6f756e742172140000007a244d757374207365616c206a617220666f7220736f6d652074696d6520696e2064617973212901721500000029037217000000721800000072190000007a27546865726520697320616c72656164792061206a617220776974682074686973206c6162656c2e290d721a000000721b000000721c000000721d000000721e000000721f0000007220000000720b000000720c000000da067370616e6765da0d7472616e736665725f66726f6d7223000000722400000029047211000000722700000072130000007225000000720e000000720e000000720f000000da10536d616c6c5f5370616e67655f4a61721b00000073120000000003100110010c010e0112010c0108011802722a000000290172110000006301000000000000000100000006000000430000007388000000740074016a027c006602190064016b020c00731c7403640283018201740074016a027c006602190064036b020c0073387403640483018201740074016a027c00660219006403190074046b017356740364058301820174056a06640674016a02740074016a027c00660219006401190064078d0301006403740074016a027c0066023c006400530029084e72010000007a134a617220646f6573206e6f742065786973742172140000007a154a617220686173206265656e20656d7074696564217a0a4a617220537475636b217216000000290372040000007217000000721900000029077220000000720b000000720c000000721a000000721f0000007221000000da127472616e736665725f6c697175696469747929017211000000720e000000720e000000720f000000da0c4f70656e5f4269675f4a61722a000000730c00000000021c011c011e010a011601722c0000006301000000000000000100000005000000430000007386000000740074016a027c006602190064016b020c00731c7403640283018201740074016a027c006602190064036b020c0073387403640483018201740074016a027c00660219006403190074046b017356740364058301820174056a0674016a02740074016a027c00660219006401190064068d0201006403740074016a027c0066023c006400530029074e72010000007a134a617220646f6573206e6f742065786973742172140000007a154a617220686173206265656e20656d7074696564217a0a4a617220537475636b2129027217000000721900000029077220000000720b000000720c000000721a000000721f0000007228000000da087472616e7366657229017211000000720e000000720e000000720f000000da0e4f70656e5f536d616c6c5f4a617234000000730a00000000021c011c011e011e01722e0000002902da036b6579da0576616c7565630200000000000000020000000300000043000000732200000074006a017402640119006b02731674036402830182017c0174027c003c006400530029034e720a0000007a1c4f6e6c79206f776e65722063616e20736574206d65746164617461212904720b000000720c000000720d000000721a0000002902722f0000007230000000720e000000720e000000720f000000da0f6368616e67655f6d657461646174613d00000073040000000002160172310000002915da1c636f6e5f726f636b6574737761705f6f6666696369616c5f76315f31722100000072160000007228000000da0448617368720d0000007220000000da085661726961626c657225000000721d0000007210000000da085f5f6578706f7274da03737472da05666c6f6174da03696e747226000000722a000000722c000000722e000000da03416e797231000000720e000000720e000000720e000000720f000000da083c6d6f64756c653e010000007320000000080108010c010e010c010c0308040601140d0601140e06011009060110080601