tx · CKjtQyTtFrhLJoJ3yVia9f9kseVgtroDA5jLj4kbmviF

3N28KoiVw7BkkjZqzT85UZhCqsHbbdogM12:  -0.05000000 Waves

2019.08.17 23:44 [635620] smart account 3N28KoiVw7BkkjZqzT85UZhCqsHbbdogM12 > SELF 0.00000000 Waves

{ "type": 13, "id": "CKjtQyTtFrhLJoJ3yVia9f9kseVgtroDA5jLj4kbmviF", "fee": 5000000, "feeAssetId": null, "timestamp": 1566074618817, "version": 1, "sender": "3N28KoiVw7BkkjZqzT85UZhCqsHbbdogM12", "senderPublicKey": "2RLztFfjSUJ2re5chswE74UnmcPkMsiCSfBdKXKayFDv", "proofs": [ "49hWWgPD8qaRLSAxS2E7w2iS8pCRYaags6JRLWnTrfWmJkSqpfHB6JTxsML67naRYHvpzUA83wLAw711bPnmGrih" ], "script": "base64:AAIDAAAAAAAAAAAAAAAlAAAAAAdhY2NvdW50AQAAACAVGDz3S3YQB4aiI51xl2ugWA4gR6Y5O5q6RQqEQ3J4dQAAAAAMYWxsaWNlUHVia2V5AQAAACAreN/NfH/SqCPc/hPnBmh1BIC7xIlb9ZfNOuFi3xLNMAAAAAAJYm9iUHVia2V5AQAAACCUOeSPBy4PhPvyHGcVW4GV0RT93LFhHdQudmgTy+sSbAAAAAAMY29vcGVyUHVia2V5AQAAACCCIe+dk847nIV5gYyG+3h/+qC1bgAyQQ9H2YTdbJdufwAAAAAETk9ORQIAAAAEbm9uZQAAAAAGVk9URVJTAAAAAAAAAAADAAAAAAZRVU9SVU0AAAAAAAAAAAIAAAAABlZPVElORwIAAAAGdm90aW5nAAAAAAZSRVZFQUwCAAAABnJldmVhbAAAAAAIRkVBVFVSRUQCAAAACGZlYXR1cmVkAAAAAAhERUxJU1RFRAIAAAAIZGVsaXN0ZWQAAAAACHZlcmlmaWVyAgAAACMzTXM5c1ViN1czTDU1TExHeGVIV2lxZ1RmZEg5eW4ybWF5YgAAAAAIVkVSSUZJRUQCAAAACHZlcmlmaWVkAAAAAAtCTEFDS0xJU1RFRAIAAAAJYmxhY2tsaXN0AAAAABJtYXhBdWN0aW9uRHVyYXRpb24JAABoAAAAAgAAAAAAAAAFoAAAAAAAAAAAHgEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABAAAAA2tleQQAAAADbnVtBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABQAAAANudW0BAAAAC2dldFN0ckJ5S2V5AAAAAQAAAANrZXkEAAAAA3N0cgQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQUAAAAETk9ORQUAAAADc3RyAQAAAA9nZXRLZXlJdGVtUHJpY2UAAAABAAAABGl0ZW0JAAEsAAAAAgUAAAAEaXRlbQIAAAAGX3ByaWNlAQAAABFnZXRWYWx1ZUl0ZW1QcmljZQAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAD2dldEtleUl0ZW1QcmljZQAAAAEFAAAABGl0ZW0BAAAAFWdldEtleVVzZXJJdGVtQ291bnRlcgAAAAIAAAAEdXNlcgAAAARpdGVtCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARpdGVtAgAAAAFfBQAAAAR1c2VyAgAAAARfY250AQAAABdnZXRWYWx1ZVVzZXJJdGVtQ291bnRlcgAAAAIAAAAEdXNlcgAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAVZ2V0S2V5VXNlckl0ZW1Db3VudGVyAAAAAgUAAAAEdXNlcgUAAAAEaXRlbQEAAAAKZ2V0S2V5SXRlbQAAAAIAAAAIc3VwcGxpZXIAAAAFdGl0bGUJAAEsAAAAAgIAAAAFaXRlbV8JAAJYAAAAAQkAAfcAAAABCQABmwAAAAEJAAEsAAAAAgUAAAAIc3VwcGxpZXIFAAAABXRpdGxlAQAAAA5nZXRLZXlJdGVtRGF0YQAAAAEAAAAEaXRlbQkAASwAAAACBQAAAARpdGVtAgAAAAVfZGF0YQEAAAASZ2V0S2V5SXRlbVN1cHBsaWVyAAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAABl9vd25lcgEAAAAUZ2V0VmFsdWVJdGVtU3VwcGxpZXIAAAABAAAABGl0ZW0JAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABJnZXRLZXlJdGVtU3VwcGxpZXIAAAABBQAAAARpdGVtAQAAABVnZXRLZXlCYWxhbmNlU3VwcGxpZXIAAAABAAAAB2FjY291bnQJAAEsAAAAAgUAAAAHYWNjb3VudAIAAAAIX2JhbGFuY2UBAAAAF2dldFZhbHVlQmFsYW5jZVN1cHBsaWVyAAAAAQAAAAdhY2NvdW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAVZ2V0S2V5QmFsYW5jZVN1cHBsaWVyAAAAAQUAAAAHYWNjb3VudAEAAAAMZ2V0S2V5Q29tbWl0AAAAAgAAAARpdGVtAAAABHVzZXIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABGl0ZW0CAAAAAV8FAAAABHVzZXICAAAAB19jb21taXQBAAAADmdldFZhbHVlQ29tbWl0AAAAAgAAAARpdGVtAAAABHVzZXIJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAAAxnZXRLZXlDb21taXQAAAACBQAAAARpdGVtBQAAAAR1c2VyAQAAABJnZXRLZXlDb21taXRzQ291bnQAAAABAAAABGl0ZW0JAAEsAAAAAgUAAAAEaXRlbQIAAAAHX2NvbWNudAEAAAAUZ2V0VmFsdWVDb21taXRzQ291bnQAAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABJnZXRLZXlDb21taXRzQ291bnQAAAABBQAAAARpdGVtAQAAAAxnZXRLZXlSZXZlYWwAAAACAAAABGl0ZW0AAAAEdXNlcgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEaXRlbQIAAAABXwUAAAAEdXNlcgIAAAAHX3JldmVhbAEAAAAOZ2V0VmFsdWVSZXZlYWwAAAACAAAABGl0ZW0AAAAEdXNlcgkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAADGdldEtleVJldmVhbAAAAAIFAAAABGl0ZW0FAAAABHVzZXIBAAAAEGdldEtleUl0ZW1TdGF0dXMAAAABAAAABGl0ZW0JAAEsAAAAAgUAAAAEaXRlbQIAAAAHX3N0YXR1cwEAAAASZ2V0VmFsdWVJdGVtU3RhdHVzAAAAAQAAAARpdGVtCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAQZ2V0S2V5SXRlbVN0YXR1cwAAAAEFAAAABGl0ZW0BAAAAD2dldEtleVZvdGVDb3VudAAAAAIAAAAEaXRlbQAAAAV2b3V0ZQkAASwAAAACCQABLAAAAAIFAAAABGl0ZW0CAAAABV9yZXM6BQAAAAV2b3V0ZQEAAAASZ2V0VmFsdWVWb3V0ZUNvdW50AAAAAgAAAARpdGVtAAAABXZvdXRlCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAPZ2V0S2V5Vm90ZUNvdW50AAAAAgUAAAAEaXRlbQUAAAAFdm91dGUAAAAJAAAAAWkBAAAADHN0YXJ0QXVjdGlvbgAAAAQAAAAIZHVyYXRpb24AAAAKc3RhcnRQcmljZQAAAAlhdWN0aW9uSWQAAAAMcHJpY2VB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c3VwcGxpZXJBZGRyZXNzBQAAAAROT05FCQAAAgAAAAECAAAAFXN1cHBsaWVyIGlzIG5vdCBleGlzdAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFWdldEtleVVzZXJJdGVtQ291bnRlcgAAAAIFAAAAC3VzZXJBZGRyZXNzBQAAAARpdGVtCQAAZAAAAAIJAQAAABdnZXRWYWx1ZVVzZXJJdGVtQ291bnRlcgAAAAIFAAAAC3VzZXJBZGRyZXNzBQAAAARpdGVtAAAAAAAAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAVZ2V0S2V5QmFsYW5jZVN1cHBsaWVyAAAAAQUAAAAPc3VwcGxpZXJBZGRyZXNzCQAAZAAAAAIJAQAAABdnZXRWYWx1ZUJhbGFuY2VTdXBwbGllcgAAAAEFAAAAD3N1cHBsaWVyQWRkcmVzcwgFAAAAA3BtdAAAAAZhbW91bnQFAAAAA25pbAAAAAFpAQAAAAdhZGRJdGVtAAAAAwAAAAV0aXRsZQAAAAVwcmljZQAAAARkYXRhBAAAAA9zdXBwbGllckFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAEaXRlbQkBAAAACmdldEtleUl0ZW0AAAACBQAAAA9zdXBwbGllckFkZHJlc3MFAAAABXRpdGxlAwkAAGcAAAACAAAAAAAAAAAABQAAAAVwcmljZQkAAAIAAAABAgAAAC5wdXJjaGFzZSBhbW91bnQgY2Fubm90IGJlIGxlc3MgdGhhbiBpdGVtIHByaWNlAwkBAAAAAiE9AAAAAgkBAAAAFGdldFZhbHVlSXRlbVN1cHBsaWVyAAAAAQUAAAAEaXRlbQUAAAAETk9ORQkAAAIAAAABAgAAABlBbiBpdGVtIGlzIGFsbHJlYWR5IGV4aXN0AwkAAAAAAAACBQAAAA9zdXBwbGllckFkZHJlc3MFAAAAC0JMQUNLTElTVEVECQAAAgAAAAECAAAAJXN1cHBsaWVyJ3MgYWNjb3VudCBoYXMgYmVlbiBibGFja2xpc3QJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABJnZXRLZXlJ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", "chainId": 84, "height": 635620, "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 account = base58'2RLztFfjSUJ2re5chswE74UnmcPkMsiCSfBdKXKayFDv'
5+
6+let allicePubkey = base58'3vhS6tWdhTMgiUjYWdqyzTW1ythueupqQ637qnpyDRyZ'
7+
8+let bobPubkey = base58'AycYKRsxXEWqnc2mGYoxUWjj9mBDhAXMeQ2Ghqb7tXab'
9+
10+let cooperPubkey = base58'9kz1ogj2BmFYqjEKw7aVXJ7ckEEB27jfcN3Grzo8fxSz'
11+
12+let NONE = "none"
13+
14+let VOTERS = 3
15+
16+let QUORUM = 2
17+
18+let VOTING = "voting"
19+
20+let REVEAL = "reveal"
21+
22+let FEATURED = "featured"
23+
24+let DELISTED = "delisted"
25+
26+let verifier = "3Ms9sUb7W3L55LLGxeHWiqgTfdH9yn2mayb"
27+
28+let VERIFIED = "verified"
29+
30+let BLACKLISTED = "blacklist"
31+
32+let maxAuctionDuration = (1440 * 30)
33+
34+func getNumberByKey (key) = {
35+ let num = match getInteger(this, key) {
36+ case a: Int =>
37+ a
38+ case _ =>
39+ 0
40+ }
41+ num
42+ }
43+
44+
45+func getStrByKey (key) = {
46+ let str = match getString(this, key) {
47+ case a: String =>
48+ a
49+ case _ =>
50+ NONE
51+ }
52+ str
53+ }
54+
55+
56+func getKeyItemPrice (item) = (item + "_price")
57+
58+
59+func getValueItemPrice (item) = getNumberByKey(getKeyItemPrice(item))
60+
61+
62+func getKeyUserItemCounter (user,item) = (((item + "_") + user) + "_cnt")
63+
64+
65+func getValueUserItemCounter (user,item) = getNumberByKey(getKeyUserItemCounter(user, item))
66+
67+
68+func getKeyItem (supplier,title) = ("item_" + toBase58String(sha256(toBytes((supplier + title)))))
69+
70+
71+func getKeyItemData (item) = (item + "_data")
72+
73+
74+func getKeyItemSupplier (item) = (item + "_owner")
75+
76+
77+func getValueItemSupplier (item) = getStrByKey(getKeyItemSupplier(item))
78+
79+
80+func getKeyBalanceSupplier (account) = (account + "_balance")
81+
82+
83+func getValueBalanceSupplier (account) = getNumberByKey(getKeyBalanceSupplier(account))
84+
85+
86+func getKeyCommit (item,user) = (((item + "_") + user) + "_commit")
87+
88+
89+func getValueCommit (item,user) = getStrByKey(getKeyCommit(item, user))
90+
91+
92+func getKeyCommitsCount (item) = (item + "_comcnt")
93+
94+
95+func getValueCommitsCount (item) = getNumberByKey(getKeyCommitsCount(item))
96+
97+
98+func getKeyReveal (item,user) = (((item + "_") + user) + "_reveal")
99+
100+
101+func getValueReveal (item,user) = getStrByKey(getKeyReveal(item, user))
102+
103+
104+func getKeyItemStatus (item) = (item + "_status")
105+
106+
107+func getValueItemStatus (item) = getStrByKey(getKeyItemStatus(item))
108+
109+
110+func getKeyVoteCount (item,voute) = ((item + "_res:") + voute)
111+
112+
113+func getValueVouteCount (item,voute) = getNumberByKey(getKeyVoteCount(item, voute))
114+
115+
116+@Callable(i)
117+func startAuction (duration,startPrice,auctionId,priceAssetId) = {
118+ let endHeight = (lastBlock.height + duration)
119+ let pmt = extract(i.payment)
120+ WriteSet([DataEntry(auctionId, endHeight), DataEntry((auctionId + "_organizer"), toBase58String(i.caller.bytes)), DataEntry((auctionId + "_lot_assetId"), if (isDefined(pmt.assetId))
121+ then toBase58String(value(pmt.assetId))
122+ else "WAVES"), DataEntry((auctionId + "_lot_amount"), pmt.amount), DataEntry((auctionId + "_startPrice"), startPrice), DataEntry((auctionId + "_priceAssetId"), priceAssetId)])
123+ }
124+
125+
126+
127+@Callable(i)
128+func bid (auctionId,bid,price,endHeight) = {
129+ let pmt = extract(i.payment)
130+ let pmtAssetIdStr = if (isDefined(pmt.assetId))
131+ then toBase58String(value(pmt.assetId))
132+ else "WAVES"
133+ let callerAddressStr = toBase58String(i.caller.bytes)
134+ let priceAssetId = getStringValue(this, (auctionId + "_priceAssetId"))
135+ let winner = getString(this, (auctionId + "_winner"))
136+ let winAmount = getInteger(this, (auctionId + "_winAmount"))
137+ let bidFromTheSameUser = if (isDefined(winner))
138+ then (value(winner) == callerAddressStr)
139+ else false
140+ WriteSet([DataEntry((auctionId + "_participant"), toBase58String(i.caller.bytes)), DataEntry((auctionId + "_lot_amount"), price), DataEntry((auctionId + "_count"), bid), DataEntry((auctionId + "_endHeight"), endHeight)])
141+ }
142+
143+
144+
145+@Callable(i)
146+func endAuction (auctionId,winner,endHeight,lotAmount,bid) = ScriptResult(WriteSet([DataEntry((auctionId + "_winner"), winner), DataEntry(auctionId, endHeight), DataEntry((auctionId + "_lot_amount"), lotAmount), DataEntry((auctionId + "_count"), bid)]), TransferSet([ScriptTransfer(Address(fromBase58String(winner)), 1, fromBase58String(auctionId))]))
147+
148+
149+
150+@Callable(i)
151+func purchase (item) = {
152+ let pmt = extract(i.payment)
153+ if (isDefined(pmt.assetId))
154+ then throw("can use Waves only at the moment")
155+ else {
156+ let userAddress = toBase58String(i.caller.bytes)
157+ let price = getValueItemPrice(item)
158+ let supplierAddress = getValueItemSupplier(item)
159+ if ((price > pmt.amount))
160+ then throw("purchase amount cannot be less than item price")
161+ else if ((pmt.amount > price))
162+ then throw("purchase amount cannot be higher than item price")
163+ else if ((supplierAddress == NONE))
164+ then throw("supplier is not exist")
165+ else WriteSet([DataEntry(getKeyUserItemCounter(userAddress, item), (getValueUserItemCounter(userAddress, item) + 1)), DataEntry(getKeyBalanceSupplier(supplierAddress), (getValueBalanceSupplier(supplierAddress) + pmt.amount))])
166+ }
167+ }
168+
169+
170+
171+@Callable(i)
172+func addItem (title,price,data) = {
173+ let supplierAddress = toBase58String(i.caller.bytes)
174+ let item = getKeyItem(supplierAddress, title)
175+ if ((0 >= price))
176+ then throw("purchase amount cannot be less than item price")
177+ else if ((getValueItemSupplier(item) != NONE))
178+ then throw("An item is allready exist")
179+ else if ((supplierAddress == BLACKLISTED))
180+ then throw("supplier's account has been blacklist")
181+ else WriteSet([DataEntry(getKeyItemSupplier(item), supplierAddress), DataEntry(getKeyItemPrice(item), price), DataEntry(getKeyItemData(item), data)])
182+ }
183+
184+
185+
186+@Callable(i)
187+func deposit () = {
188+ let pmt = extract(i.payment)
189+ let supplierAddress = toBase58String(i.caller.bytes)
190+ let balance = getValueBalanceSupplier(supplierAddress)
191+ let newBalance = (balance + pmt.amount)
192+ if (isDefined(pmt.assetId))
193+ then throw("can hodl waves only at the moment")
194+ else if ((0 > pmt.amount))
195+ then throw("Can not deposit negative amount")
196+ else WriteSet([DataEntry(getKeyBalanceSupplier(supplierAddress), newBalance)])
197+ }
198+
199+
200+
201+@Callable(i)
202+func withdraw (amount) = {
203+ let supplierAddress = toBase58String(i.caller.bytes)
204+ let balance = getValueBalanceSupplier(supplierAddress)
205+ let newBalance = (balance - amount)
206+ if ((0 > amount))
207+ then throw("Can not withdraw negative amount")
208+ else if ((0 > newBalance))
209+ then throw("not enough balance")
210+ else if ((0 >= balance))
211+ then throw("insufficient balance")
212+ else ScriptResult(WriteSet([DataEntry(getKeyBalanceSupplier(supplierAddress), newBalance)]), TransferSet([ScriptTransfer(addressFromStringValue(supplierAddress), amount, unit)]))
213+ }
214+
215+
216+
217+@Callable(i)
218+func voteCommit (item,hash) = {
219+ let user = toBase58String(i.caller.bytes)
220+ let commits = getValueCommitsCount(item)
221+ let status = getValueItemStatus(item)
222+ if ((commits >= VOTERS))
223+ then throw("reached max num of vouters")
224+ else if ((getValueCommit(item, user) != NONE))
225+ then throw("user has allready participated")
226+ else if ((getKeyItemSupplier(item) == NONE))
227+ then throw("item dose not exist")
228+ else if (if ((status != NONE))
229+ then (status != VOTING)
230+ else false)
231+ then throw("vouting is not posible")
232+ else WriteSet([DataEntry(getKeyCommit(item, user), hash), DataEntry(getKeyCommitsCount(item), (commits + 1)), DataEntry(getKeyItemStatus(item), if ((commits == VOTERS))
233+ then REVEAL
234+ else VOTING)])
235+ }
236+
237+
238+
239+@Callable(i)
240+func voteReveal (item,vote,salt) = {
241+ let user = toBase58String(i.caller.bytes)
242+ let status = getValueItemStatus(item)
243+ let newVoteCount = getValueVouteCount(item, vote)
244+ if ((toBase58String(sha256(toBytes((vote + salt)))) != getValueCommit(item, user)))
245+ then throw("reveal data is not valid")
246+ else if ((VOTERS > getValueCommitsCount(item)))
247+ then throw("max num of hasn't reached yet")
248+ else if ((getValueReveal(item, user) != NONE))
249+ then throw("user has already participated")
250+ else if (if ((status != VOTING))
251+ then (status != REVEAL)
252+ else false)
253+ then throw("wrong status")
254+ else if (if ((vote != FEATURED))
255+ then (vote != DELISTED)
256+ else false)
257+ then throw("wrong vote")
258+ else if (if ((status == FEATURED))
259+ then true
260+ else (status == DELISTED))
261+ then throw("vote has finished")
262+ else WriteSet([DataEntry(getKeyReveal(item, user), vote), DataEntry(getKeyVoteCount(item, vote), newVoteCount), DataEntry(getKeyItemStatus(item), if ((newVoteCount >= QUORUM))
263+ then vote
264+ else REVEAL)])
265+ }
266+
267+
268+@Verifier(tx)
269+func verify () = {
270+ let alice1 = sigVerify(tx.bodyBytes, tx.proofs[0], allicePubkey)
271+ let alice2 = sigVerify(tx.bodyBytes, tx.proofs[1], allicePubkey)
272+ let alice3 = sigVerify(tx.bodyBytes, tx.proofs[2], allicePubkey)
273+ let bob1 = sigVerify(tx.bodyBytes, tx.proofs[0], bobPubkey)
274+ let bob2 = sigVerify(tx.bodyBytes, tx.proofs[1], bobPubkey)
275+ let bob3 = sigVerify(tx.bodyBytes, tx.proofs[2], bobPubkey)
276+ let cooper1 = sigVerify(tx.bodyBytes, tx.proofs[0], cooperPubkey)
277+ let copper2 = sigVerify(tx.bodyBytes, tx.proofs[1], cooperPubkey)
278+ let copper3 = sigVerify(tx.bodyBytes, tx.proofs[2], cooperPubkey)
279+ let alliceAndBob = if (if (if (if (if (if (alice1)
280+ then bob2
281+ else false)
282+ then true
283+ else if (alice1)
284+ then bob3
285+ else false)
286+ then true
287+ else if (alice2)
288+ then bob1
289+ else false)
290+ then true
291+ else if (alice2)
292+ then bob3
293+ else false)
294+ then true
295+ else if (alice3)
296+ then bob1
297+ else false)
298+ then true
299+ else if (alice3)
300+ then bob2
301+ else false
302+ let alliceAndCooper = if (if (if (if (if (if (alice1)
303+ then copper2
304+ else false)
305+ then true
306+ else if (alice1)
307+ then copper3
308+ else false)
309+ then true
310+ else if (alice2)
311+ then cooper1
312+ else false)
313+ then true
314+ else if (alice2)
315+ then copper3
316+ else false)
317+ then true
318+ else if (alice3)
319+ then cooper1
320+ else false)
321+ then true
322+ else if (alice3)
323+ then copper2
324+ else false
325+ let bobeAndCooper = if (if (if (if (if (if (cooper1)
326+ then bob2
327+ else false)
328+ then true
329+ else if (cooper1)
330+ then bob3
331+ else false)
332+ then true
333+ else if (copper2)
334+ then bob1
335+ else false)
336+ then true
337+ else if (copper2)
338+ then bob3
339+ else false)
340+ then true
341+ else if (copper3)
342+ then bob1
343+ else false)
344+ then true
345+ else if (copper3)
346+ then bob2
347+ else false
348+ match tx {
349+ case d: SetScriptTransaction =>
350+ sigVerify(tx.bodyBytes, tx.proofs[0], account)
351+ case d: DataTransaction =>
352+ true
353+ case _ =>
354+ if (if (alliceAndBob)
355+ then true
356+ else alliceAndCooper)
357+ then true
358+ else bobeAndCooper
359+ }
360+ }
361+

github/deemru/w8io/169f3d6 
26.62 ms