tx · BD76PqWKVqCAopLjMf2FLTXb9RFtSAzRQj9BKgqBDtJH 3PB78esDgZEwDPG8zTrcv7VEBvzSd84Pzp9: -0.01400000 Waves 2020.04.07 13:23 [2006998] smart account 3PB78esDgZEwDPG8zTrcv7VEBvzSd84Pzp9 > SELF 0.00000000 Waves
{ "type": 13, "id": "BD76PqWKVqCAopLjMf2FLTXb9RFtSAzRQj9BKgqBDtJH", "fee": 1400000, "feeAssetId": null, "timestamp": 1586254981928, "version": 1, "sender": "3PB78esDgZEwDPG8zTrcv7VEBvzSd84Pzp9", "senderPublicKey": "6CkaEA8CPAoVRkUbUWp6SCbWJv28yoVGSL812PfGS65k", "proofs": [ "5ACddGMaq5gsXZmPdi29NStXdfLDV4hMxgfDWgC4oXTaPZEyacRu4VZ4K9kXCCnGYipmw1TVws4ZLZJBCDsbrMjm" ], "script": "base64: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", "chainId": 87, "height": 2006998, "spentComplexity": 0 } View: original | compacted Prev: 4AfwfmDFN9bV975XEJd6ZhWEp1mtUXCEbqhd3pwVfHcq Next: 3uYxBrKmQsgvqsNRVCwwHw37Tb2sGpUZ7xzEctVG6k4G Diff:
Old | New | Differences | |
---|---|---|---|
4 | 4 | let baseAssetId = base58'HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk' | |
5 | 5 | ||
6 | 6 | let quoteAssetId = base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS' | |
7 | - | ||
8 | - | let amountAssetId = baseAssetId | |
9 | - | ||
10 | - | let priceAssetId = quoteAssetId | |
11 | 7 | ||
12 | 8 | let dappPublicKey = base58'2TxTux7YwCDmz45WeFjTfDpBg7t9hBir8SqeD9m86yen' | |
13 | 9 | ||
30 | 26 | let monthOpenTime = ((lastBlockTime / month) * month) | |
31 | 27 | ||
32 | 28 | let quarterOpenTime = ((lastBlockTime / quarter) * quarter) | |
33 | - | ||
34 | - | func toDateString (timestamp) = { | |
35 | - | let sp = " " | |
36 | - | let zz = " UTC" | |
37 | - | let norm = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365] | |
38 | - | let leap = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366] | |
39 | - | if (if (((-12212553600 * 1000) > timestamp)) | |
40 | - | then true | |
41 | - | else (timestamp >= (253402300800 * 1000))) | |
42 | - | then throw("ISO 8601: only years from 1583 to 9999 are permitted.") | |
43 | - | else { | |
44 | - | let epoch = (((((1969 * 365) + (1969 / 4)) - (1969 / 100)) + (1969 / 400)) + 366) | |
45 | - | let ce = (timestamp + ((epoch * 86400) * 1000)) | |
46 | - | let date = { | |
47 | - | let yy = ((ce / (31556952 * 1000)) - 1) | |
48 | - | let dty = (((((yy * 365) + (yy / 4)) - (yy / 100)) + (yy / 400)) + 366) | |
49 | - | let ytd = ((ce / (86400 * 1000)) - dty) | |
50 | - | let months = if (if (if ((((yy + 1) % 4) == 0)) | |
51 | - | then (((yy + 1) % 100) != 0) | |
52 | - | else false) | |
53 | - | then true | |
54 | - | else (((yy + 1) % 400) == 0)) | |
55 | - | then leap | |
56 | - | else norm | |
57 | - | let mm = if ((ytd >= months[12])) | |
58 | - | then throw("Month overflow error!") | |
59 | - | else if ((ytd >= months[11])) | |
60 | - | then 11 | |
61 | - | else if ((ytd >= months[10])) | |
62 | - | then 10 | |
63 | - | else if ((ytd >= months[9])) | |
64 | - | then 9 | |
65 | - | else if ((ytd >= months[8])) | |
66 | - | then 8 | |
67 | - | else if ((ytd >= months[7])) | |
68 | - | then 7 | |
69 | - | else if ((ytd >= months[6])) | |
70 | - | then 6 | |
71 | - | else if ((ytd >= months[5])) | |
72 | - | then 5 | |
73 | - | else if ((ytd >= months[4])) | |
74 | - | then 4 | |
75 | - | else if ((ytd >= months[3])) | |
76 | - | then 3 | |
77 | - | else if ((ytd >= months[2])) | |
78 | - | then 2 | |
79 | - | else if ((ytd >= months[1])) | |
80 | - | then 1 | |
81 | - | else if ((ytd >= months[0])) | |
82 | - | then 0 | |
83 | - | else throw("Month overflow error!") | |
84 | - | let dd = (ytd - months[mm]) | |
85 | - | ((((toString((yy + 1)) + "-") + drop(toString((mm + 101)), 1)) + "-") + drop(toString((dd + 101)), 1)) | |
86 | - | } | |
87 | - | let time = { | |
88 | - | let rd = (ce % (86400 * 1000)) | |
89 | - | let hh = (rd / (3600 * 1000)) | |
90 | - | let rh = (rd % (3600 * 1000)) | |
91 | - | let mm = (rh / (60 * 1000)) | |
92 | - | let rm = (rh % (60 * 1000)) | |
93 | - | let ss = (rm / 1000) | |
94 | - | let ms = (rm % 1000) | |
95 | - | ((drop(toString((hh + 100)), 1) + ":") + drop(toString((mm + 100)), 1)) | |
96 | - | } | |
97 | - | (((date + sp) + time) + zz) | |
98 | - | } | |
99 | - | } | |
100 | - | ||
101 | 29 | ||
102 | 30 | @Callable(i) | |
103 | 31 | func setBalances (total) = if ((i.callerPublicKey != managerPublicKey)) | |
135 | 63 | else if (if ((nextMonth > lastBlockTime)) | |
136 | 64 | then true | |
137 | 65 | else (lastBlockTime >= (monthOpenTime + timeout))) | |
138 | - | then throw((("Rewards must be sent after " + | |
66 | + | then throw((("Rewards must be sent after " + toString(((monthOpenTime + month) / 1000))) + ".")) | |
139 | 67 | else { | |
140 | 68 | let recipient = addressFromPublicKey(payoutPublicKey) | |
141 | 69 | let baseBalance = assetBalance(this, baseAssetId) | |
171 | 99 | else if (if ((emergencyTime > lastBlockTime)) | |
172 | 100 | then (i.callerPublicKey != managerPublicKey) | |
173 | 101 | else false) | |
174 | - | then throw((("Time for emergencies will be after " + | |
102 | + | then throw((("Time for emergencies will be after " + toString((emergencyTime / 1000))) + ".")) | |
175 | 103 | else { | |
176 | 104 | let recipient = addressFromPublicKey(dappPublicKey) | |
177 | 105 | let baseBalance = assetBalance(this, baseAssetId) | |
197 | 125 | then true | |
198 | 126 | else sigVerify(tx.bodyBytes, sig, pub) | |
199 | 127 | ||
200 | - | let $ | |
201 | - | let $ | |
202 | - | let $ | |
203 | - | if (($ | |
204 | - | then $ | |
128 | + | let $list78337860 = keys | |
129 | + | let $size78337860 = size($list78337860) | |
130 | + | let $acc078337860 = false | |
131 | + | if (($size78337860 == 0)) | |
132 | + | then $acc078337860 | |
205 | 133 | else { | |
206 | - | let $ | |
207 | - | if (($ | |
208 | - | then $ | |
134 | + | let $acc178337860 = check($acc078337860, $list78337860[0]) | |
135 | + | if (($size78337860 == 1)) | |
136 | + | then $acc178337860 | |
209 | 137 | else { | |
210 | - | let $ | |
211 | - | if (($ | |
212 | - | then $ | |
138 | + | let $acc278337860 = check($acc178337860, $list78337860[1]) | |
139 | + | if (($size78337860 == 2)) | |
140 | + | then $acc278337860 | |
213 | 141 | else { | |
214 | - | let $ | |
215 | - | if (($ | |
216 | - | then $ | |
142 | + | let $acc378337860 = check($acc278337860, $list78337860[2]) | |
143 | + | if (($size78337860 == 3)) | |
144 | + | then $acc378337860 | |
217 | 145 | else { | |
218 | - | let $ | |
219 | - | if (($ | |
220 | - | then $ | |
146 | + | let $acc478337860 = check($acc378337860, $list78337860[3]) | |
147 | + | if (($size78337860 == 4)) | |
148 | + | then $acc478337860 | |
221 | 149 | else { | |
222 | - | let $ | |
223 | - | if (($ | |
224 | - | then $ | |
150 | + | let $acc578337860 = check($acc478337860, $list78337860[4]) | |
151 | + | if (($size78337860 == 5)) | |
152 | + | then $acc578337860 | |
225 | 153 | else { | |
226 | - | let $ | |
154 | + | let $acc678337860 = check($acc578337860, $list78337860[5]) | |
227 | 155 | throw("List size exceed 5") | |
228 | 156 | } | |
229 | 157 | } | |
246 | 174 | match tx { | |
247 | 175 | case o: Order => | |
248 | 176 | if (rightManager) | |
249 | - | then if (if (if (if ((o.matcherFeeAssetId == priceAssetId)) | |
250 | - | then (o.assetPair.amountAsset == amountAssetId) | |
251 | - | else false) | |
252 | - | then (o.assetPair.priceAsset == priceAssetId) | |
177 | + | then if (if (if ((o.matcherFeeAssetId == quoteAssetId)) | |
178 | + | then if (if ((o.assetPair.amountAsset == baseAssetId)) | |
179 | + | then (o.assetPair.priceAsset == quoteAssetId) | |
180 | + | else false) | |
181 | + | then true | |
182 | + | else if ((o.assetPair.amountAsset == quoteAssetId)) | |
183 | + | then (o.assetPair.priceAsset == baseAssetId) | |
184 | + | else false | |
253 | 185 | else false) | |
254 | 186 | then true | |
255 | 187 | else if (if ((o.orderType == Buy)) | |
256 | - | then (o.matcherFeeAssetId == | |
188 | + | then (o.matcherFeeAssetId == quoteAssetId) | |
257 | 189 | else false) | |
258 | - | then (o.assetPair.amountAsset == | |
190 | + | then (o.assetPair.amountAsset == quoteAssetId) | |
259 | 191 | else false) | |
260 | 192 | then true | |
261 | 193 | else if ((o.orderType == Sell)) | |
263 | 195 | then !(isDefined(o.assetPair.priceAsset)) | |
264 | 196 | else false) | |
265 | 197 | then true | |
266 | - | else if ((o.matcherFeeAssetId == | |
267 | - | then (o.assetPair.priceAsset == | |
198 | + | else if ((o.matcherFeeAssetId == quoteAssetId)) | |
199 | + | then (o.assetPair.priceAsset == quoteAssetId) | |
268 | 200 | else false | |
269 | 201 | else false | |
270 | 202 | else false |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 3 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let baseAssetId = base58'HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk' | |
5 | 5 | ||
6 | 6 | let quoteAssetId = base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS' | |
7 | - | ||
8 | - | let amountAssetId = baseAssetId | |
9 | - | ||
10 | - | let priceAssetId = quoteAssetId | |
11 | 7 | ||
12 | 8 | let dappPublicKey = base58'2TxTux7YwCDmz45WeFjTfDpBg7t9hBir8SqeD9m86yen' | |
13 | 9 | ||
14 | 10 | let payoutPublicKey = base58'CmtjCeZ9NqoQScT4HoWGn8vNQ8hK7kDKQfukQbjChQq1' | |
15 | 11 | ||
16 | 12 | let mmBotPublicKey = base58'5dQbzkYkh2UWtcR1cDwxZVzkduK1SVEeVa1TyLmD6eVU' | |
17 | 13 | ||
18 | 14 | let managerPublicKey = base58'66BGZcJJ9yAWcHKZZeiuA71wAvC5GWTmdQWArjt1g6jC' | |
19 | 15 | ||
20 | 16 | let guarantorPublicKeys = nil | |
21 | 17 | ||
22 | 18 | let month = (2629746 * 1000) | |
23 | 19 | ||
24 | 20 | let quarter = (month * 3) | |
25 | 21 | ||
26 | 22 | let timeout = (month / 10) | |
27 | 23 | ||
28 | 24 | let lastBlockTime = lastBlock.timestamp | |
29 | 25 | ||
30 | 26 | let monthOpenTime = ((lastBlockTime / month) * month) | |
31 | 27 | ||
32 | 28 | let quarterOpenTime = ((lastBlockTime / quarter) * quarter) | |
33 | - | ||
34 | - | func toDateString (timestamp) = { | |
35 | - | let sp = " " | |
36 | - | let zz = " UTC" | |
37 | - | let norm = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365] | |
38 | - | let leap = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366] | |
39 | - | if (if (((-12212553600 * 1000) > timestamp)) | |
40 | - | then true | |
41 | - | else (timestamp >= (253402300800 * 1000))) | |
42 | - | then throw("ISO 8601: only years from 1583 to 9999 are permitted.") | |
43 | - | else { | |
44 | - | let epoch = (((((1969 * 365) + (1969 / 4)) - (1969 / 100)) + (1969 / 400)) + 366) | |
45 | - | let ce = (timestamp + ((epoch * 86400) * 1000)) | |
46 | - | let date = { | |
47 | - | let yy = ((ce / (31556952 * 1000)) - 1) | |
48 | - | let dty = (((((yy * 365) + (yy / 4)) - (yy / 100)) + (yy / 400)) + 366) | |
49 | - | let ytd = ((ce / (86400 * 1000)) - dty) | |
50 | - | let months = if (if (if ((((yy + 1) % 4) == 0)) | |
51 | - | then (((yy + 1) % 100) != 0) | |
52 | - | else false) | |
53 | - | then true | |
54 | - | else (((yy + 1) % 400) == 0)) | |
55 | - | then leap | |
56 | - | else norm | |
57 | - | let mm = if ((ytd >= months[12])) | |
58 | - | then throw("Month overflow error!") | |
59 | - | else if ((ytd >= months[11])) | |
60 | - | then 11 | |
61 | - | else if ((ytd >= months[10])) | |
62 | - | then 10 | |
63 | - | else if ((ytd >= months[9])) | |
64 | - | then 9 | |
65 | - | else if ((ytd >= months[8])) | |
66 | - | then 8 | |
67 | - | else if ((ytd >= months[7])) | |
68 | - | then 7 | |
69 | - | else if ((ytd >= months[6])) | |
70 | - | then 6 | |
71 | - | else if ((ytd >= months[5])) | |
72 | - | then 5 | |
73 | - | else if ((ytd >= months[4])) | |
74 | - | then 4 | |
75 | - | else if ((ytd >= months[3])) | |
76 | - | then 3 | |
77 | - | else if ((ytd >= months[2])) | |
78 | - | then 2 | |
79 | - | else if ((ytd >= months[1])) | |
80 | - | then 1 | |
81 | - | else if ((ytd >= months[0])) | |
82 | - | then 0 | |
83 | - | else throw("Month overflow error!") | |
84 | - | let dd = (ytd - months[mm]) | |
85 | - | ((((toString((yy + 1)) + "-") + drop(toString((mm + 101)), 1)) + "-") + drop(toString((dd + 101)), 1)) | |
86 | - | } | |
87 | - | let time = { | |
88 | - | let rd = (ce % (86400 * 1000)) | |
89 | - | let hh = (rd / (3600 * 1000)) | |
90 | - | let rh = (rd % (3600 * 1000)) | |
91 | - | let mm = (rh / (60 * 1000)) | |
92 | - | let rm = (rh % (60 * 1000)) | |
93 | - | let ss = (rm / 1000) | |
94 | - | let ms = (rm % 1000) | |
95 | - | ((drop(toString((hh + 100)), 1) + ":") + drop(toString((mm + 100)), 1)) | |
96 | - | } | |
97 | - | (((date + sp) + time) + zz) | |
98 | - | } | |
99 | - | } | |
100 | - | ||
101 | 29 | ||
102 | 30 | @Callable(i) | |
103 | 31 | func setBalances (total) = if ((i.callerPublicKey != managerPublicKey)) | |
104 | 32 | then throw("Only the administrator can adjust the balances!") | |
105 | 33 | else if (isDefined(i.payment)) | |
106 | 34 | then throw("Please do not attach payment when setting balances.") | |
107 | 35 | else if ((0 > total)) | |
108 | 36 | then throw("Negative total balance are not allowed...") | |
109 | 37 | else { | |
110 | 38 | let baseBalance = assetBalance(this, baseAssetId) | |
111 | 39 | let quoteBalance = assetBalance(this, quoteAssetId) | |
112 | 40 | let totalBalance = match getInteger(this, "balance_total") { | |
113 | 41 | case x: Int => | |
114 | 42 | x | |
115 | 43 | case _ => | |
116 | 44 | 0 | |
117 | 45 | } | |
118 | 46 | if ((total > 0)) | |
119 | 47 | then WriteSet([DataEntry("balance_base", baseBalance), DataEntry("balance_quote", quoteBalance), DataEntry("balance_total", total), DataEntry("last_update", lastBlockTime)]) | |
120 | 48 | else if ((totalBalance > 0)) | |
121 | 49 | then WriteSet([DataEntry("balance_base", baseBalance), DataEntry("balance_quote", quoteBalance), DataEntry("last_update", lastBlockTime)]) | |
122 | 50 | else throw("Zero total balance are not allowed...") | |
123 | 51 | } | |
124 | 52 | ||
125 | 53 | ||
126 | 54 | ||
127 | 55 | @Callable(i) | |
128 | 56 | func sendRewards () = { | |
129 | 57 | let lastUpdate = getIntegerValue(this, "last_update") | |
130 | 58 | let nextMonth = (((lastUpdate / month) + 1) * month) | |
131 | 59 | if ((i.callerPublicKey != managerPublicKey)) | |
132 | 60 | then throw("Only administrator can send rewards!") | |
133 | 61 | else if (isDefined(i.payment)) | |
134 | 62 | then throw("Please do not attach payment when sending rewards.") | |
135 | 63 | else if (if ((nextMonth > lastBlockTime)) | |
136 | 64 | then true | |
137 | 65 | else (lastBlockTime >= (monthOpenTime + timeout))) | |
138 | - | then throw((("Rewards must be sent after " + | |
66 | + | then throw((("Rewards must be sent after " + toString(((monthOpenTime + month) / 1000))) + ".")) | |
139 | 67 | else { | |
140 | 68 | let recipient = addressFromPublicKey(payoutPublicKey) | |
141 | 69 | let baseBalance = assetBalance(this, baseAssetId) | |
142 | 70 | let quoteBalance = assetBalance(this, quoteAssetId) | |
143 | 71 | let oldBaseBalance = getIntegerValue(this, "balance_base") | |
144 | 72 | let oldQuoteBalance = getIntegerValue(this, "balance_quote") | |
145 | 73 | let oldTotalBalance = getIntegerValue(this, "balance_total") | |
146 | 74 | let mmProfit = (quoteBalance - fraction(oldQuoteBalance, oldBaseBalance, baseBalance)) | |
147 | 75 | let netProfit = (((2 * quoteBalance) - mmProfit) - oldTotalBalance) | |
148 | 76 | let amount = if (((quarterOpenTime + timeout) > lastBlockTime)) | |
149 | 77 | then (mmProfit + (if ((netProfit > 0)) | |
150 | 78 | then netProfit | |
151 | 79 | else 0)) | |
152 | 80 | else fraction(mmProfit, 8, 10) | |
153 | 81 | if (if ((amount > 0)) | |
154 | 82 | then (quoteBalance >= amount) | |
155 | 83 | else false) | |
156 | 84 | then ScriptResult(WriteSet([DataEntry("balance_base", baseBalance), DataEntry("balance_quote", (quoteBalance - amount)), DataEntry("last_update", lastBlockTime)]), TransferSet([ScriptTransfer(recipient, amount, quoteAssetId)])) | |
157 | 85 | else if ((amount > quoteBalance)) | |
158 | 86 | then throw("Insufficient funds on the balance of quotes...") | |
159 | 87 | else throw("Zero or negative rewards are not allowed...") | |
160 | 88 | } | |
161 | 89 | } | |
162 | 90 | ||
163 | 91 | ||
164 | 92 | ||
165 | 93 | @Callable(i) | |
166 | 94 | func emergencyExit () = { | |
167 | 95 | let lastUpdate = getIntegerValue(this, "last_update") | |
168 | 96 | let emergencyTime = ((((lastUpdate / month) + 1) * month) + timeout) | |
169 | 97 | if (isDefined(i.payment)) | |
170 | 98 | then throw("Please do not attach payment in an emergency.") | |
171 | 99 | else if (if ((emergencyTime > lastBlockTime)) | |
172 | 100 | then (i.callerPublicKey != managerPublicKey) | |
173 | 101 | else false) | |
174 | - | then throw((("Time for emergencies will be after " + | |
102 | + | then throw((("Time for emergencies will be after " + toString((emergencyTime / 1000))) + ".")) | |
175 | 103 | else { | |
176 | 104 | let recipient = addressFromPublicKey(dappPublicKey) | |
177 | 105 | let baseBalance = assetBalance(this, baseAssetId) | |
178 | 106 | let quoteBalance = assetBalance(this, quoteAssetId) | |
179 | 107 | let st0 = if ((baseBalance == 0)) | |
180 | 108 | then nil | |
181 | 109 | else [ScriptTransfer(recipient, baseBalance, baseAssetId)] | |
182 | 110 | let st1 = if ((quoteBalance == 0)) | |
183 | 111 | then st0 | |
184 | 112 | else ScriptTransfer(recipient, quoteBalance, quoteAssetId) :: st0 | |
185 | 113 | let scriptTransfers = st1 | |
186 | 114 | if ((size(scriptTransfers) > 0)) | |
187 | 115 | then ScriptResult(WriteSet([DataEntry("last_update", lastBlockTime)]), TransferSet(scriptTransfers)) | |
188 | 116 | else throw("There is nothing on the balances!") | |
189 | 117 | } | |
190 | 118 | } | |
191 | 119 | ||
192 | 120 | ||
193 | 121 | @Verifier(tx) | |
194 | 122 | func verify () = { | |
195 | 123 | func isValid (sig,keys) = { | |
196 | 124 | func check (acc,pub) = if (acc) | |
197 | 125 | then true | |
198 | 126 | else sigVerify(tx.bodyBytes, sig, pub) | |
199 | 127 | ||
200 | - | let $ | |
201 | - | let $ | |
202 | - | let $ | |
203 | - | if (($ | |
204 | - | then $ | |
128 | + | let $list78337860 = keys | |
129 | + | let $size78337860 = size($list78337860) | |
130 | + | let $acc078337860 = false | |
131 | + | if (($size78337860 == 0)) | |
132 | + | then $acc078337860 | |
205 | 133 | else { | |
206 | - | let $ | |
207 | - | if (($ | |
208 | - | then $ | |
134 | + | let $acc178337860 = check($acc078337860, $list78337860[0]) | |
135 | + | if (($size78337860 == 1)) | |
136 | + | then $acc178337860 | |
209 | 137 | else { | |
210 | - | let $ | |
211 | - | if (($ | |
212 | - | then $ | |
138 | + | let $acc278337860 = check($acc178337860, $list78337860[1]) | |
139 | + | if (($size78337860 == 2)) | |
140 | + | then $acc278337860 | |
213 | 141 | else { | |
214 | - | let $ | |
215 | - | if (($ | |
216 | - | then $ | |
142 | + | let $acc378337860 = check($acc278337860, $list78337860[2]) | |
143 | + | if (($size78337860 == 3)) | |
144 | + | then $acc378337860 | |
217 | 145 | else { | |
218 | - | let $ | |
219 | - | if (($ | |
220 | - | then $ | |
146 | + | let $acc478337860 = check($acc378337860, $list78337860[3]) | |
147 | + | if (($size78337860 == 4)) | |
148 | + | then $acc478337860 | |
221 | 149 | else { | |
222 | - | let $ | |
223 | - | if (($ | |
224 | - | then $ | |
150 | + | let $acc578337860 = check($acc478337860, $list78337860[4]) | |
151 | + | if (($size78337860 == 5)) | |
152 | + | then $acc578337860 | |
225 | 153 | else { | |
226 | - | let $ | |
154 | + | let $acc678337860 = check($acc578337860, $list78337860[5]) | |
227 | 155 | throw("List size exceed 5") | |
228 | 156 | } | |
229 | 157 | } | |
230 | 158 | } | |
231 | 159 | } | |
232 | 160 | } | |
233 | 161 | } | |
234 | 162 | } | |
235 | 163 | ||
236 | 164 | let rightManager = if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)) | |
237 | 165 | then true | |
238 | 166 | else sigVerify(tx.bodyBytes, tx.proofs[0], mmBotPublicKey) | |
239 | 167 | let rightGuarantors = ((((if (isValid(tx.proofs[1], guarantorPublicKeys)) | |
240 | 168 | then 1 | |
241 | 169 | else 0) + (if (isValid(tx.proofs[2], guarantorPublicKeys)) | |
242 | 170 | then 1 | |
243 | 171 | else 0)) + (if (isValid(tx.proofs[3], guarantorPublicKeys)) | |
244 | 172 | then 1 | |
245 | 173 | else 0)) >= ((size(guarantorPublicKeys) + 1) / 2)) | |
246 | 174 | match tx { | |
247 | 175 | case o: Order => | |
248 | 176 | if (rightManager) | |
249 | - | then if (if (if (if ((o.matcherFeeAssetId == priceAssetId)) | |
250 | - | then (o.assetPair.amountAsset == amountAssetId) | |
251 | - | else false) | |
252 | - | then (o.assetPair.priceAsset == priceAssetId) | |
177 | + | then if (if (if ((o.matcherFeeAssetId == quoteAssetId)) | |
178 | + | then if (if ((o.assetPair.amountAsset == baseAssetId)) | |
179 | + | then (o.assetPair.priceAsset == quoteAssetId) | |
180 | + | else false) | |
181 | + | then true | |
182 | + | else if ((o.assetPair.amountAsset == quoteAssetId)) | |
183 | + | then (o.assetPair.priceAsset == baseAssetId) | |
184 | + | else false | |
253 | 185 | else false) | |
254 | 186 | then true | |
255 | 187 | else if (if ((o.orderType == Buy)) | |
256 | - | then (o.matcherFeeAssetId == | |
188 | + | then (o.matcherFeeAssetId == quoteAssetId) | |
257 | 189 | else false) | |
258 | - | then (o.assetPair.amountAsset == | |
190 | + | then (o.assetPair.amountAsset == quoteAssetId) | |
259 | 191 | else false) | |
260 | 192 | then true | |
261 | 193 | else if ((o.orderType == Sell)) | |
262 | 194 | then if (if (!(isDefined(o.matcherFeeAssetId))) | |
263 | 195 | then !(isDefined(o.assetPair.priceAsset)) | |
264 | 196 | else false) | |
265 | 197 | then true | |
266 | - | else if ((o.matcherFeeAssetId == | |
267 | - | then (o.assetPair.priceAsset == | |
198 | + | else if ((o.matcherFeeAssetId == quoteAssetId)) | |
199 | + | then (o.assetPair.priceAsset == quoteAssetId) | |
268 | 200 | else false | |
269 | 201 | else false | |
270 | 202 | else false | |
271 | 203 | case t: TransferTransaction => | |
272 | 204 | if (if (rightManager) | |
273 | 205 | then ((quarterOpenTime + timeout) > lastBlockTime) | |
274 | 206 | else false) | |
275 | 207 | then (addressFromRecipient(t.recipient) == addressFromPublicKey(dappPublicKey)) | |
276 | 208 | else false | |
277 | 209 | case s: SetScriptTransaction => | |
278 | 210 | if (rightManager) | |
279 | 211 | then rightGuarantors | |
280 | 212 | else false | |
281 | 213 | case _ => | |
282 | 214 | false | |
283 | 215 | } | |
284 | 216 | } | |
285 | 217 |
github/deemru/w8io/3ef1775 87.24 ms ◑