tx · 6xBQwDPfxgz3haHo6tjfAiLjdDz1niTioLwtHoSCB2hu

3PDUqa5qmnhPJfKPnBzUd5PisA42iawV6W7:  -0.01400000 Waves

2020.10.26 10:03 [2300978] smart account 3PDUqa5qmnhPJfKPnBzUd5PisA42iawV6W7 > SELF 0.00000000 Waves

{ "type": 13, "id": "6xBQwDPfxgz3haHo6tjfAiLjdDz1niTioLwtHoSCB2hu", "fee": 1400000, "feeAssetId": null, "timestamp": 1603695571776, "version": 2, "chainId": 87, "sender": "3PDUqa5qmnhPJfKPnBzUd5PisA42iawV6W7", "senderPublicKey": "7S371VYZXa9KW7x4AJBpEjaBU2BcrhPYVgAs5nCvbbtj", "proofs": [ "2g4JnVuDkUeMMLoBKfBURfkmtmAuLdoCDBpwCbKWUxc3rxKZKoFqXKY4tuYuXEpooyS9BBDm7ykq98zvsmruwNN4", "3wZg6hPerYe5i7VMywcPMVz2aEX946zn3C57qkbNSNPxhvAqEYpH2BaJSgTunDBZCBagBF42o3G9qZKA62MGySEe" ], "script": "base64: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cnRmb2xpbwAAAAAAAAAACAkAAZEAAAACBQAAAAlwb3J0Zm9saW8AAAAAAAAAAAgJAQAAABFnZXRTY3JpcHRUcmFuc2ZlcgAAAAMFAAAABWZkYXBwBQAAAA5mbW10RGlmZmVyZW5jZQUAAAAJZm1tdEFzc2V0BAAAABFsb2dFbnRyeURhdGFWYWx1ZQkAASwAAAACAgAAAC5EZUZpIEZyYW5rbGluIChGTU1UKTogYXV0b1JlYmFsYW5jZSAoKSA9PiB0eDogCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQDCQAAZgAAAAIJAAGQAAAAAQUAAAAPc2NyaXB0VHJhbnNmZXJzAAAAAAAAAAAACQAETQAAAAIJAARNAAAAAgkABE4AAAACBQAAAA9zY3JpcHRUcmFuc2ZlcnMJAQAAABFnZXRTY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAALc3BvbnNvcnNoaXAFAAAACXhmZWVBc3NldAkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAPbG9nRW50cnlEYXRhS2V5BQAAABFsb2dFbnRyeURhdGFWYWx1ZQkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEHRpbWVzdGFtcERhdGFLZXkIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wCQAAAgAAAAECAAAAK1RoZXJlIGFyZSBjdXJyZW50bHkgbm8gdHJhbnNmZXJzIGF2YWlsYWJsZS4AAAABaQEAAAAPc2VuZFRlYW1QYXlvdXRzAAAAAAMDCQEAAAACIT0AAAACCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkFAAAADmFkbWluUHVibGljS2V5CQEAAAACIT0AAAACCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkFAAAADm1tYm90UHVibGljS2V5BwkAAAIAAAABAgAAADZUaGlzIGFjdGlvbiBjYW4gb25seSBiZSBwZXJmb3JtZWQgYnkgYW4gYWRtaW5pc3RyYXRvciEDCQAAZgAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAJAAACAAAAAQIAAAAzRG9uJ3QgYXR0YWNoIHBheW1lbnQgd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rp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CXhmZWVBc3NldAcJAQAAAAEhAAAAAQkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAACXBvcnRmb2xpbwgIBQAAAAFvAAAACWFzc2V0UGFpcgAAAApwcmljZUFzc2V0BwYDAwkAAAAAAAACCAUAAAABbwAAAAlvcmRlclR5cGUFAAAABFNlbGwJAQAAAAIhPQAAAAIICAUAAAABbwAAAAlhc3NldFBhaXIAAAALYW1vdW50QXNzZXQFAAAACXhmZWVBc3NldAcJAQAAAAEhAAAAAQkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAACXBvcnRmb2xpbwgIBQAAAAFvAAAACWFzc2V0UGFpcgAAAAthbW91bnRBc3NldAcHCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCAUAAAABbwAAABFtYXRjaGVyRmVlQXNzZXRJZAcJAAAAAAAAAggFAAAAAW8AAAAQbWF0Y2hlclB1YmxpY0tleQUAAAAOd3hjaGdQdWJsaWNLZXkHAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABNUcmFuc2ZlclRyYW5zYWN0aW9uBAAAAAF0BQAAAAckbWF0Y2gwAwMDBQAAAAxpc1ZhbGlkT3duZXIJAQAAAAEhAAAAAQkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAACXBvcnRmb2xpbwgFAAAAAXQAAAAHYXNzZXRJZAcJAQAAAAEhAAAAAQkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAACXBvcnRmb2xpbwgFAAAAAXQAAAAKZmVlQXNzZXRJZAcGAwMDBQAAAAxpc1ZhbGlkQWRtaW4JAAAAAAAAAggFAAAAAXQAAAAHYXNzZXRJZAUAAAAJZm1tdEFzc2V0BwkAAGcAAAACBQAAAA1tYXhTYWxlQW1vdW50CAUAAAABdAAAAAZhbW91bnQHCQAAAAAAAAIJAAQkAAAAAQgFAAAAAXQAAAAJcmVjaXBpZW50BQAAAAVmc2FsZQcDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAEExlYXNlVHJhbnNhY3Rpb24EAAAAAWwFAAAAByRtYXRjaDADBQAAAAxpc1ZhbGlkTU1Cb3QJAABnAAAAAgUAAAAObWF4TGVhc2VBbW91bnQIBQAAAAFsAAAABmFtb3VudAcDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAFkxlYXNlQ2FuY2VsVHJhbnNhY3Rpb24DBQAAAAxpc1ZhbGlkTU1Cb3QGBQAAABFhbnlWYWxpZEd1YXJhbnRvcgMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAFFNldFNjcmlwdFRyYW5zYWN0aW9uBgkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAA9EYXRhVHJhbnNhY3Rpb24DBQAAAAxpc1ZhbGlkQWRtaW4FAAAAEWlzVmFsaWRHdWFyYW50b3JzBwfXDLzz", "height": 2300978, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7rxjWXegeZGw5fTiyqRLcpAPnUCmmqADC4MG7DWBjTJv Next: 6YwWGNdeztvdfysNQpAnZGKgaK1bq8aqbaByv8HusP6t Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let scriptVersion = "v5.09-final_20201025"
4+let scriptVersion = "v5.10-final_20201026"
55
66 let percent = 100000
77
113113 else if ((size(i.payments) > 0))
114114 then throw("Don't attach payment when calling this function ...")
115115 else {
116+ let sponsorship = min([50000, assetBalance(this, xfeeAsset)])
116117 let fmmtDifference = (saleSupply - assetBalance(fdapp, fmmtAsset))
117118 let scriptTransfers = (((((((((getScriptTransfer(fdapp, rebalancingAmount(portfolio[0]), portfolio[0]) ++ getScriptTransfer(fdapp, rebalancingAmount(portfolio[1]), portfolio[1])) ++ getScriptTransfer(fdapp, wavesDifference, unit)) ++ getScriptTransfer(fdapp, rebalancingAmount(portfolio[3]), portfolio[3])) ++ getScriptTransfer(fdapp, rebalancingAmount(portfolio[4]), portfolio[4])) ++ getScriptTransfer(fdapp, rebalancingAmount(portfolio[5]), portfolio[5])) ++ getScriptTransfer(fdapp, rebalancingAmount(portfolio[6]), portfolio[6])) ++ getScriptTransfer(fdapp, rebalancingAmount(portfolio[7]), portfolio[7])) ++ getScriptTransfer(fdapp, rebalancingAmount(portfolio[8]), portfolio[8])) ++ getScriptTransfer(fdapp, fmmtDifference, fmmtAsset))
118119 let logEntryDataValue = ("DeFi Franklin (FMMT): autoRebalance () => tx: " + toBase58String(i.transactionId))
119120 if ((size(scriptTransfers) > 0))
120- then ((scriptTransfers :+ StringEntry(logEntryDataKey, logEntryDataValue)) :+ IntegerEntry(timestampDataKey, lastBlock.timestamp))
121+ then (((scriptTransfers ++ getScriptTransfer(i.caller, sponsorship, xfeeAsset)) :+ StringEntry(logEntryDataKey, logEntryDataValue)) :+ IntegerEntry(timestampDataKey, lastBlock.timestamp))
121122 else throw("There are currently no transfers available.")
122123 }
123124 }
137138 let amount = validate((teamPayouts - oldPayouts))
138139 let logEntryDataValue = makeString(["DeFi Franklin (FMMT): sendTeamPayouts () =>", "amount:", toFloatString(amount, 100000), "FMMT"], " ")
139140 if ((amount > 0))
140- then [ScriptTransfer(fteam, amount, fmmtAsset), ScriptTransfer(i.caller, 500000, unit), IntegerEntry(payoutsDataKey, teamPayouts), StringEntry(logEntryDataKey, logEntryDataValue), IntegerEntry(timestampDataKey, lastBlock.timestamp)]
141+ then [ScriptTransfer(fteam, amount, fmmtAsset), IntegerEntry(payoutsDataKey, teamPayouts), StringEntry(logEntryDataKey, logEntryDataValue), IntegerEntry(timestampDataKey, lastBlock.timestamp)]
141142 else throw("There are currently no payments available.")
142143 }
143144
153154 let versionList = split(drop(scriptVersion, 1), "_")
154155 let logEntryDataValue = makeString(["DeFi Franklin (FMMT): setScriptVersion () =>", "version:", (versionList[0] + ";"), "updated:", makeString([take(versionList[1], 4), take(drop(versionList[1], 4), 2), drop(versionList[1], 6)], "-")], " ")
155156 if ((oldVersion != scriptVersion))
156- then [ScriptTransfer(i.caller, 500000, unit), StringEntry(versionDataKey, scriptVersion), StringEntry(logEntryDataKey, logEntryDataValue), IntegerEntry(timestampDataKey, lastBlock.timestamp)]
157+ then [StringEntry(versionDataKey, scriptVersion), StringEntry(logEntryDataKey, logEntryDataValue), IntegerEntry(timestampDataKey, lastBlock.timestamp)]
157158 else throw(("The script version has already been updated: " + scriptVersion))
158159 }
159160
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let scriptVersion = "v5.09-final_20201025"
4+let scriptVersion = "v5.10-final_20201026"
55
66 let percent = 100000
77
88 let decimal = 100000000
99
1010 let fteamPercent = 10000
1111
1212 let leasePercent = 72000
1313
1414 let fdappPercent = 20000
1515
1616 let adminPublicKey = base58'JDYJq5RKnSXKLYUQfL89zWPdM3QH5hW8JUTpjnTYV95k'
1717
1818 let mmbotPublicKey = base58'62KBavoHK4TtCYmURFVeNC8j3gL8Jo7WwcrweoBLWofc'
1919
2020 let wxchgPublicKey = base58'9cpfKN9suPNvfeUNphzxXMjcnn974eme8ZhWUjaktzU5'
2121
2222 let guarantors = ([valueOrElse(getBinary(this, "guarantor1"), base58''), valueOrElse(getBinary(this, "guarantor2"), base58''), valueOrElse(getBinary(this, "guarantor3"), base58''), valueOrElse(getBinary(this, "guarantor4"), base58''), valueOrElse(getBinary(this, "guarantor5"), base58'')] :+ base58'')
2323
2424 let actualSize = value(indexOf(guarantors, base58''))
2525
2626 let minSignatures = ((actualSize / 2) + (actualSize % 2))
2727
2828 let btcAsset = base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS'
2929
3030 let ethAsset = base58'474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu'
3131
3232 let usdtAsset = base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ'
3333
3434 let fmmtAsset = base58'7sqT7HvCVtcrCTQV72FM5so65wjzM164rzoqDZRsRXg7'
3535
3636 let xfeeAsset = base58'5EMfVQiB8NF4HuhaXrZzDM637whWuVBsduq59ZaCSNqk'
3737
3838 let portfolio = ([usdtAsset, btcAsset, unit, ethAsset, base58'zMFqXuoyrn5w17PFurTqxB7GsS71fp9dfk6XFwxbPCy', base58'HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk', base58'B3uGHFRpSUuGEDWjqB9LWWxafQj8VTvpMucEyoxzws5H', base58'5WvPKSJXzVE2orvbkJ8wsQmmQKqTv9sGBPksV4adViw3', base58'BrjUWjndUanm5VsJkbUip8VRYy6LWJePtxya3FNv4TQa'] :+ fmmtAsset)
3939
4040 let fsale = Address(base58'3P6VEUyoBE1qdNuhUzbnFRLThuoe1pzS4B2')
4141
4242 let fdapp = Address(base58'3PFRxT9CXG81Evr8MeVJGnQSjFP6cq1SHWL')
4343
4444 let fcold = Address(base58'3PDUqa5qmnhPJfKPnBzUd5PisA42iawV6W7')
4545
4646 let admin = Address(base58'3PLRw83NCgHKKFfeJi8XWZ4fypqJJxm2x2x')
4747
4848 let fteam = Address(base58'3P3TMgAUVtJKWHxQMdt8Ao6A1qnRyVmCSr2')
4949
5050 let saleSupply = (10000 * 100000)
5151
5252 let circSupply = ((value(assetInfo(fmmtAsset)).quantity - (assetBalance(fdapp, fmmtAsset) + assetBalance(this, fmmtAsset))) - saleSupply)
5353
5454 let fteamFunds = assetBalance(fteam, fmmtAsset)
5555
5656 let tradeSupply = max([0, (circSupply - fteamFunds)])
5757
5858 let wavesRegular = wavesBalance(this).regular
5959
6060 let wavesAvailable = wavesBalance(this).available
6161
6262 let logEntryDataKey = "logEntry"
6363
6464 let timestampDataKey = "timestamp"
6565
6666 let payoutsDataKey = "teamPayouts"
6767
6868 let versionDataKey = "scriptVersion"
6969
7070 func validate (posValue) = max([0, posValue])
7171
7272
7373 func toFloatString (num,dec) = toUtf8String(if ((num == 0))
7474 then base58'q'
7575 else if ((num > 0))
7676 then ((toBytes(toString((num / dec))) + base58'o') + drop(toBytes(toString(((num % dec) + dec))), 1))
7777 else throw("Negative amounts are not allowed! Send a PM to the administrator ..."))
7878
7979
8080 func difference (fdappFunds,fcoldFunds) = {
8181 let minAmount = fraction(fdappFunds, (percent / 100), fdappPercent)
8282 let diffAmount = (fraction((fdappFunds + fcoldFunds), fdappPercent, percent) - fdappFunds)
8383 if ((minAmount > diffAmount))
8484 then 0
8585 else diffAmount
8686 }
8787
8888
8989 func rebalancingAmount (assetId) = match assetId {
9090 case id: ByteVector =>
9191 difference(assetBalance(fdapp, id), assetBalance(this, id))
9292 case _ =>
9393 difference(wavesBalance(fdapp).regular, wavesBalance(this).regular)
9494 }
9595
9696
9797 func getScriptTransfer (address,amount,assetId) = if ((amount > 0))
9898 then [ScriptTransfer(address, amount, assetId)]
9999 else nil
100100
101101
102102 @Callable(i)
103103 func autoRebalance () = {
104104 let wavesDifference = rebalancingAmount(portfolio[2])
105105 if (if (if ((i.callerPublicKey != adminPublicKey))
106106 then (i.callerPublicKey != mmbotPublicKey)
107107 else false)
108108 then !(containsElement(guarantors, i.callerPublicKey))
109109 else false)
110110 then throw("This action can only be performed by an administrator or guarantor!")
111111 else if ((wavesDifference > wavesAvailable))
112112 then throw("Not enough Waves balance! Send a PM to the administrator or cancel the lease.")
113113 else if ((size(i.payments) > 0))
114114 then throw("Don't attach payment when calling this function ...")
115115 else {
116+ let sponsorship = min([50000, assetBalance(this, xfeeAsset)])
116117 let fmmtDifference = (saleSupply - assetBalance(fdapp, fmmtAsset))
117118 let scriptTransfers = (((((((((getScriptTransfer(fdapp, rebalancingAmount(portfolio[0]), portfolio[0]) ++ getScriptTransfer(fdapp, rebalancingAmount(portfolio[1]), portfolio[1])) ++ getScriptTransfer(fdapp, wavesDifference, unit)) ++ getScriptTransfer(fdapp, rebalancingAmount(portfolio[3]), portfolio[3])) ++ getScriptTransfer(fdapp, rebalancingAmount(portfolio[4]), portfolio[4])) ++ getScriptTransfer(fdapp, rebalancingAmount(portfolio[5]), portfolio[5])) ++ getScriptTransfer(fdapp, rebalancingAmount(portfolio[6]), portfolio[6])) ++ getScriptTransfer(fdapp, rebalancingAmount(portfolio[7]), portfolio[7])) ++ getScriptTransfer(fdapp, rebalancingAmount(portfolio[8]), portfolio[8])) ++ getScriptTransfer(fdapp, fmmtDifference, fmmtAsset))
118119 let logEntryDataValue = ("DeFi Franklin (FMMT): autoRebalance () => tx: " + toBase58String(i.transactionId))
119120 if ((size(scriptTransfers) > 0))
120- then ((scriptTransfers :+ StringEntry(logEntryDataKey, logEntryDataValue)) :+ IntegerEntry(timestampDataKey, lastBlock.timestamp))
121+ then (((scriptTransfers ++ getScriptTransfer(i.caller, sponsorship, xfeeAsset)) :+ StringEntry(logEntryDataKey, logEntryDataValue)) :+ IntegerEntry(timestampDataKey, lastBlock.timestamp))
121122 else throw("There are currently no transfers available.")
122123 }
123124 }
124125
125126
126127
127128 @Callable(i)
128129 func sendTeamPayouts () = if (if ((i.callerPublicKey != adminPublicKey))
129130 then (i.callerPublicKey != mmbotPublicKey)
130131 else false)
131132 then throw("This action can only be performed by an administrator!")
132133 else if ((size(i.payments) > 0))
133134 then throw("Don't attach payment when calling this function ...")
134135 else {
135136 let oldPayouts = valueOrElse(getInteger(this, payoutsDataKey), 0)
136137 let teamPayouts = fraction(tradeSupply, fteamPercent, percent)
137138 let amount = validate((teamPayouts - oldPayouts))
138139 let logEntryDataValue = makeString(["DeFi Franklin (FMMT): sendTeamPayouts () =>", "amount:", toFloatString(amount, 100000), "FMMT"], " ")
139140 if ((amount > 0))
140- then [ScriptTransfer(fteam, amount, fmmtAsset), ScriptTransfer(i.caller, 500000, unit), IntegerEntry(payoutsDataKey, teamPayouts), StringEntry(logEntryDataKey, logEntryDataValue), IntegerEntry(timestampDataKey, lastBlock.timestamp)]
141+ then [ScriptTransfer(fteam, amount, fmmtAsset), IntegerEntry(payoutsDataKey, teamPayouts), StringEntry(logEntryDataKey, logEntryDataValue), IntegerEntry(timestampDataKey, lastBlock.timestamp)]
141142 else throw("There are currently no payments available.")
142143 }
143144
144145
145146
146147 @Callable(i)
147148 func setScriptVersion () = if ((i.callerPublicKey != adminPublicKey))
148149 then throw("This action can only be performed by an administrator!")
149150 else if ((size(i.payments) > 0))
150151 then throw("Don't attach payment when calling this function ...")
151152 else {
152153 let oldVersion = valueOrElse(getString(this, versionDataKey), "")
153154 let versionList = split(drop(scriptVersion, 1), "_")
154155 let logEntryDataValue = makeString(["DeFi Franklin (FMMT): setScriptVersion () =>", "version:", (versionList[0] + ";"), "updated:", makeString([take(versionList[1], 4), take(drop(versionList[1], 4), 2), drop(versionList[1], 6)], "-")], " ")
155156 if ((oldVersion != scriptVersion))
156- then [ScriptTransfer(i.caller, 500000, unit), StringEntry(versionDataKey, scriptVersion), StringEntry(logEntryDataKey, logEntryDataValue), IntegerEntry(timestampDataKey, lastBlock.timestamp)]
157+ then [StringEntry(versionDataKey, scriptVersion), StringEntry(logEntryDataKey, logEntryDataValue), IntegerEntry(timestampDataKey, lastBlock.timestamp)]
157158 else throw(("The script version has already been updated: " + scriptVersion))
158159 }
159160
160161
161162 @Verifier(tx)
162163 func verify () = {
163164 let isValidOwner = sigVerify_16Kb(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
164165 let isValidMMBot = if (isValidOwner)
165166 then true
166167 else sigVerify_8Kb(tx.bodyBytes, tx.proofs[1], mmbotPublicKey)
167168 let isValidAdmin = if (isValidOwner)
168169 then true
169170 else sigVerify_16Kb(tx.bodyBytes, tx.proofs[1], adminPublicKey)
170171 let validGuarantors = (((((if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[1], guarantors[0]))
171172 then 1
172173 else 0) + (if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[2], guarantors[1]))
173174 then 1
174175 else 0)) + (if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[3], guarantors[2]))
175176 then 1
176177 else 0)) + (if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[4], guarantors[3]))
177178 then 1
178179 else 0)) + (if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[5], guarantors[4]))
179180 then 1
180181 else 0))
181182 let anyValidGuarantor = (validGuarantors > 0)
182183 let isValidGuarantors = (validGuarantors >= minSignatures)
183184 let wavesLease = (wavesRegular - wavesAvailable)
184185 let wavesFunds = (wavesRegular + wavesBalance(fdapp).regular)
185186 let maxSaleAmount = validate((saleSupply - assetBalance(fsale, fmmtAsset)))
186187 let maxLeaseAmount = validate((fraction(wavesFunds, leasePercent, percent) - wavesLease))
187188 match tx {
188189 case o: Order =>
189190 if (if (if (isValidMMBot)
190191 then if (if (if ((o.orderType == Buy))
191192 then (o.assetPair.priceAsset != xfeeAsset)
192193 else false)
193194 then !(containsElement(portfolio, o.assetPair.priceAsset))
194195 else false)
195196 then true
196197 else if (if ((o.orderType == Sell))
197198 then (o.assetPair.amountAsset != xfeeAsset)
198199 else false)
199200 then !(containsElement(portfolio, o.assetPair.amountAsset))
200201 else false
201202 else false)
202203 then !(isDefined(o.matcherFeeAssetId))
203204 else false)
204205 then (o.matcherPublicKey == wxchgPublicKey)
205206 else false
206207 case t: TransferTransaction =>
207208 if (if (if (isValidOwner)
208209 then !(containsElement(portfolio, t.assetId))
209210 else false)
210211 then !(containsElement(portfolio, t.feeAssetId))
211212 else false)
212213 then true
213214 else if (if (if (isValidAdmin)
214215 then (t.assetId == fmmtAsset)
215216 else false)
216217 then (maxSaleAmount >= t.amount)
217218 else false)
218219 then (addressFromRecipient(t.recipient) == fsale)
219220 else false
220221 case l: LeaseTransaction =>
221222 if (isValidMMBot)
222223 then (maxLeaseAmount >= l.amount)
223224 else false
224225 case _: LeaseCancelTransaction =>
225226 if (isValidMMBot)
226227 then true
227228 else anyValidGuarantor
228229 case _: SetScriptTransaction|DataTransaction =>
229230 if (isValidAdmin)
230231 then isValidGuarantors
231232 else false
232233 case _ =>
233234 false
234235 }
235236 }
236237

github/deemru/w8io/6500d08 
78.69 ms