tx · 5auzK33jZDqtAYnTx6utEJdJSdVjSikFGaMYvsTEE4SX

3PJ7RB5CC3Bnn44RNR2hceZ6wKsULnMSxPi:  -0.01400000 Waves

2021.02.12 14:09 [2458632] smart account 3PJ7RB5CC3Bnn44RNR2hceZ6wKsULnMSxPi > SELF 0.00000000 Waves

{ "type": 13, "id": "5auzK33jZDqtAYnTx6utEJdJSdVjSikFGaMYvsTEE4SX", "fee": 1400000, "feeAssetId": null, "timestamp": 1613127196461, "version": 1, "sender": "3PJ7RB5CC3Bnn44RNR2hceZ6wKsULnMSxPi", "senderPublicKey": "G5ztBKfbizrqVQWMZknsgbG2HS91eJ7QgHh7X3AznjoW", "proofs": [ "2oDBLtddsH4ZV2ycyyRbZGa2pwPBmQev9uMfbXuyMfCTRavW4Ey2xJmNtn4W8S4JTkV4BBYim97JYWY1dxgFW4Ti", "5ApJDE7Qd1xbbzeaE3GGr8w7nnTbQYDvBbxLBaZZWZm9fKc1Tv5CkTfGv8FkzDHFSbassWdPWBFVCT3AeXkbCzph" ], "script": "base64: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ZXRzCAUAAAABYgAAAAdhc3NldElkBwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAFT3JkZXIEAAAAAW8FAAAAByRtYXRjaDADAwMDAwUAAAAMaXNWYWxpZFJvYm90CQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCAUAAAABbwAAABFtYXRjaGVyRmVlQXNzZXRJZAcJAAAAAAAAAggFAAAAAW8AAAAQbWF0Y2hlclB1YmxpY0tleQUAAAAQbWF0Y2hlclB1YmxpY0tleQcDAwMJAAAAAAAAAggFAAAAAW8AAAAJb3JkZXJUeXBlBQAAAANCdXkJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAlwb3J0Zm9saW8ICAUAAAABbwAAAAlhc3NldFBhaXIAAAALYW1vdW50QXNzZXQHBgMJAAAAAAAAAggFAAAAAW8AAAAJb3JkZXJUeXBlBQAAAARTZWxsCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAJcG9ydGZvbGlvCAgFAAAAAW8AAAAJYXNzZXRQYWlyAAAACnByaWNlQXNzZXQHBgMJAQAAAAEhAAAAAQkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAACXBvcnRmb2xpbwgIBQAAAAFvAAAACWFzc2V0UGFpcgAAAApwcmljZUFzc2V0CQEAAAABIQAAAAEJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAlwb3J0Zm9saW8ICAUAAAABbwAAAAlhc3NldFBhaXIAAAALYW1vdW50QXNzZXQHBwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAJb3VyQXNzZXRzCAgFAAAAAW8AAAAJYXNzZXRQYWlyAAAACnByaWNlQXNzZXQHCQEAAAABIQAAAAEJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAlvdXJBc3NldHMICAUAAAABbwAAAAlhc3NldFBhaXIAAAALYW1vdW50QXNzZXQHAwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAXTWFzc1RyYW5zZmVyVHJhbnNhY3Rpb24GCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAE1RyYW5zZmVyVHJhbnNhY3Rpb24EAAAAAXQFAAAAByRtYXRjaDADAwMFAAAADGlzVmFsaWRBZG1pbgUAAAARaXNWYWxpZEd1YXJhbnRvcnMHCQEAAAABIQAAAAEJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAlwb3J0Zm9saW8IBQAAAAF0AAAAB2Fzc2V0SWQHCQEAAAABIQAAAAEJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAlwb3J0Zm9saW8IBQAAAAF0AAAACmZlZUFzc2V0SWQHAwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAUU2V0U2NyaXB0VHJhbnNhY3Rpb24GCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAD0RhdGFUcmFuc2FjdGlvbgMFAAAADGlzVmFsaWRBZG1pbgUAAAARaXNWYWxpZEd1YXJhbnRvcnMHBwr3AeQ=", "chainId": 87, "height": 2458632, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7pf7bRfnH1vgQYpxJuXnVf5QjfBs3HsDrR2Q9mTxafaW Next: A7JjWzNJ3oSFiwM1fZrLtTG4qDuduPb486Ab6RDDUhqE Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let ScriptVersion = "1.3.5-beta_20210121"
4+let ScriptVersion = "1.3.6-beta_20210212"
55
66 let percent = 10000
77
2323
2424 let robotPublicKey = base58'JDYJq5RKnSXKLYUQfL89zWPdM3QH5hW8JUTpjnTYV95k'
2525
26-let wexchPublicKey = base58'9cpfKN9suPNvfeUNphzxXMjcnn974eme8ZhWUjaktzU5'
26+let matcherPublicKey = base58'9cpfKN9suPNvfeUNphzxXMjcnn974eme8ZhWUjaktzU5'
2727
2828 let guarantors = ([valueOrElse(getBinary(this, "guarantor1"), base58''), valueOrElse(getBinary(this, "guarantor2"), base58''), valueOrElse(getBinary(this, "guarantor3"), base58'')] :+ base58'')
2929
111111
112112
113113 func withdraw (i,assetId) = {
114- let $t055085559 = getAttachment(i.payments, 0)
115- let asset0 = $t055085559._1
116- let amount0 = $t055085559._2
117- let $t055625613 = getAttachment(i.payments, 1)
118- let asset1 = $t055625613._1
119- let amount1 = $t055625613._2
114+ let userFunds = assetBalance(i.caller, fhfsAsset)
115+ let $t055615612 = getAttachment(i.payments, 0)
116+ let asset0 = $t055615612._1
117+ let amount0 = $t055615612._2
118+ let $t056155666 = getAttachment(i.payments, 1)
119+ let asset1 = $t056155666._1
120+ let amount1 = $t056155666._2
120121 let inAmount = (amount0 + amount1)
121122 let outAmount = fractionRound(inAmount, usdxFunds, ratsFunds)
123+ let grossFee = fractionRound(outAmount, feePerc, percent)
124+ let discount = fractionRound(grossFee, userFunds, fhfsFunds)
125+ let feeAmount = valueOrMinimum((grossFee - discount), 0)
126+ let netAmount = valueOrMinimum((outAmount - feeAmount), 0)
122127 let thisFunds = assetBalance(this, assetId)
123128 let maxAmount = fraction(thisFunds, ratsFunds, usdxFunds)
124129 let assetSymbol = if ((assetId == usdtAsset))
138143 then (asset1 != ratsAsset)
139144 else false)
140145 then throw(makeString([("Withdraw" + assetSymbol), "() =>", "Please attach only Rat's Share (RATS) assets!", "Max. amount:", toFloatString(maxAmount, usdMult), "RATS"], " "))
141- else ([ScriptTransfer(i.caller, outAmount, assetId)] ++ adminTimestamp(i.callerPublicKey))
146+ else ([ScriptTransfer(admin, feeAmount, assetId), ScriptTransfer(i.caller, netAmount, assetId)] ++ adminTimestamp(i.callerPublicKey))
142147 }
143148
144149
145150 @Callable(i)
146151 func GetMeanPrice () = {
147- let netReturn = valueOrMinimum((usdxFunds - ratsFunds), 0)
148- let meanPrice = fractionRound(decMult, usdxFunds, ratsFunds)
149152 let decimals = (size(toString(percent)) - 1)
150153 let duration = (lastBlock.timestamp - openTimestamp)
151154 let exponent = fractionRound(decMult, (3 * avgMonth), duration)
152- let averageROI = (pow(meanPrice, 8, exponent, 8, decimals, HALFUP) - percent)
153- throw(makeString(["GetMeanPrice () =>", "balance:", (toDollarString(fractionRound(usdxFunds, centMult, usdMult), centMult) + ";"), "net return:", toDollarString(fractionRound(netReturn, centMult, usdMult), centMult), (("(+" + toFloatString(averageROI, (percent / 100))) + "% / 3Mo);"), "mean price:", toDollarString(meanPrice, decMult), "/ RATS"], " "))
155+ let meanPrice = fractionRound(decMult, usdxFunds, ratsFunds)
156+ let meanReturn = (pow(meanPrice, 8, exponent, 8, decimals, HALFUP) - percent)
157+ throw(makeString(["GetMeanPrice () =>", "balance:", (toDollarString(fractionRound(usdxFunds, centMult, usdMult), centMult) + ";"), "mean price:", toDollarString(meanPrice, decMult), "/ RATS;", "mean return:", (toFloatString(meanReturn, (percent / 100)) + "% / 3Mo")], " "))
154158 }
155159
156160
157161
158162 @Callable(i)
159163 func DepositFunds () = {
160- let userFunds = assetBalance(i.caller, fhfsAsset)
161- let $t073477398 = getAttachment(i.payments, 0)
162- let asset0 = $t073477398._1
163- let amount0 = $t073477398._2
164- let $t074017452 = getAttachment(i.payments, 1)
165- let asset1 = $t074017452._1
166- let amount1 = $t074017452._2
164+ let $t075047555 = getAttachment(i.payments, 0)
165+ let asset0 = $t075047555._1
166+ let amount0 = $t075047555._2
167+ let $t075587609 = getAttachment(i.payments, 1)
168+ let asset1 = $t075587609._1
169+ let amount1 = $t075587609._2
167170 let inAmount = (amount0 + amount1)
168171 let outAmount = fractionRound(inAmount, ratsFunds, usdxFunds)
169- let grossFee = fractionRound(outAmount, feePerc, percent)
170- let discount = fractionRound(grossFee, userFunds, fhfsFunds)
171- let feeAmount = valueOrMinimum((grossFee - discount), 0)
172- let netAmount = valueOrMinimum((outAmount - feeAmount), 0)
173172 if (if (if ((minAmount > inAmount))
174173 then true
175174 else if ((amount0 > 0))
180179 then !(containsElement(portfolio, asset1))
181180 else false)
182181 then throw(makeString(["DepositFunds () =>", "Please attach Tether (USDT) and/or USD Coin (USDC) assets!", "Min. total:", toDollarString(fraction(minAmount, centMult, usdMult), centMult)], " "))
183- else ([ScriptTransfer(admin, feeAmount, ratsAsset), ScriptTransfer(i.caller, netAmount, ratsAsset)] ++ adminTimestamp(i.callerPublicKey))
182+ else ([ScriptTransfer(i.caller, outAmount, ratsAsset)] ++ adminTimestamp(i.callerPublicKey))
184183 }
185184
186185
234233 if (if (if (if (if (isValidRobot)
235234 then !(isDefined(o.matcherFeeAssetId))
236235 else false)
237- then (o.matcherPublicKey == wexchPublicKey)
236+ then (o.matcherPublicKey == matcherPublicKey)
238237 else false)
239238 then if (if (if ((o.orderType == Buy))
240239 then containsElement(portfolio, o.assetPair.amountAsset)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let ScriptVersion = "1.3.5-beta_20210121"
4+let ScriptVersion = "1.3.6-beta_20210212"
55
66 let percent = 10000
77
88 let usdMult = 1000000
99
1010 let decMult = 100000000
1111
1212 let centMult = (usdMult / 10000)
1313
1414 let feePerc = ((2 * percent) / 100)
1515
1616 let minAmount = (1 * usdMult)
1717
1818 let avgMonth = ((31556952 / 12) * 1000)
1919
2020 let openTimestamp = (1609573796 * 1000)
2121
2222 let adminPublicKey = base58'JDYJq5RKnSXKLYUQfL89zWPdM3QH5hW8JUTpjnTYV95k'
2323
2424 let robotPublicKey = base58'JDYJq5RKnSXKLYUQfL89zWPdM3QH5hW8JUTpjnTYV95k'
2525
26-let wexchPublicKey = base58'9cpfKN9suPNvfeUNphzxXMjcnn974eme8ZhWUjaktzU5'
26+let matcherPublicKey = base58'9cpfKN9suPNvfeUNphzxXMjcnn974eme8ZhWUjaktzU5'
2727
2828 let guarantors = ([valueOrElse(getBinary(this, "guarantor1"), base58''), valueOrElse(getBinary(this, "guarantor2"), base58''), valueOrElse(getBinary(this, "guarantor3"), base58'')] :+ base58'')
2929
3030 let actualSize = value(indexOf(guarantors, base58''))
3131
3232 let minSignatures = ((actualSize / 2) + (actualSize % 2))
3333
3434 let usdtAsset = base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ'
3535
3636 let usdcAsset = base58'6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ'
3737
3838 let fhfsAsset = base58'4wcCKU3Cu4ABpmfiwzufocvrQQuRX4QMHZ7TjpRwtAmn'
3939
4040 let ratsAsset = base58'Z7817F7hnbWYsVHykjPtn8sUjyuLLf8NPofdveb8CMD'
4141
4242 let xfeeAsset = base58'5EMfVQiB8NF4HuhaXrZzDM637whWuVBsduq59ZaCSNqk'
4343
4444 let portfolio = [usdtAsset, usdcAsset]
4545
4646 let ourAssets = [fhfsAsset, xfeeAsset, ratsAsset]
4747
4848 let admin = Address(base58'3PLRw83NCgHKKFfeJi8XWZ4fypqJJxm2x2x')
4949
5050 let fmain = Address(base58'3PEPsNg7aSWSSgdC6XweyJkvDXmwVoWeNHL')
5151
5252 let fcold = Address(base58'3P8v4dR4UD8nGeLQmorw6BmCo424GvGBXCA')
5353
5454 let frats = Address(base58'3PJ7RB5CC3Bnn44RNR2hceZ6wKsULnMSxPi')
5555
5656 let fhfsTotal = (assetBalance(fmain, fhfsAsset) + assetBalance(fcold, fhfsAsset))
5757
5858 let fhfsFunds = (value(assetInfo(fhfsAsset)).quantity - fhfsTotal)
5959
6060 let ratsTotal = (assetBalance(frats, ratsAsset) + assetBalance(fcold, ratsAsset))
6161
6262 let ratsFunds = (value(assetInfo(ratsAsset)).quantity - ratsTotal)
6363
6464 let usdxFunds = (assetBalance(frats, usdtAsset) + assetBalance(frats, usdcAsset))
6565
6666 func round (xVal) = ((xVal + 1) / 2)
6767
6868
6969 func fractionRound (val,num,den) = round(fraction((2 * val), num, den))
7070
7171
7272 func valueOrMinimum (val,minVal) = if ((minVal > val))
7373 then minVal
7474 else val
7575
7676
7777 func toFloatString (val,mult) = toUtf8String(if ((1 > mult))
7878 then throw("Unexpected error: The multiplier must be greater than zero!")
7979 else if ((val == 0))
8080 then base58'q'
8181 else if ((val > 0))
8282 then ((toBytes(toString((val / mult))) + (if ((mult > 1))
8383 then base58'o'
8484 else base58'')) + take(drop(toBytes(toString(((val % mult) + mult))), 1), 8))
8585 else throw("Unexpected error: Negative values are not allowed!"))
8686
8787
8888 func toDollarString (val,mult) = toUtf8String((base58'd' + toBytes(toFloatString(val, mult))))
8989
9090
9191 func adminTimestamp (publicKey) = if ((publicKey != adminPublicKey))
9292 then nil
9393 else [IntegerEntry("timestamp", lastBlock.timestamp)]
9494
9595
9696 func getAttachment (payments,idx) = if ((idx >= size(payments)))
9797 then $Tuple2(base58'', 0)
9898 else $Tuple2(payments[idx].assetId, payments[idx].amount)
9999
100100
101101 func getTransfer (recipient,amount,assetId) = if ((1 > amount))
102102 then nil
103103 else [ScriptTransfer(recipient, amount, assetId)]
104104
105105
106106 func airdropBalance (assetId) = if (containsElement((portfolio ++ ourAssets), assetId))
107107 then throw(makeString(["AirdropWasher () =>", "Please remove the asset ID:", toBase58String(assetId)], " "))
108108 else if ((assetId == base58''))
109109 then 0
110110 else assetBalance(this, assetId)
111111
112112
113113 func withdraw (i,assetId) = {
114- let $t055085559 = getAttachment(i.payments, 0)
115- let asset0 = $t055085559._1
116- let amount0 = $t055085559._2
117- let $t055625613 = getAttachment(i.payments, 1)
118- let asset1 = $t055625613._1
119- let amount1 = $t055625613._2
114+ let userFunds = assetBalance(i.caller, fhfsAsset)
115+ let $t055615612 = getAttachment(i.payments, 0)
116+ let asset0 = $t055615612._1
117+ let amount0 = $t055615612._2
118+ let $t056155666 = getAttachment(i.payments, 1)
119+ let asset1 = $t056155666._1
120+ let amount1 = $t056155666._2
120121 let inAmount = (amount0 + amount1)
121122 let outAmount = fractionRound(inAmount, usdxFunds, ratsFunds)
123+ let grossFee = fractionRound(outAmount, feePerc, percent)
124+ let discount = fractionRound(grossFee, userFunds, fhfsFunds)
125+ let feeAmount = valueOrMinimum((grossFee - discount), 0)
126+ let netAmount = valueOrMinimum((outAmount - feeAmount), 0)
122127 let thisFunds = assetBalance(this, assetId)
123128 let maxAmount = fraction(thisFunds, ratsFunds, usdxFunds)
124129 let assetSymbol = if ((assetId == usdtAsset))
125130 then "USDT"
126131 else if ((assetId == usdcAsset))
127132 then "USDC"
128133 else throw("Unexpected error: This asset cannot be withdrawn!")
129134 if (if (if (if ((1 > inAmount))
130135 then true
131136 else (inAmount > maxAmount))
132137 then true
133138 else if ((amount0 > 0))
134139 then (asset0 != ratsAsset)
135140 else false)
136141 then true
137142 else if ((amount1 > 0))
138143 then (asset1 != ratsAsset)
139144 else false)
140145 then throw(makeString([("Withdraw" + assetSymbol), "() =>", "Please attach only Rat's Share (RATS) assets!", "Max. amount:", toFloatString(maxAmount, usdMult), "RATS"], " "))
141- else ([ScriptTransfer(i.caller, outAmount, assetId)] ++ adminTimestamp(i.callerPublicKey))
146+ else ([ScriptTransfer(admin, feeAmount, assetId), ScriptTransfer(i.caller, netAmount, assetId)] ++ adminTimestamp(i.callerPublicKey))
142147 }
143148
144149
145150 @Callable(i)
146151 func GetMeanPrice () = {
147- let netReturn = valueOrMinimum((usdxFunds - ratsFunds), 0)
148- let meanPrice = fractionRound(decMult, usdxFunds, ratsFunds)
149152 let decimals = (size(toString(percent)) - 1)
150153 let duration = (lastBlock.timestamp - openTimestamp)
151154 let exponent = fractionRound(decMult, (3 * avgMonth), duration)
152- let averageROI = (pow(meanPrice, 8, exponent, 8, decimals, HALFUP) - percent)
153- throw(makeString(["GetMeanPrice () =>", "balance:", (toDollarString(fractionRound(usdxFunds, centMult, usdMult), centMult) + ";"), "net return:", toDollarString(fractionRound(netReturn, centMult, usdMult), centMult), (("(+" + toFloatString(averageROI, (percent / 100))) + "% / 3Mo);"), "mean price:", toDollarString(meanPrice, decMult), "/ RATS"], " "))
155+ let meanPrice = fractionRound(decMult, usdxFunds, ratsFunds)
156+ let meanReturn = (pow(meanPrice, 8, exponent, 8, decimals, HALFUP) - percent)
157+ throw(makeString(["GetMeanPrice () =>", "balance:", (toDollarString(fractionRound(usdxFunds, centMult, usdMult), centMult) + ";"), "mean price:", toDollarString(meanPrice, decMult), "/ RATS;", "mean return:", (toFloatString(meanReturn, (percent / 100)) + "% / 3Mo")], " "))
154158 }
155159
156160
157161
158162 @Callable(i)
159163 func DepositFunds () = {
160- let userFunds = assetBalance(i.caller, fhfsAsset)
161- let $t073477398 = getAttachment(i.payments, 0)
162- let asset0 = $t073477398._1
163- let amount0 = $t073477398._2
164- let $t074017452 = getAttachment(i.payments, 1)
165- let asset1 = $t074017452._1
166- let amount1 = $t074017452._2
164+ let $t075047555 = getAttachment(i.payments, 0)
165+ let asset0 = $t075047555._1
166+ let amount0 = $t075047555._2
167+ let $t075587609 = getAttachment(i.payments, 1)
168+ let asset1 = $t075587609._1
169+ let amount1 = $t075587609._2
167170 let inAmount = (amount0 + amount1)
168171 let outAmount = fractionRound(inAmount, ratsFunds, usdxFunds)
169- let grossFee = fractionRound(outAmount, feePerc, percent)
170- let discount = fractionRound(grossFee, userFunds, fhfsFunds)
171- let feeAmount = valueOrMinimum((grossFee - discount), 0)
172- let netAmount = valueOrMinimum((outAmount - feeAmount), 0)
173172 if (if (if ((minAmount > inAmount))
174173 then true
175174 else if ((amount0 > 0))
176175 then !(containsElement(portfolio, asset0))
177176 else false)
178177 then true
179178 else if ((amount1 > 0))
180179 then !(containsElement(portfolio, asset1))
181180 else false)
182181 then throw(makeString(["DepositFunds () =>", "Please attach Tether (USDT) and/or USD Coin (USDC) assets!", "Min. total:", toDollarString(fraction(minAmount, centMult, usdMult), centMult)], " "))
183- else ([ScriptTransfer(admin, feeAmount, ratsAsset), ScriptTransfer(i.caller, netAmount, ratsAsset)] ++ adminTimestamp(i.callerPublicKey))
182+ else ([ScriptTransfer(i.caller, outAmount, ratsAsset)] ++ adminTimestamp(i.callerPublicKey))
184183 }
185184
186185
187186
188187 @Callable(i)
189188 func WithdrawUSDT () = withdraw(i, usdtAsset)
190189
191190
192191
193192 @Callable(i)
194193 func WithdrawUSDC () = withdraw(i, usdcAsset)
195194
196195
197196
198197 @Callable(i)
199198 func AirdropWasher (id0,id1,id2,id3,id4,id5,id6,id7,id8,id9) = if ((size(i.payments) > 0))
200199 then throw(makeString(["AirdropWasher (...) =>", "Don't attach payment when calling this function ..."], " "))
201200 else if (if ((i.callerPublicKey != adminPublicKey))
202201 then !(containsElement(guarantors, i.callerPublicKey))
203202 else false)
204203 then throw(makeString(["AirdropWasher (...) =>", "This action can only be performed by an administrator!"], " "))
205204 else ((((((((((getTransfer(admin, airdropBalance(id0), id0) ++ getTransfer(admin, airdropBalance(id1), id1)) ++ getTransfer(admin, airdropBalance(id2), id2)) ++ getTransfer(admin, airdropBalance(id3), id3)) ++ getTransfer(admin, airdropBalance(id4), id4)) ++ getTransfer(admin, airdropBalance(id5), id5)) ++ getTransfer(admin, airdropBalance(id6), id6)) ++ getTransfer(admin, airdropBalance(id7), id7)) ++ getTransfer(admin, airdropBalance(id8), id8)) ++ getTransfer(admin, airdropBalance(id9), id9)) ++ adminTimestamp(i.callerPublicKey))
206205
207206
208207 @Verifier(tx)
209208 func verify () = {
210209 let isValidOwner = sigVerify_32Kb(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
211210 let isValidAdmin = if (isValidOwner)
212211 then true
213212 else sigVerify_32Kb(tx.bodyBytes, tx.proofs[0], adminPublicKey)
214213 let isValidRobot = if (isValidOwner)
215214 then true
216215 else sigVerify_32Kb(tx.bodyBytes, tx.proofs[0], robotPublicKey)
217216 let isValidGuarantors = ((((if (sigVerify_32Kb(tx.bodyBytes, tx.proofs[1], guarantors[0]))
218217 then 1
219218 else 0) + (if (sigVerify_32Kb(tx.bodyBytes, tx.proofs[2], guarantors[1]))
220219 then 1
221220 else 0)) + (if (sigVerify_32Kb(tx.bodyBytes, tx.proofs[3], guarantors[2]))
222221 then 1
223222 else 0)) >= minSignatures)
224223 match tx {
225224 case _: LeaseCancelTransaction|LeaseTransaction =>
226225 isValidOwner
227226 case b: BurnTransaction =>
228227 if (if (isValidOwner)
229228 then !(containsElement(portfolio, b.assetId))
230229 else false)
231230 then !(containsElement(ourAssets, b.assetId))
232231 else false
233232 case o: Order =>
234233 if (if (if (if (if (isValidRobot)
235234 then !(isDefined(o.matcherFeeAssetId))
236235 else false)
237- then (o.matcherPublicKey == wexchPublicKey)
236+ then (o.matcherPublicKey == matcherPublicKey)
238237 else false)
239238 then if (if (if ((o.orderType == Buy))
240239 then containsElement(portfolio, o.assetPair.amountAsset)
241240 else false)
242241 then true
243242 else if ((o.orderType == Sell))
244243 then containsElement(portfolio, o.assetPair.priceAsset)
245244 else false)
246245 then true
247246 else if (!(containsElement(portfolio, o.assetPair.priceAsset)))
248247 then !(containsElement(portfolio, o.assetPair.amountAsset))
249248 else false
250249 else false)
251250 then !(containsElement(ourAssets, o.assetPair.priceAsset))
252251 else false)
253252 then !(containsElement(ourAssets, o.assetPair.amountAsset))
254253 else false
255254 case t: MassTransferTransaction|TransferTransaction =>
256255 if (if (if (isValidAdmin)
257256 then isValidGuarantors
258257 else false)
259258 then !(containsElement(portfolio, t.assetId))
260259 else false)
261260 then !(containsElement(portfolio, t.feeAssetId))
262261 else false
263262 case _: SetScriptTransaction|DataTransaction =>
264263 if (isValidAdmin)
265264 then isValidGuarantors
266265 else false
267266 case _ =>
268267 false
269268 }
270269 }
271270

github/deemru/w8io/873ac7e 
76.97 ms