tx · GwJQUokVqMd1MJ4R6FtLLPRUC8a8tgwE1TjxqwPeSNSF

3PJ7RB5CC3Bnn44RNR2hceZ6wKsULnMSxPi:  -0.01400000 Waves

2021.01.19 13:51 [2423959] smart account 3PJ7RB5CC3Bnn44RNR2hceZ6wKsULnMSxPi > SELF 0.00000000 Waves

{ "type": 13, "id": "GwJQUokVqMd1MJ4R6FtLLPRUC8a8tgwE1TjxqwPeSNSF", "fee": 1400000, "feeAssetId": null, "timestamp": 1611053313572, "version": 1, "sender": "3PJ7RB5CC3Bnn44RNR2hceZ6wKsULnMSxPi", "senderPublicKey": "G5ztBKfbizrqVQWMZknsgbG2HS91eJ7QgHh7X3AznjoW", "proofs": [ "5DdtywoyVqfDuMu3JpCsydPtpFFcDJMbyKVkSbYBuBFgArYdYMy41VZRwe9GqMTe79nM6SxyiTxEG2hCC3kdQoXL", "3JHvpGdH3XenX11ZAyuZDVyYjRdwhCtRxjdt7njtfstgKG3k3WShTiHWmj4BHV6XHdhTEfEssLnHKAAXfwiC4rwU" ], "script": "base64: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CAUAAAABbwAAAAlhc3NldFBhaXIAAAAKcHJpY2VBc3NldAcGAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAJcG9ydGZvbGlvCAgFAAAAAW8AAAAJYXNzZXRQYWlyAAAACnByaWNlQXNzZXQJAQAAAAEhAAAAAQkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAACXBvcnRmb2xpbwgIBQAAAAFvAAAACWFzc2V0UGFpcgAAAAthbW91bnRBc3NldAcHCQEAAAABIQAAAAEJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAlvdXJBc3NldHMICAUAAAABbwAAAAlhc3NldFBhaXIAAAAKcHJpY2VBc3NldAcJAQAAAAEhAAAAAQkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAACW91ckFzc2V0cwgIBQAAAAFvAAAACWFzc2V0UGFpcgAAAAthbW91bnRBc3NldAcDAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABdNYXNzVHJhbnNmZXJUcmFuc2FjdGlvbgYJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAATVHJhbnNmZXJUcmFuc2FjdGlvbgQAAAABdAUAAAAHJG1hdGNoMAMDAwUAAAAMaXNWYWxpZEFkbWluBQAAABFpc1ZhbGlkR3VhcmFudG9ycwcJAQAAAAEhAAAAAQkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAACXBvcnRmb2xpbwgFAAAAAXQAAAAHYXNzZXRJZAcJAQAAAAEhAAAAAQkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAACXBvcnRmb2xpbwgFAAAAAXQAAAAKZmVlQXNzZXRJZAcDAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABRTZXRTY3JpcHRUcmFuc2FjdGlvbgYJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAPRGF0YVRyYW5zYWN0aW9uAwUAAAAMaXNWYWxpZEFkbWluBQAAABFpc1ZhbGlkR3VhcmFudG9ycwcHafRsWQ==", "chainId": 87, "height": 2423959, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DcrEWWntZno6yxieTze2yxH7PLmDxqCN7xumMmnCRUmt Next: 6FZRQQKYuXzYq3WGjKDy1HBbDtssAKhNbfvyeaJk5BDC Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let ScriptVersion = "1.2.3-beta_20210113"
4+let ScriptVersion = "1.3.0-beta_20210119"
55
66 let percent = 10000
77
99
1010 let decMult = 100000000
1111
12-let feePerc = 20
12+let feePerc = ((2 * percent) / 100)
1313
1414 let minAmount = (1 * usdMult)
1515
16-let avgMonth = ((31556952 * 1000) / 12)
16+let avgMonth = ((31556952 / 12) * 1000)
1717
1818 let openTimestamp = (1609573796 * 1000)
1919
9797
9898
9999 func withdraw (i,assetId) = {
100- let $t055455596 = getAttachment(i.payments, 0)
101- let asset0 = $t055455596._1
102- let amount0 = $t055455596._2
103- let $t055995650 = getAttachment(i.payments, 1)
104- let asset1 = $t055995650._1
105- let amount1 = $t055995650._2
100+ let $t055385589 = getAttachment(i.payments, 0)
101+ let asset0 = $t055385589._1
102+ let amount0 = $t055385589._2
103+ let $t055925643 = getAttachment(i.payments, 1)
104+ let asset1 = $t055925643._1
105+ let amount1 = $t055925643._2
106106 let thisFunds = assetBalance(this, assetId)
107107 let maxAmount = fractionRound(thisFunds, ratsFunds, usdxFunds)
108108 let inAmount = (amount0 + amount1)
109109 let outAmount = fractionRound(inAmount, usdxFunds, ratsFunds)
110- let feeAmount = fractionRound(outAmount, feePerc, percent)
111- let netAmount = valueOrMinimum((outAmount - feeAmount), 0)
112110 let assetSymbol = if ((assetId == usdtAsset))
113111 then "USDT"
114112 else if ((assetId == usdcAsset))
126124 then (asset1 != ratsAsset)
127125 else false)
128126 then throw(makeString([("Withdraw" + assetSymbol), "() =>", "Please attach only Rat's Share (RATS) assets!", "Max. amount:", toFloatString(maxAmount, usdMult), "RATS"], " "))
129- else ([ScriptTransfer(i.caller, netAmount, assetId)] ++ adminTimestamp(i.callerPublicKey))
127+ else ([ScriptTransfer(i.caller, outAmount, assetId)] ++ adminTimestamp(i.callerPublicKey))
130128 }
131129
132130
145143 @Callable(i)
146144 func DepositFunds () = {
147145 let userFunds = assetBalance(i.caller, fhfsAsset)
148- let $t073977448 = getAttachment(i.payments, 0)
149- let asset0 = $t073977448._1
150- let amount0 = $t073977448._2
151- let $t074517502 = getAttachment(i.payments, 1)
152- let asset1 = $t074517502._1
153- let amount1 = $t074517502._2
146+ let $t072667317 = getAttachment(i.payments, 0)
147+ let asset0 = $t072667317._1
148+ let amount0 = $t072667317._2
149+ let $t073207371 = getAttachment(i.payments, 1)
150+ let asset1 = $t073207371._1
151+ let amount1 = $t073207371._2
154152 let inAmount = (amount0 + amount1)
155153 let outAmount = fractionRound(inAmount, ratsFunds, usdxFunds)
156- let serviceFee = if (if (if (((100 * minAmount) > userFunds))
157- then (i.callerPublicKey != adminPublicKey)
158- else false)
159- then !(containsElement(guarantors, i.callerPublicKey))
160- else false)
161- then (10 * feePerc)
162- else feePerc
163- let feeAmount = fractionRound(outAmount, serviceFee, percent)
154+ let grossFee = fractionRound(outAmount, feePerc, percent)
155+ let discount = fractionRound(grossFee, userFunds, fhfsFunds)
156+ let feeAmount = valueOrMinimum((grossFee - discount), 0)
164157 let netAmount = valueOrMinimum((outAmount - feeAmount), 0)
165158 if (if (if ((minAmount > inAmount))
166159 then true
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let ScriptVersion = "1.2.3-beta_20210113"
4+let ScriptVersion = "1.3.0-beta_20210119"
55
66 let percent = 10000
77
88 let usdMult = 1000000
99
1010 let decMult = 100000000
1111
12-let feePerc = 20
12+let feePerc = ((2 * percent) / 100)
1313
1414 let minAmount = (1 * usdMult)
1515
16-let avgMonth = ((31556952 * 1000) / 12)
16+let avgMonth = ((31556952 / 12) * 1000)
1717
1818 let openTimestamp = (1609573796 * 1000)
1919
2020 let adminPublicKey = base58'JDYJq5RKnSXKLYUQfL89zWPdM3QH5hW8JUTpjnTYV95k'
2121
2222 let robotPublicKey = base58'JDYJq5RKnSXKLYUQfL89zWPdM3QH5hW8JUTpjnTYV95k'
2323
2424 let wexchPublicKey = base58'9cpfKN9suPNvfeUNphzxXMjcnn974eme8ZhWUjaktzU5'
2525
2626 let guarantors = ([valueOrElse(getBinary(this, "guarantor1"), base58''), valueOrElse(getBinary(this, "guarantor2"), base58''), valueOrElse(getBinary(this, "guarantor3"), base58'')] :+ base58'')
2727
2828 let actualSize = value(indexOf(guarantors, base58''))
2929
3030 let minSignatures = ((actualSize / 2) + (actualSize % 2))
3131
3232 let usdtAsset = base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ'
3333
3434 let usdcAsset = base58'6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ'
3535
3636 let fhfsAsset = base58'4wcCKU3Cu4ABpmfiwzufocvrQQuRX4QMHZ7TjpRwtAmn'
3737
3838 let ratsAsset = base58'Z7817F7hnbWYsVHykjPtn8sUjyuLLf8NPofdveb8CMD'
3939
4040 let xfeeAsset = base58'5EMfVQiB8NF4HuhaXrZzDM637whWuVBsduq59ZaCSNqk'
4141
4242 let portfolio = [usdtAsset, usdcAsset]
4343
4444 let ourAssets = [fhfsAsset, xfeeAsset, ratsAsset]
4545
4646 let admin = Address(base58'3PLRw83NCgHKKFfeJi8XWZ4fypqJJxm2x2x')
4747
4848 let fmain = Address(base58'3PEPsNg7aSWSSgdC6XweyJkvDXmwVoWeNHL')
4949
5050 let fcold = Address(base58'3P8v4dR4UD8nGeLQmorw6BmCo424GvGBXCA')
5151
5252 let frats = Address(base58'3PJ7RB5CC3Bnn44RNR2hceZ6wKsULnMSxPi')
5353
5454 let fhfsTotal = (assetBalance(fmain, fhfsAsset) + assetBalance(fcold, fhfsAsset))
5555
5656 let fhfsFunds = (value(assetInfo(fhfsAsset)).quantity - fhfsTotal)
5757
5858 let ratsTotal = (assetBalance(frats, ratsAsset) + assetBalance(fcold, ratsAsset))
5959
6060 let ratsFunds = (value(assetInfo(ratsAsset)).quantity - ratsTotal)
6161
6262 let usdxFunds = (assetBalance(frats, usdtAsset) + assetBalance(frats, usdcAsset))
6363
6464 func round (xVal) = ((xVal + 1) / 2)
6565
6666
6767 func fractionRound (val,num,den) = round(fraction((2 * val), num, den))
6868
6969
7070 func valueOrMinimum (val,minVal) = if ((minVal > val))
7171 then minVal
7272 else val
7373
7474
7575 func adminTimestamp (publicKey) = if ((publicKey != adminPublicKey))
7676 then nil
7777 else [IntegerEntry("timestamp", lastBlock.timestamp)]
7878
7979
8080 func getAttachment (payments,idx) = if ((idx >= size(payments)))
8181 then $Tuple2(base58'', 0)
8282 else $Tuple2(payments[idx].assetId, payments[idx].amount)
8383
8484
8585 func airdropBalance (assetId) = if (containsElement((portfolio ++ ourAssets), assetId))
8686 then throw(makeString(["AirdropWasher () =>", "Please remove the asset ID:", toBase58String(assetId)], " "))
8787 else if ((assetId == base58''))
8888 then 0
8989 else assetBalance(this, assetId)
9090
9191
9292 func toFloatString (val,dec) = toUtf8String(if ((val == 0))
9393 then base58'q'
9494 else if ((val > 0))
9595 then ((toBytes(toString((val / dec))) + base58'o') + take(drop(toBytes(toString(((val % dec) + dec))), 1), 8))
9696 else throw("Unexpected error: Negative values are not allowed!"))
9797
9898
9999 func withdraw (i,assetId) = {
100- let $t055455596 = getAttachment(i.payments, 0)
101- let asset0 = $t055455596._1
102- let amount0 = $t055455596._2
103- let $t055995650 = getAttachment(i.payments, 1)
104- let asset1 = $t055995650._1
105- let amount1 = $t055995650._2
100+ let $t055385589 = getAttachment(i.payments, 0)
101+ let asset0 = $t055385589._1
102+ let amount0 = $t055385589._2
103+ let $t055925643 = getAttachment(i.payments, 1)
104+ let asset1 = $t055925643._1
105+ let amount1 = $t055925643._2
106106 let thisFunds = assetBalance(this, assetId)
107107 let maxAmount = fractionRound(thisFunds, ratsFunds, usdxFunds)
108108 let inAmount = (amount0 + amount1)
109109 let outAmount = fractionRound(inAmount, usdxFunds, ratsFunds)
110- let feeAmount = fractionRound(outAmount, feePerc, percent)
111- let netAmount = valueOrMinimum((outAmount - feeAmount), 0)
112110 let assetSymbol = if ((assetId == usdtAsset))
113111 then "USDT"
114112 else if ((assetId == usdcAsset))
115113 then "USDC"
116114 else throw("Unexpected error: This asset cannot be withdrawn!")
117115 if (if (if (if ((1 > inAmount))
118116 then true
119117 else (inAmount > maxAmount))
120118 then true
121119 else if ((amount0 > 0))
122120 then (asset0 != ratsAsset)
123121 else false)
124122 then true
125123 else if ((amount1 > 0))
126124 then (asset1 != ratsAsset)
127125 else false)
128126 then throw(makeString([("Withdraw" + assetSymbol), "() =>", "Please attach only Rat's Share (RATS) assets!", "Max. amount:", toFloatString(maxAmount, usdMult), "RATS"], " "))
129- else ([ScriptTransfer(i.caller, netAmount, assetId)] ++ adminTimestamp(i.callerPublicKey))
127+ else ([ScriptTransfer(i.caller, outAmount, assetId)] ++ adminTimestamp(i.callerPublicKey))
130128 }
131129
132130
133131 @Callable(i)
134132 func GetMeanPrice () = {
135133 let return = valueOrMinimum((usdxFunds - ratsFunds), 0)
136134 let meanPrice = fractionRound(decMult, usdxFunds, ratsFunds)
137135 let duration = (lastBlock.timestamp - openTimestamp)
138136 let exponent = fractionRound(decMult, (12 * avgMonth), duration)
139137 let meanReturn = (pow(meanPrice, 8, exponent, 8, 4, HALFUP) - percent)
140138 throw(makeString(["GetMeanPrice () =>", "balance:", toFloatString(usdxFunds, usdMult), "USDx;", "gross return:", toFloatString(return, usdMult), "USDx", (("(" + toFloatString(meanReturn, (percent / 100))) + "% / an);"), "mean price:", toFloatString(meanPrice, decMult), "USDx / RATS"], " "))
141139 }
142140
143141
144142
145143 @Callable(i)
146144 func DepositFunds () = {
147145 let userFunds = assetBalance(i.caller, fhfsAsset)
148- let $t073977448 = getAttachment(i.payments, 0)
149- let asset0 = $t073977448._1
150- let amount0 = $t073977448._2
151- let $t074517502 = getAttachment(i.payments, 1)
152- let asset1 = $t074517502._1
153- let amount1 = $t074517502._2
146+ let $t072667317 = getAttachment(i.payments, 0)
147+ let asset0 = $t072667317._1
148+ let amount0 = $t072667317._2
149+ let $t073207371 = getAttachment(i.payments, 1)
150+ let asset1 = $t073207371._1
151+ let amount1 = $t073207371._2
154152 let inAmount = (amount0 + amount1)
155153 let outAmount = fractionRound(inAmount, ratsFunds, usdxFunds)
156- let serviceFee = if (if (if (((100 * minAmount) > userFunds))
157- then (i.callerPublicKey != adminPublicKey)
158- else false)
159- then !(containsElement(guarantors, i.callerPublicKey))
160- else false)
161- then (10 * feePerc)
162- else feePerc
163- let feeAmount = fractionRound(outAmount, serviceFee, percent)
154+ let grossFee = fractionRound(outAmount, feePerc, percent)
155+ let discount = fractionRound(grossFee, userFunds, fhfsFunds)
156+ let feeAmount = valueOrMinimum((grossFee - discount), 0)
164157 let netAmount = valueOrMinimum((outAmount - feeAmount), 0)
165158 if (if (if ((minAmount > inAmount))
166159 then true
167160 else if ((amount0 > 0))
168161 then !(containsElement(portfolio, asset0))
169162 else false)
170163 then true
171164 else if ((amount1 > 0))
172165 then !(containsElement(portfolio, asset1))
173166 else false)
174167 then throw(makeString(["DepositFunds () =>", "Please attach Tether (USDT) and/or USD Coin (USDC) assets!", "Min. total:", toFloatString(fraction(minAmount, 100, usdMult), 100), "USDx"], " "))
175168 else ([ScriptTransfer(admin, feeAmount, ratsAsset), ScriptTransfer(i.caller, netAmount, ratsAsset)] ++ adminTimestamp(i.callerPublicKey))
176169 }
177170
178171
179172
180173 @Callable(i)
181174 func WithdrawUSDT () = withdraw(i, usdtAsset)
182175
183176
184177
185178 @Callable(i)
186179 func WithdrawUSDC () = withdraw(i, usdcAsset)
187180
188181
189182
190183 @Callable(i)
191184 func AirdropWasher (id0,id1,id2,id3,id4,id5,id6,id7,id8,id9) = if ((size(i.payments) > 0))
192185 then throw(makeString(["AirdropWasher (...) =>", "Don't attach payment when calling this function ..."], " "))
193186 else if ((i.callerPublicKey != adminPublicKey))
194187 then throw(makeString(["AirdropWasher (...) =>", "This action can only be performed by an administrator!"], " "))
195188 else ([ScriptTransfer(admin, airdropBalance(id0), id0), ScriptTransfer(admin, airdropBalance(id1), id1), ScriptTransfer(admin, airdropBalance(id2), id2), ScriptTransfer(admin, airdropBalance(id3), id3), ScriptTransfer(admin, airdropBalance(id4), id4), ScriptTransfer(admin, airdropBalance(id5), id5), ScriptTransfer(admin, airdropBalance(id6), id6), ScriptTransfer(admin, airdropBalance(id7), id7), ScriptTransfer(admin, airdropBalance(id8), id8), ScriptTransfer(admin, airdropBalance(id9), id9)] ++ adminTimestamp(i.callerPublicKey))
196189
197190
198191 @Verifier(tx)
199192 func verify () = {
200193 let isValidOwner = sigVerify_32Kb(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
201194 let isValidAdmin = if (isValidOwner)
202195 then true
203196 else sigVerify_32Kb(tx.bodyBytes, tx.proofs[0], adminPublicKey)
204197 let isValidRobot = if (isValidOwner)
205198 then true
206199 else sigVerify_32Kb(tx.bodyBytes, tx.proofs[0], robotPublicKey)
207200 let isValidGuarantors = ((((if (sigVerify_32Kb(tx.bodyBytes, tx.proofs[1], guarantors[0]))
208201 then 1
209202 else 0) + (if (sigVerify_32Kb(tx.bodyBytes, tx.proofs[2], guarantors[1]))
210203 then 1
211204 else 0)) + (if (sigVerify_32Kb(tx.bodyBytes, tx.proofs[3], guarantors[2]))
212205 then 1
213206 else 0)) >= minSignatures)
214207 match tx {
215208 case _: LeaseCancelTransaction|LeaseTransaction =>
216209 isValidOwner
217210 case b: BurnTransaction =>
218211 if (if (isValidOwner)
219212 then !(containsElement(portfolio, b.assetId))
220213 else false)
221214 then !(containsElement(ourAssets, b.assetId))
222215 else false
223216 case o: Order =>
224217 if (if (if (if (if (isValidRobot)
225218 then !(isDefined(o.matcherFeeAssetId))
226219 else false)
227220 then (o.matcherPublicKey == wexchPublicKey)
228221 else false)
229222 then if (if (if ((o.orderType == Buy))
230223 then containsElement(portfolio, o.assetPair.amountAsset)
231224 else false)
232225 then true
233226 else if ((o.orderType == Sell))
234227 then containsElement(portfolio, o.assetPair.priceAsset)
235228 else false)
236229 then true
237230 else if (!(containsElement(portfolio, o.assetPair.priceAsset)))
238231 then !(containsElement(portfolio, o.assetPair.amountAsset))
239232 else false
240233 else false)
241234 then !(containsElement(ourAssets, o.assetPair.priceAsset))
242235 else false)
243236 then !(containsElement(ourAssets, o.assetPair.amountAsset))
244237 else false
245238 case t: MassTransferTransaction|TransferTransaction =>
246239 if (if (if (isValidAdmin)
247240 then isValidGuarantors
248241 else false)
249242 then !(containsElement(portfolio, t.assetId))
250243 else false)
251244 then !(containsElement(portfolio, t.feeAssetId))
252245 else false
253246 case _: SetScriptTransaction|DataTransaction =>
254247 if (isValidAdmin)
255248 then isValidGuarantors
256249 else false
257250 case _ =>
258251 false
259252 }
260253 }
261254

github/deemru/w8io/873ac7e 
67.21 ms