tx · VCyz55DrHA7ssaQC2qnfheGS55MNjxaJLP7Kqi6bXK1

3MovmZoJtqutkf49oGXHzABSMUQ7HU5Dcg7:  -0.01400000 Waves

2021.07.31 04:34 [1637154] smart account 3MovmZoJtqutkf49oGXHzABSMUQ7HU5Dcg7 > SELF 0.00000000 Waves

{ "type": 13, "id": "VCyz55DrHA7ssaQC2qnfheGS55MNjxaJLP7Kqi6bXK1", "fee": 1400000, "feeAssetId": null, "timestamp": 1627695220019, "version": 2, "chainId": 84, "sender": "3MovmZoJtqutkf49oGXHzABSMUQ7HU5Dcg7", "senderPublicKey": "3tp5fNYyPi4jMnkf6s1k4kBqvJ7nm57SxzvLyi8RkxT2", "proofs": [ "41vT4hi7Jxx2AS33bWUed3tmi7PKVeAExZuCo9TpAGK1xhcdMpUqqrQFGpHAbMfUK3NqZbtE4suouuAnFuPc9YcJ" ], "script": "base64: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AAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAABAAAAF2dldFZhbHVlVXNlckl0ZW1Db3VudGVyAAAAAgAAAAR1c2VyAAAABGl0ZW0EAAAAEnVzZXJJdGVtQ291bnRlcktleQkBAAAAFWdldEtleVVzZXJJdGVtQ291bnRlcgAAAAIFAAAABHVzZXIFAAAABGl0ZW0EAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAASdXNlckl0ZW1Db3VudGVyS2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAABAAAAEWdldFZhbHVlSXRlbVByaWNlAAAAAQAAAARpdGVtBAAAAAxrZXlJdGVtUHJpY2UJAQAAAA9nZXRLZXlJdGVtUHJpY2UAAAABBQAAAARpdGVtCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzBQAAAAxrZXlJdGVtUHJpY2UBAAAAFGdldFZhbHVlSXRlbVN1cHBsaWVyAAAAAQAAAAdhY2NvdW50CQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAASZ2V0S2V5SXRlbVN1cHBsaWVyAAAAAQUAAAAHYWNjb3VudAEAAAAOZ2V0VmFsdWVDb21taXQAAAACAAAABGl0ZW0AAAAEdXNlcgkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAADGdldEtleUNvbW1pdAAAAAIFAAAABGl0ZW0FAAAABHVzZXIBAAAAFGdldFZhbHVlQ29tbWl0c0NvdW50AAAAAQAAAARpdGVtCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQkBAAAAEmdldEtleUNvbW1pdHNDb3VudAAAAAEFAAAABGl0ZW0BAAAADmdldFZhbHVlUmV2ZWFsAAAAAgAAAARpdGVtAAAABHVzZXIJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAAxnZXRLZXlSZXZlYWwAAAACBQAAAARpdGVtBQAAAAR1c2VyAQAAABJnZXRWYWx1ZUl0ZW1TdGF0dXMAAAABAAAABGl0ZW0JAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABBnZXRL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bmlsAAAAAWkBAAAACHB1cmNoYXNlAAAAAQAAAARpdGVtBAAAAANwbXQJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAADCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkCQAAAgAAAAECAAAAKVlvdSBjYW4gYnV5IHRva2VucyBvbmx5IHdpdGggV2F2ZXMgdG9rZW5zBAAAAAt1c2VyQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAVwcmljZQkBAAAAEWdldFZhbHVlSXRlbVByaWNlAAAAAQUAAAAEaXRlbQQAAAAIc3VwcGxpZXIJAQAAABRnZXRWYWx1ZUl0ZW1TdXBwbGllcgAAAAEFAAAABGl0ZW0DCQAAZgAAAAIFAAAABXByaWNlCAUAAAADcG10AAAABmFtb3VudAkAAAIAAAABAgAAAC5QdXJjaGFzZSBhbW91bnQgY2Fubm90IGJlIGxlc3MgdGhhbiBpdGVtIHByaWNlAwkAAGYAAAACCAUAAAADcG10AAAABmFtb3VudAUAAAAFcHJpY2UJAAACAAAAAQIAAAAwUHVyY2hhc2UgYW1vdW50IGNhbm5vdCBiZSBoaWdoZXIgdGhhbiBpdGVtIHByaWNlAwkAAAAAAAACBQAAAAhzdXBwbGllcgUAAAAETk9ORQkAAAIAAAABAgAAABhTdXBwbGllciBkb2VzIG5vdCBleGlzdHMEAAAAD3VzZXJJdGVtQ291bnRlcgkBAAAAFWdldEtleVVzZXJJdGVtQ291bnRlcgAAAAIFAAAAC3VzZXJBZGRyZXNzBQAAAARpdGVtBAAAABduZXdWYWx1ZVVzZXJJdGVtQ291bnRlcgkAAGQAAAACCQEAAAAXZ2V0VmFsdWVVc2VySXRlbUNvdW50ZXIAAAACBQAAAAt1c2VyQWRkcmVzcwUAAAAEaXRlbQAAAAAAAAAAAQQAAAASc3VwcGxpZXJCYWxhbmNlS2V5CQEAAAAVZ2V0S2V5QmFsYW5jZVN1cHBsaWVyAAAAAQUAAAAIc3VwcGxpZXIEAAAAEm5ld1N1cHBsaWVyQmFsYW5jZQkAAGQAAAACCQEAAAAXZ2V0VmFsdWVCYWxhbmNlU3VwcGxpZXIAAAABBQAAAAhz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", "height": 1637154, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: gNQTakaPDe32YC6Dd7Y3uhJtHC47eLb2zPfHSUSL2oa Next: GYujRyAXesV6ihRh3Q5zWD9ZQAigXjpxVarDn1f5gaEv Diff:
OldNewDifferences
154154 let supplier = toBase58String(i.caller.bytes)
155155 let account = getSupplierAccount(supplier)
156156 let itemSupplier = getValueItemSupplier(item)
157- if ((account == NONE))
158- then throw("You should register as supplier to remove an item")
159- else if (if ((item == NONE))
160- then true
161- else (supplier != itemSupplier))
162- then throw(("You don't owned item " + item))
163- else [StringEntry(getKeyItemTitle(item), title), IntegerEntry(getKeyItemPrice(item), price), StringEntry(getKeyItemData(item), data)]
157+ if ((1 == 1))
158+ then throw(((((("-> " + supplier) + " === ") + itemSupplier) + " -- / ") + item))
159+ else if ((account == NONE))
160+ then throw("You should register as supplier to remove an item")
161+ else if (if ((item == NONE))
162+ then true
163+ else (supplier != itemSupplier))
164+ then throw(("You don't owned item " + item))
165+ else [StringEntry(getKeyItemTitle(item), title), IntegerEntry(getKeyItemPrice(item), price), StringEntry(getKeyItemData(item), data)]
164166 }
165167
166168
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
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 FEATURED = "featured"
1111
1212 let DELISTED = "delisted"
1313
1414 let VOTING = "voting"
1515
1616 let REVEAL = "reveal"
1717
1818 func getStringByKey (key) = match getString(this, key) {
1919 case a: String =>
2020 a
2121 case _ =>
2222 NONE
2323 }
2424
2525
2626 func getIntegerByKey (key) = match getInteger(this, key) {
2727 case a: Int =>
2828 a
2929 case _ =>
3030 0
3131 }
3232
3333
3434 func getKeySupplierAccount (account) = (account + "_account")
3535
3636
3737 func getSupplierAccount (account) = getStringByKey(getKeySupplierAccount(account))
3838
3939
4040 func getKeyItem (supplier,title) = {
4141 let supplierTitle = (supplier + title)
4242 ("item_" + toBase58String(sha256(toBytes(supplierTitle))))
4343 }
4444
4545
4646 func getKeyItemSupplier (item) = (item + "_owner")
4747
4848
4949 func getKeyItemTitle (item) = (item + "_title")
5050
5151
5252 func getKeyItemPrice (item) = (item + "_price")
5353
5454
5555 func getKeyItemData (item) = (item + "_data")
5656
5757
5858 func getKeyCommit (item,user) = (((item + "_") + user) + "_commit")
5959
6060
6161 func getKeyCommitsCount (item) = (item + "_cmtcnt")
6262
6363
6464 func getKeyReveal (item,user) = (((item + "_") + user) + "_reveal")
6565
6666
6767 func getKeyItemStatus (item) = (item + "_status")
6868
6969
7070 func getKeyVotesCount (item,vote) = ((item + "_res:") + vote)
7171
7272
7373 func getKeyUserItemCounter (user,item) = (((item + "_") + user) + "_cnt")
7474
7575
7676 func getKeyBalanceSupplier (account) = (account + "_balance")
7777
7878
7979 func getValueBalanceSupplier (account) = {
8080 let supplierBalanceKey = getKeyBalanceSupplier(account)
8181 match getInteger(this, supplierBalanceKey) {
8282 case a: Int =>
8383 a
8484 case _ =>
8585 0
8686 }
8787 }
8888
8989
9090 func getValueUserItemCounter (user,item) = {
9191 let userItemCounterKey = getKeyUserItemCounter(user, item)
9292 match getInteger(this, userItemCounterKey) {
9393 case a: Int =>
9494 a
9595 case _ =>
9696 0
9797 }
9898 }
9999
100100
101101 func getValueItemPrice (item) = {
102102 let keyItemPrice = getKeyItemPrice(item)
103103 getIntegerValue(this, keyItemPrice)
104104 }
105105
106106
107107 func getValueItemSupplier (account) = getStringByKey(getKeyItemSupplier(account))
108108
109109
110110 func getValueCommit (item,user) = getStringByKey(getKeyCommit(item, user))
111111
112112
113113 func getValueCommitsCount (item) = getIntegerByKey(getKeyCommitsCount(item))
114114
115115
116116 func getValueReveal (item,user) = getStringByKey(getKeyReveal(item, user))
117117
118118
119119 func getValueItemStatus (item) = getStringByKey(getKeyItemStatus(item))
120120
121121
122122 func getValueVotesCount (item,vote) = getIntegerByKey(getKeyVotesCount(item, vote))
123123
124124
125125 @Callable(i)
126126 func registerSupplier (data) = {
127127 let supplier = toBase58String(i.caller.bytes)
128128 let account = getSupplierAccount(supplier)
129129 if ((account != NONE))
130130 then throw("This address has already registred as supplier")
131131 else [StringEntry(getKeySupplierAccount(supplier), data)]
132132 }
133133
134134
135135
136136 @Callable(i)
137137 func addItem (title,price,data) = {
138138 let supplier = toBase58String(i.caller.bytes)
139139 let account = getSupplierAccount(supplier)
140140 let item = getKeyItem(supplier, title)
141141 if ((account == NONE))
142142 then throw("You should register as supplier to add an item")
143143 else if ((0 >= price))
144144 then throw("Purchase amount cannot be less than item price")
145145 else if ((getValueItemSupplier(item) != NONE))
146146 then throw("An item already exists")
147147 else [StringEntry(getKeyItemSupplier(item), supplier), StringEntry(getKeyItemTitle(item), title), IntegerEntry(getKeyItemPrice(item), price), StringEntry(getKeyItemData(item), data)]
148148 }
149149
150150
151151
152152 @Callable(i)
153153 func updateItem (item,title,price,data) = {
154154 let supplier = toBase58String(i.caller.bytes)
155155 let account = getSupplierAccount(supplier)
156156 let itemSupplier = getValueItemSupplier(item)
157- if ((account == NONE))
158- then throw("You should register as supplier to remove an item")
159- else if (if ((item == NONE))
160- then true
161- else (supplier != itemSupplier))
162- then throw(("You don't owned item " + item))
163- else [StringEntry(getKeyItemTitle(item), title), IntegerEntry(getKeyItemPrice(item), price), StringEntry(getKeyItemData(item), data)]
157+ if ((1 == 1))
158+ then throw(((((("-> " + supplier) + " === ") + itemSupplier) + " -- / ") + item))
159+ else if ((account == NONE))
160+ then throw("You should register as supplier to remove an item")
161+ else if (if ((item == NONE))
162+ then true
163+ else (supplier != itemSupplier))
164+ then throw(("You don't owned item " + item))
165+ else [StringEntry(getKeyItemTitle(item), title), IntegerEntry(getKeyItemPrice(item), price), StringEntry(getKeyItemData(item), data)]
164166 }
165167
166168
167169
168170 @Callable(i)
169171 func removeItem (item) = {
170172 let supplier = toBase58String(i.caller.bytes)
171173 let account = getSupplierAccount(supplier)
172174 let itemSupplier = getValueItemSupplier(item)
173175 if ((account == NONE))
174176 then throw("You should register as supplier to remove an item")
175177 else if (if ((item == NONE))
176178 then true
177179 else (supplier != itemSupplier))
178180 then throw(("You don't owned item " + item))
179181 else [DeleteEntry(getKeyItemSupplier(item)), DeleteEntry(getKeyItemTitle(item)), DeleteEntry(getKeyItemPrice(item)), DeleteEntry(getKeyItemData(item))]
180182 }
181183
182184
183185
184186 @Callable(i)
185187 func purchase (item) = {
186188 let pmt = i.payments[0]
187189 if (isDefined(pmt.assetId))
188190 then throw("You can buy tokens only with Waves tokens")
189191 else {
190192 let userAddress = toBase58String(i.caller.bytes)
191193 let price = getValueItemPrice(item)
192194 let supplier = getValueItemSupplier(item)
193195 if ((price > pmt.amount))
194196 then throw("Purchase amount cannot be less than item price")
195197 else if ((pmt.amount > price))
196198 then throw("Purchase amount cannot be higher than item price")
197199 else if ((supplier == NONE))
198200 then throw("Supplier does not exists")
199201 else {
200202 let userItemCounter = getKeyUserItemCounter(userAddress, item)
201203 let newValueUserItemCounter = (getValueUserItemCounter(userAddress, item) + 1)
202204 let supplierBalanceKey = getKeyBalanceSupplier(supplier)
203205 let newSupplierBalance = (getValueBalanceSupplier(supplier) + pmt.amount)
204206 [IntegerEntry(userItemCounter, newValueUserItemCounter), IntegerEntry(supplierBalanceKey, newSupplierBalance)]
205207 }
206208 }
207209 }
208210
209211
210212
211213 @Callable(i)
212214 func voteCommit (item,hash) = {
213215 let user = toBase58String(i.caller.bytes)
214216 let commitsCount = getValueCommitsCount(item)
215217 let status = getValueItemStatus(item)
216218 if ((commitsCount >= VOTERS))
217219 then throw("Reached max number of voters")
218220 else if ((getValueCommit(item, user) != NONE))
219221 then throw("You voted already")
220222 else if ((getKeyItemSupplier(item) == NONE))
221223 then throw("Item does not exists")
222224 else if (if ((status != NONE))
223225 then (status != VOTING)
224226 else false)
225227 then throw("Voting is not active for this item now")
226228 else {
227229 let newStatus = if ((commitsCount == VOTERS))
228230 then REVEAL
229231 else VOTING
230232 [StringEntry(getKeyCommit(item, user), hash), IntegerEntry(getKeyCommitsCount(item), (commitsCount + 1)), StringEntry(getKeyItemStatus(item), newStatus)]
231233 }
232234 }
233235
234236
235237
236238 @Callable(i)
237239 func voteReveal (item,vote,salt) = {
238240 let user = toBase58String(i.caller.bytes)
239241 let status = getValueItemStatus(item)
240242 let newVotesCount = (getValueVotesCount(item, vote) + 1)
241243 let saltedVote = toBase58String(sha256(toBytes(((item + vote) + salt))))
242244 if ((saltedVote != getValueCommit(item, user)))
243245 then throw("Reveal data is not valid")
244246 else if ((VOTERS > getValueCommitsCount(item)))
245247 then throw("Max number of voters not reached")
246248 else if ((getValueReveal(item, user) != NONE))
247249 then throw("You voted already")
248250 else if (if ((status != VOTING))
249251 then (status != REVEAL)
250252 else false)
251253 then throw("Voting is not active for this item now")
252254 else if (if ((vote != FEATURED))
253255 then (vote != DELISTED)
254256 else false)
255257 then throw("Provided voting option is incorrect")
256258 else {
257259 let newStatus = if ((newVotesCount >= QUORUM))
258260 then vote
259261 else REVEAL
260262 [StringEntry(getKeyReveal(item, user), vote), IntegerEntry(getKeyVotesCount(item, user), newVotesCount), StringEntry(getKeyItemStatus(item), newStatus)]
261263 }
262264 }
263265
264266
265267 @Verifier(tx)
266268 func verify () = match tx {
267269 case t: SetScriptTransaction =>
268270 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
269271 case _ =>
270272 false
271273 }
272274

github/deemru/w8io/026f985 
37.44 ms