2022.05.20 16:27 [3125522] smart account 3PKwLLSfTLXiLGwwffRhKx87UvbqdfLNSru > SELF 0.00000000 Waves
{ "type": 13, "id": "BVQrknHWofZzwRtGYeK9vZR1Wo4FYdiq4tgdw5CgUcSV", "fee": 1000000, "feeAssetId": null, "timestamp": 1653053267063, "version": 1, "sender": "3PKwLLSfTLXiLGwwffRhKx87UvbqdfLNSru", "senderPublicKey": "7Hv4ZnV9vEczMcheNeitXZdRa19B4W6RGUp7uoV1RaEA", "proofs": [ "QGmTgXEeTSDzRK54Y3bgVb5XiKP7GY8LuUUJ2KMCjsyGqcJxhSRyyfdYBQy1ktgk9jHrXeR6HXs64XuZViyeGJq" ], "script": "base64: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BWRlbHRhCQAAZQAAAAIFAAAAC3RvRW5kSGVpZ2h0BQAAAA9mcm9tQ2xhaW1IZWlnaHQEAAAACmtvZWZpY2llbnQJAABrAAAAAwUAAAADYXB5BQAAAAVkZWx0YQUAAAAEeWVhcgQAAAAKYWNjdW11bGF0ZQkAAGsAAAADBQAAAAprb2VmaWNpZW50BQAAAAZhbW91bnQAAAAAAAX14QAJAABkAAAAAgUAAAAKYWNjdW11bGF0ZQUAAAAHdG9DbGFpbQEAAAAQY2FsY3VsYXRlRm9yZmVpdAAAAAcAAAALaGVpZ2h0U3RhcnQAAAAJaGVpZ2h0RW5kAAAAC2NsYWltSGVpZ2h0AAAABmFtb3VudAAAAAd0b0NsYWltAAAAB2NsYWltZWQAAAADYXB5BAAAAA9mcm9tQ2xhaW1IZWlnaHQFAAAAC2hlaWdodFN0YXJ0BAAAAAt0b0VuZEhlaWdodAkBAAAACWdldE1pblZhbAAAAAIFAAAACWhlaWdodEVuZAUAAAAGaGVpZ2h0BAAAAAVkZWx0YQkAAGUAAAACBQAAAAt0b0VuZEhlaWdodAUAAAAPZnJvbUNsYWltSGVpZ2h0BAAAAAprb2VmaWNpZW50CQAAawAAAAMFAAAAA2FweQUAAAAFZGVsdGEFAAAABHllYXIEAAAACmFjY3VtdWxhdGUJAABrAAAAAwUAAAAKa29lZmljaWVudAUAAAAGYW1vdW50AAAAAAAF9eEABAAAAAZmZGVsdGEJAABlAAAAAgUAAAAJaGVpZ2h0RW5kBQAAAAt0b0VuZEhlaWdodAQAAAALZmtvZWZpY2llbnQJAABrAAAAAwkAAGgAAAACBQAAAANhcHkAAAAAAAAAAAIFAAAABmZkZWx0YQUAAAAEeWVhcgQAAAALZmFjY3VtdWxhdGUJAABrAAAAAwUAAAALZmtvZWZpY2llbnQFAAAABmFtb3VudAAAAAAABfXhAAkAAGQAAAACBQAAAAphY2N1bXVsYXRlBQAAAAtmYWNjdW11bGF0ZQAAAAgAAAABaQEAAAANZ2V0QXB5UmVhT25seQAAAAIAAAAIaW50ZXJ2YWwAAAALbWF4SW50ZXJ2YWwEAAAACmN1cnJlbnRBcHkJAQAAAAZnZXRBcHkAAAACBQAAAAhpbnRlcnZhbAUAAAALbWF4SW50ZXJ2YWwJAAUUAAAA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dHJ5AAAAAgUAAAAObWF4SW50ZXJ2YWxLZXkFAAAAEW1heEludGVydmFsTW9udGhzCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAxtYXhJbnZlc3RLZXkFAAAACW1heEludmVzdAUAAAADbmlsAAAAAWkBAAAAB2RlcG9zaXQAAAABAAAACGludGVydmFsBAAAAAttaW5JbnRlcnZhbAkBAAAADGdldEludE9yRWxzZQAAAAIFAAAAFGludmVzdEludGVydmFsTWluS2V5AAAAAAAAAKjABAAAAAltYXhJbnZlc3QJAQAAAAxnZXRJbnRPclplcm8AAAABBQAAAAxtYXhJbnZlc3RLZXkEAAAADXRvdGFsSW52ZXN0ZWQJAQAAAAxnZXRJbnRPclplcm8AAAABBQAAAA50b3RhbEludmVzdEtleQQAAAALaW52ZXN0QXNzZXQJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAABBQAAAA5pbnZlc3RBc3NldEtleQQAAAALdXNlckFkZHJlc3MIBQAAAAFpAAAABmNhbGxlcgQAAAARdXNlckFkZHJlc3NTdHJpbmcJAAQlAAAAAQUAAAALdXNlckFkZHJlc3MEAAAAC21heEludGVydmFsCQEAAAAMZ2V0SW50T3JaZXJvAAAAAQUAAAAObWF4SW50ZXJ2YWxLZXkEAAAAC2ludmVzdFN0YXJ0BQAAAAZoZWlnaHQEAAAACWludmVzdEVuZAkAAGQAAAACBQAAAAtpbnZlc3RTdGFydAkAAGgAAAACBQAAAAttaW5JbnRlcnZhbAUAAAAIaW50ZXJ2YWwEAAAAE2ludmFsaWRBc3NldE1lc3NhZ2UJAAEsAAAAAgkAASwAAAACAgAAAA9JbnZhbGlkIGFzc2V0LiAFAAAAC2ludmVzdEFzc2V0AgAAAAwgaXMgZXhwZWN0ZWQDAwkAAGYAAAACAAAAAAAAAAABBQAAAAhpbnRlcnZhbAYJAABmAAAAAgUAAAAIaW50ZXJ2YWwFAAAAC21heEludGVydmFsCQAAAgAAAAECAAAADldyb25nIGludGVydmFsAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAABVJbnZhbGlkIHBheW1lbnRz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", "chainId": 87, "height": 3125522, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BoutF5M2G6sUDDHLxzkt3VBNVx4WbbbBL45eVcp63fB Next: CoeZ4ewJz1icatKsFDdJmyYDnsqk5ZRuku2t6CuJBMxZ Diff:
Old | New | Differences | |
---|---|---|---|
115 | 115 | let koeficient = fraction(apy, delta, year) | |
116 | 116 | let accumulate = fraction(koeficient, amount, 100000000) | |
117 | 117 | let fdelta = (heightEnd - toEndHeight) | |
118 | - | let fkoeficient = fraction((apy * 2), | |
118 | + | let fkoeficient = fraction((apy * 2), fdelta, year) | |
119 | 119 | let faccumulate = fraction(fkoeficient, amount, 100000000) | |
120 | 120 | (accumulate + faccumulate) | |
121 | 121 | } | |
183 | 183 | else if (((amount + totalInvested) > maxInvest)) | |
184 | 184 | then throw("The max invest limit has been reached") | |
185 | 185 | else { | |
186 | - | let currentApy = getApy(interval, maxInterval) | |
187 | 186 | let userData = readUserData(userAddressString) | |
188 | - | let noClaimed = calculateToClaim(userData[0], userData[1], userData[2], userData[3], userData[4], userData[5], userData[6]) | |
189 | - | let allAmount = (amount + userData[3]) | |
190 | - | let claimed = userData[4] | |
191 | - | let toClaim = userData[5] | |
187 | + | if ((userData[1] > (((interval * 30) * 24) * 60))) | |
188 | + | then throw("Wrong interval") | |
189 | + | else { | |
190 | + | let currentApy = getApy(interval, maxInterval) | |
191 | + | let noClaimed = calculateToClaim(userData[0], userData[1], userData[2], userData[3], userData[4], userData[5], userData[6]) | |
192 | + | let allAmount = (amount + userData[3]) | |
193 | + | let claimed = userData[4] | |
194 | + | let toClaim = userData[5] | |
192 | 195 | [setUserData(userAddressString, investStart, investEnd, investStart, allAmount, noClaimed, claimed, currentApy), IntegerEntry(totalInvestKey, (amount + totalInvested))] | |
196 | + | } | |
193 | 197 | } | |
194 | 198 | } | |
195 | 199 | } |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let ver = "1.0" | |
5 | 5 | ||
6 | 6 | let year = 525600 | |
7 | 7 | ||
8 | 8 | let separator = "__" | |
9 | 9 | ||
10 | 10 | let WAVESIDSTR = "WAVES" | |
11 | 11 | ||
12 | 12 | let WAVESID = fromBase58String(WAVESIDSTR) | |
13 | 13 | ||
14 | 14 | let maxInvestKey = "%s__maxInvest" | |
15 | 15 | ||
16 | 16 | let totalInvestKey = "%s__totalInvest" | |
17 | 17 | ||
18 | 18 | let investAssetKey = "%s__investAssetId" | |
19 | 19 | ||
20 | 20 | let apyFromKey = "%s__apyFrom" | |
21 | 21 | ||
22 | 22 | let apyToKey = "%s__apyTo" | |
23 | 23 | ||
24 | 24 | let investIntervalMinKey = "%s__intervalMin" | |
25 | 25 | ||
26 | 26 | let maxIntervalKey = "%s__maxInterval" | |
27 | 27 | ||
28 | 28 | func getUserInvestKey (user) = makeString(["%s%s%d", "clrcInvest", user], separator) | |
29 | 29 | ||
30 | 30 | ||
31 | 31 | func valueOrDefault (val,defaultVal) = if ((valueOrElse(val, 0) != 0)) | |
32 | 32 | then val | |
33 | 33 | else defaultVal | |
34 | 34 | ||
35 | 35 | ||
36 | 36 | func getMinVal (val1,val2) = if ((val1 > val2)) | |
37 | 37 | then val2 | |
38 | 38 | else val1 | |
39 | 39 | ||
40 | 40 | ||
41 | 41 | func getMaxVal (val1,val2) = if ((val2 > val1)) | |
42 | 42 | then val2 | |
43 | 43 | else val1 | |
44 | 44 | ||
45 | 45 | ||
46 | 46 | func getIntOrZero (key) = valueOrElse(getInteger(this, key), 0) | |
47 | 47 | ||
48 | 48 | ||
49 | 49 | func getIntOrElse (key,defaultVal) = valueOrElse(getInteger(this, key), defaultVal) | |
50 | 50 | ||
51 | 51 | ||
52 | 52 | func getIntOrFail (key) = valueOrErrorMessage(getInteger(this, key), (("Mandatory this." + key) + " is not defined")) | |
53 | 53 | ||
54 | 54 | ||
55 | 55 | func getStrOrElse (key,defaultVal) = valueOrElse(getString(this, key), defaultVal) | |
56 | 56 | ||
57 | 57 | ||
58 | 58 | func getStringOrFail (key) = valueOrErrorMessage(getString(this, key), (("Mandatory this." + key) + " is not defined")) | |
59 | 59 | ||
60 | 60 | ||
61 | 61 | func toAssetVect (assetStr) = if ((assetStr == WAVESIDSTR)) | |
62 | 62 | then unit | |
63 | 63 | else fromBase58String(assetStr) | |
64 | 64 | ||
65 | 65 | ||
66 | 66 | func getApy (interval,maxInterval) = { | |
67 | 67 | let apyTo = getIntOrZero(apyToKey) | |
68 | 68 | let apyFrom = getIntOrZero(apyFromKey) | |
69 | 69 | let deltaApy = ((apyTo - apyFrom) * 1000000) | |
70 | 70 | let kInterval = (maxInterval - 1) | |
71 | 71 | let apyNormalize = ((deltaApy * (interval - 1)) / kInterval) | |
72 | 72 | let finalApy = (apyNormalize + (apyFrom * 1000000)) | |
73 | 73 | finalApy | |
74 | 74 | } | |
75 | 75 | ||
76 | 76 | ||
77 | 77 | func readUserData (user) = { | |
78 | 78 | let data = split(getStrOrElse(getUserInvestKey(user), ""), separator) | |
79 | 79 | if ((7 > size(data))) | |
80 | 80 | then [0, 0, 0, 0, 0, 0, 0] | |
81 | 81 | else { | |
82 | 82 | let heightStart = valueOrElse(parseInt(data[1]), 0) | |
83 | 83 | let heightEnd = valueOrElse(parseInt(data[2]), 0) | |
84 | 84 | let claimHeight = valueOrElse(parseInt(data[3]), 0) | |
85 | 85 | let amount = valueOrElse(parseInt(data[4]), 0) | |
86 | 86 | let toClaim = valueOrElse(parseInt(data[5]), 0) | |
87 | 87 | let claimed = valueOrElse(parseInt(data[6]), 0) | |
88 | 88 | let apy = valueOrElse(parseInt(data[7]), 0) | |
89 | 89 | [heightStart, heightEnd, claimHeight, amount, toClaim, claimed, apy] | |
90 | 90 | } | |
91 | 91 | } | |
92 | 92 | ||
93 | 93 | ||
94 | 94 | func setUserData (user,heightStart,heightEnd,claimHeight,amount,toClaim,claimed,apy) = { | |
95 | 95 | let key = getUserInvestKey(user) | |
96 | 96 | let data = makeString(["%d%d%d%d%d%d", toString(heightStart), toString(heightEnd), toString(claimHeight), toString(amount), toString(toClaim), toString(claimed), toString(apy)], separator) | |
97 | 97 | StringEntry(key, data) | |
98 | 98 | } | |
99 | 99 | ||
100 | 100 | ||
101 | 101 | func calculateToClaim (heightStart,heightEnd,claimHeight,amount,toClaim,claimed,apy) = { | |
102 | 102 | let fromClaimHeight = getMaxVal(claimHeight, heightStart) | |
103 | 103 | let toEndHeight = getMinVal(heightEnd, height) | |
104 | 104 | let delta = (toEndHeight - fromClaimHeight) | |
105 | 105 | let koeficient = fraction(apy, delta, year) | |
106 | 106 | let accumulate = fraction(koeficient, amount, 100000000) | |
107 | 107 | (accumulate + toClaim) | |
108 | 108 | } | |
109 | 109 | ||
110 | 110 | ||
111 | 111 | func calculateForfeit (heightStart,heightEnd,claimHeight,amount,toClaim,claimed,apy) = { | |
112 | 112 | let fromClaimHeight = heightStart | |
113 | 113 | let toEndHeight = getMinVal(heightEnd, height) | |
114 | 114 | let delta = (toEndHeight - fromClaimHeight) | |
115 | 115 | let koeficient = fraction(apy, delta, year) | |
116 | 116 | let accumulate = fraction(koeficient, amount, 100000000) | |
117 | 117 | let fdelta = (heightEnd - toEndHeight) | |
118 | - | let fkoeficient = fraction((apy * 2), | |
118 | + | let fkoeficient = fraction((apy * 2), fdelta, year) | |
119 | 119 | let faccumulate = fraction(fkoeficient, amount, 100000000) | |
120 | 120 | (accumulate + faccumulate) | |
121 | 121 | } | |
122 | 122 | ||
123 | 123 | ||
124 | 124 | @Callable(i) | |
125 | 125 | func getApyReaOnly (interval,maxInterval) = { | |
126 | 126 | let currentApy = getApy(interval, maxInterval) | |
127 | 127 | $Tuple2(nil, currentApy) | |
128 | 128 | } | |
129 | 129 | ||
130 | 130 | ||
131 | 131 | ||
132 | 132 | @Callable(i) | |
133 | 133 | func claimReadonly (user) = { | |
134 | 134 | let data = readUserData(user) | |
135 | 135 | let toClaim = calculateToClaim(data[0], data[1], data[2], data[3], data[4], data[5], data[6]) | |
136 | 136 | let result = makeString([toString(toClaim), toString(height), toString(data[0]), toString(data[1]), toString(data[2]), toString(data[3]), toString(data[4]), toString(data[5]), toString(data[6])], separator) | |
137 | 137 | $Tuple2(nil, result) | |
138 | 138 | } | |
139 | 139 | ||
140 | 140 | ||
141 | 141 | ||
142 | 142 | @Callable(i) | |
143 | 143 | func forfaitReadonly (user) = { | |
144 | 144 | let data = readUserData(user) | |
145 | 145 | let forfeit = calculateForfeit(data[0], data[1], data[2], data[3], data[4], data[5], data[6]) | |
146 | 146 | let result = makeString([toString(forfeit), toString(height), toString(data[0]), toString(data[1]), toString(data[2]), toString(data[3]), toString(data[4]), toString(data[5]), toString(data[6])], separator) | |
147 | 147 | $Tuple2(nil, result) | |
148 | 148 | } | |
149 | 149 | ||
150 | 150 | ||
151 | 151 | ||
152 | 152 | @Callable(i) | |
153 | 153 | func setParams (apyFrom,apyTo,maxIntervalMonths,maxInvest,investAsset) = if ((i.caller != this)) | |
154 | 154 | then throw("Not owner") | |
155 | 155 | else [StringEntry(investAssetKey, investAsset), IntegerEntry(apyToKey, apyTo), IntegerEntry(apyFromKey, apyFrom), IntegerEntry(maxIntervalKey, maxIntervalMonths), IntegerEntry(maxInvestKey, maxInvest)] | |
156 | 156 | ||
157 | 157 | ||
158 | 158 | ||
159 | 159 | @Callable(i) | |
160 | 160 | func deposit (interval) = { | |
161 | 161 | let minInterval = getIntOrElse(investIntervalMinKey, 43200) | |
162 | 162 | let maxInvest = getIntOrZero(maxInvestKey) | |
163 | 163 | let totalInvested = getIntOrZero(totalInvestKey) | |
164 | 164 | let investAsset = getStringOrFail(investAssetKey) | |
165 | 165 | let userAddress = i.caller | |
166 | 166 | let userAddressString = toString(userAddress) | |
167 | 167 | let maxInterval = getIntOrZero(maxIntervalKey) | |
168 | 168 | let investStart = height | |
169 | 169 | let investEnd = (investStart + (minInterval * interval)) | |
170 | 170 | let invalidAssetMessage = (("Invalid asset. " + investAsset) + " is expected") | |
171 | 171 | if (if ((1 > interval)) | |
172 | 172 | then true | |
173 | 173 | else (interval > maxInterval)) | |
174 | 174 | then throw("Wrong interval") | |
175 | 175 | else if ((size(i.payments) != 1)) | |
176 | 176 | then throw("Invalid payments size") | |
177 | 177 | else { | |
178 | 178 | let payment = i.payments[0] | |
179 | 179 | let amount = payment.amount | |
180 | 180 | let assetId = valueOrErrorMessage(payment.assetId, invalidAssetMessage) | |
181 | 181 | if ((toBase58String(assetId) != investAsset)) | |
182 | 182 | then throw(invalidAssetMessage) | |
183 | 183 | else if (((amount + totalInvested) > maxInvest)) | |
184 | 184 | then throw("The max invest limit has been reached") | |
185 | 185 | else { | |
186 | - | let currentApy = getApy(interval, maxInterval) | |
187 | 186 | let userData = readUserData(userAddressString) | |
188 | - | let noClaimed = calculateToClaim(userData[0], userData[1], userData[2], userData[3], userData[4], userData[5], userData[6]) | |
189 | - | let allAmount = (amount + userData[3]) | |
190 | - | let claimed = userData[4] | |
191 | - | let toClaim = userData[5] | |
187 | + | if ((userData[1] > (((interval * 30) * 24) * 60))) | |
188 | + | then throw("Wrong interval") | |
189 | + | else { | |
190 | + | let currentApy = getApy(interval, maxInterval) | |
191 | + | let noClaimed = calculateToClaim(userData[0], userData[1], userData[2], userData[3], userData[4], userData[5], userData[6]) | |
192 | + | let allAmount = (amount + userData[3]) | |
193 | + | let claimed = userData[4] | |
194 | + | let toClaim = userData[5] | |
192 | 195 | [setUserData(userAddressString, investStart, investEnd, investStart, allAmount, noClaimed, claimed, currentApy), IntegerEntry(totalInvestKey, (amount + totalInvested))] | |
196 | + | } | |
193 | 197 | } | |
194 | 198 | } | |
195 | 199 | } | |
196 | 200 | ||
197 | 201 | ||
198 | 202 | ||
199 | 203 | @Callable(i) | |
200 | 204 | func claim () = { | |
201 | 205 | let investAsset = getStringOrFail(investAssetKey) | |
202 | 206 | let data = readUserData(toString(i.caller)) | |
203 | 207 | if ((7 > size(data))) | |
204 | 208 | then throw("User has't invest") | |
205 | 209 | else { | |
206 | 210 | let toClaim = calculateToClaim(data[0], data[1], data[2], data[3], data[4], data[5], data[6]) | |
207 | 211 | let claimed = (data[4] + toClaim) | |
208 | 212 | let claimHeight = height | |
209 | 213 | if ((toClaim == 0)) | |
210 | 214 | then throw("Nothing to claim") | |
211 | 215 | else [ScriptTransfer(i.caller, toClaim, fromBase58String(investAsset)), setUserData(toString(i.caller), data[0], data[1], claimHeight, data[3], 0, claimed, data[6])] | |
212 | 216 | } | |
213 | 217 | } | |
214 | 218 | ||
215 | 219 | ||
216 | 220 | ||
217 | 221 | @Callable(i) | |
218 | 222 | func cancelInvest () = { | |
219 | 223 | let investAsset = getStringOrFail(investAssetKey) | |
220 | 224 | let userData = readUserData(toString(i.caller)) | |
221 | 225 | if ((7 > size(userData))) | |
222 | 226 | then throw("User has't invest") | |
223 | 227 | else { | |
224 | 228 | let toClaim = calculateToClaim(userData[0], userData[1], userData[2], userData[3], userData[4], userData[5], userData[6]) | |
225 | 229 | let forfeiht = calculateForfeit(userData[0], userData[1], userData[2], userData[3], userData[4], userData[5], userData[6]) | |
226 | 230 | let amount = userData[3] | |
227 | 231 | let totalAmount = ((toClaim + amount) - forfeiht) | |
228 | 232 | [ScriptTransfer(i.caller, toClaim, fromBase58String(investAsset)), setUserData(toString(i.caller), 0, 0, 0, 0, 0, 0, 0)] | |
229 | 233 | } | |
230 | 234 | } | |
231 | 235 | ||
232 | 236 | ||
233 | 237 | ||
234 | 238 | @Callable(i) | |
235 | 239 | func deleteAmount () = if ((i.caller != this)) | |
236 | 240 | then throw("Not owner") | |
237 | 241 | else [IntegerEntry(totalInvestKey, 0)] | |
238 | 242 | ||
239 | 243 |
github/deemru/w8io/786bc32 37.68 ms ◑