tx · 3p1qDhaJ8SG5MMg9wgx7QjUzvnKL2swoDkfobE3YZwke

3PJ7RB5CC3Bnn44RNR2hceZ6wKsULnMSxPi:  -0.01400000 Waves

2021.01.06 21:17 [2405678] smart account 3PJ7RB5CC3Bnn44RNR2hceZ6wKsULnMSxPi > SELF 0.00000000 Waves

{ "type": 13, "id": "3p1qDhaJ8SG5MMg9wgx7QjUzvnKL2swoDkfobE3YZwke", "fee": 1400000, "feeAssetId": null, "timestamp": 1609956821661, "version": 1, "sender": "3PJ7RB5CC3Bnn44RNR2hceZ6wKsULnMSxPi", "senderPublicKey": "G5ztBKfbizrqVQWMZknsgbG2HS91eJ7QgHh7X3AznjoW", "proofs": [ "Vn5M1ynwrSEWXDGxmmcPEp6pUFeGsjwYde6wEL78bh3qcxUiP8ezBWsh6cu4HUbREWoY1gXSowbsyFzmKSJ9o1a", "4StS2MgpJzzspASvXoNhw8XWSkAQozvgYm5F9GDcfsjda9mcpkcwvkmY3Du4sN5MjxqcUo35fnZaMFDTkMj39DpS" ], "script": "base64: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AAAAAW8FAAAAByRtYXRjaDADAwMDAwUAAAAMaXNWYWxpZFJvYm90CQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCAUAAAABbwAAABFtYXRjaGVyRmVlQXNzZXRJZAcJAAAAAAAAAggFAAAAAW8AAAAQbWF0Y2hlclB1YmxpY0tleQUAAAAOd2V4Y2hQdWJsaWNLZXkHAwMDCQAAAAAAAAIIBQAAAAFvAAAACW9yZGVyVHlwZQUAAAADQnV5CQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAJcG9ydGZvbGlvCAgFAAAAAW8AAAAJYXNzZXRQYWlyAAAAC2Ftb3VudEFzc2V0BwYDCQAAAAAAAAIIBQAAAAFvAAAACW9yZGVyVHlwZQUAAAAEU2VsbAkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAACXBvcnRmb2xpbwgIBQAAAAFvAAAACWFzc2V0UGFpcgAAAApwcmljZUFzc2V0BwYDCQEAAAABIQAAAAEJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAlwb3J0Zm9saW8ICAUAAAABbwAAAAlhc3NldFBhaXIAAAAKcHJpY2VBc3NldAkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAJcG9ydGZvbGlvCAgFAAAAAW8AAAAJYXNzZXRQYWlyAAAAC2Ftb3VudEFzc2V0BwcJAQAAAAEhAAAAAQkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAACW91ckFzc2V0cwgIBQAAAAFvAAAACWFzc2V0UGFpcgAAAApwcmljZUFzc2V0BwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAJb3VyQXNzZXRzCAgFAAAAAW8AAAAJYXNzZXRQYWlyAAAAC2Ftb3VudEFzc2V0BwMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAF01hc3NUcmFuc2ZlclRyYW5zYWN0aW9uBgkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABNUcmFuc2ZlclRyYW5zYWN0aW9uBAAAAAF0BQAAAAckbWF0Y2gwAwMDBQAAAAxpc1ZhbGlkQWRtaW4FAAAAEWlzVmFsaWRHdWFyYW50b3JzBwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAJcG9ydGZvbGlvCAUAAAABdAAAAAdhc3NldElkBwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAJcG9ydGZvbGlvCAUAAAABdAAAAApmZWVBc3NldElkBwMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAFFNldFNjcmlwdFRyYW5zYWN0aW9uBgkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAA9EYXRhVHJhbnNhY3Rpb24DBQAAAAxpc1ZhbGlkQWRtaW4FAAAAEWlzVmFsaWRHdWFyYW50b3JzBwfBgKdw", "chainId": 87, "height": 2405678, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BY7Bv23xYcfYvzvq7fsDmdudsq4P3bHNnqna7DixhHV5 Next: DZcYksphbcyS9YoLMPVKkmcHJWQZvcWiM7zUX77GvhN4 Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let ScriptVersion = "1.0.11-beta_20210106"
4+let ScriptVersion = "1.0.12-beta_20210106"
55
66 let percent = 10000
77
9696
9797 @Callable(i)
9898 func GetMeanPrice () = {
99- let profit = (usdxFunds - ratsFunds)
99+ let profit = valueOrMinimum((usdxFunds - ratsFunds), 0)
100100 let meanPrice = fractionRound(decMult, usdxFunds, ratsFunds)
101- throw(makeString(["getMeanPrice () =>", "profit:", toFloatString(profit, usdMult), "USDx;", "balance:", toFloatString(usdxFunds, usdMult), "USDx;", "mean price:", toFloatString(meanPrice, decMult), "USDx / RATS"], " "))
101+ throw(makeString(["GetMeanPrice () =>", "profit:", toFloatString(profit, usdMult), "USDx;", "balance:", toFloatString(usdxFunds, usdMult), "USDx;", "mean price:", toFloatString(meanPrice, decMult), "USDx / RATS"], " "))
102102 }
103103
104104
106106 @Callable(i)
107107 func DepositFunds () = {
108108 let userFunds = assetBalance(i.caller, fhfsAsset)
109- let $t052685320 = getAttachment(0, i.payments)
110- let asset0 = $t052685320._1
111- let amount0 = $t052685320._2
112- let $t053235375 = getAttachment(1, i.payments)
113- let asset1 = $t053235375._1
114- let amount1 = $t053235375._2
109+ let $t052885340 = getAttachment(0, i.payments)
110+ let asset0 = $t052885340._1
111+ let amount0 = $t052885340._2
112+ let $t053435395 = getAttachment(1, i.payments)
113+ let asset1 = $t053435395._1
114+ let amount1 = $t053435395._2
115115 let inAmount = (amount0 + amount1)
116116 let outAmount = fractionRound(inAmount, ratsFunds, usdxFunds)
117117 let feeAmount = fractionRound(outAmount, feePerc, percent)
118- let netAmount = (outAmount - feeAmount)
119- if (if (if ((minAmount > (amount0 + amount1)))
118+ let netAmount = valueOrMinimum((outAmount - feeAmount), 0)
119+ if (if (if ((minAmount > inAmount))
120120 then true
121121 else if ((amount0 > 0))
122122 then !(containsElement(portfolio, asset0))
137137
138138 @Callable(i)
139139 func WithdrawUSDT () = {
140- let $t063106362 = getAttachment(0, i.payments)
141- let asset0 = $t063106362._1
142- let amount0 = $t063106362._2
143- let $t063656417 = getAttachment(1, i.payments)
144- let asset1 = $t063656417._1
145- let amount1 = $t063656417._2
140+ let $t063416393 = getAttachment(0, i.payments)
141+ let asset0 = $t063416393._1
142+ let amount0 = $t063416393._2
143+ let $t063966448 = getAttachment(1, i.payments)
144+ let asset1 = $t063966448._1
145+ let amount1 = $t063966448._2
146146 let usdtFunds = assetBalance(this, usdtAsset)
147147 let maxAmount = fractionRound(usdtFunds, ratsFunds, usdxFunds)
148148 let inAmount = (amount0 + amount1)
149149 let outAmount = fractionRound(inAmount, usdxFunds, ratsFunds)
150150 let feeAmount = fractionRound(outAmount, feePerc, percent)
151- let netAmount = (outAmount - feeAmount)
152- if (if (if (((amount0 + amount1) > maxAmount))
151+ let netAmount = valueOrMinimum((outAmount - feeAmount), 0)
152+ if (if (if ((inAmount > maxAmount))
153153 then true
154154 else if ((amount0 > 0))
155155 then (asset0 != ratsAsset)
166166
167167 @Callable(i)
168168 func WithdrawUSDC () = {
169- let $t071977249 = getAttachment(0, i.payments)
170- let asset0 = $t071977249._1
171- let amount0 = $t071977249._2
172- let $t072527304 = getAttachment(1, i.payments)
173- let asset1 = $t072527304._1
174- let amount1 = $t072527304._2
169+ let $t072397291 = getAttachment(0, i.payments)
170+ let asset0 = $t072397291._1
171+ let amount0 = $t072397291._2
172+ let $t072947346 = getAttachment(1, i.payments)
173+ let asset1 = $t072947346._1
174+ let amount1 = $t072947346._2
175175 let usdcFunds = assetBalance(this, usdcAsset)
176176 let maxAmount = fractionRound(usdcFunds, ratsFunds, usdxFunds)
177177 let inAmount = (amount0 + amount1)
178178 let outAmount = fractionRound(inAmount, usdxFunds, ratsFunds)
179179 let feeAmount = fractionRound(outAmount, feePerc, percent)
180- let netAmount = (outAmount - feeAmount)
181- if (if (if (((amount0 + amount1) > maxAmount))
180+ let netAmount = valueOrMinimum((outAmount - feeAmount), 0)
181+ if (if (if ((inAmount > maxAmount))
182182 then true
183183 else if ((amount0 > 0))
184184 then (asset0 != ratsAsset)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let ScriptVersion = "1.0.11-beta_20210106"
4+let ScriptVersion = "1.0.12-beta_20210106"
55
66 let percent = 10000
77
88 let usdMult = 1000000
99
1010 let decMult = 100000000
1111
1212 let feePerc = 20
1313
1414 let minAmount = (1 * usdMult)
1515
1616 let adminPublicKey = base58'JDYJq5RKnSXKLYUQfL89zWPdM3QH5hW8JUTpjnTYV95k'
1717
1818 let robotPublicKey = base58'JDYJq5RKnSXKLYUQfL89zWPdM3QH5hW8JUTpjnTYV95k'
1919
2020 let wexchPublicKey = base58'9cpfKN9suPNvfeUNphzxXMjcnn974eme8ZhWUjaktzU5'
2121
2222 let guarantors = ([valueOrElse(getBinary(this, "guarantor1"), base58''), valueOrElse(getBinary(this, "guarantor2"), base58''), valueOrElse(getBinary(this, "guarantor3"), base58'')] :+ base58'')
2323
2424 let actualSize = value(indexOf(guarantors, base58''))
2525
2626 let minSignatures = ((actualSize / 2) + (actualSize % 2))
2727
2828 let usdtAsset = base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ'
2929
3030 let usdcAsset = base58'6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ'
3131
3232 let fhfsAsset = base58'4wcCKU3Cu4ABpmfiwzufocvrQQuRX4QMHZ7TjpRwtAmn'
3333
3434 let ratsAsset = base58'Z7817F7hnbWYsVHykjPtn8sUjyuLLf8NPofdveb8CMD'
3535
3636 let xfeeAsset = base58'5EMfVQiB8NF4HuhaXrZzDM637whWuVBsduq59ZaCSNqk'
3737
3838 let portfolio = [usdtAsset, usdcAsset]
3939
4040 let ourAssets = [fhfsAsset, xfeeAsset, ratsAsset]
4141
4242 let admin = Address(base58'3PLRw83NCgHKKFfeJi8XWZ4fypqJJxm2x2x')
4343
4444 let fmain = Address(base58'3PEPsNg7aSWSSgdC6XweyJkvDXmwVoWeNHL')
4545
4646 let fcold = Address(base58'3P8v4dR4UD8nGeLQmorw6BmCo424GvGBXCA')
4747
4848 let frats = Address(base58'3PJ7RB5CC3Bnn44RNR2hceZ6wKsULnMSxPi')
4949
5050 let fhfsTotal = (assetBalance(fmain, fhfsAsset) + assetBalance(fcold, fhfsAsset))
5151
5252 let fhfsFunds = (value(assetInfo(fhfsAsset)).quantity - fhfsTotal)
5353
5454 let ratsTotal = (assetBalance(frats, ratsAsset) + assetBalance(fcold, ratsAsset))
5555
5656 let ratsFunds = (value(assetInfo(ratsAsset)).quantity - ratsTotal)
5757
5858 let usdxFunds = (assetBalance(frats, usdtAsset) + assetBalance(frats, usdcAsset))
5959
6060 func fractionRound (val,num,den) = ((fraction((2 * val), num, den) + 1) / 2)
6161
6262
6363 func valueOrMinimum (intValue,minValue) = if ((minValue > intValue))
6464 then minValue
6565 else intValue
6666
6767
6868 func valueOrMaximum (intValue,maxValue) = if ((intValue > maxValue))
6969 then maxValue
7070 else intValue
7171
7272
7373 func toFloatString (num,dec) = if ((0 > num))
7474 then throw("Negative values are not allowed!")
7575 else if ((num > 0))
7676 then toUtf8String(((toBytes(toString((num / dec))) + base58'o') + drop(toBytes(toString(((num % dec) + dec))), 1)))
7777 else "0"
7878
7979
8080 func getAttachment (idx,payments) = 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(["Please delete the asset ID:", toBase58String(assetId)], " "))
8787 else if ((assetId == base58''))
8888 then 0
8989 else assetBalance(this, assetId)
9090
9191
9292 func adminTimestamp (publicKey) = if ((publicKey != adminPublicKey))
9393 then nil
9494 else [IntegerEntry("timestamp", lastBlock.timestamp)]
9595
9696
9797 @Callable(i)
9898 func GetMeanPrice () = {
99- let profit = (usdxFunds - ratsFunds)
99+ let profit = valueOrMinimum((usdxFunds - ratsFunds), 0)
100100 let meanPrice = fractionRound(decMult, usdxFunds, ratsFunds)
101- throw(makeString(["getMeanPrice () =>", "profit:", toFloatString(profit, usdMult), "USDx;", "balance:", toFloatString(usdxFunds, usdMult), "USDx;", "mean price:", toFloatString(meanPrice, decMult), "USDx / RATS"], " "))
101+ throw(makeString(["GetMeanPrice () =>", "profit:", toFloatString(profit, usdMult), "USDx;", "balance:", toFloatString(usdxFunds, usdMult), "USDx;", "mean price:", toFloatString(meanPrice, decMult), "USDx / RATS"], " "))
102102 }
103103
104104
105105
106106 @Callable(i)
107107 func DepositFunds () = {
108108 let userFunds = assetBalance(i.caller, fhfsAsset)
109- let $t052685320 = getAttachment(0, i.payments)
110- let asset0 = $t052685320._1
111- let amount0 = $t052685320._2
112- let $t053235375 = getAttachment(1, i.payments)
113- let asset1 = $t053235375._1
114- let amount1 = $t053235375._2
109+ let $t052885340 = getAttachment(0, i.payments)
110+ let asset0 = $t052885340._1
111+ let amount0 = $t052885340._2
112+ let $t053435395 = getAttachment(1, i.payments)
113+ let asset1 = $t053435395._1
114+ let amount1 = $t053435395._2
115115 let inAmount = (amount0 + amount1)
116116 let outAmount = fractionRound(inAmount, ratsFunds, usdxFunds)
117117 let feeAmount = fractionRound(outAmount, feePerc, percent)
118- let netAmount = (outAmount - feeAmount)
119- if (if (if ((minAmount > (amount0 + amount1)))
118+ let netAmount = valueOrMinimum((outAmount - feeAmount), 0)
119+ if (if (if ((minAmount > inAmount))
120120 then true
121121 else if ((amount0 > 0))
122122 then !(containsElement(portfolio, asset0))
123123 else false)
124124 then true
125125 else if ((amount1 > 0))
126126 then !(containsElement(portfolio, asset1))
127127 else false)
128128 then throw(makeString(["Please attach Tether (USDT) and/or USD Coin (USDC) assets!", "Min. total:", toFloatString(fraction(minAmount, 100, usdMult), 100), "USDx"], " "))
129129 else if (if ((minAmount > userFunds))
130130 then (i.callerPublicKey != adminPublicKey)
131131 else false)
132132 then throw("This feature is only available to Franklin Hedge Fund investors!")
133133 else ([ScriptTransfer(admin, feeAmount, ratsAsset), ScriptTransfer(i.caller, netAmount, ratsAsset)] ++ adminTimestamp(i.callerPublicKey))
134134 }
135135
136136
137137
138138 @Callable(i)
139139 func WithdrawUSDT () = {
140- let $t063106362 = getAttachment(0, i.payments)
141- let asset0 = $t063106362._1
142- let amount0 = $t063106362._2
143- let $t063656417 = getAttachment(1, i.payments)
144- let asset1 = $t063656417._1
145- let amount1 = $t063656417._2
140+ let $t063416393 = getAttachment(0, i.payments)
141+ let asset0 = $t063416393._1
142+ let amount0 = $t063416393._2
143+ let $t063966448 = getAttachment(1, i.payments)
144+ let asset1 = $t063966448._1
145+ let amount1 = $t063966448._2
146146 let usdtFunds = assetBalance(this, usdtAsset)
147147 let maxAmount = fractionRound(usdtFunds, ratsFunds, usdxFunds)
148148 let inAmount = (amount0 + amount1)
149149 let outAmount = fractionRound(inAmount, usdxFunds, ratsFunds)
150150 let feeAmount = fractionRound(outAmount, feePerc, percent)
151- let netAmount = (outAmount - feeAmount)
152- if (if (if (((amount0 + amount1) > maxAmount))
151+ let netAmount = valueOrMinimum((outAmount - feeAmount), 0)
152+ if (if (if ((inAmount > maxAmount))
153153 then true
154154 else if ((amount0 > 0))
155155 then (asset0 != ratsAsset)
156156 else false)
157157 then true
158158 else if ((amount1 > 0))
159159 then (asset1 != ratsAsset)
160160 else false)
161161 then throw(makeString(["Please attach only Rat's Share (RATS) assets!", "Max. amount:", toFloatString(maxAmount, usdMult), "RATS"], " "))
162162 else ([ScriptTransfer(i.caller, netAmount, usdtAsset)] ++ adminTimestamp(i.callerPublicKey))
163163 }
164164
165165
166166
167167 @Callable(i)
168168 func WithdrawUSDC () = {
169- let $t071977249 = getAttachment(0, i.payments)
170- let asset0 = $t071977249._1
171- let amount0 = $t071977249._2
172- let $t072527304 = getAttachment(1, i.payments)
173- let asset1 = $t072527304._1
174- let amount1 = $t072527304._2
169+ let $t072397291 = getAttachment(0, i.payments)
170+ let asset0 = $t072397291._1
171+ let amount0 = $t072397291._2
172+ let $t072947346 = getAttachment(1, i.payments)
173+ let asset1 = $t072947346._1
174+ let amount1 = $t072947346._2
175175 let usdcFunds = assetBalance(this, usdcAsset)
176176 let maxAmount = fractionRound(usdcFunds, ratsFunds, usdxFunds)
177177 let inAmount = (amount0 + amount1)
178178 let outAmount = fractionRound(inAmount, usdxFunds, ratsFunds)
179179 let feeAmount = fractionRound(outAmount, feePerc, percent)
180- let netAmount = (outAmount - feeAmount)
181- if (if (if (((amount0 + amount1) > maxAmount))
180+ let netAmount = valueOrMinimum((outAmount - feeAmount), 0)
181+ if (if (if ((inAmount > maxAmount))
182182 then true
183183 else if ((amount0 > 0))
184184 then (asset0 != ratsAsset)
185185 else false)
186186 then true
187187 else if ((amount1 > 0))
188188 then (asset1 != ratsAsset)
189189 else false)
190190 then throw(makeString(["Please attach only Rat's Share (RATS) assets!", "Max. amount:", toFloatString(maxAmount, usdMult), "RATS"], " "))
191191 else ([ScriptTransfer(i.caller, netAmount, usdcAsset)] ++ adminTimestamp(i.callerPublicKey))
192192 }
193193
194194
195195
196196 @Callable(i)
197197 func AirdropWasher (id0,id1,id2,id3,id4,id5,id6,id7,id8,id9) = if ((size(i.payments) > 0))
198198 then throw("Don't attach payment when calling this function ...")
199199 else if ((i.callerPublicKey != adminPublicKey))
200200 then throw("This action can only be performed by an administrator!")
201201 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))
202202
203203
204204 @Verifier(tx)
205205 func verify () = {
206206 let isValidOwner = sigVerify_32Kb(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
207207 let isValidAdmin = if (isValidOwner)
208208 then true
209209 else sigVerify_32Kb(tx.bodyBytes, tx.proofs[0], adminPublicKey)
210210 let isValidRobot = if (isValidOwner)
211211 then true
212212 else sigVerify_32Kb(tx.bodyBytes, tx.proofs[0], robotPublicKey)
213213 let isValidGuarantors = ((((if (sigVerify_32Kb(tx.bodyBytes, tx.proofs[1], guarantors[0]))
214214 then 1
215215 else 0) + (if (sigVerify_32Kb(tx.bodyBytes, tx.proofs[2], guarantors[1]))
216216 then 1
217217 else 0)) + (if (sigVerify_32Kb(tx.bodyBytes, tx.proofs[3], guarantors[2]))
218218 then 1
219219 else 0)) >= minSignatures)
220220 match tx {
221221 case b: BurnTransaction =>
222222 if (if (isValidOwner)
223223 then !(containsElement(portfolio, b.assetId))
224224 else false)
225225 then !(containsElement(ourAssets, b.assetId))
226226 else false
227227 case l: LeaseCancelTransaction|LeaseTransaction =>
228228 isValidOwner
229229 case o: Order =>
230230 if (if (if (if (if (isValidRobot)
231231 then !(isDefined(o.matcherFeeAssetId))
232232 else false)
233233 then (o.matcherPublicKey == wexchPublicKey)
234234 else false)
235235 then if (if (if ((o.orderType == Buy))
236236 then containsElement(portfolio, o.assetPair.amountAsset)
237237 else false)
238238 then true
239239 else if ((o.orderType == Sell))
240240 then containsElement(portfolio, o.assetPair.priceAsset)
241241 else false)
242242 then true
243243 else if (!(containsElement(portfolio, o.assetPair.priceAsset)))
244244 then !(containsElement(portfolio, o.assetPair.amountAsset))
245245 else false
246246 else false)
247247 then !(containsElement(ourAssets, o.assetPair.priceAsset))
248248 else false)
249249 then !(containsElement(ourAssets, o.assetPair.amountAsset))
250250 else false
251251 case t: MassTransferTransaction|TransferTransaction =>
252252 if (if (if (isValidAdmin)
253253 then isValidGuarantors
254254 else false)
255255 then !(containsElement(portfolio, t.assetId))
256256 else false)
257257 then !(containsElement(portfolio, t.feeAssetId))
258258 else false
259259 case _: SetScriptTransaction|DataTransaction =>
260260 if (isValidAdmin)
261261 then isValidGuarantors
262262 else false
263263 case _ =>
264264 false
265265 }
266266 }
267267

github/deemru/w8io/3ef1775 
78.20 ms