tx · 9Foa9wW6AsqFH5TrwWMRfDKiR2SWLBTQwmDXVJBPrJeU

3MzQVX6dx814uhiG8oUgjekfS3edJmTEGV6:  -0.01000000 Waves

2020.05.29 19:44 [1020006] smart account 3MzQVX6dx814uhiG8oUgjekfS3edJmTEGV6 > SELF 0.00000000 Waves

{ "type": 13, "id": "9Foa9wW6AsqFH5TrwWMRfDKiR2SWLBTQwmDXVJBPrJeU", "fee": 1000000, "feeAssetId": null, "timestamp": 1590770641870, "version": 1, "sender": "3MzQVX6dx814uhiG8oUgjekfS3edJmTEGV6", "senderPublicKey": "Fj9eozBBFQcn1iXebFDwbHfUwhmMB2t3DXKHXdT7oqg", "proofs": [ "4BEZUhVR2FbxspCEGoPK7tzacVjAygoSLuqLDTDupGLCa982AkvioRtHyQrPJR2MYHg5QvgUjT1Mk8iMmdKoB7qY" ], "script": "base64:AAIDAAAAAAAAABsIARIDCgEIEgASBAoCCAgSABIDCgEBEgMKAQEAAAAeAAAAAAtmdW5kQWRkcmVzcwIAAAAMRnVuZCBBZGRyZXNzAAAAAARVU0ROAQAAACC2JinDBPXOU5GkDkt1JC9kjFGx+t+vVCm9SNIdKrKq0QAAAAAETk9ORQIAAAAEbm9uZQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABAAAAA2tleQQAAAADbnVtBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABQAAAANudW0BAAAAC2dldFN0ckJ5S2V5AAAAAQAAAANrZXkEAAAAA3N0cgQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQUAAAAETk9ORQUAAAADc3RyAQAAAA9nZXRCb29sZWFuQnlLZXkAAAABAAAAA2tleQQAAAAEYm9vbAQAAAAHJG1hdGNoMAkABBsAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAB0Jvb2xlYW4EAAAAAWIFAAAAByRtYXRjaDAFAAAAAWIHBQAAAARib29sAQAAAAtnZXRLZXlUaXRsZQAAAAACAAAABXRpdGxlAQAAAA1nZXRWYWx1ZVRpdGxlAAAAAAkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAC2dldEtleVRpdGxlAAAAAAEAAAAPZ2V0S2V5R1BBZGRyZXNzAAAAAAIAAAACR1ABAAAAEWdldFZhbHVlR1BBZGRyZXNzAAAAAAkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAD2dldEtleUdQQWRkcmVzcwAAAAABAAAAD2dldEtleUxQQWRkcmVzcwAAAAEAAAAEbHBpZAkAASwAAAACAgAAAANMUF8JAAGkAAAAAQUAAAAEbHBpZAEAAAARZ2V0VmFsdWVMUEFkZHJlc3MAAAABAAAABGxwaWQJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAAA9nZXRLZXlMUEFkZHJlc3MAAAABBQAAAARscGlkAQAAAA1nZXRLZXlMUENvdW50AAAAAAIAAAAITFBfY291bnQBAAAAD2dldFZhbHVlTFBDb3VudAAAAAAJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAAA1nZXRLZXlMUENvdW50AAAAAAEAAAAPZ2V0S2V5R1BGdW5kaW5nAAAAAAIAAAAKR1BfZnVuZGluZwEAAAARZ2V0VmFsdWVHUEZ1bmRpbmcAAAAACQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAPZ2V0S2V5R1BGdW5kaW5nAAAAAAEAAAAQZ2V0S2V5TFBzRnVuZGluZwAAAAACAAAAC0xQc19mdW5kaW5nAQAAABJnZXRWYWx1ZUxQc0Z1bmRpbmcAAAAACQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAQZ2V0S2V5TFBzRnVuZGluZwAAAAABAAAADWdldEtleUZ1bmRpbmcAAAAAAgAAAAdmdW5kaW5nAQAAAA9nZXRWYWx1ZUZ1bmRpbmcAAAAACQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAANZ2V0S2V5RnVuZGluZwAAAAABAAAAGGdldEtleVBhcnRpY2lwYW50RnVuZGluZwAAAAEAAAAHYWNjb3VudAkAASwAAAACBQAAAAdhY2NvdW50AgAAAAhfZnVuZGluZwEAAAAaZ2V0VmFsdWVQYXJ0aWNpcGFudEZ1bmRpbmcAAAABAAAAB2FjY291bnQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABhnZXRLZXlQYXJ0aWNpcGFudEZ1bmRpbmcAAAABBQAAAAdhY2NvdW50AQAAABlnZXRLZXlBbW91bnRGb3JDYXNoaW5nT3V0AAAAAAIAAAAdYW1vdW50X2Zvcl9kaXN0cmlidXRlZF9wcm9maXQBAAAAG2dldFZhbHVlQW1vdW50Rm9yQ2FzaGluZ091dAAAAAAJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABlnZXRLZXlBbW91bnRGb3JDYXNoaW5nT3V0AAAAAAEAAAAXZ2V0S2V5RGlzdHJpYnV0ZWRQcm9maXQAAAABAAAABWNvdW50CQABLAAAAAICAAAAE2Rpc3RyaWJ1dGVkX3Byb2ZpdF8JAAGkAAAAAQUAAAAFY291bnQBAAAAGWdldFZhbHVlRGlzdHJpYnV0ZWRQcm9maXQAAAABAAAABWNvdW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAXZ2V0S2V5RGlzdHJpYnV0ZWRQcm9maXQAAAABBQAAAAVjb3VudAEAAAAdZ2V0S2V5UHJvZml0RGlzdHJpYnV0aW9uQ291bnQAAAAAAgAAABlwcm9maXRfZGlzdHJpYnV0aW9uX2NvdW50AQAAAB9nZXRWYWx1ZVByb2ZpdERpc3RyaWJ1dGlvbkNvdW50AAAAAAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAHWdldEtleVByb2ZpdERpc3RyaWJ1dGlvbkNvdW50AAAAAAEAAAAVZ2V0S2V5SXNBY2NvdW50Q2FzaGVkAAAAAgAAAAdhY2NvdW50AAAAEWRpc3RyaWJ1dGlvbkNvdW50CQABLAAAAAIJAAEsAAAAAgUAAAAHYWNjb3VudAIAAAAKaXNfY2Foc2VkXwkAAaQAAAABBQAAABFkaXN0cmlidXRpb25Db3VudAEAAAAXZ2V0VmFsdWVJc0FjY291bnRDYXNoZWQAAAACAAAAB2FjY291bnQAAAARZGlzdHJpYnV0aW9uQ291bnQJAQAAAA9nZXRCb29sZWFuQnlLZXkAAAABCQEAAAAVZ2V0S2V5SXNBY2NvdW50Q2FzaGVkAAAAAgUAAAAHYWNjb3VudAUAAAARZGlzdHJpYnV0aW9uQ291bnQAAAAGAAAAAWkBAAAACXN0YXJ0RnVuZAAAAAEAAAAFdGl0bGUEAAAAAkdQCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAA3BtdAkBAAAAB2V4dHJhY3QAAAABCAUAAAABaQAAAAdwYXltZW50AwkBAAAAAiE9AAAAAggFAAAAA3BtdAAAAAdhc3NldElkBQAAAARVU0ROCQAAAgAAAAECAAAAEWNhbiB1c2Ugb25seSBVU0ROAwkBAAAAAiE9AAAAAgkBAAAAEWdldFZhbHVlR1BBZGRyZXNzAAAAAAUAAAAETk9ORQkAAAIAAAABAgAAABh0aGlzIGZ1bmQgYWxyZWFkeSBleGlzdHMJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFF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AAAAAgkBAAAAD2dldFZhbHVlRnVuZGluZwAAAAAIBQAAAANwbXQAAAAGYW1vdW50BQAAAANuaWwAAAABaQEAAAAQZGlzdHJpYnV0ZVByb2ZpdAAAAAAEAAAAC3BhcnRpY2lwYW50CQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAADWN1cnJlbnRQcm9maXQJAABlAAAAAgkBAAAADHdhdmVzQmFsYW5jZQAAAAEJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAALZnVuZEFkZHJlc3MJAQAAABtnZXRWYWx1ZUFtb3VudEZvckNhc2hpbmdPdXQAAAAABAAAABFkaXN0cmlidXRpb25Db3VudAkAAGQAAAACCQEAAAAfZ2V0VmFsdWVQcm9maXREaXN0cmlidXRpb25Db3VudAAAAAAAAAAAAAAAAAEDCQAAAAAAAAIJAQAAABpnZXRWYWx1ZVBhcnRpY2lwYW50RnVuZGluZwAAAAEFAAAAC3BhcnRpY2lwYW50AAAAAAAAAAAACQAAAgAAAAECAAAAGW9ubHkgcGFydGljaXBhbnRzIGFsbG93ZWQDCQAAZwAAAAIAAAAAAAAAAAAFAAAADWN1cnJlbnRQcm9maXQJAAACAAAAAQIAAAAXcHJvZml0IG11c3QgYmUgcG9zaXRpdmUJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABlnZXRLZXlBbW91bnRGb3JDYXNoaW5nT3V0AAAAAAkBAAAADHdhdmVzQmFsYW5jZQAAAAEJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAALZnVuZEFkZHJlc3MJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABdnZXRLZXlEaXN0cmlidXRlZFByb2ZpdAAAAAEFAAAAEWRpc3RyaWJ1dGlvbkNvdW50BQAAAA1jdXJyZW50UHJvZml0CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAdZ2V0S2V5UHJvZml0RGlzdHJpYnV0aW9uQ291bnQAAAAABQAAABFkaXN0cmlidXRpb25Db3VudAUAAAADbmlsAAAAAWkBAAAAC2dldFByb2ZpdExQAAAAAQAAABJkaXN0cmlidXRpb25OdW1iZXIEAAAACWxwQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAA5hbW91bnRJbnZlc3RlZAkBAAAAGmdldFZhbHVlUGFydGljaXBhbnRGdW5kaW5nAAAAAQUAAAAJbHBBZGRyZXNzBAAAAAV0b3RhbAkBAAAAEmdldFZhbHVlTFBzRnVuZGluZwAAAAAEAAAABmFtb3VudAkAAGkAAAACCQAAaAAAAAIJAABpAAAAAgkAAGgAAAACCQEAAAAZZ2V0VmFsdWVEaXN0cmlidXRlZFByb2ZpdAAAAAEFAAAAEmRpc3RyaWJ1dGlvbk51bWJlcgAAAAAAAAAAUAAAAAAAAAAAZAUAAAAOYW1vdW50SW52ZXN0ZWQFAAAABXRvdGFsAwkAAAAAAAACCQEAAAAaZ2V0VmFsdWVQYXJ0aWNpcGFudEZ1bmRpbmcAAAABBQAAAAlscEFkZHJlc3MAAAAAAAAAAAAJAAACAAAAAQIAAAAZb25seSBwYXJ0aWNpcGFudHMgYWxsb3dlZAMJAAAAAAAAAgUAAAAJbHBBZGRyZXNzCQEAAAARZ2V0VmFsdWVHUEFkZHJlc3MAAAAACQAAAgAAAAECAAAAG0dQIGNhbid0IGNhbGwgdGhpcyBmdW5jdGlvbgMJAQAAABdnZXRWYWx1ZUlzQWNjb3VudENhc2hlZAAAAAIFAAAACWxwQWRkcmVzcwUAAAASZGlzdHJpYnV0aW9uTnVtYmVyCQAAAgAAAAECAAAAJHRoaXMgYWNjb3VudCBoYXMgYmVlbiBhbHJlYWR5IGNhc2hlZAMJAABmAAAAAgUAAAAGYW1vdW50CQEAAAAbZ2V0VmFsdWVBbW91bnRGb3JDYXNoaW5nT3V0AAAAAAkAAAIAAAABAgAAABh0aGVyZSBpc24ndCBlbm91Z2ggbW9uZXkJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAVZ2V0S2V5SXNBY2NvdW50Q2FzaGVkAAAAAgUAAAAJbHBBZGRyZXNzBQAAABJkaXN0cmlidXRpb25OdW1iZXIGCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAZZ2V0S2V5QW1vdW50Rm9yQ2FzaGluZ091dAAAAAAJAABlAAAAAgkBAAAAG2dldFZhbHVlQW1vdW50Rm9yQ2FzaGluZ091dAAAAAAFAAAABmFtb3VudAUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAGYW1vdW50BQAAAARVU0ROBQAAAANuaWwAAAABaQEAAAALZ2V0UHJvZml0R1AAAAABAAAAEmRpc3RyaWJ1dGlvbk51bWJlcgQAAAAJZ3BBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAABmFtb3VudAkAAGkAAAACCQAAaAAAAAIJAQAAABlnZXRWYWx1ZURpc3RyaWJ1dGVkUHJvZml0AAAAAQUAAAASZGlzdHJpYnV0aW9uTnVtYmVyAAAAAAAAAAAUAAAAAAAAAABkAwkBAAAAAiE9AAAAAgUAAAAJZ3BBZGRyZXNzCQEAAAARZ2V0VmFsdWVHUEFkZHJlc3MAAAAACQAAAgAAAAECAAAAHm9ubHkgR1AgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgMJAQAAABdnZXRWYWx1ZUlzQWNjb3VudENhc2hlZAAAAAIFAAAACWdwQWRkcmVzcwUAAAASZGlzdHJpYnV0aW9uTnVtYmVyCQAAAgAAAAECAAAAJHRoaXMgYWNjb3VudCBoYXMgYmVlbiBhbHJlYWR5IGNhc2hlZAMJAABmAAAAAgUAAAAGYW1vdW50CQEAAAAbZ2V0VmFsdWVBbW91bnRGb3JDYXNoaW5nT3V0AAAAAAkAAAIAAAABAgAAABh0aGVyZSBpc24ndCBlbm91Z2ggbW9uZXkJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAVZ2V0S2V5SXNBY2NvdW50Q2FzaGVkAAAAAgUAAAAJZ3BBZGRyZXNzBQAAABJkaXN0cmlidXRpb25OdW1iZXIGCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAZZ2V0S2V5QW1vdW50Rm9yQ2FzaGluZ091dAAAAAAJAABlAAAAAgkBAAAAG2dldFZhbHVlQW1vdW50Rm9yQ2FzaGluZ091dAAAAAAFAAAABmFtb3VudAUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAGYW1vdW50BQAAAARVU0ROBQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAAAckbWF0Y2gwBQAAAAJ0eAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24EAAAAAWkFAAAAByRtYXRjaDADCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleQkAAAAAAAACCAUAAAABaQAAAARkQXBwCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAECAAAADERTQkEgQWRkcmVzcwcDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABU9yZGVyBAAAAAFvBQAAAAckbWF0Y2gwBAAAAAdidXlVU0ROAwMJAAAAAAAAAggIBQAAAAFvAAAACWFzc2V0UGFpcgAAAAthbW91bnRBc3NldAUAAAAEVVNETgkAAAAAAAACCAUAAAABbwAAAAlvcmRlclR5cGUFAAAAA0J1eQcGAwkAAAAAAAACCAgFAAAAAW8AAAAJYXNzZXRQYWlyAAAACnByaWNlQXNzZXQFAAAABFVTRE4JAAAAAAAAAggFAAAAAW8AAAAJb3JkZXJUeXBlBQAAAARTZWxsBwMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5BQAAAAdidXlVU0ROBweG3Ggw", "chainId": 84, "height": 1020006, "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let fundAddress = "Fund Address"
5+
6+let USDN = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
7+
8+let NONE = "none"
9+
10+func getNumberByKey (key) = {
11+ let num = match getInteger(this, key) {
12+ case a: Int =>
13+ a
14+ case _ =>
15+ 0
16+ }
17+ num
18+ }
19+
20+
21+func getStrByKey (key) = {
22+ let str = match getString(this, key) {
23+ case a: String =>
24+ a
25+ case _ =>
26+ NONE
27+ }
28+ str
29+ }
30+
31+
32+func getBooleanByKey (key) = {
33+ let bool = match getBoolean(this, key) {
34+ case b: Boolean =>
35+ b
36+ case _ =>
37+ false
38+ }
39+ bool
40+ }
41+
42+
43+func getKeyTitle () = "title"
44+
45+
46+func getValueTitle () = getStrByKey(getKeyTitle())
47+
48+
49+func getKeyGPAddress () = "GP"
50+
51+
52+func getValueGPAddress () = getStrByKey(getKeyGPAddress())
53+
54+
55+func getKeyLPAddress (lpid) = ("LP_" + toString(lpid))
56+
57+
58+func getValueLPAddress (lpid) = getStrByKey(getKeyLPAddress(lpid))
59+
60+
61+func getKeyLPCount () = "LP_count"
62+
63+
64+func getValueLPCount () = getNumberByKey(getKeyLPCount())
65+
66+
67+func getKeyGPFunding () = "GP_funding"
68+
69+
70+func getValueGPFunding () = getNumberByKey(getKeyGPFunding())
71+
72+
73+func getKeyLPsFunding () = "LPs_funding"
74+
75+
76+func getValueLPsFunding () = getNumberByKey(getKeyLPsFunding())
77+
78+
79+func getKeyFunding () = "funding"
80+
81+
82+func getValueFunding () = getNumberByKey(getKeyFunding())
83+
84+
85+func getKeyParticipantFunding (account) = (account + "_funding")
86+
87+
88+func getValueParticipantFunding (account) = getNumberByKey(getKeyParticipantFunding(account))
89+
90+
91+func getKeyAmountForCashingOut () = "amount_for_distributed_profit"
92+
93+
94+func getValueAmountForCashingOut () = getNumberByKey(getKeyAmountForCashingOut())
95+
96+
97+func getKeyDistributedProfit (count) = ("distributed_profit_" + toString(count))
98+
99+
100+func getValueDistributedProfit (count) = getNumberByKey(getKeyDistributedProfit(count))
101+
102+
103+func getKeyProfitDistributionCount () = "profit_distribution_count"
104+
105+
106+func getValueProfitDistributionCount () = getNumberByKey(getKeyProfitDistributionCount())
107+
108+
109+func getKeyIsAccountCashed (account,distributionCount) = ((account + "is_cahsed_") + toString(distributionCount))
110+
111+
112+func getValueIsAccountCashed (account,distributionCount) = getBooleanByKey(getKeyIsAccountCashed(account, distributionCount))
113+
114+
115+@Callable(i)
116+func startFund (title) = {
117+ let GP = toBase58String(i.caller.bytes)
118+ let pmt = extract(i.payment)
119+ if ((pmt.assetId != USDN))
120+ then throw("can use only USDN")
121+ else if ((getValueGPAddress() != NONE))
122+ then throw("this fund already exists")
123+ else WriteSet([DataEntry(getKeyTitle(), title), DataEntry(getKeyGPAddress(), GP), DataEntry(getKeyParticipantFunding(GP), pmt.amount), DataEntry(getKeyGPFunding(), pmt.amount), DataEntry(getKeyFunding(), pmt.amount)])
124+ }
125+
126+
127+
128+@Callable(i)
129+func increaseFund () = {
130+ let GP = toBase58String(i.caller.bytes)
131+ let pmt = extract(i.payment)
132+ if ((pmt.assetId != USDN))
133+ then throw("can use only USDN")
134+ else if ((GP != getValueGPAddress()))
135+ then throw("only GP can increase fund")
136+ else WriteSet([DataEntry(getKeyParticipantFunding(GP), (getValueParticipantFunding(GP) + pmt.amount)), DataEntry(getKeyGPFunding(), (getValueGPFunding() + pmt.amount)), DataEntry(getKeyFunding(), (getValueFunding() + pmt.amount))])
137+ }
138+
139+
140+
141+@Callable(i)
142+func investInFund (founder,title) = {
143+ let lpAddress = toBase58String(i.caller.bytes)
144+ let pmt = extract(i.payment)
145+ let lpid = (getValueLPCount() + 1)
146+ if ((pmt.assetId != USDN))
147+ then throw("can use only USDN")
148+ else if ((getValueGPAddress() == NONE))
149+ then throw("this fund doesn't exist")
150+ else if ((lpAddress == getValueGPAddress()))
151+ then throw("GP can't be LP")
152+ else WriteSet([DataEntry(getKeyLPAddress(lpid), lpAddress), DataEntry(getKeyLPCount(), lpid), DataEntry(getKeyParticipantFunding(lpAddress), pmt.amount), DataEntry(getKeyLPsFunding(), (getValueLPsFunding() + pmt.amount)), DataEntry(getKeyFunding(), (getValueFunding() + pmt.amount))])
153+ }
154+
155+
156+
157+@Callable(i)
158+func distributeProfit () = {
159+ let participant = toBase58String(i.caller.bytes)
160+ let currentProfit = (wavesBalance(addressFromStringValue(fundAddress)) - getValueAmountForCashingOut())
161+ let distributionCount = (getValueProfitDistributionCount() + 1)
162+ if ((getValueParticipantFunding(participant) == 0))
163+ then throw("only participants allowed")
164+ else if ((0 >= currentProfit))
165+ then throw("profit must be positive")
166+ else WriteSet([DataEntry(getKeyAmountForCashingOut(), wavesBalance(addressFromStringValue(fundAddress))), DataEntry(getKeyDistributedProfit(distributionCount), currentProfit), DataEntry(getKeyProfitDistributionCount(), distributionCount)])
167+ }
168+
169+
170+
171+@Callable(i)
172+func getProfitLP (distributionNumber) = {
173+ let lpAddress = toBase58String(i.caller.bytes)
174+ let amountInvested = getValueParticipantFunding(lpAddress)
175+ let total = getValueLPsFunding()
176+ let amount = ((((getValueDistributedProfit(distributionNumber) * 80) / 100) * amountInvested) / total)
177+ if ((getValueParticipantFunding(lpAddress) == 0))
178+ then throw("only participants allowed")
179+ else if ((lpAddress == getValueGPAddress()))
180+ then throw("GP can't call this function")
181+ else if (getValueIsAccountCashed(lpAddress, distributionNumber))
182+ then throw("this account has been already cashed")
183+ else if ((amount > getValueAmountForCashingOut()))
184+ then throw("there isn't enough money")
185+ else ScriptResult(WriteSet([DataEntry(getKeyIsAccountCashed(lpAddress, distributionNumber), true), DataEntry(getKeyAmountForCashingOut(), (getValueAmountForCashingOut() - amount))]), TransferSet([ScriptTransfer(i.caller, amount, USDN)]))
186+ }
187+
188+
189+
190+@Callable(i)
191+func getProfitGP (distributionNumber) = {
192+ let gpAddress = toBase58String(i.caller.bytes)
193+ let amount = ((getValueDistributedProfit(distributionNumber) * 20) / 100)
194+ if ((gpAddress != getValueGPAddress()))
195+ then throw("only GP can call this function")
196+ else if (getValueIsAccountCashed(gpAddress, distributionNumber))
197+ then throw("this account has been already cashed")
198+ else if ((amount > getValueAmountForCashingOut()))
199+ then throw("there isn't enough money")
200+ else ScriptResult(WriteSet([DataEntry(getKeyIsAccountCashed(gpAddress, distributionNumber), true), DataEntry(getKeyAmountForCashingOut(), (getValueAmountForCashingOut() - amount))]), TransferSet([ScriptTransfer(i.caller, amount, USDN)]))
201+ }
202+
203+
204+@Verifier(tx)
205+func verify () = match tx {
206+ case i: InvokeScriptTransaction =>
207+ if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
208+ then (i.dApp == addressFromStringValue("DSBA Address"))
209+ else false
210+ case o: Order =>
211+ let buyUSDN = if (if ((o.assetPair.amountAsset == USDN))
212+ then (o.orderType == Buy)
213+ else false)
214+ then true
215+ else if ((o.assetPair.priceAsset == USDN))
216+ then (o.orderType == Sell)
217+ else false
218+ if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
219+ then buyUSDN
220+ else false
221+ case _ =>
222+ false
223+}
224+

github/deemru/w8io/c3f4982 
18.62 ms