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:
OldNewDifferences
44 let baseAssetId = base58'HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk'
55
66 let quoteAssetId = base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS'
7-
8-let amountAssetId = baseAssetId
9-
10-let priceAssetId = quoteAssetId
117
128 let dappPublicKey = base58'2TxTux7YwCDmz45WeFjTfDpBg7t9hBir8SqeD9m86yen'
139
3026 let monthOpenTime = ((lastBlockTime / month) * month)
3127
3228 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-
10129
10230 @Callable(i)
10331 func setBalances (total) = if ((i.callerPublicKey != managerPublicKey))
13563 else if (if ((nextMonth > lastBlockTime))
13664 then true
13765 else (lastBlockTime >= (monthOpenTime + timeout)))
138- then throw((("Rewards must be sent after " + toDateString((monthOpenTime + month))) + "."))
66+ then throw((("Rewards must be sent after " + toString(((monthOpenTime + month) / 1000))) + "."))
13967 else {
14068 let recipient = addressFromPublicKey(payoutPublicKey)
14169 let baseBalance = assetBalance(this, baseAssetId)
17199 else if (if ((emergencyTime > lastBlockTime))
172100 then (i.callerPublicKey != managerPublicKey)
173101 else false)
174- then throw((("Time for emergencies will be after " + toDateString(emergencyTime)) + "."))
102+ then throw((("Time for emergencies will be after " + toString((emergencyTime / 1000))) + "."))
175103 else {
176104 let recipient = addressFromPublicKey(dappPublicKey)
177105 let baseBalance = assetBalance(this, baseAssetId)
197125 then true
198126 else sigVerify(tx.bodyBytes, sig, pub)
199127
200- let $list1134411371 = keys
201- let $size1134411371 = size($list1134411371)
202- let $acc01134411371 = false
203- if (($size1134411371 == 0))
204- then $acc01134411371
128+ let $list78337860 = keys
129+ let $size78337860 = size($list78337860)
130+ let $acc078337860 = false
131+ if (($size78337860 == 0))
132+ then $acc078337860
205133 else {
206- let $acc11134411371 = check($acc01134411371, $list1134411371[0])
207- if (($size1134411371 == 1))
208- then $acc11134411371
134+ let $acc178337860 = check($acc078337860, $list78337860[0])
135+ if (($size78337860 == 1))
136+ then $acc178337860
209137 else {
210- let $acc21134411371 = check($acc11134411371, $list1134411371[1])
211- if (($size1134411371 == 2))
212- then $acc21134411371
138+ let $acc278337860 = check($acc178337860, $list78337860[1])
139+ if (($size78337860 == 2))
140+ then $acc278337860
213141 else {
214- let $acc31134411371 = check($acc21134411371, $list1134411371[2])
215- if (($size1134411371 == 3))
216- then $acc31134411371
142+ let $acc378337860 = check($acc278337860, $list78337860[2])
143+ if (($size78337860 == 3))
144+ then $acc378337860
217145 else {
218- let $acc41134411371 = check($acc31134411371, $list1134411371[3])
219- if (($size1134411371 == 4))
220- then $acc41134411371
146+ let $acc478337860 = check($acc378337860, $list78337860[3])
147+ if (($size78337860 == 4))
148+ then $acc478337860
221149 else {
222- let $acc51134411371 = check($acc41134411371, $list1134411371[4])
223- if (($size1134411371 == 5))
224- then $acc51134411371
150+ let $acc578337860 = check($acc478337860, $list78337860[4])
151+ if (($size78337860 == 5))
152+ then $acc578337860
225153 else {
226- let $acc61134411371 = check($acc51134411371, $list1134411371[5])
154+ let $acc678337860 = check($acc578337860, $list78337860[5])
227155 throw("List size exceed 5")
228156 }
229157 }
246174 match tx {
247175 case o: Order =>
248176 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
253185 else false)
254186 then true
255187 else if (if ((o.orderType == Buy))
256- then (o.matcherFeeAssetId == priceAssetId)
188+ then (o.matcherFeeAssetId == quoteAssetId)
257189 else false)
258- then (o.assetPair.amountAsset == priceAssetId)
190+ then (o.assetPair.amountAsset == quoteAssetId)
259191 else false)
260192 then true
261193 else if ((o.orderType == Sell))
263195 then !(isDefined(o.assetPair.priceAsset))
264196 else false)
265197 then true
266- else if ((o.matcherFeeAssetId == priceAssetId))
267- then (o.assetPair.priceAsset == priceAssetId)
198+ else if ((o.matcherFeeAssetId == quoteAssetId))
199+ then (o.assetPair.priceAsset == quoteAssetId)
268200 else false
269201 else false
270202 else false
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let baseAssetId = base58'HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk'
55
66 let quoteAssetId = base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS'
7-
8-let amountAssetId = baseAssetId
9-
10-let priceAssetId = quoteAssetId
117
128 let dappPublicKey = base58'2TxTux7YwCDmz45WeFjTfDpBg7t9hBir8SqeD9m86yen'
139
1410 let payoutPublicKey = base58'CmtjCeZ9NqoQScT4HoWGn8vNQ8hK7kDKQfukQbjChQq1'
1511
1612 let mmBotPublicKey = base58'5dQbzkYkh2UWtcR1cDwxZVzkduK1SVEeVa1TyLmD6eVU'
1713
1814 let managerPublicKey = base58'66BGZcJJ9yAWcHKZZeiuA71wAvC5GWTmdQWArjt1g6jC'
1915
2016 let guarantorPublicKeys = nil
2117
2218 let month = (2629746 * 1000)
2319
2420 let quarter = (month * 3)
2521
2622 let timeout = (month / 10)
2723
2824 let lastBlockTime = lastBlock.timestamp
2925
3026 let monthOpenTime = ((lastBlockTime / month) * month)
3127
3228 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-
10129
10230 @Callable(i)
10331 func setBalances (total) = if ((i.callerPublicKey != managerPublicKey))
10432 then throw("Only the administrator can adjust the balances!")
10533 else if (isDefined(i.payment))
10634 then throw("Please do not attach payment when setting balances.")
10735 else if ((0 > total))
10836 then throw("Negative total balance are not allowed...")
10937 else {
11038 let baseBalance = assetBalance(this, baseAssetId)
11139 let quoteBalance = assetBalance(this, quoteAssetId)
11240 let totalBalance = match getInteger(this, "balance_total") {
11341 case x: Int =>
11442 x
11543 case _ =>
11644 0
11745 }
11846 if ((total > 0))
11947 then WriteSet([DataEntry("balance_base", baseBalance), DataEntry("balance_quote", quoteBalance), DataEntry("balance_total", total), DataEntry("last_update", lastBlockTime)])
12048 else if ((totalBalance > 0))
12149 then WriteSet([DataEntry("balance_base", baseBalance), DataEntry("balance_quote", quoteBalance), DataEntry("last_update", lastBlockTime)])
12250 else throw("Zero total balance are not allowed...")
12351 }
12452
12553
12654
12755 @Callable(i)
12856 func sendRewards () = {
12957 let lastUpdate = getIntegerValue(this, "last_update")
13058 let nextMonth = (((lastUpdate / month) + 1) * month)
13159 if ((i.callerPublicKey != managerPublicKey))
13260 then throw("Only administrator can send rewards!")
13361 else if (isDefined(i.payment))
13462 then throw("Please do not attach payment when sending rewards.")
13563 else if (if ((nextMonth > lastBlockTime))
13664 then true
13765 else (lastBlockTime >= (monthOpenTime + timeout)))
138- then throw((("Rewards must be sent after " + toDateString((monthOpenTime + month))) + "."))
66+ then throw((("Rewards must be sent after " + toString(((monthOpenTime + month) / 1000))) + "."))
13967 else {
14068 let recipient = addressFromPublicKey(payoutPublicKey)
14169 let baseBalance = assetBalance(this, baseAssetId)
14270 let quoteBalance = assetBalance(this, quoteAssetId)
14371 let oldBaseBalance = getIntegerValue(this, "balance_base")
14472 let oldQuoteBalance = getIntegerValue(this, "balance_quote")
14573 let oldTotalBalance = getIntegerValue(this, "balance_total")
14674 let mmProfit = (quoteBalance - fraction(oldQuoteBalance, oldBaseBalance, baseBalance))
14775 let netProfit = (((2 * quoteBalance) - mmProfit) - oldTotalBalance)
14876 let amount = if (((quarterOpenTime + timeout) > lastBlockTime))
14977 then (mmProfit + (if ((netProfit > 0))
15078 then netProfit
15179 else 0))
15280 else fraction(mmProfit, 8, 10)
15381 if (if ((amount > 0))
15482 then (quoteBalance >= amount)
15583 else false)
15684 then ScriptResult(WriteSet([DataEntry("balance_base", baseBalance), DataEntry("balance_quote", (quoteBalance - amount)), DataEntry("last_update", lastBlockTime)]), TransferSet([ScriptTransfer(recipient, amount, quoteAssetId)]))
15785 else if ((amount > quoteBalance))
15886 then throw("Insufficient funds on the balance of quotes...")
15987 else throw("Zero or negative rewards are not allowed...")
16088 }
16189 }
16290
16391
16492
16593 @Callable(i)
16694 func emergencyExit () = {
16795 let lastUpdate = getIntegerValue(this, "last_update")
16896 let emergencyTime = ((((lastUpdate / month) + 1) * month) + timeout)
16997 if (isDefined(i.payment))
17098 then throw("Please do not attach payment in an emergency.")
17199 else if (if ((emergencyTime > lastBlockTime))
172100 then (i.callerPublicKey != managerPublicKey)
173101 else false)
174- then throw((("Time for emergencies will be after " + toDateString(emergencyTime)) + "."))
102+ then throw((("Time for emergencies will be after " + toString((emergencyTime / 1000))) + "."))
175103 else {
176104 let recipient = addressFromPublicKey(dappPublicKey)
177105 let baseBalance = assetBalance(this, baseAssetId)
178106 let quoteBalance = assetBalance(this, quoteAssetId)
179107 let st0 = if ((baseBalance == 0))
180108 then nil
181109 else [ScriptTransfer(recipient, baseBalance, baseAssetId)]
182110 let st1 = if ((quoteBalance == 0))
183111 then st0
184112 else ScriptTransfer(recipient, quoteBalance, quoteAssetId) :: st0
185113 let scriptTransfers = st1
186114 if ((size(scriptTransfers) > 0))
187115 then ScriptResult(WriteSet([DataEntry("last_update", lastBlockTime)]), TransferSet(scriptTransfers))
188116 else throw("There is nothing on the balances!")
189117 }
190118 }
191119
192120
193121 @Verifier(tx)
194122 func verify () = {
195123 func isValid (sig,keys) = {
196124 func check (acc,pub) = if (acc)
197125 then true
198126 else sigVerify(tx.bodyBytes, sig, pub)
199127
200- let $list1134411371 = keys
201- let $size1134411371 = size($list1134411371)
202- let $acc01134411371 = false
203- if (($size1134411371 == 0))
204- then $acc01134411371
128+ let $list78337860 = keys
129+ let $size78337860 = size($list78337860)
130+ let $acc078337860 = false
131+ if (($size78337860 == 0))
132+ then $acc078337860
205133 else {
206- let $acc11134411371 = check($acc01134411371, $list1134411371[0])
207- if (($size1134411371 == 1))
208- then $acc11134411371
134+ let $acc178337860 = check($acc078337860, $list78337860[0])
135+ if (($size78337860 == 1))
136+ then $acc178337860
209137 else {
210- let $acc21134411371 = check($acc11134411371, $list1134411371[1])
211- if (($size1134411371 == 2))
212- then $acc21134411371
138+ let $acc278337860 = check($acc178337860, $list78337860[1])
139+ if (($size78337860 == 2))
140+ then $acc278337860
213141 else {
214- let $acc31134411371 = check($acc21134411371, $list1134411371[2])
215- if (($size1134411371 == 3))
216- then $acc31134411371
142+ let $acc378337860 = check($acc278337860, $list78337860[2])
143+ if (($size78337860 == 3))
144+ then $acc378337860
217145 else {
218- let $acc41134411371 = check($acc31134411371, $list1134411371[3])
219- if (($size1134411371 == 4))
220- then $acc41134411371
146+ let $acc478337860 = check($acc378337860, $list78337860[3])
147+ if (($size78337860 == 4))
148+ then $acc478337860
221149 else {
222- let $acc51134411371 = check($acc41134411371, $list1134411371[4])
223- if (($size1134411371 == 5))
224- then $acc51134411371
150+ let $acc578337860 = check($acc478337860, $list78337860[4])
151+ if (($size78337860 == 5))
152+ then $acc578337860
225153 else {
226- let $acc61134411371 = check($acc51134411371, $list1134411371[5])
154+ let $acc678337860 = check($acc578337860, $list78337860[5])
227155 throw("List size exceed 5")
228156 }
229157 }
230158 }
231159 }
232160 }
233161 }
234162 }
235163
236164 let rightManager = if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
237165 then true
238166 else sigVerify(tx.bodyBytes, tx.proofs[0], mmBotPublicKey)
239167 let rightGuarantors = ((((if (isValid(tx.proofs[1], guarantorPublicKeys))
240168 then 1
241169 else 0) + (if (isValid(tx.proofs[2], guarantorPublicKeys))
242170 then 1
243171 else 0)) + (if (isValid(tx.proofs[3], guarantorPublicKeys))
244172 then 1
245173 else 0)) >= ((size(guarantorPublicKeys) + 1) / 2))
246174 match tx {
247175 case o: Order =>
248176 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
253185 else false)
254186 then true
255187 else if (if ((o.orderType == Buy))
256- then (o.matcherFeeAssetId == priceAssetId)
188+ then (o.matcherFeeAssetId == quoteAssetId)
257189 else false)
258- then (o.assetPair.amountAsset == priceAssetId)
190+ then (o.assetPair.amountAsset == quoteAssetId)
259191 else false)
260192 then true
261193 else if ((o.orderType == Sell))
262194 then if (if (!(isDefined(o.matcherFeeAssetId)))
263195 then !(isDefined(o.assetPair.priceAsset))
264196 else false)
265197 then true
266- else if ((o.matcherFeeAssetId == priceAssetId))
267- then (o.assetPair.priceAsset == priceAssetId)
198+ else if ((o.matcherFeeAssetId == quoteAssetId))
199+ then (o.assetPair.priceAsset == quoteAssetId)
268200 else false
269201 else false
270202 else false
271203 case t: TransferTransaction =>
272204 if (if (rightManager)
273205 then ((quarterOpenTime + timeout) > lastBlockTime)
274206 else false)
275207 then (addressFromRecipient(t.recipient) == addressFromPublicKey(dappPublicKey))
276208 else false
277209 case s: SetScriptTransaction =>
278210 if (rightManager)
279211 then rightGuarantors
280212 else false
281213 case _ =>
282214 false
283215 }
284216 }
285217

github/deemru/w8io/3ef1775 
87.24 ms