tx · HJSFVVpbDq4iVTRdDDCd24pz71eEFqhUuj5UZ1MjKU52

3MtELerncMfYVZvRuEeMvgvsj7jUnshXWuw:  -0.01400000 Waves

2019.11.04 00:34 [749253] smart account 3MtELerncMfYVZvRuEeMvgvsj7jUnshXWuw > SELF 0.00000000 Waves

{ "type": 13, "id": "HJSFVVpbDq4iVTRdDDCd24pz71eEFqhUuj5UZ1MjKU52", "fee": 1400000, "feeAssetId": null, "timestamp": 1572816718294, "version": 1, "sender": "3MtELerncMfYVZvRuEeMvgvsj7jUnshXWuw", "senderPublicKey": "FXsc9LG44fGFsWEUFctaZ8pr75ZoWQuPc75fhhG6CQb7", "proofs": [ "2bLcD3uzzNavz66ESWtuTzYVD4mLfzqvzA8HXZkwzJwPLGX5ukLJLCicDUEBCfize8LcwZDkNdJYnp3hFAyscQkx" ], "script": "base64:AAIDAAAAAAAAAB0IARIDCgEIEgUKAwgBCBIAEgQKAggIEgUKAwgICAAAACAAAAAAC2FsaWNlUHViS2V5AQAAACDX7EL0fX6l5Q8xnNOHhmzsBtLIfcaqkBcB//AMYv5XXgAAAAAJYm9iUHViS2V5AQAAACDsEpMXzzUbpi2Ff0Mjrb6D9V66oNMCyG1kL2a1kcQmVQAAAAAMY29vcGVyUHViS2V5AQAAACCASY5fiAuofxMqf5Ivw/e0xG6jnCiQ2b9d7EzQoCSpIgAAAAAETk9ORQIAAAAEbm9uZQAAAAAGVk9URVJTAAAAAAAAAAADAAAAAAZRVU9SVU0AAAAAAAAAAAIAAAAABlZPVElORwIAAAAGdm90aW5nAAAAAAZSRVZFQUwCAAAABnJldmVhbAAAAAAIRkVBVFVSRUQCAAAACGZlYXR1cmVkAAAAAAhERUxJU1RFRAIAAAAIZGVsaXN0ZWQBAAAADmdldE51bWJlckJ5S2V5AAAAAQAAAANrZXkEAAAAA251bQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAUAAAADbnVtAQAAAAtnZXRTdHJCeUtleQAAAAEAAAADa2V5BAAAAANzdHIEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEFAAAABE5PTkUFAAAAA3N0cgEAAAAMZ2V0S2V5Q29tbWl0AAAAAgAAAARpdGVtAAAABHVzZXIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABGl0ZW0CAAAAAV8FAAAABHVzZXICAAAAB19jb21taXQBAAAADmdldFZhbHVlQ29tbWl0AAAAAgAAAARpdGVtAAAABHVzZXIJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAAAxnZXRLZXlDb21taXQAAAACBQAAAARpdGVtBQAAAAR1c2VyAQAAABJnZXRLZXlDb21taXRzQ291bnQAAAABAAAABGl0ZW0JAAEsAAAAAgUAAAAEaXRlbQIAAAAHX2NvbWNudAEAAAAUZ2V0VmFsdWVDb21taXRzQ291bnQAAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABJnZXRLZXlDb21taXRzQ291bnQAAAABBQAAAARpdGVtAQAAAAxnZXRLZXlSZXZlYWwAAAACAAAABGl0ZW0AAAAEdXNlcgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEaXRlbQIAAAABXwUAAAAEdXNlcgIAAAAHX3JldmVhbAEAAAAOZ2V0VmFsdWVSZXZlYWwAAAACAAAABGl0ZW0AAAAEdXNlcgkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAADGdldEtleVJldmVhbAAAAAIFAAAABGl0ZW0FAAAABHVzZXIBAAAAEGdldEtleUl0ZW1TdGF0dXMAAAABAAAABGl0ZW0JAAEsAAAAAgUAAAAEaXRlbQIAAAAHX3N0YXR1cwEAAAASZ2V0VmFsdWVJdGVtU3RhdHVzAAAAAQAAAARpdGVtCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAQZ2V0S2V5SXRlbVN0YXR1cwAAAAEFAAAABGl0ZW0BAAAAD2dldEtleVZvdGVDb3VudAAAAAIAAAAEaXRlbQAAAAR2b3RlCQABLAAAAAIJAAEsAAAAAgUAAAAEaXRlbQIAAAAFX3JlczoFAAAABHZvdGUBAAAAEWdldFZhbHVlVm90ZUNvdW50AAAAAgAAAARpdGVtAAAABHZvdGUJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAAA9nZXRLZXlWb3RlQ291bnQAAAACBQAAAARpdGVtBQAAAAR2b3RlAQAAAA9nZXRLZXlJdGVtUHJpY2UAAAABAAAABGl0ZW0JAAEsAAAAAgUAAAAEaXRlbQIAAAAGX3ByaWNlAQAAABFnZXRWYWx1ZUl0ZW1QcmljZQAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAD2dldEtleUl0ZW1QcmljZQAAAAEFAAAABGl0ZW0BAAAAFWdldEtleVVzZXJJdGVtQ291bnRlcgAAAAIAAAAEdXNlcgAAAARpdGVtCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARpdGVtAgAAAAR1c2VyBQAAAAR1c2VyAgAAAARfY250AQAAABdnZXRWYWx1ZVVzZXJJdGVtQ291bnRlcgAAAAIAAAAEdXNlcgAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAVZ2V0S2V5VXNlckl0ZW1Db3VudGVyAAAAAgUAAAAEdXNlcgUAAAAEaXRlbQEAAAAKZ2V0S2V5SXRlbQAAAAIAAAAIc3VwcGxpZXIAAAAFdGl0bGUJAAEsAAAAAgIAAAAFaXRlbV8JAAJYAAAAAQkAAfcAAAABCQABmwAAAAEJAAEsAAAAAgUAAAAIc3VwcGxpZXIFAAAABXRpdGxlAQAAAA5nZXRLZXlJdGVtRGF0YQAAAAEAAAAEaXRlbQkAASwAAAACBQAAAARpdGVtAgAAAAVfZGF0YQEAAAASZ2V0S2V5SXRlbVN1cHBsaWVyAAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAABl9vd25lcgEAAAAUZ2V0VmFsdWVJdGVtU3VwcGxpZXIAAAABAAAABGl0ZW0JAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABJnZXRLZXlJdGVtU3VwcGxpZXIAAAABBQAAAARpdGVtAQAAABVnZXRLZXlCYWxhbmNlU3VwcGxpZXIAAAABAAAAB2FjY291bnQJAAEsAAAAAgUAAAAHYWNjb3VudAIAAAAIX2JhbGFuY2UBAAAAF2dldFZhbHVlQmFsYW5jZVN1cHBsaWVyAAAAAQAAAAdhY2NvdW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAVZ2V0S2V5QmFsYW5jZVN1cHBsaWVyAAAAAQUAAAAHYWNjb3VudAAAAAUAAAABaQEAAAAIcHVyY2hhc2UAAAABAAAABGl0ZW0EAAAAA3BtdAkBAAAAB2V4dHJhY3QAAAABCAUAAAABaQAAAAdwYXltZW50AwkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAkAAAIAAAABAgAAACBDYW4gdXNlIFdBVkVTIG9ubHkgYXQgdGhlIG1vbWVudAQAAAAPY3VzdG9tZXJBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAABXByaWNlCQEAAAARZ2V0VmFsdWVJdGVtUHJpY2UAAAABBQAAAARp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", "chainId": 84, "height": 749253, "spentComplexity": 0 } View: original | compacted Prev: 9DQntgwT3Hrh8LNV6uVE6X8pKLqedSgzsjwr3c2tSqN3 Next: 9ftHk5EzwWYwMrCtFA5HthCLpzR9bRNr2nhKS5f3GBXK Diff:
OldNewDifferences
169169 }
170170
171171
172+
173+@Callable(i)
174+func voteReveal (item,vote,salt) = {
175+ let user = toBase58String(i.caller.bytes)
176+ let status = getValueItemStatus(item)
177+ let newVoteCount = (getValueVoteCount(item, vote) + 1)
178+ if ((toBase58String(sha256(toBytes((vote + salt)))) != getValueCommit(item, user)))
179+ then throw("Revealed data is not valid")
180+ else if ((VOTERS > getValueCommitsCount(item)))
181+ then throw("max number of voters has not reached yet")
182+ else if ((getValueReveal(item, user) != NONE))
183+ then throw("User has already participated")
184+ else if (if ((status != VOTING))
185+ then (status != REVEAL)
186+ else false)
187+ then throw("Wrong status")
188+ else if (if ((vote != FEATURED))
189+ then (vote != DELISTED)
190+ else false)
191+ then throw("Wrong vote")
192+ else if (if ((status == FEATURED))
193+ then true
194+ else (status == DELISTED))
195+ then throw("Vote has finished")
196+ else WriteSet([DataEntry(getKeyReveal(item, user), vote), DataEntry(getKeyVoteCount(item, vote), newVoteCount), DataEntry(getKeyItemStatus(item), if ((newVoteCount >= QUORUM))
197+ then vote
198+ else REVEAL)])
199+ }
200+
201+
172202 @Verifier(tx)
173203 func verify () = {
174204 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"
2323
2424 func getNumberByKey (key) = {
2525 let num = match getInteger(this, key) {
2626 case a: Int =>
2727 a
2828 case _ =>
2929 0
3030 }
3131 num
3232 }
3333
3434
3535 func getStrByKey (key) = {
3636 let str = match getString(this, key) {
3737 case a: String =>
3838 a
3939 case _ =>
4040 NONE
4141 }
4242 str
4343 }
4444
4545
4646 func getKeyCommit (item,user) = (((item + "_") + user) + "_commit")
4747
4848
4949 func getValueCommit (item,user) = getStrByKey(getKeyCommit(item, user))
5050
5151
5252 func getKeyCommitsCount (item) = (item + "_comcnt")
5353
5454
5555 func getValueCommitsCount (item) = getNumberByKey(getKeyCommitsCount(item))
5656
5757
5858 func getKeyReveal (item,user) = (((item + "_") + user) + "_reveal")
5959
6060
6161 func getValueReveal (item,user) = getStrByKey(getKeyReveal(item, user))
6262
6363
6464 func getKeyItemStatus (item) = (item + "_status")
6565
6666
6767 func getValueItemStatus (item) = getStrByKey(getKeyItemStatus(item))
6868
6969
7070 func getKeyVoteCount (item,vote) = ((item + "_res:") + vote)
7171
7272
7373 func getValueVoteCount (item,vote) = getNumberByKey(getKeyVoteCount(item, vote))
7474
7575
7676 func getKeyItemPrice (item) = (item + "_price")
7777
7878
7979 func getValueItemPrice (item) = getNumberByKey(getKeyItemPrice(item))
8080
8181
8282 func getKeyUserItemCounter (user,item) = (((item + "user") + user) + "_cnt")
8383
8484
8585 func getValueUserItemCounter (user,item) = getNumberByKey(getKeyUserItemCounter(user, item))
8686
8787
8888 func getKeyItem (supplier,title) = ("item_" + toBase58String(sha256(toBytes((supplier + title)))))
8989
9090
9191 func getKeyItemData (item) = (item + "_data")
9292
9393
9494 func getKeyItemSupplier (item) = (item + "_owner")
9595
9696
9797 func getValueItemSupplier (item) = getStrByKey(getKeyItemSupplier(item))
9898
9999
100100 func getKeyBalanceSupplier (account) = (account + "_balance")
101101
102102
103103 func getValueBalanceSupplier (account) = getNumberByKey(getKeyBalanceSupplier(account))
104104
105105
106106 @Callable(i)
107107 func purchase (item) = {
108108 let pmt = extract(i.payment)
109109 if (isDefined(pmt.assetId))
110110 then throw("Can use WAVES only at the moment")
111111 else {
112112 let customerAddress = toBase58String(i.caller.bytes)
113113 let price = getValueItemPrice(item)
114114 let supplierAddress = getValueItemSupplier(item)
115115 if ((price > pmt.amount))
116116 then throw("Purchase amount can not be less than item price")
117117 else if ((pmt.amount > price))
118118 then throw("Purchase amount can not be more than item price")
119119 else if ((supplierAddress == NONE))
120120 then throw("Supplier does not exist")
121121 else WriteSet([DataEntry(getKeyUserItemCounter(customerAddress, item), (getValueUserItemCounter(customerAddress, item) + 1)), DataEntry(getKeyBalanceSupplier(supplierAddress), (getValueBalanceSupplier(supplierAddress) + pmt.amount))])
122122 }
123123 }
124124
125125
126126
127127 @Callable(i)
128128 func addItem (title,price,data) = {
129129 let supplierAddress = toBase58String(i.caller.bytes)
130130 let item = getKeyItem(supplierAddress, title)
131131 if ((0 >= price))
132132 then throw("purchase amount can not be less than item price")
133133 else if ((getValueItemSupplier(item) != NONE))
134134 then throw("An item is already")
135135 else WriteSet([DataEntry(getKeyItemSupplier(item), supplierAddress), DataEntry(getKeyItemPrice(item), price), DataEntry(getKeyItemData(item), data)])
136136 }
137137
138138
139139
140140 @Callable(i)
141141 func withdraw () = {
142142 let supplierAddress = toBase58String(i.caller.bytes)
143143 let balance = getValueBalanceSupplier(supplierAddress)
144144 if ((0 >= balance))
145145 then throw("insufficient balance")
146146 else ScriptResult(WriteSet([DataEntry(getKeyBalanceSupplier(supplierAddress), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(supplierAddress), balance, unit)]))
147147 }
148148
149149
150150
151151 @Callable(i)
152152 func voteCommit (item,hash) = {
153153 let user = toBase58String(i.caller.bytes)
154154 let commits = getValueCommitsCount(item)
155155 let status = getValueItemStatus(item)
156156 if ((commits >= VOTERS))
157157 then throw("Reached max number of voters")
158158 else if ((getValueCommit(item, user) != NONE))
159159 then throw("User has aready participated")
160160 else if ((getKeyItemSupplier(item) == NONE))
161161 then throw("Item does not exist")
162162 else if (if ((status != NONE))
163163 then (status != VOTING)
164164 else false)
165165 then throw("Voting is not possible")
166166 else WriteSet([DataEntry(getKeyCommit(item, user), hash), DataEntry(getKeyCommitsCount(item), (commits + 1)), DataEntry(getKeyItemStatus(item), if ((commits == VOTERS))
167167 then REVEAL
168168 else VOTING)])
169169 }
170170
171171
172+
173+@Callable(i)
174+func voteReveal (item,vote,salt) = {
175+ let user = toBase58String(i.caller.bytes)
176+ let status = getValueItemStatus(item)
177+ let newVoteCount = (getValueVoteCount(item, vote) + 1)
178+ if ((toBase58String(sha256(toBytes((vote + salt)))) != getValueCommit(item, user)))
179+ then throw("Revealed data is not valid")
180+ else if ((VOTERS > getValueCommitsCount(item)))
181+ then throw("max number of voters has not reached yet")
182+ else if ((getValueReveal(item, user) != NONE))
183+ then throw("User has already participated")
184+ else if (if ((status != VOTING))
185+ then (status != REVEAL)
186+ else false)
187+ then throw("Wrong status")
188+ else if (if ((vote != FEATURED))
189+ then (vote != DELISTED)
190+ else false)
191+ then throw("Wrong vote")
192+ else if (if ((status == FEATURED))
193+ then true
194+ else (status == DELISTED))
195+ then throw("Vote has finished")
196+ else WriteSet([DataEntry(getKeyReveal(item, user), vote), DataEntry(getKeyVoteCount(item, vote), newVoteCount), DataEntry(getKeyItemStatus(item), if ((newVoteCount >= QUORUM))
197+ then vote
198+ else REVEAL)])
199+ }
200+
201+
172202 @Verifier(tx)
173203 func verify () = {
174204 let Alice1 = sigVerify(tx.bodyBytes, tx.proofs[0], alicePubKey)
175205 let Alice2 = sigVerify(tx.bodyBytes, tx.proofs[1], alicePubKey)
176206 let Alice3 = sigVerify(tx.bodyBytes, tx.proofs[2], alicePubKey)
177207 let Bob1 = sigVerify(tx.bodyBytes, tx.proofs[0], bobPubKey)
178208 let Bob2 = sigVerify(tx.bodyBytes, tx.proofs[1], bobPubKey)
179209 let Bob3 = sigVerify(tx.bodyBytes, tx.proofs[2], bobPubKey)
180210 let Cooper1 = sigVerify(tx.bodyBytes, tx.proofs[0], cooperPubKey)
181211 let Cooper2 = sigVerify(tx.bodyBytes, tx.proofs[1], cooperPubKey)
182212 let Cooper3 = sigVerify(tx.bodyBytes, tx.proofs[2], cooperPubKey)
183213 let AliceAndBob = if (if (if (if (if (if (Alice1)
184214 then Bob2
185215 else false)
186216 then true
187217 else if (Alice1)
188218 then Bob3
189219 else false)
190220 then true
191221 else if (Alice2)
192222 then Bob1
193223 else false)
194224 then true
195225 else if (Alice2)
196226 then Bob3
197227 else false)
198228 then true
199229 else if (Alice3)
200230 then Bob1
201231 else false)
202232 then true
203233 else if (Alice3)
204234 then Bob2
205235 else false
206236 let AliceAndCooper = if (if (if (if (if (if (Cooper1)
207237 then Alice2
208238 else false)
209239 then true
210240 else if (Cooper1)
211241 then Alice3
212242 else false)
213243 then true
214244 else if (Cooper2)
215245 then Alice1
216246 else false)
217247 then true
218248 else if (Cooper2)
219249 then Alice3
220250 else false)
221251 then true
222252 else if (Cooper3)
223253 then Alice1
224254 else false)
225255 then true
226256 else if (Cooper3)
227257 then Alice2
228258 else false
229259 let BobAndCooper = if (if (if (if (if (if (Bob1)
230260 then Cooper2
231261 else false)
232262 then true
233263 else if (Bob1)
234264 then Cooper3
235265 else false)
236266 then true
237267 else if (Bob2)
238268 then Cooper1
239269 else false)
240270 then true
241271 else if (Bob2)
242272 then Cooper3
243273 else false)
244274 then true
245275 else if (Bob3)
246276 then Cooper1
247277 else false)
248278 then true
249279 else if (Bob3)
250280 then Cooper2
251281 else false
252282 match tx {
253283 case d: SetScriptTransaction =>
254284 true
255285 case _ =>
256286 if (if (AliceAndBob)
257287 then true
258288 else AliceAndCooper)
259289 then true
260290 else BobAndCooper
261291 }
262292 }
263293

github/deemru/w8io/169f3d6 
67.86 ms