tx · 5XwgdGAZU57KBhrt9wpoB7M6ArbrU7xpqjohED28nddG

3MtPvdnUJi2Y1azHP6sCJf6TqhFRu53fYFY:  -0.01400000 Waves

2019.08.07 16:28 [620586] smart account 3MtPvdnUJi2Y1azHP6sCJf6TqhFRu53fYFY > SELF 0.00000000 Waves

{ "type": 13, "id": "5XwgdGAZU57KBhrt9wpoB7M6ArbrU7xpqjohED28nddG", "fee": 1400000, "feeAssetId": null, "timestamp": 1565184526311, "version": 1, "sender": "3MtPvdnUJi2Y1azHP6sCJf6TqhFRu53fYFY", "senderPublicKey": "2NJJAMMjXiXCHkfJNkYj74tEzPHxMXMz3TpL35QmrATN", "proofs": [ "668RXJ31Ku8XgEtTtjt1Y9dgWsMNnLSC6E4D24HXhjGin9eZ5k4k2frLeDeGPghYSe9FNJ6rqJTW7MLHye5kKPHL" ], "script": "base64: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ZW0FAAAABHVzZXIBAAAAFWdldEtleVVzZXJJdGVtQ291bnRlcgAAAAIAAAAEdXNlcgAAAARpdGVtCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARpdGVtAgAAAAFfBQAAAAR1c2VyAgAAAARfY250AQAAAApnZXRLZXlJdGVtAAAAAgAAAAhzdXBwbGllcgAAAAV0aXRsZQkAASwAAAACAgAAAARpdGVtCQACWAAAAAEJAAH3AAAAAQkAAZsAAAABCQABLAAAAAIFAAAACHN1cHBsaWVyBQAAAAV0aXRsZQEAAAASZ2V0S2V5SXRlbVN1cHBsaWVyAAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAABl9vd25lcgEAAAAPZ2V0S2V5SXRlbVByaWNlAAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAABl9wcmljZQEAAAAOZ2V0S2V5SXRlbURhdGEAAAABAAAABGl0ZW0JAAEsAAAAAgUAAAAEaXRlbQIAAAAFX2RhdGEBAAAAFGdldFZhbHVlSXRlbVN1cHBsaWVyAAAAAQAAAARpdGVtCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAASZ2V0S2V5SXRlbVN1cHBsaWVyAAAAAQUAAAAEaXRlbQEAAAARZ2V0VmFsdWVJdGVtUHJpY2UAAAABAAAABGl0ZW0JAQAAAAtnZXROdW1CeUtleQAAAAEJAQAAAA9nZXRLZXlJdGVtUHJpY2UAAAABBQAAAARpdGVtAQAAABdnZXRWYWx1ZVVzZXJJdGVtQ291bnRlcgAAAAIAAAAEdXNlcgAAAARpdGVtCQEAAAALZ2V0TnVtQnlLZXkAAAABCQEAAAAPZ2V0S2V5SXRlbVByaWNlAAAAAQUAAAAEaXRlbQEAAAAVZ2V0S2V5QmFsYW5jZVN1cHBsaWVyAAAAAQAAAAdhY2NvdW50CQABLAAAAAIFAAAAB2FjY291bnQCAAAACF9iYWxhbmNlAQAAABdnZXRWYWx1ZUJhbGFuY2VTdXBwbGllcgAAAAEAAAAHYWNjb3VudAkBAAAAC2dldE51bUJ5S2V5AAAAAQkBAAAAFWdldEtleUJhbGFuY2VTdXBwbGllcgAAAAEFAAAAB2FjY291bnQAAAAGAAAAAWkBAAAACHB1cmNoYXNlAAAAAQAAAARpdGVtBAAAAANwbXQJAQAAAAdleHRyYWN0AAAAAQgFAAAAAWkAAAAHcGF5bWVudAMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAADcG10AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAAhQ2FuIHVzZSBvbmx5IFdBVkVTIGF0IHRoZSBtb21lbnQuBAAAAA9jdXN0b21lckFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAFcHJpY2UJAQAAABFnZXRWYWx1ZUl0ZW1QcmljZQAAAAEFAAAABGl0ZW0EAAAAD3N1cHBsaWVyQWRkcmVzcwkBAAAAFGdldFZhbHVlSXRlbVN1cHBsaWVyAAAAAQUAAAAEaXRlbQMJAABmAAAAAgUAAAAFcHJpY2UIBQAAAANwbXQAAAAGYW1vdW50CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAPUFtb3VudCBjYW5ub3QgYmUgbGVzcyB0aGFuIGl0ZW0gcHJpY2UuIFlvdSBzcGVjaWZpZWQgYW1vdW50OiAJAAGkAAAAAQgFAAAAA3BtdAAAAAZhbW91bnQCAAAADWJ1dCBwcmljZSBpcyAJAAGkAAAAAQUAAAAFcHJpY2UDCQAAZgAAAAIIBQAAAANwbXQAAAAGYW1vdW50BQAAAAVwcmljZQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAABAQW1vdW50IGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gaXRlbSBwcmljZS4gWW91IHNwZWNpZmllZCBhbW91bnQ6IAkAAaQAAAABCAUAAAADcG10AAAABmFtb3VudAIAAAAUIGJ1dCBwcmljZSBvZiBpdGVtOiAFAAAABGl0ZW0CAAAABCBpcyAJAAGkAAAAAQUAAAAFcHJpY2UDCQAAAAAAAAIFAAAAD3N1cHBsaWVyQWRkcmVzcwUAAAAETk9ORQkAAAIAAAABAgAAABNTdXBwbGllciBub3QgZm91bmQuCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAVZ2V0S2V5VXNlckl0ZW1Db3VudGVyAAAAAgUAAAAPY3VzdG9tZXJBZGRyZXNzBQAAAARpdGVtCQAAZAAAAAIJAQAAABdnZXRWYWx1ZVVzZXJJdGVtQ291bnRlcgAAAAIFAAAAD2N1c3RvbWVyQWRkcmVzcwUAAAAEaXRlbQAAAAAAAAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFWdldEtleUJhbGFuY2VTdXBwbGllcgAAAAEFAAAAD3N1cHBsaWVyQWRkcmVzcwkAAGQAAAACCQEAAAAXZ2V0VmFsdWVCYWxhbmNlU3VwcGxpZXIAAAABBQAAAA9zdXBwbGllckFkZHJlc3MIBQAAAANwbXQAAAAGYW1vdW50BQAAAANuaWwAAAABaQEAAAAHYWRkSXRlbQAAAAMAAAAFdGl0bGUAAAAFcHJpY2UAAAAEZGF0YQQAAAAPc3VwcGxpZXJBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAABGl0ZW0JAQAAAApnZXRLZXlJdGVtAAAAAgUAAAAPc3VwcGxpZXJBZGRyZXNzBQAAAAV0aXRsZQQAAAARc3VwcGxpZXJXaGl0ZUxpc3QJAQAAAB5nZXRFeHRWYWx1ZUl0ZW1XaGl0ZUxpc3RTdGF0dXMAAAACCQEAAAATZ2V0RXh0QWRkcmVzc09yYWNsZQAAAAAFAAAAD3N1cHBsaWVyQWRkcmVzcwMJAABnAAAAAgAAAAAAAAAAAAUAAAAFcHJpY2UJAAACAAAAAQIAAAAXUHJpY2UgbXVzdCBiZSBwb3NpdGl2ZS4DCQAAAAAAAAIFAAAAEXN1cHBsaWVyV2hpdGVMaXN0BQAAAAtCTEFDS0xJU1RFRAkAAAIAAAABAgAAABxUaGUgc3VwcGxpZXIgaXMgYmxhY2tsaXN0ZWQuAwkBAAAAAiE9AAAAAgkBAAAAFGdldFZhbHVlSXRlbVN1cHBsaWVyAAAAAQUAAAAEaXRlbQUAAAAETk9ORQkAAAIAAAABAgAAACFBbiBpdGVtIGxpa2UgdGhpcyBhbHJlYWR5IGV4aXN0cy4JAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABJnZXRLZXlJdGVtU3VwcGxpZXIAAAABBQAAAARpdGVtBQAAAA9zdXBwbGllckFkZHJlc3MJAARMAAAA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", "chainId": 84, "height": 620586, "spentComplexity": 0 } View: original | compacted Prev: EtDtHTLpYGYhvpEaKLCDvgdsijZKLHDDXiA4gWy9BoEJ Next: none Diff:
OldNewDifferences
148148 then throw("The supplier is blacklisted.")
149149 else if ((getValueItemSupplier(item) != NONE))
150150 then throw("An item like this already exists.")
151- else WriteSet([DataEntry(getKeyItemSupplier(item), supplierAddress), DataEntry(getKeyItemPrice(item), price), DataEntry(getKeyItemData(item), data)])
151+ else WriteSet([DataEntry(getKeyItemSupplier(item), supplierAddress), DataEntry(getKeyItemPrice(item), price), DataEntry(getKeyItemData(item), data), DataEntry(getExtValueItemWhitelistStatus(supplierAddress), supplierWhiteList)])
152152 }
153153
154154
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let NONE = "none"
55
66 let VOTERS = 3
77
88 let QUORUM = 2
99
1010 let VOTING = "voting"
1111
1212 let REVEAL = "reveal"
1313
1414 let FEATURED = "featured"
1515
1616 let DELISTED = "delisted"
1717
1818 func getExtAddressOracle () = extract(addressFromString("3Mzp4yJ3CGWTX5Wy1f67aLaTvxdCW2ZdyPj"))
1919
2020
2121 let BLACKLISTED = "blacklisted"
2222
2323 func getExtValueItemWhitelistStatus (account) = (account + "_verifier_status")
2424
2525
2626 func getExtValueItemWhiteListStatus (oracle,account) = {
2727 let str = match getString(oracle, getExtValueItemWhitelistStatus(account)) {
2828 case a: String =>
2929 a
3030 case _ =>
3131 NONE
3232 }
3333 str
3434 }
3535
3636
3737 func getNumByKey (key) = {
3838 let num = match getInteger(this, key) {
3939 case a: Int =>
4040 a
4141 case _ =>
4242 0
4343 }
4444 num
4545 }
4646
4747
4848 func getStrByKey (key) = {
4949 let str = match getString(this, key) {
5050 case a: String =>
5151 a
5252 case _ =>
5353 NONE
5454 }
5555 str
5656 }
5757
5858
5959 func getKeyCommit (item,user) = (((item + "_") + user) + "_commit")
6060
6161
6262 func getKeyCommitCounts (item) = (item + "_comcnt")
6363
6464
6565 func getKeyReveal (item,user) = (((item + "_") + user) + "_reveal")
6666
6767
6868 func getKeyItemStatus (item) = (item + "_status")
6969
7070
7171 func getKeyVoteCount (item,vote) = ((item + "_res:") + vote)
7272
7373
7474 func getValueCommit (item,user) = getStrByKey(getKeyCommit(item, user))
7575
7676
7777 func getValueCommitsCount (item) = getNumByKey(getKeyCommitCounts(item))
7878
7979
8080 func getValueReveal (item,user) = getStrByKey(getKeyReveal(item, user))
8181
8282
8383 func getValueItemStatus (item) = getStrByKey(getKeyItemStatus(item))
8484
8585
8686 func getValueVoteCount (item,user) = getNumByKey(getKeyVoteCount(item, user))
8787
8888
8989 func getKeyUserItemCounter (user,item) = (((item + "_") + user) + "_cnt")
9090
9191
9292 func getKeyItem (supplier,title) = ("item" + toBase58String(sha256(toBytes((supplier + title)))))
9393
9494
9595 func getKeyItemSupplier (item) = (item + "_owner")
9696
9797
9898 func getKeyItemPrice (item) = (item + "_price")
9999
100100
101101 func getKeyItemData (item) = (item + "_data")
102102
103103
104104 func getValueItemSupplier (item) = getStrByKey(getKeyItemSupplier(item))
105105
106106
107107 func getValueItemPrice (item) = getNumByKey(getKeyItemPrice(item))
108108
109109
110110 func getValueUserItemCounter (user,item) = getNumByKey(getKeyItemPrice(item))
111111
112112
113113 func getKeyBalanceSupplier (account) = (account + "_balance")
114114
115115
116116 func getValueBalanceSupplier (account) = getNumByKey(getKeyBalanceSupplier(account))
117117
118118
119119 @Callable(i)
120120 func purchase (item) = {
121121 let pmt = extract(i.payment)
122122 if (isDefined(pmt.assetId))
123123 then throw("Can use only WAVES at the moment.")
124124 else {
125125 let customerAddress = toBase58String(i.caller.bytes)
126126 let price = getValueItemPrice(item)
127127 let supplierAddress = getValueItemSupplier(item)
128128 if ((price > pmt.amount))
129129 then throw(((("Amount cannot be less than item price. You specified amount: " + toString(pmt.amount)) + "but price is ") + toString(price)))
130130 else if ((pmt.amount > price))
131131 then throw(((((("Amount cannot be greater than item price. You specified amount: " + toString(pmt.amount)) + " but price of item: ") + item) + " is ") + toString(price)))
132132 else if ((supplierAddress == NONE))
133133 then throw("Supplier not found.")
134134 else WriteSet([DataEntry(getKeyUserItemCounter(customerAddress, item), (getValueUserItemCounter(customerAddress, item) + 1)), DataEntry(getKeyBalanceSupplier(supplierAddress), (getValueBalanceSupplier(supplierAddress) + pmt.amount))])
135135 }
136136 }
137137
138138
139139
140140 @Callable(i)
141141 func addItem (title,price,data) = {
142142 let supplierAddress = toBase58String(i.caller.bytes)
143143 let item = getKeyItem(supplierAddress, title)
144144 let supplierWhiteList = getExtValueItemWhiteListStatus(getExtAddressOracle(), supplierAddress)
145145 if ((0 >= price))
146146 then throw("Price must be positive.")
147147 else if ((supplierWhiteList == BLACKLISTED))
148148 then throw("The supplier is blacklisted.")
149149 else if ((getValueItemSupplier(item) != NONE))
150150 then throw("An item like this already exists.")
151- else WriteSet([DataEntry(getKeyItemSupplier(item), supplierAddress), DataEntry(getKeyItemPrice(item), price), DataEntry(getKeyItemData(item), data)])
151+ else WriteSet([DataEntry(getKeyItemSupplier(item), supplierAddress), DataEntry(getKeyItemPrice(item), price), DataEntry(getKeyItemData(item), data), DataEntry(getExtValueItemWhitelistStatus(supplierAddress), supplierWhiteList)])
152152 }
153153
154154
155155
156156 @Callable(i)
157157 func deposit () = {
158158 let gnak = base58'5LTW6Yt7iSwFdCKfPPcjvPpKWp4n6LstRHLT5REsrybg'
159159 let pmt = extract(i.payment)
160160 if ((pmt.assetId != gnak))
161161 then throw("Sorry we accept only GNAK here.")
162162 else {
163163 let currentKey = toBase58String(i.caller.bytes)
164164 let currentAmount = match getInteger(this, currentKey) {
165165 case a: Int =>
166166 a
167167 case _ =>
168168 0
169169 }
170170 let newAmount = (currentAmount + pmt.amount)
171171 WriteSet([DataEntry(currentKey, newAmount)])
172172 }
173173 }
174174
175175
176176
177177 @Callable(i)
178178 func withdraw () = {
179179 let supplierAddress = toBase58String(i.caller.bytes)
180180 let balance = getValueBalanceSupplier(supplierAddress)
181181 if ((0 >= balance))
182182 then throw("Insufficient Balance")
183183 else ScriptResult(WriteSet([DataEntry(getKeyBalanceSupplier(supplierAddress), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(supplierAddress), balance, unit)]))
184184 }
185185
186186
187187
188188 @Callable(i)
189189 func voteCommit (item,hash,user) = {
190190 let commits = getValueCommitsCount(item)
191191 let status = getValueItemStatus(item)
192192 if ((commits >= VOTERS))
193193 then throw("Reached max n. of votes")
194194 else if ((getValueCommit(item, user) != NONE))
195195 then throw((("User " + user) + " already voted for this item"))
196196 else if ((getKeyItemSupplier(item) == NONE))
197197 then throw("Item does not exist")
198198 else if (if ((status != NONE))
199199 then (status != VOTING)
200200 else false)
201201 then throw("It is not possible to vote now.")
202202 else WriteSet([DataEntry(getKeyCommit(item, user), hash), DataEntry(getKeyCommitCounts(item), (commits + 1)), DataEntry(getKeyItemStatus(item), if ((commits == VOTERS))
203203 then REVEAL
204204 else VOTING)])
205205 }
206206
207207
208208
209209 @Callable(i)
210210 func voteReveal (item,vote,salt,user) = {
211211 let status = getValueItemStatus(item)
212212 let commits = getValueCommitsCount(item)
213213 let newVoteCount = (getValueVoteCount(item, vote) + 1)
214214 if ((toBase58String(sha256(toBytes((vote + salt)))) != getValueCommit(item, user)))
215215 then throw((("Revealed Data for user " + user) + " is not valid."))
216216 else if ((VOTERS > commits))
217217 then throw("Reached max n. of votes")
218218 else if ((getValueReveal(item, user) != NONE))
219219 then throw((("User " + user) + " has already participated"))
220220 else if (if ((status != REVEAL))
221221 then (status != VOTING)
222222 else false)
223223 then throw("Wrong votation phase.")
224224 else if (if ((vote != FEATURED))
225225 then (vote != DELISTED)
226226 else false)
227227 then throw("Wrong vote value.")
228228 else if (if ((status == FEATURED))
229229 then true
230230 else (status == DELISTED))
231231 then throw("Vote has finished.")
232232 else WriteSet([DataEntry(getKeyReveal(item, user), vote), DataEntry(getKeyVoteCount(item, vote), newVoteCount), DataEntry(getKeyItemStatus(item), if ((newVoteCount >= QUORUM))
233233 then vote
234234 else VOTING)])
235235 }
236236
237237

github/deemru/w8io/169f3d6 
49.34 ms