Contract con_node_test3_distribute


Contract Code


  
1 import con_node_test2 as node
2
3 investors = Hash(default_value=0)
4
5 end_date = Variable()
6 total_tau_amount = Variable()
7 total_node_amount = Variable()
8 min_tau_amount = Variable()
9
10 @export
11 def setup(time_in_hours: int, min_tau: float, node_amount: float):
12 end_date.set(now + datetime.timedelta(hours=time_in_hours))
13 total_node_amount.set(node_amount)
14 min_tau_amount.set(min_tau)
15
16 node.transfer_from(amount=node_amount, to=ctx.this, main_account=ctx.caller)
17
18 @export
19 def invest(amount_tau: float):
20 assert amount_tau >= min_tau_amount.get(), f'You need to invest at least {min_tau_amount.get()} TAU'
21 assert end_date.get() > now, 'Investment timeframe ended'
22
23 total_tau_amount.set(total_tau_amount.get() + amount_tau)
24 investors[ctx.caller] += amount_tau
25
26 return investors[ctx.caller]
27
28 @export
29 def time_until_end():
30 return end_date.get() - now
31
32 @export
33 def withdraw_node_token():
34 assert end_date.get() < now, f'Investment time not over yet! End date is {end_date.get()}'
35 assert investors[ctx.caller] > 0, 'You do not own any NODE tokens'
36
37 tau_percent_owned = investors[ctx.caller] / total_tau_amount.get() * 100
38 node_owned = total_node_amount.get() / 100 * tau_percent_owned
39
40 node.transfer(amount=node_owned, to=ctx.caller)
41

Byte Code

e30000000000000000000000000500000040000000739a000000640064016c005a01650264006402640364048d035a0365046402640564068d025a0565046402640764068d025a0665046402640864068d025a0765046402640964068d025a08650964028301650a650b650b640a9c03640b640c840483015a0c650964028301650b640d9c01640e640f840483015a0d65096402830164106411840083015a0e65096402830164126413840083015a0f640153002914e9000000004eda19636f6e5f6e6f64655f74657374335f64697374726962757465da09696e766573746f72732903da0d64656661756c745f76616c7565da08636f6e7472616374da046e616d65da08656e645f64617465290272050000007206000000da10746f74616c5f7461755f616d6f756e74da11746f74616c5f6e6f64655f616d6f756e74da0e6d696e5f7461755f616d6f756e742903da0d74696d655f696e5f686f757273da076d696e5f746175da0b6e6f64655f616d6f756e74630300000000000000030000000500000043000000734200000074006a01740274036a047c0064018d0117008301010074056a017c028301010074066a017c018301010074076a087c0274096a0a74096a0b64028d0301006400530029034e2901da05686f7572732903da06616d6f756e74da02746fda0c6d61696e5f6163636f756e74290cda0a5f5f656e645f64617465da03736574da036e6f77da086461746574696d65da0974696d6564656c7461da135f5f746f74616c5f6e6f64655f616d6f756e74da105f5f6d696e5f7461755f616d6f756e74da046e6f6465da0d7472616e736665725f66726f6dda03637478da0474686973da0663616c6c65722903720b000000720c000000720d000000a900721e000000da00da0573657475700d0000007308000000000216010a010a0172200000002901da0a616d6f756e745f74617563010000000000000001000000040000004300000073620000007c0074006a0183006b0573207402640174006a0183009b0064029d038301820174036a01830074046b047334740264038301820174056a0674056a0183007c00170083010100740774086a09050019007c00370003003c00740774086a091900530029044e7a1c596f75206e65656420746f20696e76657374206174206c65617374207a04205441557a1a496e766573746d656e742074696d656672616d6520656e646564290a7218000000da03676574da0e417373657274696f6e4572726f7272120000007214000000da125f5f746f74616c5f7461755f616d6f756e747213000000da0b5f5f696e766573746f7273721b000000721d00000029017221000000721e000000721e000000721f000000da06696e7665737416000000730c00000000020e0112011401120112017226000000630000000000000000000000000200000043000000730c00000074006a01830074021800530029014e2903721200000072220000007214000000721e000000721e000000721e000000721f000000da0e74696d655f756e74696c5f656e6420000000730200000000027227000000630000000000000000020000000400000043000000736e00000074006a01830074026b00731e7403640174006a0183009b009d0283018201740474056a06190064026b0473347403640383018201740474056a06190074076a0183001b00640414007d0074086a01830064041b007c0014007d0174096a0a7c0174056a0664058d0201006400530029064e7a2a496e766573746d656e742074696d65206e6f74206f766572207965742120456e6420646174652069732072010000007a1e596f7520646f206e6f74206f776e20616e79204e4f444520746f6b656e73e9640000002902720f0000007210000000290b72120000007222000000721400000072230000007225000000721b000000721d000000722400000072170000007219000000da087472616e736665722902da117461755f70657263656e745f6f776e6564da0a6e6f64655f6f776e6564721e000000721e000000721f000000da1377697468647261775f6e6f64655f746f6b656e25000000730c000000000206011801160216011001722c0000002910da0e636f6e5f6e6f64655f74657374327219000000da04486173687225000000da085661726961626c657212000000722400000072170000007218000000da085f5f6578706f7274da03696e74da05666c6f6174722000000072260000007227000000722c000000721e000000721e000000721e000000721f000000da083c6d6f64756c653e01000000731e0000000801060108010c0104010801040108010401080306011408060110091005