tx · 4Pj2jT1uWv4L1WFQXYHk9cpRj5L2fWMfEELhid9nfr34

3PH3qqM1ZvErwwNxHbRbL29VvTATk6jgJZX:  -0.01000000 Waves

2020.04.27 04:46 [2035740] smart account 3PH3qqM1ZvErwwNxHbRbL29VvTATk6jgJZX > SELF 0.00000000 Waves

{ "type": 13, "id": "4Pj2jT1uWv4L1WFQXYHk9cpRj5L2fWMfEELhid9nfr34", "fee": 1000000, "feeAssetId": null, "timestamp": 1587951731329, "version": 1, "sender": "3PH3qqM1ZvErwwNxHbRbL29VvTATk6jgJZX", "senderPublicKey": "G77fMNRJBHRhJH93MKDGyFsTLMt6AqFsR5oQPu9BhX1u", "proofs": [ "5JVqpLb7Xu8WgVe9WwL99CLdbtnBkVCRxqEBF79hS1hNnCy4Q4PQQYmtbw7yjTUEGdiDKCLxtwivqi2n1YzwC7jp" ], "script": "base64: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YXN0VXBkYXRlAwkAAGcAAAACBQAAAApsYXN0VXBkYXRlBQAAAA1tb250aE9wZW5UaW1lCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAABpQcm9maXQgbXVzdCBiZSBzZW50IGFmdGVyIAkBAAAACWRyb3BSaWdodAAAAAIJAAGkAAAAAQkAAGQAAAACBQAAAA1tb250aE9wZW5UaW1lBQAAAAVtb250aAAAAAAAAAAAAwIAAAAQIFVuaXggdGltZXN0YW1wLgMJAQAAAAIhPQAAAAIIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQUAAAAQbWFuYWdlclB1YmxpY0tleQkAAAIAAAABAgAAAChPbmx5IHRoZSBhZG1pbmlzdHJhdG9yIGNhbiBzZW5kIHByb2ZpdHMhAwkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAAFpAAAAB3BheW1lbnQJAAACAAAAAQIAAAAzUGxlYXNlIGRvIG5vdCBhdHRhY2ggcGF5bWVudCB3aGVuIHNlbmRpbmcgcHJvZml0Li4uBAAAAA5vbGRCYXNlQmFsYW5jZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwIAAAAOb2xkQmFzZUJhbGFuY2UEAAAAD29sZFF1b3RlQmFsYW5jZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwIAAAAPb2xkUXVvdGVCYWxhbmNlBAAAAA9vbGRUb3RhbEJhbGFuY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMCAAAAD29sZFRvdGFsQmFsYW5jZQQAAAAPYXZnUXVvdGVCYWxhbmNlCQEAAAAPZnJhY3Rpb25DZWlsaW5nAAAAAwUAAAAPb2xkUXVvdGVCYWxhbmNlBQAAAA5vbGRCYXNlQmFsYW5jZQUAAAALYmFzZUJhbGFuY2UEAAAACnN0YWtQcm9maXQDCQAAAAAAAAIFAAAAD2F2Z1F1b3RlQmFsYW5jZQAAAAAAAAAAAAAAAAAAAAAAAAkAAGUAAAACBQAAAAxxdW90ZUJhbGFuY2UFAAAAD2F2Z1F1b3RlQmFsYW5jZQQAAAAKc3Rha0Ftb3VudAMJAABmAAAAAgAAAAAAAAAAAAUAAAAKc3Rha1Byb2ZpdAAAAAAA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AAEFAAAABGRhdGEJAQAAAAtUcmFuc2ZlclNldAAAAAEFAAAACXRyYW5zZmVycwAAAAFpAQAAAApzZXRCYWxhbmNlAAAAAAQAAAAIaXNBY3RpdmUJAQAAABFAZXh0ck5hdGl2ZSgxMDUxKQAAAAIFAAAABHRoaXMCAAAACGlzQWN0aXZlBAAAAApsYXN0VXBkYXRlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzAgAAAApsYXN0VXBkYXRlBAAAAA1kYXBwVGltZUZyYW1lCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAtob2xkQWRkcmVzcwIAAAANZGFwcFRpbWVGcmFtZQQAAAAMbWluU3RhcnRUaW1lCQAAaAAAAAIJAABkAAAAAgkAAGkAAAACBQAAAApsYXN0VXBkYXRlBQAAAA1kYXBwVGltZUZyYW1lAAAAAAAAAAABBQAAAA1kYXBwVGltZUZyYW1lAwMFAAAACGlzQWN0aXZlCQAAZgAAAAIFAAAADW1vbnRoT3BlblRpbWUFAAAACmxhc3RVcGRhdGUHCQAAAgAAAAECAAAAJUZpcnN0IHlvdSBuZWVkIHRvIHdpdGhkcmF3IHJld2FyZHMuLi4DAwUAAAAIaXNBY3RpdmUJAABmAAAAAgUAAAAMbWluU3RhcnRUaW1lBQAAAApsYXN0VXBkYXRlBwkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAiVGhlIGJhbGFuY2Ugc2hvdWxkIGJlIGZpeGVkIGFmdGVyIAkBAAAACWRyb3BSaWdodAAAAAIJAAGkAAAAAQUAAAAMbWluU3RhcnRUaW1lAAAAAAAAAAADAgAAABAgVW5peCB0aW1lc3RhbXAuAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BQAAABBtYW5hZ2VyUHVibGljS2V5CQAAAgAAAAECAAAAL09ubHkgdGhlIGFkbWluaXN0cmF0b3IgY2FuIGFkanVzdCB0aGUgYmFsYW5jZXMhAwkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAAFpAAAAB3BheW1lbnQJAAACAAAAAQIAAAA1UGxlYXNlIGRvIG5vdCBhdHRhY2ggcGF5bWVudCB3aGVuIHNldHRpbmcgYmFsYW5jZXMuLi4EAAAADm9sZEJhc2VCYWxhbmNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzAgAAAA5vbGRCYXNlQmFsYW5jZQQAAAAPb2xkUXVvdGVCYWxhbmNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzAgAAAA9vbGRRdW90ZUJhbGFuY2UEAAAAD29sZFRvdGFsQmFsYW5jZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwIAAAAPb2xkVG90YWxCYWxhbmNlBAAAAA1kYXBwUHVibGljS2V5CQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzAgAAAA1kYXBwUHVibGljS2V5BAAAAAx0b3RhbEJhbGFuY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAAC2RlcG9BZGRyZXNzCQABLAAAAAIFAAAADWRhcHBQdWJsaWNLZXkCAAAADV90b3RhbEJhbGFuY2UEAAAAB2RlcG9zaXQDCQAAAAAAAAIFAAAAD29sZFRvdGFsQmFsYW5jZQAAAAAAAAAAAAAAAAAAAAAAAAkAAGUAAAACBQAAAAx0b3RhbEJhbGFuY2UFAAAAD29sZFRvdGFsQmFsYW5jZQQAAAAKYmFzZUFtb3VudAkAAGkAAAACCQEAAAAPZnJhY3Rpb25DZWlsaW5nAAAAAwUAAAAHZGVwb3NpdAUAAAAOb2xkQmFzZUJhbGFuY2UFAAAAD29sZFF1b3RlQmFsYW5jZQAAAAAAAAAAAgQAAAALcXVvdGVBbW91bnQJAABlAAAAAgUAAAAHZGVwb3NpdAkAAGsAAAADBQAAAApiYXNlQW1vdW50BQAAAA9vbGRRdW90ZUJhbGFuY2UFAAAADm9sZEJhc2VCYWxhbmNlBAAAAANkczAJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAACGlzQWN0aXZlBgUAAAADbmlsBAAAAANkczEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAACmxhc3RVcGRhdGUFAAAADWxhc3RCbG9ja1RpbWUFAAAAA2RzMAQAAAADZHMyAwkAAAAAAAACBQAAAApiYXNlQW1vdW50AAAAAAAAAAAABQAAAANkczEJAARM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AAAJYXNzZXRQYWlyAAAAC2Ftb3VudEFzc2V0BwkAAAAAAAACCAgFAAAAAW8AAAAJYXNzZXRQYWlyAAAACnByaWNlQXNzZXQFAAAADmJpdGNvaW5Bc3NldElkBwcDAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABdNYXNzVHJhbnNmZXJUcmFuc2FjdGlvbgYJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAATVHJhbnNmZXJUcmFuc2FjdGlvbgQAAAABdAUAAAAHJG1hdGNoMAMFAAAADHJpZ2h0TWFuYWdlcgkBAAAAASEAAAABCQEAAAAMaXNGaXhlZEFzc2V0AAAAAQgFAAAAAXQAAAAHYXNzZXRJZAcDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAD0RhdGFUcmFuc2FjdGlvbgQAAAABZAUAAAAHJG1hdGNoMAMFAAAADHJpZ2h0TWFuYWdlcgUAAAAPcmlnaHRHdWFyYW50b3JzBwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAAAAAXMFAAAAByRtYXRjaDADBQAAAAxyaWdodE1hbmFnZXIFAAAAD3JpZ2h0R3VhcmFudG9ycwcH5/nGUA==", "chainId": 87, "height": 2035740, "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let baseAssetId = base58'HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk'
5+
6+let quoteAssetId = base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS'
7+
8+let bitcoinAssetId = base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS'
9+
10+let franklinAssetId = base58'9SjLgBBKXt95VKYNv8xnC2GWQBRsJLowcgCrTLGFMW8z'
11+
12+let traderPublicKey = base58'5dQbzkYkh2UWtcR1cDwxZVzkduK1SVEeVa1TyLmD6eVU'
13+
14+let managerPublicKey = base58'66BGZcJJ9yAWcHKZZeiuA71wAvC5GWTmdQWArjt1g6jC'
15+
16+let guarantorPublicKeys = nil
17+
18+let headAddress = addressFromPublicKey(managerPublicKey)
19+
20+let depoAddress = Address(base58'3PKMb3aP6n6ht6ZipuuxNJ6sBpLgM94t4xk')
21+
22+let stakAddress = Address(base58'3PLe1EGXcx2yNrNH7KvtmKW2B9uKvxm148A')
23+
24+let holdAddress = Address(base58'3PNyTtHEnQkVUhRy6YuTa2bGLHL2ccaqjBG')
25+
26+let exitAddress = Address(base58'3PBhghtLS7DDELxmv11k13S1cCGZyFvhx4k')
27+
28+let minBalance = (1000 * 1000)
29+
30+let baseBalance = assetBalance(this, baseAssetId)
31+
32+let quoteBalance = assetBalance(this, quoteAssetId)
33+
34+let month = (2629746 * 1000)
35+
36+let timeout = (month / 10)
37+
38+let lastBlockTime = lastBlock.timestamp
39+
40+let monthOpenTime = ((lastBlockTime / month) * month)
41+
42+func fractionCeiling (a,b,c) = ((fraction((2 * a), b, c) + 1) / 2)
43+
44+
45+func isValidAsset (assetId) = match assetInfo(assetId) {
46+ case a: Asset =>
47+ !(a.scripted)
48+ case _ =>
49+ false
50+}
51+
52+
53+func isFixedAsset (assetId) = if (if (if (!(isDefined(assetId)))
54+ then true
55+ else (assetId == bitcoinAssetId))
56+ then true
57+ else (assetId == baseAssetId))
58+ then true
59+ else (assetId == quoteAssetId)
60+
61+
62+func isValidProof (msg,sig,keys) = {
63+ func keyVerify (acc,key) = if (acc)
64+ then true
65+ else sigVerify(msg, sig, key)
66+
67+ let $list29282959 = keys
68+ let $size29282959 = size($list29282959)
69+ let $acc029282959 = false
70+ if (($size29282959 == 0))
71+ then $acc029282959
72+ else {
73+ let $acc129282959 = keyVerify($acc029282959, $list29282959[0])
74+ if (($size29282959 == 1))
75+ then $acc129282959
76+ else {
77+ let $acc229282959 = keyVerify($acc129282959, $list29282959[1])
78+ if (($size29282959 == 2))
79+ then $acc229282959
80+ else {
81+ let $acc329282959 = keyVerify($acc229282959, $list29282959[2])
82+ if (($size29282959 == 3))
83+ then $acc329282959
84+ else {
85+ let $acc429282959 = keyVerify($acc329282959, $list29282959[3])
86+ if (($size29282959 == 4))
87+ then $acc429282959
88+ else {
89+ let $acc529282959 = keyVerify($acc429282959, $list29282959[4])
90+ if (($size29282959 == 5))
91+ then $acc529282959
92+ else {
93+ let $acc629282959 = keyVerify($acc529282959, $list29282959[5])
94+ throw("List size exceed 5")
95+ }
96+ }
97+ }
98+ }
99+ }
100+ }
101+ }
102+
103+
104+@Callable(i)
105+func getProfit () = {
106+ let lastUpdate = getIntegerValue(this, "lastUpdate")
107+ if ((lastUpdate >= monthOpenTime))
108+ then throw((("Profit must be sent after " + dropRight(toString((monthOpenTime + month)), 3)) + " Unix timestamp."))
109+ else if ((i.callerPublicKey != managerPublicKey))
110+ then throw("Only the administrator can send profits!")
111+ else if (isDefined(i.payment))
112+ then throw("Please do not attach payment when sending profit...")
113+ else {
114+ let oldBaseBalance = getIntegerValue(this, "oldBaseBalance")
115+ let oldQuoteBalance = getIntegerValue(this, "oldQuoteBalance")
116+ let oldTotalBalance = getIntegerValue(this, "oldTotalBalance")
117+ let avgQuoteBalance = fractionCeiling(oldQuoteBalance, oldBaseBalance, baseBalance)
118+ let stakProfit = if ((avgQuoteBalance == 0))
119+ then 0
120+ else (quoteBalance - avgQuoteBalance)
121+ let stakAmount = if ((0 > stakProfit))
122+ then 0
123+ else if ((stakProfit > (quoteBalance / 2)))
124+ then (quoteBalance / 2)
125+ else stakProfit
126+ let stakFee = fraction(stakAmount, 20, 100)
127+ let netQuoteBalance = (quoteBalance - stakAmount)
128+ let holdProfit = ((netQuoteBalance + quoteBalance) - oldTotalBalance)
129+ let holdAmount = if ((0 > holdProfit))
130+ then 0
131+ else if ((holdProfit > (netQuoteBalance / 2)))
132+ then (netQuoteBalance / 2)
133+ else holdProfit
134+ let holdFee = fraction(holdAmount, 20, 100)
135+ let baseAmount = (fractionCeiling(holdAmount, baseBalance, netQuoteBalance) / 2)
136+ let quoteAmount = (holdAmount - fraction(baseAmount, netQuoteBalance, baseBalance))
137+ let ds0 = [DataEntry("isActive", false)]
138+ let ds1 = DataEntry("lastUpdate", lastBlockTime) :: ds0
139+ let ds2 = if (((baseBalance - baseAmount) == oldBaseBalance))
140+ then ds1
141+ else DataEntry("oldBaseBalance", (baseBalance - baseAmount)) :: ds1
142+ let ds3 = if (((netQuoteBalance - quoteAmount) == oldQuoteBalance))
143+ then ds2
144+ else DataEntry("oldQuoteBalance", (netQuoteBalance - quoteAmount)) :: ds2
145+ let data = ds3
146+ let ts0 = if (((stakFee + holdFee) == 0))
147+ then nil
148+ else [ScriptTransfer(headAddress, (stakFee + holdFee), quoteAssetId)]
149+ let ts1 = if ((stakAmount == 0))
150+ then ts0
151+ else ScriptTransfer(stakAddress, (stakAmount - stakFee), quoteAssetId) :: ts0
152+ let ts2 = if ((holdAmount == 0))
153+ then ts1
154+ else ScriptTransfer(holdAddress, (holdAmount - holdFee), quoteAssetId) :: ts1
155+ let transfers = ts2
156+ ScriptResult(WriteSet(data), TransferSet(transfers))
157+ }
158+ }
159+
160+
161+
162+@Callable(i)
163+func setBalance () = {
164+ let isActive = getBooleanValue(this, "isActive")
165+ let lastUpdate = getIntegerValue(this, "lastUpdate")
166+ let dappTimeFrame = getIntegerValue(holdAddress, "dappTimeFrame")
167+ let minStartTime = (((lastUpdate / dappTimeFrame) + 1) * dappTimeFrame)
168+ if (if (isActive)
169+ then (monthOpenTime > lastUpdate)
170+ else false)
171+ then throw("First you need to withdraw rewards...")
172+ else if (if (isActive)
173+ then (minStartTime > lastUpdate)
174+ else false)
175+ then throw((("The balance should be fixed after " + dropRight(toString(minStartTime), 3)) + " Unix timestamp."))
176+ else if ((i.callerPublicKey != managerPublicKey))
177+ then throw("Only the administrator can adjust the balances!")
178+ else if (isDefined(i.payment))
179+ then throw("Please do not attach payment when setting balances...")
180+ else {
181+ let oldBaseBalance = getIntegerValue(this, "oldBaseBalance")
182+ let oldQuoteBalance = getIntegerValue(this, "oldQuoteBalance")
183+ let oldTotalBalance = getIntegerValue(this, "oldTotalBalance")
184+ let dappPublicKey = getStringValue(this, "dappPublicKey")
185+ let totalBalance = getIntegerValue(depoAddress, (dappPublicKey + "_totalBalance"))
186+ let deposit = if ((oldTotalBalance == 0))
187+ then 0
188+ else (totalBalance - oldTotalBalance)
189+ let baseAmount = (fractionCeiling(deposit, oldBaseBalance, oldQuoteBalance) / 2)
190+ let quoteAmount = (deposit - fraction(baseAmount, oldQuoteBalance, oldBaseBalance))
191+ let ds0 = [DataEntry("isActive", true)]
192+ let ds1 = DataEntry("lastUpdate", lastBlockTime) :: ds0
193+ let ds2 = if ((baseAmount == 0))
194+ then ds1
195+ else DataEntry("oldBaseBalance", (oldBaseBalance + baseAmount)) :: ds1
196+ let ds3 = if ((quoteAmount == 0))
197+ then ds2
198+ else DataEntry("oldQuoteBalance", (oldQuoteBalance + quoteAmount)) :: ds2
199+ let ds4 = if ((totalBalance == oldTotalBalance))
200+ then ds3
201+ else DataEntry("oldTotalBalance", totalBalance) :: ds3
202+ let data = ds4
203+ WriteSet(data)
204+ }
205+ }
206+
207+
208+
209+@Callable(i)
210+func getDonations (id0,id1,id2,id3,id4,id5,id6,id7,id8,id9) = if ((i.callerPublicKey != managerPublicKey))
211+ then throw("Only the administrator can send donations!")
212+ else if (isDefined(i.payment))
213+ then throw("Please do not attach payment when sending donations...")
214+ else {
215+ let ts0 = if (if (!(isValidAsset(id0)))
216+ then true
217+ else isFixedAsset(id0))
218+ then nil
219+ else [ScriptTransfer(headAddress, assetBalance(this, id0), id0)]
220+ let ts1 = if (if (!(isValidAsset(id1)))
221+ then true
222+ else isFixedAsset(id1))
223+ then ts0
224+ else ScriptTransfer(headAddress, assetBalance(this, id1), id1) :: ts0
225+ let ts2 = if (if (!(isValidAsset(id2)))
226+ then true
227+ else isFixedAsset(id2))
228+ then ts1
229+ else ScriptTransfer(headAddress, assetBalance(this, id2), id2) :: ts1
230+ let ts3 = if (if (!(isValidAsset(id3)))
231+ then true
232+ else isFixedAsset(id3))
233+ then ts2
234+ else ScriptTransfer(headAddress, assetBalance(this, id3), id3) :: ts2
235+ let ts4 = if (if (!(isValidAsset(id4)))
236+ then true
237+ else isFixedAsset(id4))
238+ then ts3
239+ else ScriptTransfer(headAddress, assetBalance(this, id4), id4) :: ts3
240+ let ts5 = if (if (!(isValidAsset(id5)))
241+ then true
242+ else isFixedAsset(id5))
243+ then ts4
244+ else ScriptTransfer(headAddress, assetBalance(this, id5), id5) :: ts4
245+ let ts6 = if (if (!(isValidAsset(id6)))
246+ then true
247+ else isFixedAsset(id6))
248+ then ts5
249+ else ScriptTransfer(headAddress, assetBalance(this, id6), id6) :: ts5
250+ let ts7 = if (if (!(isValidAsset(id7)))
251+ then true
252+ else isFixedAsset(id7))
253+ then ts6
254+ else ScriptTransfer(headAddress, assetBalance(this, id7), id7) :: ts6
255+ let ts8 = if (if (!(isValidAsset(id8)))
256+ then true
257+ else isFixedAsset(id8))
258+ then ts7
259+ else ScriptTransfer(headAddress, assetBalance(this, id8), id8) :: ts7
260+ let ts9 = if (if (!(isValidAsset(id9)))
261+ then true
262+ else isFixedAsset(id9))
263+ then ts8
264+ else ScriptTransfer(headAddress, assetBalance(this, id9), id9) :: ts8
265+ let transfers = ts9
266+ if ((size(transfers) == 0))
267+ then throw("There are no valid asset identifiers!")
268+ else TransferSet(transfers)
269+ }
270+
271+
272+
273+@Callable(i)
274+func emergencyExit () = {
275+ let lastUpdate = getIntegerValue(this, "last_update")
276+ let minStartTime = ((((lastUpdate / month) + 1) * month) + timeout)
277+ let callerBalance = assetBalance(i.caller, franklinAssetId)
278+ if (if ((i.callerPublicKey != managerPublicKey))
279+ then (minStartTime > lastBlockTime)
280+ else false)
281+ then throw((("Time for emergencies will be after " + dropRight(toString(minStartTime), 3)) + " Unix timestamp."))
282+ else if (if ((i.callerPublicKey != managerPublicKey))
283+ then ((100 * minBalance) > callerBalance)
284+ else false)
285+ then throw("With only 1 Franklin on your balance, you can trigger an emergency exit!")
286+ else if (isDefined(i.payment))
287+ then throw("Please do not attach payment in an emergency exit...")
288+ else {
289+ let ds0 = [DataEntry("isActive", false)]
290+ let ds1 = DataEntry("lastUpdate", lastBlockTime) :: ds0
291+ let ds2 = DataEntry("oldTotalBalance", 0) :: ds1
292+ let data = ds2
293+ let ts0 = if ((baseBalance == 0))
294+ then nil
295+ else [ScriptTransfer(exitAddress, baseBalance, baseAssetId)]
296+ let ts1 = if ((quoteBalance == 0))
297+ then ts0
298+ else ScriptTransfer(exitAddress, quoteBalance, quoteAssetId) :: ts0
299+ let transfers = ts1
300+ if ((size(transfers) == 0))
301+ then throw("There is nothing else on both balances!")
302+ else ScriptResult(WriteSet(data), TransferSet(transfers))
303+ }
304+ }
305+
306+
307+@Verifier(tx)
308+func verify () = {
309+ let rightTrader = sigVerify(tx.bodyBytes, tx.proofs[0], traderPublicKey)
310+ let rightManager = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
311+ let rightGuarantors = ((((if (isValidProof(tx.bodyBytes, tx.proofs[1], guarantorPublicKeys))
312+ then 1
313+ else 0) + (if (isValidProof(tx.bodyBytes, tx.proofs[2], guarantorPublicKeys))
314+ then 1
315+ else 0)) + (if (isValidProof(tx.bodyBytes, tx.proofs[3], guarantorPublicKeys))
316+ then 1
317+ else 0)) >= fractionCeiling(size(guarantorPublicKeys), 1, 2))
318+ match tx {
319+ case o: Order =>
320+ if (if (rightTrader)
321+ then true
322+ else rightManager)
323+ then if (if ((o.matcherFeeAssetId == quoteAssetId))
324+ then if (if ((o.assetPair.amountAsset == baseAssetId))
325+ then (o.assetPair.priceAsset == quoteAssetId)
326+ else false)
327+ then true
328+ else if ((o.assetPair.amountAsset == quoteAssetId))
329+ then (o.assetPair.priceAsset == baseAssetId)
330+ else false
331+ else false)
332+ then true
333+ else if (if ((o.matcherFeeAssetId == quoteAssetId))
334+ then !(isDefined(o.assetPair.amountAsset))
335+ else false)
336+ then (o.assetPair.priceAsset == bitcoinAssetId)
337+ else false
338+ else false
339+ case t: MassTransferTransaction|TransferTransaction =>
340+ if (rightManager)
341+ then !(isFixedAsset(t.assetId))
342+ else false
343+ case d: DataTransaction =>
344+ if (rightManager)
345+ then rightGuarantors
346+ else false
347+ case s: SetScriptTransaction =>
348+ if (rightManager)
349+ then rightGuarantors
350+ else false
351+ case _ =>
352+ false
353+ }
354+ }
355+

github/deemru/w8io/0e76f2f 
47.91 ms