tx · E9mRHv82fimc1iEFHocqtEv4TAUfM4TPFTV9v65zWmvZ

3NB6ViLiZv3r5EdQ2Q8GA8GKpuwmG3zevAt:  -0.05000000 Waves

2019.08.17 00:42 [634203] smart account 3NB6ViLiZv3r5EdQ2Q8GA8GKpuwmG3zevAt > SELF 0.00000000 Waves

{ "type": 13, "id": "E9mRHv82fimc1iEFHocqtEv4TAUfM4TPFTV9v65zWmvZ", "fee": 5000000, "feeAssetId": null, "timestamp": 1565991766406, "version": 1, "sender": "3NB6ViLiZv3r5EdQ2Q8GA8GKpuwmG3zevAt", "senderPublicKey": "3ghbp6Z5eXoKniLSE8XPjn5od7gT1K7qhk6zANBhv9C3", "proofs": [ "5AiC48TRqXVvnPyaFSpBbtfoe3mA6GbKcV3k4zBwhKDbtk9V9e2qTYiwsuMBdCkURcqixBf14EJoTNUNq1wd7a7L" ], "script": "base64:AAIDAAAAAAAAAAAAAAAlAAAAAA5vd25lclB1YmxpY2tleQEAAAAgJ+LupRtywYm1DtC2wa7+mcHTm1BkasCvRteam1vswWgAAAAADGFsbGljZVB1YmtleQEAAAAgdahQG7OF8VCvnmrXif7UUhoQjaCrm/2hFDfEk/59nDEAAAAACWJvYlB1YmtleQEAAAAgoHwmi+qXZSlN20yTARZQ9O8s6pUs/3qey7EnxhpjMk8AAAAADGNvb3BlclB1YmtleQEAAAAgU/w5K0kRwpKzXSOUcyJ72drbib04bPq1q9XqkXENjioAAAAABE5PTkUCAAAABG5vbmUAAAAABlZPVEVSUwAAAAAAAAAAAwAAAAAGUVVPUlVNAAAAAAAAAAACAAAAAAZWT1RJTkcCAAAABnZvdGluZwAAAAAGUkVWRUFMAgAAAAZyZXZlYWwAAAAACEZFQVRVUkVEAgAAAAhmZWF0dXJlZAAAAAAIREVMSVNURUQCAAAACGRlbGlzdGVkAAAAAAh2ZXJpZmllcgIAAAAjM01zOXNVYjdXM0w1NUxMR3hlSFdpcWdUZmRIOXluMm1heWIAAAAACFZFUklGSUVEAgAAAAh2ZXJpZmllZAAAAAALQkxBQ0tMSVNURUQCAAAACWJsYWNrbGlzdAAAAAASbWF4QXVjdGlvbkR1cmF0aW9uCQAAaAAAAAIAAAAAAAAABaAAAAAAAAAAAB4BAAAADmdldE51bWJlckJ5S2V5AAAAAQAAAANrZXkEAAAAA251bQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAUAAAADbnVtAQAAAAtnZXRTdHJCeUtleQAAAAEAAAADa2V5BAAAAANzdHIEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEFAAAABE5PTkUFAAAAA3N0cgEAAAAPZ2V0S2V5SXRlbVByaWNlAAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAABl9wcmljZQEAAAARZ2V0VmFsdWVJdGVtUHJpY2UAAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAAA9nZXRLZXlJdGVtUHJpY2UAAAABBQAAAARpdGVtAQAAABVnZXRLZXlVc2VySXRlbUNvdW50ZXIAAAACAAAABHVzZXIAAAAEaXRlbQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEaXRlbQIAAAABXwUAAAAEdXNlcgIAAAAEX2NudAEAAAAXZ2V0VmFsdWVVc2VySXRlbUNvdW50ZXIAAAACAAAABHVzZXIAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFWdldEtleVVzZXJJdGVtQ291bnRlcgAAAAIFAAAABHVzZXIFAAAABGl0ZW0BAAAACmdldEtleUl0ZW0AAAACAAAACHN1cHBsaWVyAAAABXRpdGxlCQABLAAAAAICAAAABWl0ZW1fCQACWAAAAAEJAAH3AAAAAQkAAZsAAAABCQABLAAAAAIFAAAACHN1cHBsaWVyBQAAAAV0aXRsZQEAAAAOZ2V0S2V5SXRlbURhdGEAAAABAAAABGl0ZW0JAAEsAAAAAgUAAAAEaXRlbQIAAAAFX2RhdGEBAAAAEmdldEtleUl0ZW1TdXBwbGllcgAAAAEAAAAEaXRlbQkAASwAAAACBQAAAARpdGVtAgAAAAZfb3duZXIBAAAAFGdldFZhbHVlSXRlbVN1cHBsaWVyAAAAAQAAAARpdGVtCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAASZ2V0S2V5SXRlbVN1cHBsaWVyAAAAAQUAAAAEaXRlbQEAAAAVZ2V0S2V5QmFsYW5jZVN1cHBsaWVyAAAAAQAAAAdhY2NvdW50CQABLAAAAAIFAAAAB2FjY291bnQCAAAACF9iYWxhbmNlAQAAABdnZXRWYWx1ZUJhbGFuY2VTdXBwbGllcgAAAAEAAAAHYWNjb3VudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFWdldEtleUJhbGFuY2VTdXBwbGllcgAAAAEFAAAAB2FjY291bnQBAAAADGdldEtleUNvbW1pdAAAAAIAAAAEaXRlbQAAAAR1c2VyCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARpdGVtAgAAAAFfBQAAAAR1c2VyAgAAAAdfY29tbWl0AQAAAA5nZXRWYWx1ZUNvbW1pdAAAAAIAAAAEaXRlbQAAAAR1c2VyCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAMZ2V0S2V5Q29tbWl0AAAAAgUAAAAEaXRlbQUAAAAEdXNlcgEAAAASZ2V0S2V5Q29tbWl0c0NvdW50AAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAAB19jb21jbnQBAAAAFGdldFZhbHVlQ29tbWl0c0NvdW50AAAAAQAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAASZ2V0S2V5Q29tbWl0c0NvdW50AAAAAQUAAAAEaXRlbQEAAAAMZ2V0S2V5UmV2ZWFsAAAAAgAAAARpdGVtAAAABHVzZXIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABGl0ZW0CAAAAAV8FAAAABHVzZXICAAAAB19yZXZlYWwBAAAADmdldFZhbHVlUmV2ZWFsAAAAAgAAAARpdGVtAAAABHVzZXIJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAAAxnZXRLZXlSZXZlYWwAAAACBQAAAARpdGVtBQAAAAR1c2VyAQAAABBnZXRLZXlJdGVtU3RhdHVzAAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAAB19zdGF0dXMBAAAAEmdldFZhbHVlSXRlbVN0YXR1cwAAAAEAAAAEaXRlbQkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAEGdldEtleUl0ZW1TdGF0dXMAAAABBQAAAARpdGVtAQAAAA9nZXRLZXlWb3RlQ291bnQAAAACAAAABGl0ZW0AAAAFdm91dGUJAAEsAAAAAgkAASwAAAACBQAAAARpdGVtAgAAAAVfcmVzOgUAAAAFdm91dGUBAAAAEmdldFZhbHVlVm91dGVDb3VudAAAAAIAAAAEaXRlbQAAAAV2b3V0ZQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAD2dldEtleVZvdGVDb3VudAAAAAIFAAAABGl0ZW0FAAAABXZvdXRlAAAACAAAAAFpAQAAAAxzdGFydEF1Y3Rpb24AAAADAAAACGR1cmF0aW9uAAAACnN0YXJ0UHJpY2UAAAAMcHJpY2VBc3NldElk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SXRlbUNvdW50ZXIAAAACBQAAAAt1c2VyQWRkcmVzcwUAAAAEaXRlbQAAAAAAAAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFWdldEtleUJhbGFuY2VTdXBwbGllcgAAAAEFAAAAD3N1cHBsaWVyQWRkcmVzcwkAAGQAAAACCQEAAAAXZ2V0VmFsdWVCYWxhbmNlU3VwcGxpZXIAAAABBQAAAA9zdXBwbGllckFkZHJlc3MIBQAAAANwbXQAAAAGYW1vdW50BQAAAANuaWwAAAABaQEAAAAHYWRkSXRlbQAAAAMAAAAFdGl0bGUAAAAFcHJpY2UAAAAEZGF0YQQAAAAPc3VwcGxpZXJBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAABGl0ZW0JAQAAAApnZXRLZXlJdGVtAAAAAgUAAAAPc3VwcGxpZXJBZGRyZXNzBQAAAAV0aXRsZQMJAABnAAAAAgAAAAAAAAAAAAUAAAAFcHJpY2UJAAACAAAAAQIAAAAucHVyY2hhc2UgYW1vdW50IGNhbm5vdCBiZSBsZXNzIHRoYW4gaXRlbSBwcmljZQMJAQAAAAIhPQAAAAIJAQAAABRnZXRWYWx1ZUl0ZW1TdXBwbGllcgAAAAEFAAAABGl0ZW0FAAAABE5PTkUJAAACAAAAAQIAAAAZQW4gaXRlbSBpcyBhbGxyZWFkeSBleGlzdAMJAAAAAAAAAgUAAAAPc3VwcGxpZXJBZGRyZXNzBQAAAAtCTEFDS0xJU1RFRAkAAAIAAAABAgAAACVzdXBwbGllcidzIGFjY291bnQgaGFzIGJlZW4gYmxhY2tsaXN0CQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAASZ2V0S2V5SXRlbVN1cHBsaWVyAAAAAQUAAAAEaXRlbQUAAAAPc3VwcGxpZXJBZGRyZXNzCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAPZ2V0S2V5SXRlbVByaWNlAAAAAQUAAAAEaXRlbQUAAAAFcHJpY2UJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAAA5nZXRLZXlJdGVtRGF0YQAAAAEFAAAABGl0ZW0FAAAABGRhdGEF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", "chainId": 84, "height": 634203, "spentComplexity": 0 } View: original | compacted Prev: QwWQ9G7YsaUpm38hQcbf8vUzWN87ZeuyRu4rpQN8kUV Next: BsxkbY6dmLCx3JF1tJDmoqGrv2gDB8BgKpwaVgToBXHw Diff:
OldNewDifferences
118118 let auctionId = toBase58String(i.transactionId)
119119 let endHeight = (lastBlock.height + duration)
120120 let pmt = extract(i.payment)
121- if ((duration > maxAuctionDuration))
122- then throw(("Duration is too long. Must be less than " + toString(maxAuctionDuration)))
123- else WriteSet([DataEntry(auctionId, endHeight), DataEntry((auctionId + "_organizer"), toBase58String(i.caller.bytes)), DataEntry((auctionId + "_lot_assetId"), if (isDefined(pmt.assetId))
124- then toBase58String(value(pmt.assetId))
125- else "WAVES"), DataEntry((auctionId + "_lot_amount"), pmt.amount), DataEntry((auctionId + "_startPrice"), startPrice), DataEntry((auctionId + "_priceAssetId"), priceAssetId)])
121+ WriteSet([DataEntry(auctionId, endHeight), DataEntry((auctionId + "_organizer"), toBase58String(i.caller.bytes)), DataEntry((auctionId + "_lot_assetId"), if (isDefined(pmt.assetId))
122+ then toBase58String(value(pmt.assetId))
123+ else "WAVES"), DataEntry((auctionId + "_lot_amount"), pmt.amount), DataEntry((auctionId + "_startPrice"), startPrice), DataEntry((auctionId + "_priceAssetId"), priceAssetId)])
126124 }
127125
128126
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let ownerPublickey = base58'3ghbp6Z5eXoKniLSE8XPjn5od7gT1K7qhk6zANBhv9C3'
55
66 let allicePubkey = base58'8vHZLEG3BmzYYVjQyNi1m11kh6FeSoVAKKwtsYXC3bqA'
77
88 let bobPubkey = base58'BoU2oQn7y52MZgT1Q7vJCJwUxov9tXb2zpC5gmWQbutJ'
99
1010 let cooperPubkey = base58'6equaSt4fnw6gEoLGiL3dTDDGxDc4PY5NyV3gVkEEr1F'
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
2424 let DELISTED = "delisted"
2525
2626 let verifier = "3Ms9sUb7W3L55LLGxeHWiqgTfdH9yn2mayb"
2727
2828 let VERIFIED = "verified"
2929
3030 let BLACKLISTED = "blacklist"
3131
3232 let maxAuctionDuration = (1440 * 30)
3333
3434 func getNumberByKey (key) = {
3535 let num = match getInteger(this, key) {
3636 case a: Int =>
3737 a
3838 case _ =>
3939 0
4040 }
4141 num
4242 }
4343
4444
4545 func getStrByKey (key) = {
4646 let str = match getString(this, key) {
4747 case a: String =>
4848 a
4949 case _ =>
5050 NONE
5151 }
5252 str
5353 }
5454
5555
5656 func getKeyItemPrice (item) = (item + "_price")
5757
5858
5959 func getValueItemPrice (item) = getNumberByKey(getKeyItemPrice(item))
6060
6161
6262 func getKeyUserItemCounter (user,item) = (((item + "_") + user) + "_cnt")
6363
6464
6565 func getValueUserItemCounter (user,item) = getNumberByKey(getKeyUserItemCounter(user, item))
6666
6767
6868 func getKeyItem (supplier,title) = ("item_" + toBase58String(sha256(toBytes((supplier + title)))))
6969
7070
7171 func getKeyItemData (item) = (item + "_data")
7272
7373
7474 func getKeyItemSupplier (item) = (item + "_owner")
7575
7676
7777 func getValueItemSupplier (item) = getStrByKey(getKeyItemSupplier(item))
7878
7979
8080 func getKeyBalanceSupplier (account) = (account + "_balance")
8181
8282
8383 func getValueBalanceSupplier (account) = getNumberByKey(getKeyBalanceSupplier(account))
8484
8585
8686 func getKeyCommit (item,user) = (((item + "_") + user) + "_commit")
8787
8888
8989 func getValueCommit (item,user) = getStrByKey(getKeyCommit(item, user))
9090
9191
9292 func getKeyCommitsCount (item) = (item + "_comcnt")
9393
9494
9595 func getValueCommitsCount (item) = getNumberByKey(getKeyCommitsCount(item))
9696
9797
9898 func getKeyReveal (item,user) = (((item + "_") + user) + "_reveal")
9999
100100
101101 func getValueReveal (item,user) = getStrByKey(getKeyReveal(item, user))
102102
103103
104104 func getKeyItemStatus (item) = (item + "_status")
105105
106106
107107 func getValueItemStatus (item) = getStrByKey(getKeyItemStatus(item))
108108
109109
110110 func getKeyVoteCount (item,voute) = ((item + "_res:") + voute)
111111
112112
113113 func getValueVouteCount (item,voute) = getNumberByKey(getKeyVoteCount(item, voute))
114114
115115
116116 @Callable(i)
117117 func startAuction (duration,startPrice,priceAssetId) = {
118118 let auctionId = toBase58String(i.transactionId)
119119 let endHeight = (lastBlock.height + duration)
120120 let pmt = extract(i.payment)
121- if ((duration > maxAuctionDuration))
122- then throw(("Duration is too long. Must be less than " + toString(maxAuctionDuration)))
123- else WriteSet([DataEntry(auctionId, endHeight), DataEntry((auctionId + "_organizer"), toBase58String(i.caller.bytes)), DataEntry((auctionId + "_lot_assetId"), if (isDefined(pmt.assetId))
124- then toBase58String(value(pmt.assetId))
125- else "WAVES"), DataEntry((auctionId + "_lot_amount"), pmt.amount), DataEntry((auctionId + "_startPrice"), startPrice), DataEntry((auctionId + "_priceAssetId"), priceAssetId)])
121+ WriteSet([DataEntry(auctionId, endHeight), DataEntry((auctionId + "_organizer"), toBase58String(i.caller.bytes)), DataEntry((auctionId + "_lot_assetId"), if (isDefined(pmt.assetId))
122+ then toBase58String(value(pmt.assetId))
123+ else "WAVES"), DataEntry((auctionId + "_lot_amount"), pmt.amount), DataEntry((auctionId + "_startPrice"), startPrice), DataEntry((auctionId + "_priceAssetId"), priceAssetId)])
126124 }
127125
128126
129127
130128 @Callable(i)
131129 func bid (auctionId) = {
132130 let pmt = extract(i.payment)
133131 let pmtAssetIdStr = if (isDefined(pmt.assetId))
134132 then toBase58String(value(pmt.assetId))
135133 else "WAVES"
136134 let callerAddressStr = toBase58String(i.caller.bytes)
137135 let endHeight = getIntegerValue(this, auctionId)
138136 let startPrice = getIntegerValue(this, (auctionId + "_startPrice"))
139137 let priceAssetId = getStringValue(this, (auctionId + "_priceAssetId"))
140138 let winAmount = getInteger(this, (auctionId + "_winAmount"))
141139 let winner = getString(this, (auctionId + "_winner"))
142140 let bidFromTheSameUser = if (isDefined(winner))
143141 then (value(winner) == callerAddressStr)
144142 else false
145143 let totalBidAmount = (pmt.amount + (if (bidFromTheSameUser)
146144 then value(winAmount)
147145 else 0))
148146 if ((lastBlock.height >= endHeight))
149147 then throw("Auction already finished")
150148 else if ((priceAssetId != pmtAssetIdStr))
151149 then throw((("Bid must be in asset '" + priceAssetId) + "'"))
152150 else if (if (if (isDefined(winAmount))
153151 then (value(winAmount) >= totalBidAmount)
154152 else false)
155153 then true
156154 else if (!(isDefined(winAmount)))
157155 then (startPrice >= totalBidAmount)
158156 else false)
159157 then throw(("Bid must be more then " + toString(if (isDefined(winAmount))
160158 then value(winAmount)
161159 else startPrice)))
162160 else if (if (bidFromTheSameUser)
163161 then true
164162 else !(isDefined(winner)))
165163 then WriteSet([DataEntry((auctionId + "_winner"), callerAddressStr), DataEntry((auctionId + "_winAmount"), totalBidAmount)])
166164 else {
167165 let previousBidderAddr = addressFromStringValue(value(winner))
168166 let priceAsset = if (if ((priceAssetId == "WAVES"))
169167 then true
170168 else (priceAssetId == ""))
171169 then unit
172170 else fromBase58String(priceAssetId)
173171 ScriptResult(WriteSet([DataEntry((auctionId + "_winner"), callerAddressStr), DataEntry((auctionId + "_winAmount"), totalBidAmount)]), TransferSet([ScriptTransfer(previousBidderAddr, value(winAmount), priceAsset)]))
174172 }
175173 }
176174
177175
178176
179177 @Callable(i)
180178 func purchase (item) = {
181179 let pmt = extract(i.payment)
182180 if (isDefined(pmt.assetId))
183181 then throw("can use Waves only at the moment")
184182 else {
185183 let userAddress = toBase58String(i.caller.bytes)
186184 let price = getValueItemPrice(item)
187185 let supplierAddress = getValueItemSupplier(item)
188186 if ((price > pmt.amount))
189187 then throw("purchase amount cannot be less than item price")
190188 else if ((pmt.amount > price))
191189 then throw("purchase amount cannot be higher than item price")
192190 else if ((supplierAddress == NONE))
193191 then throw("supplier is not exist")
194192 else WriteSet([DataEntry(getKeyUserItemCounter(userAddress, item), (getValueUserItemCounter(userAddress, item) + 1)), DataEntry(getKeyBalanceSupplier(supplierAddress), (getValueBalanceSupplier(supplierAddress) + pmt.amount))])
195193 }
196194 }
197195
198196
199197
200198 @Callable(i)
201199 func addItem (title,price,data) = {
202200 let supplierAddress = toBase58String(i.caller.bytes)
203201 let item = getKeyItem(supplierAddress, title)
204202 if ((0 >= price))
205203 then throw("purchase amount cannot be less than item price")
206204 else if ((getValueItemSupplier(item) != NONE))
207205 then throw("An item is allready exist")
208206 else if ((supplierAddress == BLACKLISTED))
209207 then throw("supplier's account has been blacklist")
210208 else WriteSet([DataEntry(getKeyItemSupplier(item), supplierAddress), DataEntry(getKeyItemPrice(item), price), DataEntry(getKeyItemData(item), data)])
211209 }
212210
213211
214212
215213 @Callable(i)
216214 func deposit () = {
217215 let pmt = extract(i.payment)
218216 let supplierAddress = toBase58String(i.caller.bytes)
219217 let balance = getValueBalanceSupplier(supplierAddress)
220218 let newBalance = (balance + pmt.amount)
221219 if (isDefined(pmt.assetId))
222220 then throw("can hodl waves only at the moment")
223221 else if ((0 > pmt.amount))
224222 then throw("Can not deposit negative amount")
225223 else WriteSet([DataEntry(getKeyBalanceSupplier(supplierAddress), newBalance)])
226224 }
227225
228226
229227
230228 @Callable(i)
231229 func withdraw (amount) = {
232230 let supplierAddress = toBase58String(i.caller.bytes)
233231 let balance = getValueBalanceSupplier(supplierAddress)
234232 let newBalance = (balance - amount)
235233 if ((0 > amount))
236234 then throw("Can not withdraw negative amount")
237235 else if ((0 > newBalance))
238236 then throw("not enough balance")
239237 else if ((0 >= balance))
240238 then throw("insufficient balance")
241239 else ScriptResult(WriteSet([DataEntry(getKeyBalanceSupplier(supplierAddress), newBalance)]), TransferSet([ScriptTransfer(addressFromStringValue(supplierAddress), amount, unit)]))
242240 }
243241
244242
245243
246244 @Callable(i)
247245 func voteCommit (item,hash) = {
248246 let user = toBase58String(i.caller.bytes)
249247 let commits = getValueCommitsCount(item)
250248 let status = getValueItemStatus(item)
251249 if ((commits >= VOTERS))
252250 then throw("reached max num of vouters")
253251 else if ((getValueCommit(item, user) != NONE))
254252 then throw("user has allready participated")
255253 else if ((getKeyItemSupplier(item) == NONE))
256254 then throw("item dose not exist")
257255 else if (if ((status != NONE))
258256 then (status != VOTING)
259257 else false)
260258 then throw("vouting is not posible")
261259 else WriteSet([DataEntry(getKeyCommit(item, user), hash), DataEntry(getKeyCommitsCount(item), (commits + 1)), DataEntry(getKeyItemStatus(item), if ((commits == VOTERS))
262260 then REVEAL
263261 else VOTING)])
264262 }
265263
266264
267265
268266 @Callable(i)
269267 func voteReveal (item,vote,salt) = {
270268 let user = toBase58String(i.caller.bytes)
271269 let status = getValueItemStatus(item)
272270 let newVoteCount = getValueVouteCount(item, vote)
273271 if ((toBase58String(sha256(toBytes((vote + salt)))) != getValueCommit(item, user)))
274272 then throw("reveal data is not valid")
275273 else if ((VOTERS > getValueCommitsCount(item)))
276274 then throw("max num of hasn't reached yet")
277275 else if ((getValueReveal(item, user) != NONE))
278276 then throw("user has already participated")
279277 else if (if ((status != VOTING))
280278 then (status != REVEAL)
281279 else false)
282280 then throw("wrong status")
283281 else if (if ((vote != FEATURED))
284282 then (vote != DELISTED)
285283 else false)
286284 then throw("wrong vote")
287285 else if (if ((status == FEATURED))
288286 then true
289287 else (status == DELISTED))
290288 then throw("vote has finished")
291289 else WriteSet([DataEntry(getKeyReveal(item, user), vote), DataEntry(getKeyVoteCount(item, vote), newVoteCount), DataEntry(getKeyItemStatus(item), if ((newVoteCount >= QUORUM))
292290 then vote
293291 else REVEAL)])
294292 }
295293
296294
297295 @Verifier(tx)
298296 func verify () = {
299297 let alice1 = sigVerify(tx.bodyBytes, tx.proofs[0], allicePubkey)
300298 let alice2 = sigVerify(tx.bodyBytes, tx.proofs[1], allicePubkey)
301299 let alice3 = sigVerify(tx.bodyBytes, tx.proofs[2], allicePubkey)
302300 let bob1 = sigVerify(tx.bodyBytes, tx.proofs[0], bobPubkey)
303301 let bob2 = sigVerify(tx.bodyBytes, tx.proofs[1], bobPubkey)
304302 let bob3 = sigVerify(tx.bodyBytes, tx.proofs[2], bobPubkey)
305303 let cooper1 = sigVerify(tx.bodyBytes, tx.proofs[0], cooperPubkey)
306304 let copper2 = sigVerify(tx.bodyBytes, tx.proofs[1], cooperPubkey)
307305 let copper3 = sigVerify(tx.bodyBytes, tx.proofs[2], cooperPubkey)
308306 let alliceAndBob = if (if (if (if (if (if (alice1)
309307 then bob2
310308 else false)
311309 then true
312310 else if (alice1)
313311 then bob3
314312 else false)
315313 then true
316314 else if (alice2)
317315 then bob1
318316 else false)
319317 then true
320318 else if (alice2)
321319 then bob3
322320 else false)
323321 then true
324322 else if (alice3)
325323 then bob1
326324 else false)
327325 then true
328326 else if (alice3)
329327 then bob2
330328 else false
331329 let alliceAndCooper = if (if (if (if (if (if (alice1)
332330 then copper2
333331 else false)
334332 then true
335333 else if (alice1)
336334 then copper3
337335 else false)
338336 then true
339337 else if (alice2)
340338 then cooper1
341339 else false)
342340 then true
343341 else if (alice2)
344342 then copper3
345343 else false)
346344 then true
347345 else if (alice3)
348346 then cooper1
349347 else false)
350348 then true
351349 else if (alice3)
352350 then copper2
353351 else false
354352 let bobeAndCooper = if (if (if (if (if (if (cooper1)
355353 then bob2
356354 else false)
357355 then true
358356 else if (cooper1)
359357 then bob3
360358 else false)
361359 then true
362360 else if (copper2)
363361 then bob1
364362 else false)
365363 then true
366364 else if (copper2)
367365 then bob3
368366 else false)
369367 then true
370368 else if (copper3)
371369 then bob1
372370 else false)
373371 then true
374372 else if (copper3)
375373 then bob2
376374 else false
377375 match tx {
378376 case d: SetScriptTransaction =>
379377 sigVerify(tx.bodyBytes, tx.proofs[0], ownerPublickey)
380378 case d: DataTransaction =>
381379 true
382380 case _ =>
383381 if (if (alliceAndBob)
384382 then true
385383 else alliceAndCooper)
386384 then true
387385 else bobeAndCooper
388386 }
389387 }
390388

github/deemru/w8io/873ac7e 
43.82 ms