tx · 9ftHk5EzwWYwMrCtFA5HthCLpzR9bRNr2nhKS5f3GBXK

3MtELerncMfYVZvRuEeMvgvsj7jUnshXWuw:  -0.01400000 Waves

2019.11.29 20:33 [786960] smart account 3MtELerncMfYVZvRuEeMvgvsj7jUnshXWuw > SELF 0.00000000 Waves

{ "type": 13, "id": "9ftHk5EzwWYwMrCtFA5HthCLpzR9bRNr2nhKS5f3GBXK", "fee": 1400000, "feeAssetId": null, "timestamp": 1575048760595, "version": 1, "sender": "3MtELerncMfYVZvRuEeMvgvsj7jUnshXWuw", "senderPublicKey": "FXsc9LG44fGFsWEUFctaZ8pr75ZoWQuPc75fhhG6CQb7", "proofs": [ "5P4ksijeffosBrRm1i3STpiGpQqvyQAg8sFqGMmcz8WsRJTrByMK4iFMACBeEnaTiE192QqKgxHLExmALTizMMNZ" ], "script": "base64:AAIDAAAAAAAAACQIARIDCgEIEgUKAwgBCBIAEgQKAggIEgUKAwgICBIAEgMKAQEAAAAhAAAAAAthbGljZVB1YktleQEAAAAg1+xC9H1+peUPMZzTh4Zs7AbSyH3GqpAXAf/wDGL+V14AAAAACWJvYlB1YktleQEAAAAg7BKTF881G6YthX9DI62+g/VeuqDTAshtZC9mtZHEJlUAAAAADGNvb3BlclB1YktleQEAAAAggEmOX4gLqH8TKn+SL8P3tMRuo5wokNm/XexM0KAkqSIAAAAABE5PTkUCAAAABG5vbmUAAAAABlZPVEVSUwAAAAAAAAAAAwAAAAAGUVVPUlVNAAAAAAAAAAACAAAAAAZWT1RJTkcCAAAABnZvdGluZwAAAAAGUkVWRUFMAgAAAAZyZXZlYWwAAAAACEZFQVRVUkVEAgAAAAhmZWF0dXJlZAAAAAAIREVMSVNURUQCAAAACGRlbGlzdGVkAAAAAAZIVE9LRU4BAAAAIBVrIhD+FXTK+AP7foANS/3AfiINvIX55LVi8wpGH2H3AQAAAA5nZXROdW1iZXJCeUtleQAAAAEAAAADa2V5BAAAAANudW0EAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAFAAAAA251bQEAAAALZ2V0U3RyQnlLZXkAAAABAAAAA2tleQQAAAADc3RyBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhBQAAAAROT05FBQAAAANzdHIBAAAADGdldEtleUNvbW1pdAAAAAIAAAAEaXRlbQAAAAR1c2VyCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARpdGVtAgAAAAFfBQAAAAR1c2VyAgAAAAdfY29tbWl0AQAAAA5nZXRWYWx1ZUNvbW1pdAAAAAIAAAAEaXRlbQAAAAR1c2VyCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAMZ2V0S2V5Q29tbWl0AAAAAgUAAAAEaXRlbQUAAAAEdXNlcgEAAAASZ2V0S2V5Q29tbWl0c0NvdW50AAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAAB19jb21jbnQBAAAAFGdldFZhbHVlQ29tbWl0c0NvdW50AAAAAQAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAASZ2V0S2V5Q29tbWl0c0NvdW50AAAAAQUAAAAEaXRlbQEAAAAMZ2V0S2V5UmV2ZWFsAAAAAgAAAARpdGVtAAAABHVzZXIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABGl0ZW0CAAAAAV8FAAAABHVzZXICAAAAB19yZXZlYWwBAAAADmdldFZhbHVlUmV2ZWFsAAAAAgAAAARpdGVtAAAABHVzZXIJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAAAxnZXRLZXlSZXZlYWwAAAACBQAAAARpdGVtBQAAAAR1c2VyAQAAABBnZXRLZXlJdGVtU3RhdHVzAAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAAB19zdGF0dXMBAAAAEmdldFZhbHVlSXRlbVN0YXR1cwAAAAEAAAAEaXRlbQkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAEGdldEtleUl0ZW1TdGF0dXMAAAABBQAAAARpdGVtAQAAAA9nZXRLZXlWb3RlQ291bnQAAAACAAAABGl0ZW0AAAAEdm90ZQkAASwAAAACCQABLAAAAAIFAAAABGl0ZW0CAAAABV9yZXM6BQAAAAR2b3RlAQAAABFnZXRWYWx1ZVZvdGVDb3VudAAAAAIAAAAEaXRlbQAAAAR2b3RlCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAPZ2V0S2V5Vm90ZUNvdW50AAAAAgUAAAAEaXRlbQUAAAAEdm90ZQEAAAAPZ2V0S2V5SXRlbVByaWNlAAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAABl9wcmljZQEAAAARZ2V0VmFsdWVJdGVtUHJpY2UAAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAAA9nZXRLZXlJdGVtUHJpY2UAAAABBQAAAARpdGVtAQAAABVnZXRLZXlVc2VySXRlbUNvdW50ZXIAAAACAAAABHVzZXIAAAAEaXRlbQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEaXRlbQIAAAAEdXNlcgUAAAAEdXNlcgIAAAAEX2NudAEAAAAXZ2V0VmFsdWVVc2VySXRlbUNvdW50ZXIAAAACAAAABHVzZXIAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFWdldEtleVVzZXJJdGVtQ291bnRlcgAAAAIFAAAABHVzZXIFAAAABGl0ZW0BAAAACmdldEtleUl0ZW0AAAACAAAACHN1cHBsaWVyAAAABXRpdGxlCQABLAAAAAICAAAABWl0ZW1fCQACWAAAAAEJAAH3AAAAAQkAAZsAAAABCQABLAAAAAIFAAAACHN1cHBsaWVyBQAAAAV0aXRsZQEAAAAOZ2V0S2V5SXRlbURhdGEAAAABAAAABGl0ZW0JAAEsAAAAAgUAAAAEaXRlbQIAAAAFX2RhdGEBAAAAEmdldEtleUl0ZW1TdXBwbGllcgAAAAEAAAAEaXRlbQkAASwAAAACBQAAAARpdGVtAgAAAAZfb3duZXIBAAAAFGdldFZhbHVlSXRlbVN1cHBsaWVyAAAAAQAAAARpdGVtCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAASZ2V0S2V5SXRlbVN1cHBsaWVyAAAAAQUAAAAEaXRlbQEAAAAVZ2V0S2V5QmFsYW5jZVN1cHBsaWVyAAAAAQAAAAdhY2NvdW50CQABLAAAAAIFAAAAB2FjY291bnQCAAAACF9iYWxhbmNlAQAAABdnZXRWYWx1ZUJhbGFuY2VTdXBwbGllcgAAAAEAAAAHYWNjb3VudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFWdldEtleUJhbGFuY2VTdXBwbGllcgAAAAEFAAAAB2FjY291bnQAAAAHAAAAAWkBAAAACHB1cmNoYXNlAAAAAQAAAARpdGVtBAAAAANwbXQJAQAAAAdleHRyYWN0AAAAAQgFAAAAAWkAAAAHcGF5bWVudAMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAADcG10AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAAgQ2FuIHVzZSBXQVZFUyBvbmx5IGF0IHRoZSBtb21lbnQEAAAAD2N1c3RvbWVyQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAVwcmljZQkBAAAAEWdldFZhbHVlSXRlbVByaWNlAAAAAQUAAAAEaXRlbQQAAAAPc3VwcGxpZXJBZGRyZXNzCQEAAAAUZ2V0VmFsdWVJdGVtU3VwcGxpZXIAAAABBQAAAARpdGVtAwkAAGYAAAACBQAAAAVwcmljZQgFAAAAA3BtdAAAAAZhbW91bnQJAAACAAAAAQIAAAAvUHVyY2hhc2UgYW1vdW50IGNhbiBub3QgYmUgbGVzcyB0aGFuIGl0ZW0gcHJpY2UDCQAAZgAAAAIIBQAAAANwbXQAAAAGYW1vdW50BQAAAAVwcmljZQkAAAIAAAABAgAAAC9QdXJjaGFzZSBhbW91bnQgY2FuIG5vdCBiZSBtb3JlIHRoYW4gaXRlbSBwcmljZQMJAAAAAAAAAgUAAAAPc3VwcGxpZXJBZGRyZXNzBQAAAAROT05FCQAAAgAAAAECAAAAF1N1cHBsaWVyIGRvZXMgbm90IGV4aXN0CQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAVZ2V0S2V5VXNlckl0ZW1Db3VudGVyAAAAAgUAAAAPY3VzdG9tZXJBZGRyZXNzBQAAAARpdGVtCQAAZAAAAAIJAQAAABdnZXRWYWx1ZVVzZXJJdGVtQ291bnRlcgAAAAIFAAAAD2N1c3RvbWVyQWRkcmVzcwUAAAAEaXRlbQAAAAAAAAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFWdldEtleUJhbGFuY2VTdXBwbGllcgAAAAEFAAAAD3N1cHBsaWVyQWRkcmVzcwkAAGQAAAACCQEAAAAXZ2V0VmFsdWVCYWxhbmNlU3VwcGxpZXIAAAABBQAAAA9zdXBwbGllckFkZHJlc3MIBQAAAANwbXQAAAAGYW1vdW50BQAAAANuaWwAAAABaQEAAAAHYWRkSXRlbQAAAAMAAAAFdGl0bGUAAAAFcHJpY2UAAAAEZGF0YQQAAAAPc3VwcGxpZXJBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAABGl0ZW0JAQAAAApnZXRLZXlJdGVtAAAAAgUAAAAPc3VwcGxpZXJBZGRyZXNzBQAAAAV0aXRsZQMJ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", "chainId": 84, "height": 786960, "spentComplexity": 0 } View: original | compacted Prev: HJSFVVpbDq4iVTRdDDCd24pz71eEFqhUuj5UZ1MjKU52 Next: none Diff:
OldNewDifferences
2020 let FEATURED = "featured"
2121
2222 let DELISTED = "delisted"
23+
24+let HTOKEN = base58'2ScK29KyM3td6mCwjWkrh2QG9tGWTsoCL1eUcQSm65qY'
2325
2426 func getNumberByKey (key) = {
2527 let num = match getInteger(this, key) {
199201 }
200202
201203
204+
205+@Callable(i)
206+func deposit () = {
207+ let pmt = extract(i.payment)
208+ if ((pmt.assetId != HTOKEN))
209+ then throw("HTOKEN - 2ScK29KyM3td6mCwjWkrh2QG9tGWTsoCL1eUcQSm65qY only tokens at the moment.")
210+ else {
211+ let currentKey = toBase58String(i.caller.bytes)
212+ let currentAmount = match getInteger(this, currentKey) {
213+ case a: Int =>
214+ a
215+ case _ =>
216+ 0
217+ }
218+ let newAmount = (currentAmount + pmt.amount)
219+ WriteSet([DataEntry(currentKey, newAmount)])
220+ }
221+ }
222+
223+
224+
225+@Callable(i)
226+func withdrawToken (amount) = {
227+ let currentKey = toBase58String(i.caller.bytes)
228+ let currentAmount = match getInteger(this, currentKey) {
229+ case a: Int =>
230+ a
231+ case _ =>
232+ 0
233+ }
234+ let newAmount = (currentAmount + amount)
235+ if ((0 > amount))
236+ then throw("Can not withdraw negative amount")
237+ else if ((0 > newAmount))
238+ then throw("Not enough blance")
239+ else ScriptResult(WriteSet([DataEntry(currentKey, newAmount)]), TransferSet([ScriptTransfer(i.caller, amount, HTOKEN)]))
240+ }
241+
242+
202243 @Verifier(tx)
203244 func verify () = {
204245 let Alice1 = sigVerify(tx.bodyBytes, tx.proofs[0], alicePubKey)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let alicePubKey = base58'FXsc9LG44fGFsWEUFctaZ8pr75ZoWQuPc75fhhG6CQb7'
55
66 let bobPubKey = base58'GtXeMqkP3JUjRf7EDptgqdEu5wkrkG4d2sbfUi5hYQVi'
77
88 let cooperPubKey = base58'9dnEr8G5eVHGJ5LkzueoK512pE3XBYBpe2ReLVcsrawT'
99
1010 let NONE = "none"
1111
1212 let VOTERS = 3
1313
1414 let QUORUM = 2
1515
1616 let VOTING = "voting"
1717
1818 let REVEAL = "reveal"
1919
2020 let FEATURED = "featured"
2121
2222 let DELISTED = "delisted"
23+
24+let HTOKEN = base58'2ScK29KyM3td6mCwjWkrh2QG9tGWTsoCL1eUcQSm65qY'
2325
2426 func getNumberByKey (key) = {
2527 let num = match getInteger(this, key) {
2628 case a: Int =>
2729 a
2830 case _ =>
2931 0
3032 }
3133 num
3234 }
3335
3436
3537 func getStrByKey (key) = {
3638 let str = match getString(this, key) {
3739 case a: String =>
3840 a
3941 case _ =>
4042 NONE
4143 }
4244 str
4345 }
4446
4547
4648 func getKeyCommit (item,user) = (((item + "_") + user) + "_commit")
4749
4850
4951 func getValueCommit (item,user) = getStrByKey(getKeyCommit(item, user))
5052
5153
5254 func getKeyCommitsCount (item) = (item + "_comcnt")
5355
5456
5557 func getValueCommitsCount (item) = getNumberByKey(getKeyCommitsCount(item))
5658
5759
5860 func getKeyReveal (item,user) = (((item + "_") + user) + "_reveal")
5961
6062
6163 func getValueReveal (item,user) = getStrByKey(getKeyReveal(item, user))
6264
6365
6466 func getKeyItemStatus (item) = (item + "_status")
6567
6668
6769 func getValueItemStatus (item) = getStrByKey(getKeyItemStatus(item))
6870
6971
7072 func getKeyVoteCount (item,vote) = ((item + "_res:") + vote)
7173
7274
7375 func getValueVoteCount (item,vote) = getNumberByKey(getKeyVoteCount(item, vote))
7476
7577
7678 func getKeyItemPrice (item) = (item + "_price")
7779
7880
7981 func getValueItemPrice (item) = getNumberByKey(getKeyItemPrice(item))
8082
8183
8284 func getKeyUserItemCounter (user,item) = (((item + "user") + user) + "_cnt")
8385
8486
8587 func getValueUserItemCounter (user,item) = getNumberByKey(getKeyUserItemCounter(user, item))
8688
8789
8890 func getKeyItem (supplier,title) = ("item_" + toBase58String(sha256(toBytes((supplier + title)))))
8991
9092
9193 func getKeyItemData (item) = (item + "_data")
9294
9395
9496 func getKeyItemSupplier (item) = (item + "_owner")
9597
9698
9799 func getValueItemSupplier (item) = getStrByKey(getKeyItemSupplier(item))
98100
99101
100102 func getKeyBalanceSupplier (account) = (account + "_balance")
101103
102104
103105 func getValueBalanceSupplier (account) = getNumberByKey(getKeyBalanceSupplier(account))
104106
105107
106108 @Callable(i)
107109 func purchase (item) = {
108110 let pmt = extract(i.payment)
109111 if (isDefined(pmt.assetId))
110112 then throw("Can use WAVES only at the moment")
111113 else {
112114 let customerAddress = toBase58String(i.caller.bytes)
113115 let price = getValueItemPrice(item)
114116 let supplierAddress = getValueItemSupplier(item)
115117 if ((price > pmt.amount))
116118 then throw("Purchase amount can not be less than item price")
117119 else if ((pmt.amount > price))
118120 then throw("Purchase amount can not be more than item price")
119121 else if ((supplierAddress == NONE))
120122 then throw("Supplier does not exist")
121123 else WriteSet([DataEntry(getKeyUserItemCounter(customerAddress, item), (getValueUserItemCounter(customerAddress, item) + 1)), DataEntry(getKeyBalanceSupplier(supplierAddress), (getValueBalanceSupplier(supplierAddress) + pmt.amount))])
122124 }
123125 }
124126
125127
126128
127129 @Callable(i)
128130 func addItem (title,price,data) = {
129131 let supplierAddress = toBase58String(i.caller.bytes)
130132 let item = getKeyItem(supplierAddress, title)
131133 if ((0 >= price))
132134 then throw("purchase amount can not be less than item price")
133135 else if ((getValueItemSupplier(item) != NONE))
134136 then throw("An item is already")
135137 else WriteSet([DataEntry(getKeyItemSupplier(item), supplierAddress), DataEntry(getKeyItemPrice(item), price), DataEntry(getKeyItemData(item), data)])
136138 }
137139
138140
139141
140142 @Callable(i)
141143 func withdraw () = {
142144 let supplierAddress = toBase58String(i.caller.bytes)
143145 let balance = getValueBalanceSupplier(supplierAddress)
144146 if ((0 >= balance))
145147 then throw("insufficient balance")
146148 else ScriptResult(WriteSet([DataEntry(getKeyBalanceSupplier(supplierAddress), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(supplierAddress), balance, unit)]))
147149 }
148150
149151
150152
151153 @Callable(i)
152154 func voteCommit (item,hash) = {
153155 let user = toBase58String(i.caller.bytes)
154156 let commits = getValueCommitsCount(item)
155157 let status = getValueItemStatus(item)
156158 if ((commits >= VOTERS))
157159 then throw("Reached max number of voters")
158160 else if ((getValueCommit(item, user) != NONE))
159161 then throw("User has aready participated")
160162 else if ((getKeyItemSupplier(item) == NONE))
161163 then throw("Item does not exist")
162164 else if (if ((status != NONE))
163165 then (status != VOTING)
164166 else false)
165167 then throw("Voting is not possible")
166168 else WriteSet([DataEntry(getKeyCommit(item, user), hash), DataEntry(getKeyCommitsCount(item), (commits + 1)), DataEntry(getKeyItemStatus(item), if ((commits == VOTERS))
167169 then REVEAL
168170 else VOTING)])
169171 }
170172
171173
172174
173175 @Callable(i)
174176 func voteReveal (item,vote,salt) = {
175177 let user = toBase58String(i.caller.bytes)
176178 let status = getValueItemStatus(item)
177179 let newVoteCount = (getValueVoteCount(item, vote) + 1)
178180 if ((toBase58String(sha256(toBytes((vote + salt)))) != getValueCommit(item, user)))
179181 then throw("Revealed data is not valid")
180182 else if ((VOTERS > getValueCommitsCount(item)))
181183 then throw("max number of voters has not reached yet")
182184 else if ((getValueReveal(item, user) != NONE))
183185 then throw("User has already participated")
184186 else if (if ((status != VOTING))
185187 then (status != REVEAL)
186188 else false)
187189 then throw("Wrong status")
188190 else if (if ((vote != FEATURED))
189191 then (vote != DELISTED)
190192 else false)
191193 then throw("Wrong vote")
192194 else if (if ((status == FEATURED))
193195 then true
194196 else (status == DELISTED))
195197 then throw("Vote has finished")
196198 else WriteSet([DataEntry(getKeyReveal(item, user), vote), DataEntry(getKeyVoteCount(item, vote), newVoteCount), DataEntry(getKeyItemStatus(item), if ((newVoteCount >= QUORUM))
197199 then vote
198200 else REVEAL)])
199201 }
200202
201203
204+
205+@Callable(i)
206+func deposit () = {
207+ let pmt = extract(i.payment)
208+ if ((pmt.assetId != HTOKEN))
209+ then throw("HTOKEN - 2ScK29KyM3td6mCwjWkrh2QG9tGWTsoCL1eUcQSm65qY only tokens at the moment.")
210+ else {
211+ let currentKey = toBase58String(i.caller.bytes)
212+ let currentAmount = match getInteger(this, currentKey) {
213+ case a: Int =>
214+ a
215+ case _ =>
216+ 0
217+ }
218+ let newAmount = (currentAmount + pmt.amount)
219+ WriteSet([DataEntry(currentKey, newAmount)])
220+ }
221+ }
222+
223+
224+
225+@Callable(i)
226+func withdrawToken (amount) = {
227+ let currentKey = toBase58String(i.caller.bytes)
228+ let currentAmount = match getInteger(this, currentKey) {
229+ case a: Int =>
230+ a
231+ case _ =>
232+ 0
233+ }
234+ let newAmount = (currentAmount + amount)
235+ if ((0 > amount))
236+ then throw("Can not withdraw negative amount")
237+ else if ((0 > newAmount))
238+ then throw("Not enough blance")
239+ else ScriptResult(WriteSet([DataEntry(currentKey, newAmount)]), TransferSet([ScriptTransfer(i.caller, amount, HTOKEN)]))
240+ }
241+
242+
202243 @Verifier(tx)
203244 func verify () = {
204245 let Alice1 = sigVerify(tx.bodyBytes, tx.proofs[0], alicePubKey)
205246 let Alice2 = sigVerify(tx.bodyBytes, tx.proofs[1], alicePubKey)
206247 let Alice3 = sigVerify(tx.bodyBytes, tx.proofs[2], alicePubKey)
207248 let Bob1 = sigVerify(tx.bodyBytes, tx.proofs[0], bobPubKey)
208249 let Bob2 = sigVerify(tx.bodyBytes, tx.proofs[1], bobPubKey)
209250 let Bob3 = sigVerify(tx.bodyBytes, tx.proofs[2], bobPubKey)
210251 let Cooper1 = sigVerify(tx.bodyBytes, tx.proofs[0], cooperPubKey)
211252 let Cooper2 = sigVerify(tx.bodyBytes, tx.proofs[1], cooperPubKey)
212253 let Cooper3 = sigVerify(tx.bodyBytes, tx.proofs[2], cooperPubKey)
213254 let AliceAndBob = if (if (if (if (if (if (Alice1)
214255 then Bob2
215256 else false)
216257 then true
217258 else if (Alice1)
218259 then Bob3
219260 else false)
220261 then true
221262 else if (Alice2)
222263 then Bob1
223264 else false)
224265 then true
225266 else if (Alice2)
226267 then Bob3
227268 else false)
228269 then true
229270 else if (Alice3)
230271 then Bob1
231272 else false)
232273 then true
233274 else if (Alice3)
234275 then Bob2
235276 else false
236277 let AliceAndCooper = if (if (if (if (if (if (Cooper1)
237278 then Alice2
238279 else false)
239280 then true
240281 else if (Cooper1)
241282 then Alice3
242283 else false)
243284 then true
244285 else if (Cooper2)
245286 then Alice1
246287 else false)
247288 then true
248289 else if (Cooper2)
249290 then Alice3
250291 else false)
251292 then true
252293 else if (Cooper3)
253294 then Alice1
254295 else false)
255296 then true
256297 else if (Cooper3)
257298 then Alice2
258299 else false
259300 let BobAndCooper = if (if (if (if (if (if (Bob1)
260301 then Cooper2
261302 else false)
262303 then true
263304 else if (Bob1)
264305 then Cooper3
265306 else false)
266307 then true
267308 else if (Bob2)
268309 then Cooper1
269310 else false)
270311 then true
271312 else if (Bob2)
272313 then Cooper3
273314 else false)
274315 then true
275316 else if (Bob3)
276317 then Cooper1
277318 else false)
278319 then true
279320 else if (Bob3)
280321 then Cooper2
281322 else false
282323 match tx {
283324 case d: SetScriptTransaction =>
284325 true
285326 case _ =>
286327 if (if (AliceAndBob)
287328 then true
288329 else AliceAndCooper)
289330 then true
290331 else BobAndCooper
291332 }
292333 }
293334

github/deemru/w8io/026f985 
31.77 ms