Contract con_test_time_lock4


Contract Code


  
1 import currency as tau
2
3 multisig = Hash(default_value=False)
4
5 withdrawn_amount = Variable()
6 total_amount = Variable()
7 start_date = Variable()
8 end_date = Variable()
9
10 ENDO = '4489524c8d7a36a488d1be063af1d89ccc57d6aabb58e75badf0f020621dd0cc'
11 LAMDEN = 'ae7d14d6d9b8443f881ba6244727b69b681010e782d4fe482dbfb0b6aca02d5d'
12 BENJI = '6351a80d32cbb3c173e490b093a95b15bcf4f6190251863669202d7fe2257af3'
13 CS = 'c913e1c146f1426a8c0dc042e92ccc18a54dd612d878c84e433ecc9705d91ee5'
14
15 @construct
16 def init():
17 start_date.set(now)
18 end_date.set(start_date.get() + datetime.timedelta(days=3))
19 withdrawn_amount.set(0)
20 total_amount.set(0)
21
22 @export
23 def deposit_tau(tau_amount: float):
24 tau.transfer_from(main_account=ctx.caller, amount=tau_amount, to=ctx.this)
25 total_amount.set(total_amount.get() + tau_amount)
26
27 @export
28 def withdraw_tau():
29 assert ctx.caller == ENDO, 'Nope'
30
31 passed_time = (now - start_date.get()).days
32 six_months = (end_date.get() - start_date.get()).days
33
34 if passed_time >= six_months:
35 tau.transfer(to=ENDO, amount=tau.balance_of(ctx.this))
36 else:
37 can_claim = total_amount.get() * (passed_time / six_months)
38 claim_now = can_claim - withdrawn_amount.get()
39 tau.transfer(to=ENDO, amount=claim_now)
40 withdrawn_amount.set(withdrawn_amount.get() + claim_now)
41
42 @export
43 def agree_to_return_tau_to_lamden(agree: bool):
44 multisig[ctx.caller] = agree
45
46 @export
47 def emergency_withdraw_tau():
48 counter = 0
49
50 if multisig[BENJI]:
51 counter += 1
52 if multisig[CS]:
53 counter += 1
54
55 assert counter > 0, 'Nope'
56 tau.transfer(to=LAMDEN, amount=tau.balance_of(ctx.this))
57

Byte Code

e3000000000000000000000000050000004000000073ae000000640064016c005a01650264026403640464058d035a0365046403640664078d025a0565046403640864078d025a0665046403640964078d025a0765046403640a64078d025a08640b5a09640c5a0a640d5a0b640e5a0c640f641084005a0d650e64038301650f64119c0164126413840483015a10650e6403830164146415840083015a11650e64038301651264169c0164176418840483015a13650e640383016419641a840083015a1464015300291be9000000004e46da13636f6e5f746573745f74696d655f6c6f636b34da086d756c74697369672903da0d64656661756c745f76616c7565da08636f6e7472616374da046e616d65da1077697468647261776e5f616d6f756e74290272050000007206000000da0c746f74616c5f616d6f756e74da0a73746172745f64617465da08656e645f64617465da4034343839353234633864376133366134383864316265303633616631643839636363353764366161626235386537356261646630663032303632316464306363da4061653764313464366439623834343366383831626136323434373237623639623638313031306537383264346665343832646266623062366163613032643564da4036333531613830643332636262336331373365343930623039336139356231356263663466363139303235313836333636393230326437666532323537616633da4063393133653163313436663134323661386330646330343265393263636331386135346464363132643837386338346534333365636339373035643931656535630000000000000000000000000500000043000000733c00000074006a0174028301010074036a0174006a04830074056a06640164028d0117008301010074076a0164038301010074086a016403830101006400530029044ee9030000002901da046461797372010000002909da0c5f5f73746172745f64617465da03736574da036e6f77da0a5f5f656e645f64617465da03676574da086461746574696d65da0974696d6564656c7461da125f5f77697468647261776e5f616d6f756e74da0e5f5f746f74616c5f616d6f756e74a900721a000000721a000000da00da045f5f5f5f0f000000730800000000010a011a010a01721c0000002901da0a7461755f616d6f756e74630100000000000000010000000500000043000000732a00000074006a0174026a037c0074026a0464018d03010074056a0674056a0783007c001700830101006400530029024e2903da0c6d61696e5f6163636f756e74da06616d6f756e74da02746f2908da03746175da0d7472616e736665725f66726f6dda03637478da0663616c6c6572da04746869737219000000721200000072150000002901721d000000721a000000721a000000721b000000da0b6465706f7369745f746175160000007304000000000214017226000000630000000000000000040000000400000043000000739200000074006a0174026b0273127403640183018201740474056a06830018006a077d0074086a06830074056a06830018006a077d017c007c016b05725274096a0a740274096a0b74006a0c830164028d0201006e3c740d6a0683007c007c011b0014007d027c02740e6a06830018007d0374096a0a74027c0364028d020100740e6a0f740e6a0683007c031700830101006400530029034eda044e6f706529027220000000721f000000291072230000007224000000da04454e444fda0e417373657274696f6e4572726f72721300000072110000007215000000721000000072140000007221000000da087472616e73666572da0a62616c616e63655f6f6672250000007219000000721800000072120000002904da0b7061737365645f74696d65da0a7369785f6d6f6e746873da0963616e5f636c61696dda09636c61696d5f6e6f77721a000000721a000000721b000000da0c77697468647261775f7461751c0000007312000000000212010e0112010801180210010c010e0172300000002901da056167726565630100000000000000010000000300000043000000730e0000007c00740074016a023c006400530029014e2903da0a5f5f6d756c74697369677223000000722400000029017231000000721a000000721a000000721b000000da1d61677265655f746f5f72657475726e5f7461755f746f5f6c616d64656e2a000000730200000000027233000000630000000000000000010000000400000043000000734e00000064017d0074007401190072147c00640237007d0074007402190072247c00640237007d007c0064016b047334740364038301820174046a05740674046a0774086a09830164048d0201006400530029054e7201000000e901000000722700000029027220000000721f000000290a7232000000da0542454e4a49da02435372290000007221000000722a000000da064c414d44454e722b000000722300000072250000002901da07636f756e746572721a000000721a000000721b000000da16656d657267656e63795f77697468647261775f7461752f000000730e000000000204010801080108010801100172390000002915da0863757272656e63797221000000da04486173687232000000da085661726961626c6572180000007219000000721100000072140000007228000000723700000072350000007236000000721c000000da085f5f6578706f7274da05666c6f617472260000007230000000da04626f6f6c72330000007239000000721a000000721a000000721a000000721b000000da083c6d6f64756c653e010000007324000000080106010801040108010c010c010c010401040104010403080706011005100e06011004