tx · BrGHFpFnRe8WZDnbPqf7oVnq6YocWUrYxAtCyH3sMuwW 3N6vQXyYKDG1Kqk6Tq5T7cXBvMPsa6uRHfG: -0.01000000 Waves 2019.08.06 14:00 [618951] smart account 3N6vQXyYKDG1Kqk6Tq5T7cXBvMPsa6uRHfG > SELF 0.00000000 Waves
{ "type": 13, "id": "BrGHFpFnRe8WZDnbPqf7oVnq6YocWUrYxAtCyH3sMuwW", "fee": 1000000, "feeAssetId": null, "timestamp": 1565089147148, "version": 1, "sender": "3N6vQXyYKDG1Kqk6Tq5T7cXBvMPsa6uRHfG", "senderPublicKey": "HuMBZwhK1tKdmSB2ZrJCsY8mfL84bqMpvi3HPc58ohD1", "proofs": [ "2Um2LdDGoFdLtATyViDBvt2abZHiZDh34y5yyEMjhD9W7DiNLa8yHhHmxfbz7rkDxDFSncrojdMuJwXVQP38WZkN" ], "script": "base64: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", "chainId": 84, "height": 618951, "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 3 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let creditInterest = 15 | |
5 | + | ||
6 | + | @Callable(i) | |
7 | + | func addHolder () = { | |
8 | + | let pmt = extract(i.payment) | |
9 | + | if (if (isDefined(pmt.assetId)) | |
10 | + | then true | |
11 | + | else (100000000 > pmt.amount)) | |
12 | + | then throw("can hodl waves only at the moment") | |
13 | + | else { | |
14 | + | let callerAddress = toBase58String(i.caller.bytes) | |
15 | + | let currentHoldersCount = match getInteger(this, "holder_count") { | |
16 | + | case i1: Int => | |
17 | + | i1 | |
18 | + | case _ => | |
19 | + | 0 | |
20 | + | } | |
21 | + | let dataList = match getInteger(this, (callerAddress + "_holder_index")) { | |
22 | + | case hi: Int => | |
23 | + | let holderAvailable = extract(getInteger(this, ("holder_available_" + toString(hi)))) | |
24 | + | [DataEntry(("holder_available_" + toString(hi)), (holderAvailable + pmt.amount))] | |
25 | + | case _ => | |
26 | + | [DataEntry(("holder_available_" + toString(currentHoldersCount)), pmt.amount), DataEntry(("holder_credited_" + toString(currentHoldersCount)), 0), DataEntry((callerAddress + "_holder_index"), currentHoldersCount), DataEntry("holder_count", (currentHoldersCount + 1))] | |
27 | + | } | |
28 | + | let availableFunds = match getInteger(this, "available_funds") { | |
29 | + | case i2: Int => | |
30 | + | i2 | |
31 | + | case _ => | |
32 | + | 0 | |
33 | + | } | |
34 | + | WriteSet(DataEntry("available_funds", (availableFunds + pmt.amount)) :: dataList) | |
35 | + | } | |
36 | + | } | |
37 | + | ||
38 | + | ||
39 | + | ||
40 | + | @Callable(i) | |
41 | + | func takeInvestedFunds (amount) = { | |
42 | + | let callerAddress = toBase58String(i.caller.bytes) | |
43 | + | let holderIndex = extract(getInteger(this, (callerAddress + "_holder_index"))) | |
44 | + | let currentHolderAvailable = extract(getInteger(this, ("holder_available_" + toString(holderIndex)))) | |
45 | + | let availableFunds = match getInteger(this, "available_funds") { | |
46 | + | case i3: Int => | |
47 | + | i3 | |
48 | + | case _ => | |
49 | + | 0 | |
50 | + | } | |
51 | + | if ((amount > currentHolderAvailable)) | |
52 | + | then throw("") | |
53 | + | else ScriptResult(WriteSet([DataEntry(("holder_available_" + toString(holderIndex)), (currentHolderAvailable - amount)), DataEntry("available_funds", (availableFunds - amount))]), TransferSet([ScriptTransfer(i.caller, amount, unit)])) | |
54 | + | } | |
55 | + | ||
56 | + | ||
57 | + | ||
58 | + | @Callable(i) | |
59 | + | func addDebitor (amount,href0,href1,href2) = { | |
60 | + | let currentHoldersCount = match getInteger(this, "holder_count") { | |
61 | + | case i4: Int => | |
62 | + | i4 | |
63 | + | case _ => | |
64 | + | 0 | |
65 | + | } | |
66 | + | let creditId = toBase58String(i.transactionId) | |
67 | + | let dataList = if (if ((href0 >= 0)) | |
68 | + | then (currentHoldersCount > href0) | |
69 | + | else false) | |
70 | + | then { | |
71 | + | let avValue0 = extract(getInteger(this, ("holder_available_" + toString(href0)))) | |
72 | + | let remaining0 = amount | |
73 | + | let taken0 = if ((0 >= remaining0)) | |
74 | + | then 0 | |
75 | + | else if ((remaining0 > avValue0)) | |
76 | + | then avValue0 | |
77 | + | else remaining0 | |
78 | + | let counter0 = if ((taken0 > 0)) | |
79 | + | then (0 + 1) | |
80 | + | else 0 | |
81 | + | let subList0 = if (((remaining0 - taken0) > 0)) | |
82 | + | then if ((counter0 >= 3)) | |
83 | + | then throw("Funds unavailable") | |
84 | + | else if (if ((href1 >= 0)) | |
85 | + | then (currentHoldersCount > href1) | |
86 | + | else false) | |
87 | + | then { | |
88 | + | let avValue1 = extract(getInteger(this, ("holder_available_" + toString(href1)))) | |
89 | + | let remaining1 = (remaining0 - taken0) | |
90 | + | let taken1 = if ((0 >= remaining1)) | |
91 | + | then 0 | |
92 | + | else if ((remaining1 > avValue1)) | |
93 | + | then avValue1 | |
94 | + | else remaining1 | |
95 | + | let counter1 = if ((taken1 > 0)) | |
96 | + | then (counter0 + 1) | |
97 | + | else counter0 | |
98 | + | let subList1 = if (((remaining1 - taken1) > 0)) | |
99 | + | then if ((counter1 >= 3)) | |
100 | + | then throw("Funds unavailable") | |
101 | + | else if (if ((href2 >= 0)) | |
102 | + | then (currentHoldersCount > href2) | |
103 | + | else false) | |
104 | + | then { | |
105 | + | let avValue2 = extract(getInteger(this, ("holder_available_" + toString(href2)))) | |
106 | + | let remaining2 = (remaining1 - taken1) | |
107 | + | let taken2 = if ((0 >= remaining2)) | |
108 | + | then 0 | |
109 | + | else if ((remaining2 > avValue2)) | |
110 | + | then avValue2 | |
111 | + | else remaining2 | |
112 | + | let counter2 = if ((taken2 > 0)) | |
113 | + | then (counter1 + 1) | |
114 | + | else counter1 | |
115 | + | let subList2 = if (((remaining2 - taken2) > 0)) | |
116 | + | then if ((counter2 >= 3)) | |
117 | + | then throw("Funds unavailable") | |
118 | + | else nil | |
119 | + | else nil | |
120 | + | if ((taken2 >= (remaining2 / (3 - counter1)))) | |
121 | + | then [DataEntry(("holder_available_" + toString(href2)), (avValue2 - taken2)), DataEntry(("holder_credited_" + toString(href2)), (extract(getInteger(this, ("holder_credited_" + toString(href2)))) + taken2)), DataEntry(((creditId + "_") + toString(counter1)), href2), DataEntry(((creditId + "_taken_") + toString(counter1)), taken2)] :: subList2 | |
122 | + | else if (if ((2 == (currentHoldersCount - 1))) | |
123 | + | then ((remaining2 - taken2) > 0) | |
124 | + | else false) | |
125 | + | then throw("") | |
126 | + | else subList2 | |
127 | + | } | |
128 | + | else nil | |
129 | + | else nil | |
130 | + | if ((taken1 >= (remaining1 / (3 - counter0)))) | |
131 | + | then [DataEntry(("holder_available_" + toString(href1)), (avValue1 - taken1)), DataEntry(("holder_credited_" + toString(href1)), (extract(getInteger(this, ("holder_credited_" + toString(href1)))) + taken1)), DataEntry(((creditId + "_") + toString(counter0)), href1), DataEntry(((creditId + "_taken_") + toString(counter0)), taken1)] :: subList1 | |
132 | + | else if (if ((1 == (currentHoldersCount - 1))) | |
133 | + | then ((remaining1 - taken1) > 0) | |
134 | + | else false) | |
135 | + | then throw("") | |
136 | + | else subList1 | |
137 | + | } | |
138 | + | else nil | |
139 | + | else nil | |
140 | + | if ((taken0 >= (remaining0 / (3 - 0)))) | |
141 | + | then [DataEntry(("holder_available_" + toString(href0)), (avValue0 - taken0)), DataEntry(("holder_credited_" + toString(href0)), (extract(getInteger(this, ("holder_credited_" + toString(href0)))) + taken0)), DataEntry(((creditId + "_") + toString(0)), href0), DataEntry(((creditId + "_taken_") + toString(0)), taken0)] :: subList0 | |
142 | + | else if (if ((0 == (currentHoldersCount - 1))) | |
143 | + | then ((remaining0 - taken0) > 0) | |
144 | + | else false) | |
145 | + | then throw("") | |
146 | + | else subList0 | |
147 | + | } | |
148 | + | else nil | |
149 | + | let availableFunds = match getInteger(this, "available_funds") { | |
150 | + | case i5: Int => | |
151 | + | i5 | |
152 | + | case _ => | |
153 | + | 0 | |
154 | + | } | |
155 | + | let creditedFunds = match getInteger(this, "credited_funds") { | |
156 | + | case i6: Int => | |
157 | + | i6 | |
158 | + | case _ => | |
159 | + | 0 | |
160 | + | } | |
161 | + | WriteSet([DataEntry("available_funds", (availableFunds - amount)), DataEntry("credited_funds", (creditedFunds + amount)), DataEntry((creditId + "_taker"), i.caller.bytes), DataEntry((creditId + "_amount"), amount), DataEntry((creditId + "_active"), true)] :: dataList) | |
162 | + | } | |
163 | + | ||
164 | + | ||
165 | + | ||
166 | + | @Callable(i) | |
167 | + | func returnCredit (creditId) = { | |
168 | + | let availableFunds = match getInteger(this, "available_funds") { | |
169 | + | case i7: Int => | |
170 | + | i7 | |
171 | + | case _ => | |
172 | + | 0 | |
173 | + | } | |
174 | + | let creditedFunds = match getInteger(this, "credited_funds") { | |
175 | + | case i8: Int => | |
176 | + | i8 | |
177 | + | case _ => | |
178 | + | 0 | |
179 | + | } | |
180 | + | let b58CreditId = toBase58String(creditId) | |
181 | + | let active = extract(getBoolean(this, (b58CreditId + "_active"))) | |
182 | + | if (active) | |
183 | + | then { | |
184 | + | let currentCallerCredited = extract(getInteger(this, (b58CreditId + "_amount"))) | |
185 | + | let withInterest = ((currentCallerCredited * (100 + creditInterest)) / 100) | |
186 | + | let currentHoldersCount = match getInteger(this, "holder_count") { | |
187 | + | case i9: Int => | |
188 | + | i9 | |
189 | + | case _ => | |
190 | + | 0 | |
191 | + | } | |
192 | + | let pmt = extract(i.payment) | |
193 | + | if (if (isDefined(pmt.assetId)) | |
194 | + | then true | |
195 | + | else (withInterest > pmt.amount)) | |
196 | + | then throw("") | |
197 | + | else { | |
198 | + | let dataList = { | |
199 | + | let returnIndex0 = match getInteger(this, (b58CreditId + "_0")) { | |
200 | + | case i10: Int => | |
201 | + | i10 | |
202 | + | case _ => | |
203 | + | -1 | |
204 | + | } | |
205 | + | if ((returnIndex0 >= 0)) | |
206 | + | then { | |
207 | + | let taken0 = extract(getInteger(this, (b58CreditId + "_taken_0"))) | |
208 | + | let profit0 = ((taken0 * creditInterest) / 100) | |
209 | + | let subList0 = { | |
210 | + | let returnIndex1 = match getInteger(this, (b58CreditId + "_1")) { | |
211 | + | case i11: Int => | |
212 | + | i11 | |
213 | + | case _ => | |
214 | + | -1 | |
215 | + | } | |
216 | + | if ((returnIndex1 >= 0)) | |
217 | + | then { | |
218 | + | let taken1 = extract(getInteger(this, (b58CreditId + "_taken_1"))) | |
219 | + | let profit1 = ((taken1 * creditInterest) / 100) | |
220 | + | let subList1 = { | |
221 | + | let returnIndex2 = match getInteger(this, (b58CreditId + "_2")) { | |
222 | + | case i12: Int => | |
223 | + | i12 | |
224 | + | case _ => | |
225 | + | -1 | |
226 | + | } | |
227 | + | if ((returnIndex2 >= 0)) | |
228 | + | then { | |
229 | + | let taken2 = extract(getInteger(this, (b58CreditId + "_taken_2"))) | |
230 | + | let profit2 = ((taken2 * creditInterest) / 100) | |
231 | + | let subList2 = nil | |
232 | + | let returnAv2 = extract(getInteger(this, ("holder_available_" + toString(returnIndex2)))) | |
233 | + | let returnCr2 = extract(getInteger(this, ("holder_credited_" + toString(returnIndex2)))) | |
234 | + | [DataEntry(("holder_available_" + toString(returnIndex2)), ((returnAv2 + taken2) + profit2)), DataEntry(("holder_credited_" + toString(returnIndex2)), (returnCr2 - taken2))] :: subList2 | |
235 | + | } | |
236 | + | else nil | |
237 | + | } | |
238 | + | let returnAv1 = extract(getInteger(this, ("holder_available_" + toString(returnIndex1)))) | |
239 | + | let returnCr1 = extract(getInteger(this, ("holder_credited_" + toString(returnIndex1)))) | |
240 | + | [DataEntry(("holder_available_" + toString(returnIndex1)), ((returnAv1 + taken1) + profit1)), DataEntry(("holder_credited_" + toString(returnIndex1)), (returnCr1 - taken1))] :: subList1 | |
241 | + | } | |
242 | + | else nil | |
243 | + | } | |
244 | + | let returnAv0 = extract(getInteger(this, ("holder_available_" + toString(returnIndex0)))) | |
245 | + | let returnCr0 = extract(getInteger(this, ("holder_credited_" + toString(returnIndex0)))) | |
246 | + | [DataEntry(("holder_available_" + toString(returnIndex0)), ((returnAv0 + taken0) + profit0)), DataEntry(("holder_credited_" + toString(returnIndex0)), (returnCr0 - taken0))] :: subList0 | |
247 | + | } | |
248 | + | else nil | |
249 | + | } | |
250 | + | WriteSet([DataEntry((b58CreditId + "_active"), false), DataEntry("available_funds", (availableFunds + withInterest)), DataEntry("credited_funds", (creditedFunds - currentCallerCredited))] :: dataList) | |
251 | + | } | |
252 | + | } | |
253 | + | else throw("") | |
254 | + | } | |
255 | + | ||
256 | + |
github/deemru/w8io/873ac7e 38.52 ms ◑