Contract con_test_time_lock6


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(minutes=10))
19 withdrawn_amount.set(0)
20 total_amount.set(0)
21
22 @export
23 def withdraw_tau():
24 assert ctx.caller == ENDO, 'Nope'
25
26 if total_amount.get() == 0:
27 total_amount.set(tau.balance_of(ctx.this))
28
29 passed_time = (now - start_date.get()).seconds
30 six_months = (end_date.get() - start_date.get()).seconds
31
32 if passed_time >= six_months:
33 tau.transfer(to=ENDO, amount=tau.balance_of(ctx.this))
34 else:
35 can_claim = total_amount.get() * (passed_time / six_months)
36 claim_now = can_claim - withdrawn_amount.get()
37 tau.transfer(to=ENDO, amount=claim_now)
38 withdrawn_amount.set(withdrawn_amount.get() + claim_now)
39
40 @export
41 def agree_to_return_tau_to_lamden(agree: bool):
42 multisig[ctx.caller] = agree
43
44 @export
45 def emergency_withdraw_tau():
46 assert ctx.caller == LAMDEN, 'Nope'
47
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

e300000000000000000000000005000000400000007398000000640064016c005a01650264026403640464058d035a0365046403640664078d025a0565046403640864078d025a0665046403640964078d025a0765046403640a64078d025a08640b5a09640c5a0a640d5a0b640e5a0c640f641084005a0d650e6403830164116412840083015a0f650e64038301651064139c0164146415840483015a11650e6403830164166417840083015a12640153002918e9000000004e46da13636f6e5f746573745f74696d655f6c6f636b36da086d756c74697369672903da0d64656661756c745f76616c7565da08636f6e7472616374da046e616d65da1077697468647261776e5f616d6f756e74290272050000007206000000da0c746f74616c5f616d6f756e74da0a73746172745f64617465da08656e645f64617465da4034343839353234633864376133366134383864316265303633616631643839636363353764366161626235386537356261646630663032303632316464306363da4061653764313464366439623834343366383831626136323434373237623639623638313031306537383264346665343832646266623062366163613032643564da4036333531613830643332636262336331373365343930623039336139356231356263663466363139303235313836333636393230326437666532323537616633da4063393133653163313436663134323661386330646330343265393263636331386135346464363132643837386338346534333365636339373035643931656535630000000000000000000000000500000043000000733c00000074006a0174028301010074036a0174006a04830074056a06640164028d0117008301010074076a0164038301010074086a016403830101006400530029044ee90a0000002901da076d696e7574657372010000002909da0c5f5f73746172745f64617465da03736574da036e6f77da0a5f5f656e645f64617465da03676574da086461746574696d65da0974696d6564656c7461da125f5f77697468647261776e5f616d6f756e74da0e5f5f746f74616c5f616d6f756e74a900721a000000721a000000da00da045f5f5f5f0f000000730800000000010a011a010a01721c00000063000000000000000004000000040000004300000073b000000074006a0174026b027312740364018301820174046a05830064026b02723074046a0674076a0874006a09830183010100740a740b6a05830018006a0c7d00740d6a058300740b6a05830018006a0c7d017c007c016b05727074076a0e740274076a0874006a09830164038d0201006e3c74046a0583007c007c011b0014007d027c02740f6a05830018007d0374076a0e74027c0364038d020100740f6a06740f6a0583007c031700830101006400530029044eda044e6f706572010000002902da02746fda06616d6f756e742910da03637478da0663616c6c6572da04454e444fda0e417373657274696f6e4572726f72721900000072150000007212000000da03746175da0a62616c616e63655f6f66da047468697372130000007211000000da077365636f6e64737214000000da087472616e7366657272180000002904da0b7061737365645f74696d65da0a7369785f6d6f6e746873da0963616e5f636c61696dda09636c61696d5f6e6f77721a000000721a000000721b000000da0c77697468647261775f746175160000007316000000000212010c0112010e0112010801180210010c010e01722d0000002901da056167726565630100000000000000010000000300000043000000730e0000007c00740074016a023c006400530029014e2903da0a5f5f6d756c7469736967722000000072210000002901722e000000721a000000721a000000721b000000da1d61677265655f746f5f72657475726e5f7461755f746f5f6c616d64656e26000000730200000000027230000000630000000000000000010000000400000043000000736000000074006a0174026b027312740364018301820164027d0074047405190072267c00640337007d0074047406190072367c00640337007d007c0064026b047346740364018301820174076a08740274076a0974006a0a830164048d0201006400530029054e721d0000007201000000e9010000002902721e000000721f000000290b72200000007221000000da064c414d44454e7223000000722f000000da0542454e4a49da02435372240000007228000000722500000072260000002901da07636f756e746572721a000000721a000000721b000000da16656d657267656e63795f77697468647261775f7461752b00000073100000000002120104010801080108010801100172360000002913da0863757272656e63797224000000da0448617368722f000000da085661726961626c6572180000007219000000721100000072140000007222000000723200000072330000007234000000721c000000da085f5f6578706f7274722d000000da04626f6f6c72300000007236000000721a000000721a000000721a000000721b000000da083c6d6f64756c653e010000007320000000080106010801040108010c010c010c0104010401040104030807101006011004