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