tx · EZuKUHWseCAjf19bJZ1wqtx9s2huYv9mgU6aJ3RpyUCz

3PDUqa5qmnhPJfKPnBzUd5PisA42iawV6W7:  -0.01400000 Waves

2020.10.25 06:48 [2299339] smart account 3PDUqa5qmnhPJfKPnBzUd5PisA42iawV6W7 > SELF 0.00000000 Waves

{ "type": 13, "id": "EZuKUHWseCAjf19bJZ1wqtx9s2huYv9mgU6aJ3RpyUCz", "fee": 1400000, "feeAssetId": null, "timestamp": 1603597662800, "version": 2, "chainId": 87, "sender": "3PDUqa5qmnhPJfKPnBzUd5PisA42iawV6W7", "senderPublicKey": "7S371VYZXa9KW7x4AJBpEjaBU2BcrhPYVgAs5nCvbbtj", "proofs": [ "6xwbabJnnKPYg3sXYvgcdJnCZxSfnSmapvWskDkKt9hrLmHPGZWHaGW2ykAaXCsfNphJY3k2hz2rLwQVDpcAApY", "", "497Ytviexe3ScMTFqgbpo2mBkSxJz8NjdEAQ8SW24GxBPK1HR7eAcesksx9P5bv2ZHnFi5wjUpXDppiYd1YEmLrs" ], "script": "base64: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DmZtbXREaWZmZXJlbmNlBQAAAAlmbW10QXNzZXQEAAAAEWxvZ0VudHJ5RGF0YVZhbHVlCQABLAAAAAICAAAALkRlRmkgRnJhbmtsaW4gKEZNTVQpOiBhdXRvUmViYWxhbmNlICgpID0+IHR4OiAJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAMJAABmAAAAAgkAAZAAAAABBQAAAA9zY3JpcHRUcmFuc2ZlcnMAAAAAAAAAAAAJAARNAAAAAgkABE0AAAACBQAAAA9zY3JpcHRUcmFuc2ZlcnMJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAD2xvZ0VudHJ5RGF0YUtleQUAAAARbG9nRW50cnlEYXRhVmFsdWUJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABB0aW1lc3RhbXBEYXRhS2V5CAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAkAAAIAAAABAgAAACtUaGVyZSBhcmUgY3VycmVudGx5IG5vIHRyYW5zZmVycyBhdmFpbGFibGUuAAAAAWkBAAAAD3NlbmRUZWFtUGF5b3V0cwAAAAADAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BQAAAA5hZG1pblB1YmxpY0tleQkBAAAAAiE9AAAAAggFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BQAAAA5tbWJvdFB1YmxpY0tleQcJAAACAAAAAQIAAAA2VGhpcyBhY3Rpb24gY2FuIG9ubHkgYmUgcGVyZm9ybWVkIGJ5IGFuIGFkbWluaXN0cmF0b3IhAwkAAGYAAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAACQAAAgAAAAECAAAAM0Rvbid0IGF0dGFjaCBwYXltZW50IHdoZW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9uIC4uLgQAAAAKb2xkUGF5b3V0cwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAA5wYXlvdXRzRGF0YUtleQAAAAAAAAAAAAQAAAALdGVhbVBheW91dHMJAABrAAAAAwUAAAALdHJhZGVTdXBwbHkFAAAADGZ0ZWFtUGVyY2VudAUAAAAHcGVyY2VudAQAAAAGYW1vdW50CQEA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c0VsZW1lbnQAAAACBQAAAAlwb3J0Zm9saW8ICAUAAAABbwAAAAlhc3NldFBhaXIAAAAKcHJpY2VBc3NldAcGAwMJAAAAAAAAAggFAAAAAW8AAAAJb3JkZXJUeXBlBQAAAARTZWxsCQEAAAACIT0AAAACCAgFAAAAAW8AAAAJYXNzZXRQYWlyAAAAC2Ftb3VudEFzc2V0BQAAAAl4ZmVlQXNzZXQHCQEAAAABIQAAAAEJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAlwb3J0Zm9saW8ICAUAAAABbwAAAAlhc3NldFBhaXIAAAALYW1vdW50QXNzZXQHBwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAAW8AAAARbWF0Y2hlckZlZUFzc2V0SWQHCQAAAAAAAAIIBQAAAAFvAAAAEG1hdGNoZXJQdWJsaWNLZXkFAAAADnd4Y2hnUHVibGljS2V5BwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAATVHJhbnNmZXJUcmFuc2FjdGlvbgQAAAABdAUAAAAHJG1hdGNoMAMDAwUAAAAMaXNWYWxpZE93bmVyCQEAAAABIQAAAAEJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAlwb3J0Zm9saW8IBQAAAAF0AAAAB2Fzc2V0SWQHCQEAAAABIQAAAAEJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAlwb3J0Zm9saW8IBQAAAAF0AAAACmZlZUFzc2V0SWQHBgMDAwUAAAAMaXNWYWxpZEFkbWluCQAAAAAAAAIIBQAAAAF0AAAAB2Fzc2V0SWQFAAAACWZtbXRBc3NldAcJAABnAAAAAgUAAAANbWF4U2FsZUFtb3VudAgFAAAAAXQAAAAGYW1vdW50BwkAAAAAAAACCQAEJAAAAAEIBQAAAAF0AAAACXJlY2lwaWVudAUAAAAFZnNhbGUHAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABBMZWFzZVRyYW5zYWN0aW9uBAAAAAFsBQAAAAckbWF0Y2gwAwUAAAAMaXNWYWxpZE1NQm90CQAAZwAAAAIFAAAADm1heExlYXNlQW1vdW50CAUAAAABbAAAAAZhbW91bnQHAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABZMZWFzZUNhbmNlbFRyYW5zYWN0aW9uAwUAAAAMaXNWYWxpZE1NQm90BgUAAAARYW55VmFsaWRHdWFyYW50b3IDAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABRTZXRTY3JpcHRUcmFuc2FjdGlvbgYJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAPRGF0YVRyYW5zYWN0aW9uAwUAAAAMaXNWYWxpZEFkbWluBQAAABFpc1ZhbGlkR3VhcmFudG9ycwcHB+GY0A==", "height": 2299339, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EU5yuLZkACTSH7KkoQKBgHSLLyPocJ28zFo7UiaRcWWs Next: 7rxjWXegeZGw5fTiyqRLcpAPnUCmmqADC4MG7DWBjTJv Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let scriptVersion = "v5.08-final_20201020"
4+let scriptVersion = "v5.09-final_20201025"
55
66 let percent = 100000
77
4747
4848 let fteam = Address(base58'3P3TMgAUVtJKWHxQMdt8Ao6A1qnRyVmCSr2')
4949
50-let saleFunds = (10000 * 100000)
50+let saleSupply = (10000 * 100000)
5151
52-let circSupply = ((value(assetInfo(fmmtAsset)).quantity - (assetBalance(fdapp, fmmtAsset) + assetBalance(this, fmmtAsset))) - saleFunds)
52+let circSupply = ((value(assetInfo(fmmtAsset)).quantity - (assetBalance(fdapp, fmmtAsset) + assetBalance(this, fmmtAsset))) - saleSupply)
5353
5454 let fteamFunds = assetBalance(fteam, fmmtAsset)
5555
113113 else if ((size(i.payments) > 0))
114114 then throw("Don't attach payment when calling this function ...")
115115 else {
116- let fmmtDifference = (saleFunds - assetBalance(fdapp, fmmtAsset))
116+ let fmmtDifference = (saleSupply - assetBalance(fdapp, fmmtAsset))
117117 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))
118118 let logEntryDataValue = ("DeFi Franklin (FMMT): autoRebalance () => tx: " + toBase58String(i.transactionId))
119119 if ((size(scriptTransfers) > 0))
120- then (((scriptTransfers :+ ScriptTransfer(i.caller, 500000, unit)) :+ StringEntry(logEntryDataKey, logEntryDataValue)) :+ IntegerEntry(timestampDataKey, lastBlock.timestamp))
120+ then ((scriptTransfers :+ StringEntry(logEntryDataKey, logEntryDataValue)) :+ IntegerEntry(timestampDataKey, lastBlock.timestamp))
121121 else throw("There are currently no transfers available.")
122122 }
123123 }
182182 let isValidGuarantors = (validGuarantors >= minSignatures)
183183 let wavesLease = (wavesRegular - wavesAvailable)
184184 let wavesFunds = (wavesRegular + wavesBalance(fdapp).regular)
185- let maxSaleAmount = validate((saleFunds - assetBalance(fsale, fmmtAsset)))
185+ let maxSaleAmount = validate((saleSupply - assetBalance(fsale, fmmtAsset)))
186186 let maxLeaseAmount = validate((fraction(wavesFunds, leasePercent, percent) - wavesLease))
187187 match tx {
188188 case o: Order =>
204204 then (o.matcherPublicKey == wxchgPublicKey)
205205 else false
206206 case t: TransferTransaction =>
207- if (if (if (if (isValidOwner)
207+ if (if (if (isValidOwner)
208208 then !(containsElement(portfolio, t.assetId))
209209 else false)
210210 then !(containsElement(portfolio, t.feeAssetId))
216216 then (maxSaleAmount >= t.amount)
217217 else false)
218218 then (addressFromRecipient(t.recipient) == fsale)
219- else false)
220- then true
221- else if (if (if (anyValidGuarantor)
222- then (t.assetId != fmmtAsset)
223- else false)
224- then containsElement(portfolio, t.assetId)
225- else false)
226- then (addressFromRecipient(t.recipient) == fdapp)
227219 else false
228220 case l: LeaseTransaction =>
229221 if (isValidMMBot)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let scriptVersion = "v5.08-final_20201020"
4+let scriptVersion = "v5.09-final_20201025"
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
50-let saleFunds = (10000 * 100000)
50+let saleSupply = (10000 * 100000)
5151
52-let circSupply = ((value(assetInfo(fmmtAsset)).quantity - (assetBalance(fdapp, fmmtAsset) + assetBalance(this, fmmtAsset))) - saleFunds)
52+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 fmmtDifference = (saleFunds - assetBalance(fdapp, fmmtAsset))
116+ let fmmtDifference = (saleSupply - assetBalance(fdapp, fmmtAsset))
117117 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))
118118 let logEntryDataValue = ("DeFi Franklin (FMMT): autoRebalance () => tx: " + toBase58String(i.transactionId))
119119 if ((size(scriptTransfers) > 0))
120- then (((scriptTransfers :+ ScriptTransfer(i.caller, 500000, unit)) :+ StringEntry(logEntryDataKey, logEntryDataValue)) :+ IntegerEntry(timestampDataKey, lastBlock.timestamp))
120+ then ((scriptTransfers :+ StringEntry(logEntryDataKey, logEntryDataValue)) :+ IntegerEntry(timestampDataKey, lastBlock.timestamp))
121121 else throw("There are currently no transfers available.")
122122 }
123123 }
124124
125125
126126
127127 @Callable(i)
128128 func sendTeamPayouts () = if (if ((i.callerPublicKey != adminPublicKey))
129129 then (i.callerPublicKey != mmbotPublicKey)
130130 else false)
131131 then throw("This action can only be performed by an administrator!")
132132 else if ((size(i.payments) > 0))
133133 then throw("Don't attach payment when calling this function ...")
134134 else {
135135 let oldPayouts = valueOrElse(getInteger(this, payoutsDataKey), 0)
136136 let teamPayouts = fraction(tradeSupply, fteamPercent, percent)
137137 let amount = validate((teamPayouts - oldPayouts))
138138 let logEntryDataValue = makeString(["DeFi Franklin (FMMT): sendTeamPayouts () =>", "amount:", toFloatString(amount, 100000), "FMMT"], " ")
139139 if ((amount > 0))
140140 then [ScriptTransfer(fteam, amount, fmmtAsset), ScriptTransfer(i.caller, 500000, unit), IntegerEntry(payoutsDataKey, teamPayouts), StringEntry(logEntryDataKey, logEntryDataValue), IntegerEntry(timestampDataKey, lastBlock.timestamp)]
141141 else throw("There are currently no payments available.")
142142 }
143143
144144
145145
146146 @Callable(i)
147147 func setScriptVersion () = if ((i.callerPublicKey != adminPublicKey))
148148 then throw("This action can only be performed by an administrator!")
149149 else if ((size(i.payments) > 0))
150150 then throw("Don't attach payment when calling this function ...")
151151 else {
152152 let oldVersion = valueOrElse(getString(this, versionDataKey), "")
153153 let versionList = split(drop(scriptVersion, 1), "_")
154154 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)], "-") + ")")], " ")
155155 if ((oldVersion != scriptVersion))
156156 then [ScriptTransfer(i.caller, 500000, unit), StringEntry(versionDataKey, scriptVersion), StringEntry(logEntryDataKey, logEntryDataValue), IntegerEntry(timestampDataKey, lastBlock.timestamp)]
157157 else throw(("The script version has already been updated: " + scriptVersion))
158158 }
159159
160160
161161 @Verifier(tx)
162162 func verify () = {
163163 let isValidOwner = sigVerify_16Kb(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
164164 let isValidMMBot = if (isValidOwner)
165165 then true
166166 else sigVerify_8Kb(tx.bodyBytes, tx.proofs[1], mmbotPublicKey)
167167 let isValidAdmin = if (isValidOwner)
168168 then true
169169 else sigVerify_16Kb(tx.bodyBytes, tx.proofs[1], adminPublicKey)
170170 let validGuarantors = (((((if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[1], guarantors[0]))
171171 then 1
172172 else 0) + (if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[2], guarantors[1]))
173173 then 1
174174 else 0)) + (if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[3], guarantors[2]))
175175 then 1
176176 else 0)) + (if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[4], guarantors[3]))
177177 then 1
178178 else 0)) + (if (sigVerify_16Kb(tx.bodyBytes, tx.proofs[5], guarantors[4]))
179179 then 1
180180 else 0))
181181 let anyValidGuarantor = (validGuarantors > 0)
182182 let isValidGuarantors = (validGuarantors >= minSignatures)
183183 let wavesLease = (wavesRegular - wavesAvailable)
184184 let wavesFunds = (wavesRegular + wavesBalance(fdapp).regular)
185- let maxSaleAmount = validate((saleFunds - assetBalance(fsale, fmmtAsset)))
185+ let maxSaleAmount = validate((saleSupply - assetBalance(fsale, fmmtAsset)))
186186 let maxLeaseAmount = validate((fraction(wavesFunds, leasePercent, percent) - wavesLease))
187187 match tx {
188188 case o: Order =>
189189 if (if (if (isValidMMBot)
190190 then if (if (if ((o.orderType == Buy))
191191 then (o.assetPair.priceAsset != xfeeAsset)
192192 else false)
193193 then !(containsElement(portfolio, o.assetPair.priceAsset))
194194 else false)
195195 then true
196196 else if (if ((o.orderType == Sell))
197197 then (o.assetPair.amountAsset != xfeeAsset)
198198 else false)
199199 then !(containsElement(portfolio, o.assetPair.amountAsset))
200200 else false
201201 else false)
202202 then !(isDefined(o.matcherFeeAssetId))
203203 else false)
204204 then (o.matcherPublicKey == wxchgPublicKey)
205205 else false
206206 case t: TransferTransaction =>
207- if (if (if (if (isValidOwner)
207+ if (if (if (isValidOwner)
208208 then !(containsElement(portfolio, t.assetId))
209209 else false)
210210 then !(containsElement(portfolio, t.feeAssetId))
211211 else false)
212212 then true
213213 else if (if (if (isValidAdmin)
214214 then (t.assetId == fmmtAsset)
215215 else false)
216216 then (maxSaleAmount >= t.amount)
217217 else false)
218218 then (addressFromRecipient(t.recipient) == fsale)
219- else false)
220- then true
221- else if (if (if (anyValidGuarantor)
222- then (t.assetId != fmmtAsset)
223- else false)
224- then containsElement(portfolio, t.assetId)
225- else false)
226- then (addressFromRecipient(t.recipient) == fdapp)
227219 else false
228220 case l: LeaseTransaction =>
229221 if (isValidMMBot)
230222 then (maxLeaseAmount >= l.amount)
231223 else false
232224 case _: LeaseCancelTransaction =>
233225 if (isValidMMBot)
234226 then true
235227 else anyValidGuarantor
236228 case _: SetScriptTransaction|DataTransaction =>
237229 if (isValidAdmin)
238230 then isValidGuarantors
239231 else false
240232 case _ =>
241233 false
242234 }
243235 }
244236

github/deemru/w8io/3ef1775 
66.54 ms