tx · C6LoWN2LGsPMNYmD3EZK9bb7CBHGGjfYHB3B5VhJkmj3

3MrFUxcMycRcQDahrA16JhvuEKnbmMF3QZP:  -0.01400000 Waves

2021.11.18 19:00 [1796686] smart account 3MrFUxcMycRcQDahrA16JhvuEKnbmMF3QZP > SELF 0.00000000 Waves

{ "type": 13, "id": "C6LoWN2LGsPMNYmD3EZK9bb7CBHGGjfYHB3B5VhJkmj3", "fee": 1400000, "feeAssetId": null, "timestamp": 1637251214418, "version": 2, "chainId": 84, "sender": "3MrFUxcMycRcQDahrA16JhvuEKnbmMF3QZP", "senderPublicKey": "HtiJZF4j7Jo8jR12wxtKDkNhS3qCe3qsk8QxnnjVvXyq", "proofs": [ "2vb1ckZzryhAcpfE8xK44VwM5qkwzcpay2WzR6o6dHzzqgFoEjQVEP6w7E7HvHqLFAq7TzYMzuuyZ5hP2H6uRs9A" ], "script": "base64:AAIDAAAAAAAAAB0IARIFCgMIAQgSAwoBCBIAEgQKAggIEgUKAwgICAAAACEAAAAADm93bmVyUHVibGljS2V5AQAAACD6+lAsvaY9/ICsFhS1sYMY13YGhvh1jT1AiPapnK+uIAAAAAALcHViS2V5QWxpY2UBAAAAIPr6UCy9pj38gKwWFLWxgxjXdgaG+HWNPUCI9qmcr64gAAAAAAlwdWJLZXlCb2IBAAAAIJSwJHqny7GXkLqb/9sX0sw4nnCkaYeDrScKSJwbx9dLAAAAAAxwdWJLZXlDb29wZXIBAAAAIMviW1daO0ECCbLD7je58oUri4AFkKl3dlICXnEszUFIAAAAAAROT05FAgAAAARub25lAAAAAAZWT1RFUlMAAAAAAAAAAAMAAAAABlFVT1JVTQAAAAAAAAAAAgAAAAAGVk9USU5HAgAAAAZ2b3RpbmcAAAAABlJFVkVBTAIAAAAGcmV2ZWFsAAAAAAhGRUFUVVJFRAIAAAAIZmVhdHVyZWQAAAAACERFTElTVEVEAgAAAAhkZWxpc3RlZAEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABAAAAA2tleQQAAAADbnVtBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAF0BQAAAAckbWF0Y2gwBQAAAAF0AAAAAAAAAAAABQAAAANudW0BAAAAC2dldFN0ckJ5S2V5AAAAAQAAAANrZXkEAAAAA3N0cgQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABdAUAAAAHJG1hdGNoMAUAAAABdAUAAAAETk9ORQUAAAADc3RyAQAAAA9nZXRLZXlJdGVtUHJpY2UAAAABAAAABGl0ZW0JAAEsAAAAAgUAAAAEaXRlbQIAAAAGX3ByaWNlAQAAABFnZXRWYWx1ZUl0ZW1QcmljZQAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAD2dldEtleUl0ZW1QcmljZQAAAAEFAAAABGl0ZW0BAAAAFWdldEtleVVzZXJJdGVtQ291bnRlcgAAAAIAAAAEdXNlcgAAAARpdGVtCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARpdGVtAgAAAAFfBQAAAAR1c2VyAgAAAARfY250AQAAABdnZXRWYWx1ZVVzZXJJdGVtQ291bnRlcgAAAAIAAAAEdXNlcgAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAVZ2V0S2V5VXNlckl0ZW1Db3VudGVyAAAAAgUAAAAEdXNlcgUAAAAEaXRlbQEAAAAKZ2V0S2V5SXRlbQAAAAIAAAAIc3VwcGxpZXIAAAAFdGl0bGUJAAEsAAAAAgIAAAAFaXRlbV8JAAJYAAAAAQkAAfcAAAABCQABmwAAAAEJAAEsAAAAAgUAAAAIc3VwcGxpZXIFAAAABXRpdGxlAQAAAA5nZXRLZXlJdGVtRGF0YQAAAAEAAAAEaXRlbQkAASwAAAACBQAAAARpdGVtAgAAAAVfZGF0YQEAAAASZ2V0S2V5SXRlbVN1cHBsaWVyAAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAABl9vd25lcgEAAAAUZ2V0VmFsdWVJdGVtU3VwcGxpZXIAAAABAAAABGl0ZW0JAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABJnZXRLZXlJdGVtU3VwcGxpZXIAAAABBQAAAARpdGVtAQAAABVnZXRLZXlCYWxhbmNlU3VwcGxpZXIAAAABAAAAB2FjY291bnQJAAEsAAAAAgUAAAAHYWNjb3VudAIAAAAIX2JhbGFuY2UBAAAAF2dldFZhbHVlQmFsYW5jZVN1cHBsaWVyAAAAAQAAAAdhY2NvdW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAVZ2V0S2V5QmFsYW5jZVN1cHBsaWVyAAAAAQUAAAAHYWNjb3VudAEAAAAMZ2V0S2V5Q29tbWl0AAAAAgAAAARpdGVtAAAABHVzZXIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABGl0ZW0CAAAAAV8FAAAABHVzZXICAAAAB19jb21taXQBAAAADmdldFZhbHVlQ29tbWl0AAAAAgAAAARpdGVtAAAABHVzZXIJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAAAxnZXRLZXlDb21taXQAAAACBQAAAARpdGVtBQAAAAR1c2VyAQAAABJnZXRLZXlDb21taXRzQ291bnQAAAABAAAABGl0ZW0JAAEsAAAAAgUAAAAEaXRlbQIAAAAHX2NvbWNudAEAAAAUZ2V0VmFsdWVDb21taXRzQ291bnQAAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABJnZXRLZXlDb21taXRzQ291bnQAAAABBQAAAARpdGVtAQAAAAxnZXRLZXlSZXZlYWwAAAACAAAABGl0ZW0AAAAEdXNlcgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEaXRlbQIAAAABXwUAAAAEdXNlcgIAAAAHX3JldmVhbAEAAAAOZ2V0VmFsdWVSZXZlYWwAAAACAAAABGl0ZW0AAAAEdXNlcgkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAADGdldEtleVJldmVhbAAAAAIFAAAABGl0ZW0FAAAABHVzZXIBAAAAEGdldEtleUl0ZW1TdGF0dXMAAAABAAAABGl0ZW0JAAEsAAAAAgUAAAAEaXRlbQIAAAAHX3N0YXR1cwEAAAASZ2V0VmFsdWVJdGVtU3RhdHVzAAAAAQAAAARpdGVtCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAQZ2V0S2V5SXRlbVN0YXR1cwAAAAEFAAAABGl0ZW0BAAAAD2dldEtleVZvdGVDb3VudAAAAAIAAAAEaXRlbQAAAAR2b3RlCQABLAAAAAIFAAAABGl0ZW0CAAAAB19jb21jbnQBAAAAEWdldFZhbHVlVm90ZUNvdW50AAAAAgAAAARpdGVtAAAABHZvdGUJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAAA9nZXRLZXlWb3RlQ291bnQAAAACBQAAAARpdGVtBQAAAAR2b3RlAAAABQAAAAFpAQAAAAdhZGRJdGVtAAAAAwAAAAV0aXRsZQAAAAVwcmljZQAAAARkYXRhBAAAAA9zdXBwbGllckFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAEaXRlbQkBAAAACmdldEtleUl0ZW0AAAACBQAAAA9zdXBwbGllckFkZHJlc3MFAAAABXRpdGxlAwkAAGcAAAACAAAAAAAAAAAABQAAAAVwcmljZQkAAAIAAAABAgAAAC5wdXJjaGFzZSBhbW91bnQgY2Fubm90IGJlIGxlc3MgdGhhbiBpdGVtIHByaWNlAwkBAAAAAiE9AAAAAgkBAAAAFGdldFZhbHVlSXRlbVN1cHBsaWVyAAAAAQUAAAAEaXRlbQUAAAAETk9ORQkAAAIAAAABAgAAABhhbiBpdGVtIGlzIGFscmVhZHkgZXhpc3QJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABJnZXRLZXlJdGVtU3VwcGxpZXIAAAABBQAAAARpdGVtBQAAAA9zdXBwbGllckFkZHJlc3MJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAAA9nZXRLZXlJdGVtUHJpY2UAAAABBQAAAARpdGVtBQAAAAVwcmljZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAADmdldEtleUl0ZW1EYXRhAAAAAQUAAAAEaXRlbQUAAAAEZGF0YQUAAAADbmlsAAAAAWkBAAAACHB1cmNoYXNlAAAAAQAAAAdpdGVtS2V5BAAAAANwbXQJAQAAAAdleHRyYWN0AAAAAQgFAAAAAWkAAAAHcGF5bWVudAMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAADcG10AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAAgY2FuIHVzZSBXQVZFUyBvbmx5IGF0IHRoZSBtb21lbnQDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABBQAAAAdpdGVtS2V5CQAAAgAAAAECAAAAFFlvdSBtdXN0IHNlbGVjdCBJdGVtBAAAAA9jdXN0b21lckFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAFcHJpY2UJAQAAABFnZXRWYWx1ZUl0ZW1QcmljZQAAAAEFAAAAB2l0ZW1LZXkEAAAAD3N1cHBsaWVyQWRkcmVzcwkBAAAAFGdldFZhbHVlSXRlbVN1cHBsaWVyAAAAAQUAAAAHaXRlbUtleQMJAABmAAAAAgUAAAAFcHJpY2UIBQAAAANwbXQAAAAGYW1vdW50CQAAAgAAAAECAAAALXB1cmNoYXNlIGFtb3VuIGNhbm5vdCBiZSBsZXNzIHRoYW4gaXRlbSBwcmljZQMJAABmAAAAAggFAAAAA3BtdAAAAAZhbW91bnQFAAAABXByaWNlCQAAAgAAAAECAAAAL3B1cmNoYXNlIGFtb3VuIGNhbm5vdCBiZSBoaWdoZXIgdGhhbiBpdGVtIHByaWNlAwkAAAAAAAACBQAAAA9zdXBwbGllckFkZHJlc3MFAAAABE5PTkUJAAACAAAAAQIAAAAXc3VwcGxpZXIgZG9lcyBub3QgZXhpc3QJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABVnZXRLZXlVc2VySXRlbUNvdW50ZXIAAAACBQAAAA9jdXN0b21lckFkZHJlc3MFAAAAB2l0ZW1LZXkJAABkAAAAAgkBAAAAF2dldFZhbHVlVXNlckl0ZW1Db3VudGVyAAAAAgUAAAAPY3VzdG9tZXJBZGRyZXNzBQAAAAdpdGVtS2V5AAAAAAAAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAVZ2V0S2V5QmFsYW5jZVN1cHBsaWVyAAAAAQUAAAAPc3VwcGxpZXJBZGRyZXNzCQAAZAAAAAIJAQAAABdnZXRWYWx1ZUJhbGFuY2VTdXBwbGllcgAAAAEFAAAAD3N1cHBsaWVyQWRkcmVzcwgFAAAAA3BtdAAAAAZhbW91bnQFAAAAA25pbAAAAAFpAQAAAAh3aXRoZHJhdwAAAAAEAAAAD3N1cHBsaWVyQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAdiYWxhbmNlCQEAAAAXZ2V0VmFsdWVCYWxhbmNlU3VwcGxpZXIAAAABBQAAAA9zdXBwbGllckFkZHJlc3MDCQAAZwAAAAIAAAAAAAAAAAAFAAAAB2JhbGFuY2UJAAACAAAAAQIAAAATbm8gbW9uZXkgLSBubyBob25leQkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABVnZXRLZXlCYWxhbmNlU3VwcGxpZXIAAAABBQAAAA9zdXBwbGllckFkZHJlc3MAAAAAAAAAAAAFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEA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", "height": 1796686, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8RERozAWNashVZxfUPsJ17kmpiRKb4Hg9VJWgHC4tijv Next: HfKqTxXBxNHaxUYi4SsCqf1UL28oZkpGNjoTxrtbg6xC Diff:
OldNewDifferences
2121
2222 let FEATURED = "featured"
2323
24-let DELISHED = "delished"
24+let DELISTED = "delisted"
2525
2626 func getNumberByKey (key) = {
2727 let num = match getInteger(this, key) {
173173 }
174174
175175
176+
177+@Callable(i)
178+func voteReveal (item,vote,salt) = if ((getKeyItemSupplier(item) == NONE))
179+ then throw("item does not exist")
180+ else {
181+ let user = toBase58String(i.caller.bytes)
182+ let status = getValueItemStatus(item)
183+ let newVoteCount = (getValueVoteCount(item, vote) + 1)
184+ if ((toBase58String(sha256(toBytes((vote + salt)))) != getValueCommit(item, user)))
185+ then throw("reveal data not valid")
186+ else if ((VOTERS > getValueCommitsCount(item)))
187+ then throw("max num of voters hasn't reached yet")
188+ else if ((getValueReveal(item, user) != NONE))
189+ then throw("user has already participated")
190+ else if (if ((status != VOTING))
191+ then (status != REVEAL)
192+ else false)
193+ then throw("wrong status")
194+ else if (if ((vote != FEATURED))
195+ then (vote != DELISTED)
196+ else false)
197+ then throw("wrong vote")
198+ else if (if ((status == FEATURED))
199+ then true
200+ else (status == DELISTED))
201+ then throw("vote has finished")
202+ else WriteSet([DataEntry(getKeyReveal(item, user), vote), DataEntry(getKeyVoteCount(item, vote), newVoteCount), DataEntry(getKeyItemStatus(item), if ((newVoteCount >= QUORUM))
203+ then vote
204+ else REVEAL)])
205+ }
206+
207+
176208 @Verifier(tx)
177209 func verify () = {
178210 let signedAlice = if (if (if (sigVerify(tx.bodyBytes, tx.proofs[0], pubKeyAlice))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let ownerPublicKey = base58'HtiJZF4j7Jo8jR12wxtKDkNhS3qCe3qsk8QxnnjVvXyq'
55
66 let pubKeyAlice = base58'HtiJZF4j7Jo8jR12wxtKDkNhS3qCe3qsk8QxnnjVvXyq'
77
88 let pubKeyBob = base58'B1R7zeh6VgTv4Xxe3aHhdoZ9aQgWcqN8LFC9smacE96r'
99
1010 let pubKeyCooper = base58'EisxKQktzqqd4UsxE7UgVjSHqoWindUpjoB7dsDwfG4o'
1111
1212 let NONE = "none"
1313
1414 let VOTERS = 3
1515
1616 let QUORUM = 2
1717
1818 let VOTING = "voting"
1919
2020 let REVEAL = "reveal"
2121
2222 let FEATURED = "featured"
2323
24-let DELISHED = "delished"
24+let DELISTED = "delisted"
2525
2626 func getNumberByKey (key) = {
2727 let num = match getInteger(this, key) {
2828 case t: Int =>
2929 t
3030 case _ =>
3131 0
3232 }
3333 num
3434 }
3535
3636
3737 func getStrByKey (key) = {
3838 let str = match getString(this, key) {
3939 case t: String =>
4040 t
4141 case _ =>
4242 NONE
4343 }
4444 str
4545 }
4646
4747
4848 func getKeyItemPrice (item) = (item + "_price")
4949
5050
5151 func getValueItemPrice (item) = getNumberByKey(getKeyItemPrice(item))
5252
5353
5454 func getKeyUserItemCounter (user,item) = (((item + "_") + user) + "_cnt")
5555
5656
5757 func getValueUserItemCounter (user,item) = getNumberByKey(getKeyUserItemCounter(user, item))
5858
5959
6060 func getKeyItem (supplier,title) = ("item_" + toBase58String(sha256(toBytes((supplier + title)))))
6161
6262
6363 func getKeyItemData (item) = (item + "_data")
6464
6565
6666 func getKeyItemSupplier (item) = (item + "_owner")
6767
6868
6969 func getValueItemSupplier (item) = getStrByKey(getKeyItemSupplier(item))
7070
7171
7272 func getKeyBalanceSupplier (account) = (account + "_balance")
7373
7474
7575 func getValueBalanceSupplier (account) = getNumberByKey(getKeyBalanceSupplier(account))
7676
7777
7878 func getKeyCommit (item,user) = (((item + "_") + user) + "_commit")
7979
8080
8181 func getValueCommit (item,user) = getStrByKey(getKeyCommit(item, user))
8282
8383
8484 func getKeyCommitsCount (item) = (item + "_comcnt")
8585
8686
8787 func getValueCommitsCount (item) = getNumberByKey(getKeyCommitsCount(item))
8888
8989
9090 func getKeyReveal (item,user) = (((item + "_") + user) + "_reveal")
9191
9292
9393 func getValueReveal (item,user) = getStrByKey(getKeyReveal(item, user))
9494
9595
9696 func getKeyItemStatus (item) = (item + "_status")
9797
9898
9999 func getValueItemStatus (item) = getStrByKey(getKeyItemStatus(item))
100100
101101
102102 func getKeyVoteCount (item,vote) = (item + "_comcnt")
103103
104104
105105 func getValueVoteCount (item,vote) = getNumberByKey(getKeyVoteCount(item, vote))
106106
107107
108108 @Callable(i)
109109 func addItem (title,price,data) = {
110110 let supplierAddress = toBase58String(i.caller.bytes)
111111 let item = getKeyItem(supplierAddress, title)
112112 if ((0 >= price))
113113 then throw("purchase amount cannot be less than item price")
114114 else if ((getValueItemSupplier(item) != NONE))
115115 then throw("an item is already exist")
116116 else WriteSet([DataEntry(getKeyItemSupplier(item), supplierAddress), DataEntry(getKeyItemPrice(item), price), DataEntry(getKeyItemData(item), data)])
117117 }
118118
119119
120120
121121 @Callable(i)
122122 func purchase (itemKey) = {
123123 let pmt = extract(i.payment)
124124 if (isDefined(pmt.assetId))
125125 then throw("can use WAVES only at the moment")
126126 else if (!(isDefined(itemKey)))
127127 then throw("You must select Item")
128128 else {
129129 let customerAddress = toBase58String(i.caller.bytes)
130130 let price = getValueItemPrice(itemKey)
131131 let supplierAddress = getValueItemSupplier(itemKey)
132132 if ((price > pmt.amount))
133133 then throw("purchase amoun cannot be less than item price")
134134 else if ((pmt.amount > price))
135135 then throw("purchase amoun cannot be higher than item price")
136136 else if ((supplierAddress == NONE))
137137 then throw("supplier does not exist")
138138 else WriteSet([DataEntry(getKeyUserItemCounter(customerAddress, itemKey), (getValueUserItemCounter(customerAddress, itemKey) + 1)), DataEntry(getKeyBalanceSupplier(supplierAddress), (getValueBalanceSupplier(supplierAddress) + pmt.amount))])
139139 }
140140 }
141141
142142
143143
144144 @Callable(i)
145145 func withdraw () = {
146146 let supplierAddress = toBase58String(i.caller.bytes)
147147 let balance = getValueBalanceSupplier(supplierAddress)
148148 if ((0 >= balance))
149149 then throw("no money - no honey")
150150 else ScriptResult(WriteSet([DataEntry(getKeyBalanceSupplier(supplierAddress), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(supplierAddress), balance, unit)]))
151151 }
152152
153153
154154
155155 @Callable(i)
156156 func voteCommit (item,hash) = if ((getKeyItemSupplier(item) == NONE))
157157 then throw("item does not exist")
158158 else {
159159 let user = toBase58String(i.caller.bytes)
160160 let commits = getValueCommitsCount(item)
161161 let status = getValueItemStatus(item)
162162 if ((commits >= VOTERS))
163163 then throw("reached max num of voters")
164164 else if ((getValueCommit(item, user) != NONE))
165165 then throw("user has already participated")
166166 else if (if ((status != NONE))
167167 then (status != VOTING)
168168 else false)
169169 then throw("voting is not possible")
170170 else WriteSet([DataEntry(getKeyCommit(item, user), hash), DataEntry(getKeyCommitsCount(item), (commits + 1)), DataEntry(getKeyItemStatus(item), if (((commits + 1) == VOTERS))
171171 then REVEAL
172172 else VOTING)])
173173 }
174174
175175
176+
177+@Callable(i)
178+func voteReveal (item,vote,salt) = if ((getKeyItemSupplier(item) == NONE))
179+ then throw("item does not exist")
180+ else {
181+ let user = toBase58String(i.caller.bytes)
182+ let status = getValueItemStatus(item)
183+ let newVoteCount = (getValueVoteCount(item, vote) + 1)
184+ if ((toBase58String(sha256(toBytes((vote + salt)))) != getValueCommit(item, user)))
185+ then throw("reveal data not valid")
186+ else if ((VOTERS > getValueCommitsCount(item)))
187+ then throw("max num of voters hasn't reached yet")
188+ else if ((getValueReveal(item, user) != NONE))
189+ then throw("user has already participated")
190+ else if (if ((status != VOTING))
191+ then (status != REVEAL)
192+ else false)
193+ then throw("wrong status")
194+ else if (if ((vote != FEATURED))
195+ then (vote != DELISTED)
196+ else false)
197+ then throw("wrong vote")
198+ else if (if ((status == FEATURED))
199+ then true
200+ else (status == DELISTED))
201+ then throw("vote has finished")
202+ else WriteSet([DataEntry(getKeyReveal(item, user), vote), DataEntry(getKeyVoteCount(item, vote), newVoteCount), DataEntry(getKeyItemStatus(item), if ((newVoteCount >= QUORUM))
203+ then vote
204+ else REVEAL)])
205+ }
206+
207+
176208 @Verifier(tx)
177209 func verify () = {
178210 let signedAlice = if (if (if (sigVerify(tx.bodyBytes, tx.proofs[0], pubKeyAlice))
179211 then true
180212 else sigVerify(tx.bodyBytes, tx.proofs[1], pubKeyAlice))
181213 then true
182214 else sigVerify(tx.bodyBytes, tx.proofs[2], pubKeyAlice))
183215 then 1
184216 else 0
185217 let signedBob = if (if (if (sigVerify(tx.bodyBytes, tx.proofs[0], pubKeyBob))
186218 then true
187219 else sigVerify(tx.bodyBytes, tx.proofs[1], pubKeyBob))
188220 then true
189221 else sigVerify(tx.bodyBytes, tx.proofs[2], pubKeyBob))
190222 then 1
191223 else 0
192224 let signedCooper = if (if (if (sigVerify(tx.bodyBytes, tx.proofs[0], pubKeyCooper))
193225 then true
194226 else sigVerify(tx.bodyBytes, tx.proofs[1], pubKeyCooper))
195227 then true
196228 else sigVerify(tx.bodyBytes, tx.proofs[2], pubKeyCooper))
197229 then 1
198230 else 0
199231 match tx {
200232 case d: SetScriptTransaction =>
201233 sigVerify(tx.bodyBytes, tx.proofs[0], ownerPublicKey)
202234 case d: DataTransaction =>
203235 true
204236 case _ =>
205237 (((signedAlice + signedBob) + signedCooper) >= 2)
206238 }
207239 }
208240

github/deemru/w8io/873ac7e 
38.82 ms