tx · 2KE8FJUUBAf8ncJjPtLVsqZTTzupu6h1KSCi4yaShnuB

3Ms9sUb7W3L55LLGxeHWiqgTfdH9yn2mayb:  -0.05000000 Waves

2019.07.11 00:24 [580132] smart account 3Ms9sUb7W3L55LLGxeHWiqgTfdH9yn2mayb > SELF 0.00000000 Waves

{ "type": 13, "id": "2KE8FJUUBAf8ncJjPtLVsqZTTzupu6h1KSCi4yaShnuB", "fee": 5000000, "feeAssetId": null, "timestamp": 1562793856998, "version": 1, "sender": "3Ms9sUb7W3L55LLGxeHWiqgTfdH9yn2mayb", "senderPublicKey": "EqxYeyVhUovydeSa4i5eNH2x5c2833CXoXvbpZM6rNzw", "proofs": [ "4GastHq1Dj6c4Xngr2dyVsc69rmmix8uLEFMnf99qB35UrTY5is2aDz5ZoEbL6pSFFzz9ihyZvdEw9SvEGTUtCwV" ], "script": "base64:AAIDAAAAAAAAAAAAAAAkAAAAAAROT05FAgAAAARub25lAAAAAAZWT1RFUlMAAAAAAAAAAAMAAAAABlFVT1JVTQAAAAAAAAAAAgAAAAAGVk9USU5HAgAAAAZ2b3RpbmcAAAAABlJFVkVBTAIAAAAGcmV2ZWFsAAAAAAhGRUFUVVJFRAIAAAAIZmVhdHVyZWQAAAAACERFTElTVEVEAgAAAAhkZWxpc3RlZAAAAAAIdmVyaWZpZXICAAAAIzNNczlzVWI3VzNMNTVMTEd4ZUhXaXFnVGZkSDl5bjJtYXliAAAAAAhWRVJJRklFRAIAAAAIdmVyaWZpZWQAAAAAC0JMQUNLTElTVEVEAgAAAAlibGFja2xpc3QBAAAADmdldE51bWJlckJ5S2V5AAAAAQAAAANrZXkEAAAAA251bQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAUAAAADbnVtAQAAAAtnZXRTdHJCeUtleQAAAAEAAAADa2V5BAAAAANzdHIEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEFAAAABE5PTkUFAAAAA3N0cgEAAAAPZ2V0S2V5SXRlbVByaWNlAAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAABl9wcmljZQEAAAARZ2V0VmFsdWVJdGVtUHJpY2UAAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAAA9nZXRLZXlJdGVtUHJpY2UAAAABBQAAAARpdGVtAQAAABVnZXRLZXlVc2VySXRlbUNvdW50ZXIAAAACAAAABHVzZXIAAAAEaXRlbQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEaXRlbQIAAAABXwUAAAAEdXNlcgIAAAAEX2NudAEAAAAXZ2V0VmFsdWVVc2VySXRlbUNvdW50ZXIAAAACAAAABHVzZXIAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFWdldEtleVVzZXJJdGVtQ291bnRlcgAAAAIFAAAABHVzZXIFAAAABGl0ZW0BAAAACmdldEtleUl0ZW0AAAACAAAACHN1cHBsaWVyAAAABXRpdGxlCQABLAAAAAICAAAABWl0ZW1fCQACWAAAAAEJAAH3AAAAAQkAAZsAAAABCQABLAAAAAIFAAAACHN1cHBsaWVyBQAAAAV0aXRsZQEAAAAOZ2V0S2V5SXRlbURhdGEAAAABAAAABGl0ZW0JAAEsAAAAAgUAAAAEaXRlbQIAAAAFX2RhdGEBAAAAEmdldEtleUl0ZW1TdXBwbGllcgAAAAEAAAAEaXRlbQkAASwAAAACBQAAAARpdGVtAgAAAAZfb3duZXIBAAAAFGdldFZhbHVlSXRlbVN1cHBsaWVyAAAAAQAAAARpdGVtCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAASZ2V0S2V5SXRlbVN1cHBsaWVyAAAAAQUAAAAEaXRlbQEAAAAVZ2V0S2V5QmFsYW5jZVN1cHBsaWVyAAAAAQAAAAdhY2NvdW50CQABLAAAAAIFAAAAB2FjY291bnQCAAAACF9iYWxhbmNlAQAAABdnZXRWYWx1ZUJhbGFuY2VTdXBwbGllcgAAAAEAAAAHYWNjb3VudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFWdldEtleUJhbGFuY2VTdXBwbGllcgAAAAEFAAAAB2FjY291bnQBAAAADGdldEtleUNvbW1pdAAAAAIAAAAEaXRlbQAAAAR1c2VyCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARpdGVtAgAAAAFfBQAAAAR1c2VyAgAAAAdfY29tbWl0AQAAAA5nZXRWYWx1ZUNvbW1pdAAAAAIAAAAEaXRlbQAAAAR1c2VyCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAMZ2V0S2V5Q29tbWl0AAAAAgUAAAAEaXRlbQUAAAAEdXNlcgEAAAASZ2V0S2V5Q29tbWl0c0NvdW50AAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAAB19jb21jbnQBAAAAFGdldFZhbHVlQ29tbWl0c0NvdW50AAAAAQAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAASZ2V0S2V5Q29tbWl0c0NvdW50AAAAAQUAAAAEaXRlbQEAAAAMZ2V0S2V5UmV2ZWFsAAAAAgAAAARpdGVtAAAABHVzZXIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABGl0ZW0CAAAAAV8FAAAABHVzZXICAAAAB19yZXZlYWwBAAAADmdldFZhbHVlUmV2ZWFsAAAAAgAAAARpdGVtAAAABHVzZXIJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAAAxnZXRLZXlSZXZlYWwAAAACBQAAAARpdGVtBQAAAAR1c2VyAQAAABBnZXRLZXlJdGVtU3RhdHVzAAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAAB19zdGF0dXMBAAAAEmdldFZhbHVlSXRlbVN0YXR1cwAAAAEAAAAEaXRlbQkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAEGdldEtleUl0ZW1TdGF0dXMAAAABBQAAAARpdGVtAQAAAA9nZXRLZXlWb3RlQ291bnQAAAACAAAABGl0ZW0AAAAFdm91dGUJAAEsAAAAAgkAASwAAAACBQAAAARpdGVtAgAAAAVfcmVzOgUAAAAFdm91dGUBAAAAEmdldFZhbHVlVm91dGVDb3VudAAAAAIAAAAEaXRlbQAAAAV2b3V0ZQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAD2dldEtleVZvdGVDb3VudAAAAAIFAAAABGl0ZW0FAAAABXZvdXRlAQAAABNnZXRFeHRBZGRyZXNzT3JhY2xlAAAAAAkBAAAAB2V4dHJhY3QAAAABCQEAAAARYWRkcmVzc0Zyb21TdHJpbmcAAAABAgAAACMzTXM5c1ViN1czTDU1TExHeGVIV2lxZ1RmZEg5eW4ybWF5YgEAAAAeZ2V0RXh0VmFsdWVJdGVtV2hpdGVMaXN0U3RhdHVzAAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAAEF92ZXJpZmllcl9zdGF0dXMBAAAAG2dldEV4dEtleUl0ZW1XaXRlTGlzdFN0YXR1cwAAAAEAAAAHYWNjb3VudAkAASwAAAACBQAAAAdhY2NvdW50AgAAABBfdmVyaWZpZXJfc3RhdHVzAQAAAB1nZXRFeHRWYWx1ZUl0ZW1XaXRlTGlzdFN0YXR1cwAAAAIAAAAGb3JhY2xlAAAAB2FjY291bnQEAAAAA3N0cgQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAZvcmFjbGUJAQAAABtnZXRFeHRLZXlJdGVtV2l0ZUxpc3RTdGF0dXMAAAABBQAAAAdhY2NvdW50AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEFAAAABE5PTkUFAAAAA3N0cgAAAAYAAAABaQEAAAAHYWRkSXRlbQAAAAMAAAAFdGl0bGUAAAAFcHJpY2UAAAAEZGF0YQQAAAAPc3VwcGxpZXJBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAABGl0ZW0JAQAAAApnZXRLZXlJdGVtAAAAAgUAAAAPc3VwcGxpZXJBZGRyZXNzBQAAAAV0aXRsZQQAAAARc3VwcGxpZXJXaGl0ZUxpc3QJAQAAAB1nZXRFeHRWYWx1ZUl0ZW1XaXRlTGlzdFN0YXR1cwAAAAIJAQAAABNnZXRFeHRBZGRyZXNzT3JhY2xlAAAAAAUAAAAPc3VwcGxpZXJBZGRyZXNzAwkAAGcAAAACAAAAAAAAAAAABQAAAAVwcmljZQkAAAIAAAABAgAAAC5wdXJjaGFzZSBhbW91bnQgY2Fubm90IGJlIGxlc3MgdGhhbiBpdGVtIHByaWNlAwkBAAAAAiE9AAAAAgkBAAAAFGdldFZhbHVlSXRlbVN1cHBsaWVyAAAAAQUAAAAEaXRlbQUAAAAETk9ORQkAAAIAAAABAgAAABlBbiBpdGVtIGlzIGFsbHJlYWR5IGV4aXN0AwkAAAAAAAACBQAAAA9zdXBwbGllckFkZHJlc3MFAAAAC0JMQUNLTElTVEVECQAAAgAAAAECAAAAJXN1cHBsaWVyJ3MgYWNjb3VudCBoYXMgYmVlbiBibGFja2xpc3QJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABJnZXRLZXlJdGVtU3VwcGxpZXIAAAABBQAAAARpdGVtBQAAAA9zdXBwbGllckFkZHJlc3MJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAAA9nZXRLZXlJdGVtUHJpY2UAAAABBQAAAARpdGVtBQAAAAVwcmljZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAADmdldEtleUl0ZW1EYXRhAAAAAQUAAAAEaXRlbQUAAAAEZGF0YQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAG2dldEV4dEtleUl0ZW1XaXRlTGlzdFN0YXR1cwAAAAEFAAAAD3N1cHBsaWVyQWRkcmVzcwUAAAARc3VwcGxpZXJXaGl0ZUxpc3QFAAAAA25pbAAAAAFpAQAAAAhwdXJjaGFzZQAAAAEAAAAEaXRlbQQAAAADcG10CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkCQAAAgAAAAECAAAAIWNhbiBob2xkIHdhdmVzIG9ubHkgYXQgdGhlIG1vbWVudAQAAAALdXNlckFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAFcHJpY2UJAQAAABFnZXRWYWx1ZUl0ZW1QcmljZQAAAAEFAAAABGl0ZW0EAAAAD3N1cHBsaWVyQWRkcmVzcwkBAAAAFGdldFZhbHVlSXRlbVN1cHBsaWVyAAAAAQUAAAAEaXRlbQMJAABmAAAAAgUAAAAFcHJpY2UIBQAAAANwbXQAAAAGYW1vdW50CQAAAgAAAAECAAAALnB1cmNoYXNlIGFtb3VudCBjYW5ub3QgYmUgbGVzcyB0aGFuIGl0ZW0gcHJpY2UDCQAAZgAAAAIIBQAAAANwbXQAAAAGYW1vdW50BQAAAAVwcmljZQkAAAIAAAABAgAAADBwdXJjaGFzZSBhbW91bnQgY2Fubm90IGJlIGhpZ2hlciB0aGFuIGl0ZW0gcHJpY2UDCQAAAAAAAAIFAAAAD3N1cHBsaWVyQWRkcmVzcwUAAAAETk9ORQkAAAIAAAABAgAAABVzdXBwbGllciBpcyBub3QgZXhpc3QJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABVnZXRLZXlVc2VySXRlbUNvdW50ZXIAAAACBQAAAAt1c2VyQWRkcmVzcwUAAAAEaXRlbQkAAGQAAAACCQEAAAAXZ2V0VmFsdWVVc2VySXRlbUNvdW50ZXIAAAACBQAAAAt1c2VyQWRkcmVzcwUAAAAEaXRlbQAAAAAAAAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFWdldEtleUJhbGFuY2VTdXBwbGllcgAAAAEFAAAAD3N1cHBsaWVyQWRkcmVzcwkAAGQAAAACCQEAAAAXZ2V0VmFsdWVCYWxhbmNlU3VwcGxpZXIAAAABBQAAAA9zdXBwbGllckFkZHJlc3MIBQAAAANwbXQAAAAGYW1vdW50BQAAAANuaWwAAAABaQEAAAAId2l0aGRyYXcAAAAABAAAAA9zdXBwbGllckFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAHYmFsYW5jZQkBAAAAF2dldFZhbHVlQmFsYW5jZVN1cHBsaWVyAAAAAQUAAAAPc3VwcGxpZXJBZGRyZXNzAwkAAGcAAAACAAAAAAAAAAAABQAAAAdiYWxhbmNlCQAAAgAAAAECAAAAFGluc3VmZmljaWVudCBiYWxhbmNlCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFWdldEtleUJhbGFuY2VTdXBwbGllcgAAAAEFAAAAD3N1cHBsaWVyQWRkcmVzcwAAAAAAAAAAAAUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAAPc3VwcGxpZXJBZGRyZXNzBQAAAAdiYWxhbmNlBQAAAAR1bml0BQAAAANuaWwAAAABaQEAAAAKdm90ZUNvbW1pdAAAAAIAAAAEaXRlbQAAAARoYXNoBAAAAAR1c2VyCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAB2NvbW1pdHMJAQAAABRnZXRWYWx1ZUNvbW1pdHNDb3VudAAAAAEFAAAABGl0ZW0EAAAABnN0YXR1cwkBAAAAEmdldFZhbHVlSXRlbVN0YXR1cwAAAAEFAAAABGl0ZW0DCQAAZwAAAAIFAAAAB2NvbW1pdHMFAAAABlZPVEVS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", "chainId": 84, "height": 580132, "spentComplexity": 0 } View: original | compacted Prev: 351sypTm1cpvGeEF4jmUiqZqkQvnFNXeecGxVnBY3pyj Next: none Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-func getExtValueItemWhiteListStatus (item) = (item + "_verifier_status")
4+let NONE = "none"
55
6+let VOTERS = 3
7+
8+let QUORUM = 2
9+
10+let VOTING = "voting"
11+
12+let REVEAL = "reveal"
13+
14+let FEATURED = "featured"
15+
16+let DELISTED = "delisted"
617
718 let verifier = "3Ms9sUb7W3L55LLGxeHWiqgTfdH9yn2mayb"
819
920 let VERIFIED = "verified"
1021
1122 let BLACKLISTED = "blacklist"
23+
24+func getNumberByKey (key) = {
25+ let num = match getInteger(this, key) {
26+ case a: Int =>
27+ a
28+ case _ =>
29+ 0
30+ }
31+ num
32+ }
33+
34+
35+func getStrByKey (key) = {
36+ let str = match getString(this, key) {
37+ case a: String =>
38+ a
39+ case _ =>
40+ NONE
41+ }
42+ str
43+ }
44+
45+
46+func getKeyItemPrice (item) = (item + "_price")
47+
48+
49+func getValueItemPrice (item) = getNumberByKey(getKeyItemPrice(item))
50+
51+
52+func getKeyUserItemCounter (user,item) = (((item + "_") + user) + "_cnt")
53+
54+
55+func getValueUserItemCounter (user,item) = getNumberByKey(getKeyUserItemCounter(user, item))
56+
57+
58+func getKeyItem (supplier,title) = ("item_" + toBase58String(sha256(toBytes((supplier + title)))))
59+
60+
61+func getKeyItemData (item) = (item + "_data")
62+
63+
64+func getKeyItemSupplier (item) = (item + "_owner")
65+
66+
67+func getValueItemSupplier (item) = getStrByKey(getKeyItemSupplier(item))
68+
69+
70+func getKeyBalanceSupplier (account) = (account + "_balance")
71+
72+
73+func getValueBalanceSupplier (account) = getNumberByKey(getKeyBalanceSupplier(account))
74+
75+
76+func getKeyCommit (item,user) = (((item + "_") + user) + "_commit")
77+
78+
79+func getValueCommit (item,user) = getStrByKey(getKeyCommit(item, user))
80+
81+
82+func getKeyCommitsCount (item) = (item + "_comcnt")
83+
84+
85+func getValueCommitsCount (item) = getNumberByKey(getKeyCommitsCount(item))
86+
87+
88+func getKeyReveal (item,user) = (((item + "_") + user) + "_reveal")
89+
90+
91+func getValueReveal (item,user) = getStrByKey(getKeyReveal(item, user))
92+
93+
94+func getKeyItemStatus (item) = (item + "_status")
95+
96+
97+func getValueItemStatus (item) = getStrByKey(getKeyItemStatus(item))
98+
99+
100+func getKeyVoteCount (item,voute) = ((item + "_res:") + voute)
101+
102+
103+func getValueVouteCount (item,voute) = getNumberByKey(getKeyVoteCount(item, voute))
104+
105+
106+func getExtAddressOracle () = extract(addressFromString("3Ms9sUb7W3L55LLGxeHWiqgTfdH9yn2mayb"))
107+
108+
109+func getExtValueItemWhiteListStatus (item) = (item + "_verifier_status")
110+
111+
112+func getExtKeyItemWiteListStatus (account) = (account + "_verifier_status")
113+
114+
115+func getExtValueItemWiteListStatus (oracle,account) = {
116+ let str = match getString(oracle, getExtKeyItemWiteListStatus(account)) {
117+ case a: String =>
118+ a
119+ case _ =>
120+ NONE
121+ }
122+ str
123+ }
124+
125+
126+@Callable(i)
127+func addItem (title,price,data) = {
128+ let supplierAddress = toBase58String(i.caller.bytes)
129+ let item = getKeyItem(supplierAddress, title)
130+ let supplierWhiteList = getExtValueItemWiteListStatus(getExtAddressOracle(), supplierAddress)
131+ if ((0 >= price))
132+ then throw("purchase amount cannot be less than item price")
133+ else if ((getValueItemSupplier(item) != NONE))
134+ then throw("An item is allready exist")
135+ else if ((supplierAddress == BLACKLISTED))
136+ then throw("supplier's account has been blacklist")
137+ else WriteSet([DataEntry(getKeyItemSupplier(item), supplierAddress), DataEntry(getKeyItemPrice(item), price), DataEntry(getKeyItemData(item), data), DataEntry(getExtKeyItemWiteListStatus(supplierAddress), supplierWhiteList)])
138+ }
139+
140+
141+
142+@Callable(i)
143+func purchase (item) = {
144+ let pmt = extract(i.payment)
145+ if (isDefined(pmt.assetId))
146+ then throw("can hold waves only at the moment")
147+ else {
148+ let userAddress = toBase58String(i.caller.bytes)
149+ let price = getValueItemPrice(item)
150+ let supplierAddress = getValueItemSupplier(item)
151+ if ((price > pmt.amount))
152+ then throw("purchase amount cannot be less than item price")
153+ else if ((pmt.amount > price))
154+ then throw("purchase amount cannot be higher than item price")
155+ else if ((supplierAddress == NONE))
156+ then throw("supplier is not exist")
157+ else WriteSet([DataEntry(getKeyUserItemCounter(userAddress, item), (getValueUserItemCounter(userAddress, item) + 1)), DataEntry(getKeyBalanceSupplier(supplierAddress), (getValueBalanceSupplier(supplierAddress) + pmt.amount))])
158+ }
159+ }
160+
161+
162+
163+@Callable(i)
164+func withdraw () = {
165+ let supplierAddress = toBase58String(i.caller.bytes)
166+ let balance = getValueBalanceSupplier(supplierAddress)
167+ if ((0 >= balance))
168+ then throw("insufficient balance")
169+ else ScriptResult(WriteSet([DataEntry(getKeyBalanceSupplier(supplierAddress), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(supplierAddress), balance, unit)]))
170+ }
171+
172+
173+
174+@Callable(i)
175+func voteCommit (item,hash) = {
176+ let user = toBase58String(i.caller.bytes)
177+ let commits = getValueCommitsCount(item)
178+ let status = getValueItemStatus(item)
179+ if ((commits >= VOTERS))
180+ then throw("reached max num of vouters")
181+ else if ((getValueCommit(item, user) != NONE))
182+ then throw("user has allready participated")
183+ else if ((getKeyItemSupplier(item) == NONE))
184+ then throw("item dose not exist")
185+ else if (if ((status != NONE))
186+ then (status != VOTING)
187+ else false)
188+ then throw("vouting is not posible")
189+ else WriteSet([DataEntry(getKeyCommit(item, user), hash), DataEntry(getKeyCommitsCount(item), (commits + 1)), DataEntry(getKeyItemStatus(item), if ((commits == VOTERS))
190+ then REVEAL
191+ else VOTING)])
192+ }
193+
194+
195+
196+@Callable(i)
197+func voteReveal (item,vote,salt) = {
198+ let user = toBase58String(i.caller.bytes)
199+ let status = getValueItemStatus(item)
200+ let newVoteCount = getValueVouteCount(item, vote)
201+ if ((toBase58String(sha256(toBytes((vote + salt)))) != getValueCommit(item, user)))
202+ then throw("reveal data is not valid")
203+ else if ((VOTERS > getValueCommitsCount(item)))
204+ then throw("max num of hasn't reached yet")
205+ else if ((getValueReveal(item, user) != NONE))
206+ then throw("user has already participated")
207+ else if (if ((status != VOTING))
208+ then (status != REVEAL)
209+ else false)
210+ then throw("wrong status")
211+ else if (if ((vote != FEATURED))
212+ then (vote != DELISTED)
213+ else false)
214+ then throw("wrong vote")
215+ else if (if ((status == FEATURED))
216+ then true
217+ else (status == DELISTED))
218+ then throw("vote has finished")
219+ else WriteSet([DataEntry(getKeyReveal(item, user), vote), DataEntry(getKeyVoteCount(item, vote), newVoteCount), DataEntry(getKeyItemStatus(item), if ((newVoteCount >= QUORUM))
220+ then vote
221+ else REVEAL)])
222+ }
223+
224+
12225
13226 @Callable(i)
14227 func setStatus (supplier,status) = {
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-func getExtValueItemWhiteListStatus (item) = (item + "_verifier_status")
4+let NONE = "none"
55
6+let VOTERS = 3
7+
8+let QUORUM = 2
9+
10+let VOTING = "voting"
11+
12+let REVEAL = "reveal"
13+
14+let FEATURED = "featured"
15+
16+let DELISTED = "delisted"
617
718 let verifier = "3Ms9sUb7W3L55LLGxeHWiqgTfdH9yn2mayb"
819
920 let VERIFIED = "verified"
1021
1122 let BLACKLISTED = "blacklist"
23+
24+func getNumberByKey (key) = {
25+ let num = match getInteger(this, key) {
26+ case a: Int =>
27+ a
28+ case _ =>
29+ 0
30+ }
31+ num
32+ }
33+
34+
35+func getStrByKey (key) = {
36+ let str = match getString(this, key) {
37+ case a: String =>
38+ a
39+ case _ =>
40+ NONE
41+ }
42+ str
43+ }
44+
45+
46+func getKeyItemPrice (item) = (item + "_price")
47+
48+
49+func getValueItemPrice (item) = getNumberByKey(getKeyItemPrice(item))
50+
51+
52+func getKeyUserItemCounter (user,item) = (((item + "_") + user) + "_cnt")
53+
54+
55+func getValueUserItemCounter (user,item) = getNumberByKey(getKeyUserItemCounter(user, item))
56+
57+
58+func getKeyItem (supplier,title) = ("item_" + toBase58String(sha256(toBytes((supplier + title)))))
59+
60+
61+func getKeyItemData (item) = (item + "_data")
62+
63+
64+func getKeyItemSupplier (item) = (item + "_owner")
65+
66+
67+func getValueItemSupplier (item) = getStrByKey(getKeyItemSupplier(item))
68+
69+
70+func getKeyBalanceSupplier (account) = (account + "_balance")
71+
72+
73+func getValueBalanceSupplier (account) = getNumberByKey(getKeyBalanceSupplier(account))
74+
75+
76+func getKeyCommit (item,user) = (((item + "_") + user) + "_commit")
77+
78+
79+func getValueCommit (item,user) = getStrByKey(getKeyCommit(item, user))
80+
81+
82+func getKeyCommitsCount (item) = (item + "_comcnt")
83+
84+
85+func getValueCommitsCount (item) = getNumberByKey(getKeyCommitsCount(item))
86+
87+
88+func getKeyReveal (item,user) = (((item + "_") + user) + "_reveal")
89+
90+
91+func getValueReveal (item,user) = getStrByKey(getKeyReveal(item, user))
92+
93+
94+func getKeyItemStatus (item) = (item + "_status")
95+
96+
97+func getValueItemStatus (item) = getStrByKey(getKeyItemStatus(item))
98+
99+
100+func getKeyVoteCount (item,voute) = ((item + "_res:") + voute)
101+
102+
103+func getValueVouteCount (item,voute) = getNumberByKey(getKeyVoteCount(item, voute))
104+
105+
106+func getExtAddressOracle () = extract(addressFromString("3Ms9sUb7W3L55LLGxeHWiqgTfdH9yn2mayb"))
107+
108+
109+func getExtValueItemWhiteListStatus (item) = (item + "_verifier_status")
110+
111+
112+func getExtKeyItemWiteListStatus (account) = (account + "_verifier_status")
113+
114+
115+func getExtValueItemWiteListStatus (oracle,account) = {
116+ let str = match getString(oracle, getExtKeyItemWiteListStatus(account)) {
117+ case a: String =>
118+ a
119+ case _ =>
120+ NONE
121+ }
122+ str
123+ }
124+
125+
126+@Callable(i)
127+func addItem (title,price,data) = {
128+ let supplierAddress = toBase58String(i.caller.bytes)
129+ let item = getKeyItem(supplierAddress, title)
130+ let supplierWhiteList = getExtValueItemWiteListStatus(getExtAddressOracle(), supplierAddress)
131+ if ((0 >= price))
132+ then throw("purchase amount cannot be less than item price")
133+ else if ((getValueItemSupplier(item) != NONE))
134+ then throw("An item is allready exist")
135+ else if ((supplierAddress == BLACKLISTED))
136+ then throw("supplier's account has been blacklist")
137+ else WriteSet([DataEntry(getKeyItemSupplier(item), supplierAddress), DataEntry(getKeyItemPrice(item), price), DataEntry(getKeyItemData(item), data), DataEntry(getExtKeyItemWiteListStatus(supplierAddress), supplierWhiteList)])
138+ }
139+
140+
141+
142+@Callable(i)
143+func purchase (item) = {
144+ let pmt = extract(i.payment)
145+ if (isDefined(pmt.assetId))
146+ then throw("can hold waves only at the moment")
147+ else {
148+ let userAddress = toBase58String(i.caller.bytes)
149+ let price = getValueItemPrice(item)
150+ let supplierAddress = getValueItemSupplier(item)
151+ if ((price > pmt.amount))
152+ then throw("purchase amount cannot be less than item price")
153+ else if ((pmt.amount > price))
154+ then throw("purchase amount cannot be higher than item price")
155+ else if ((supplierAddress == NONE))
156+ then throw("supplier is not exist")
157+ else WriteSet([DataEntry(getKeyUserItemCounter(userAddress, item), (getValueUserItemCounter(userAddress, item) + 1)), DataEntry(getKeyBalanceSupplier(supplierAddress), (getValueBalanceSupplier(supplierAddress) + pmt.amount))])
158+ }
159+ }
160+
161+
162+
163+@Callable(i)
164+func withdraw () = {
165+ let supplierAddress = toBase58String(i.caller.bytes)
166+ let balance = getValueBalanceSupplier(supplierAddress)
167+ if ((0 >= balance))
168+ then throw("insufficient balance")
169+ else ScriptResult(WriteSet([DataEntry(getKeyBalanceSupplier(supplierAddress), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(supplierAddress), balance, unit)]))
170+ }
171+
172+
173+
174+@Callable(i)
175+func voteCommit (item,hash) = {
176+ let user = toBase58String(i.caller.bytes)
177+ let commits = getValueCommitsCount(item)
178+ let status = getValueItemStatus(item)
179+ if ((commits >= VOTERS))
180+ then throw("reached max num of vouters")
181+ else if ((getValueCommit(item, user) != NONE))
182+ then throw("user has allready participated")
183+ else if ((getKeyItemSupplier(item) == NONE))
184+ then throw("item dose not exist")
185+ else if (if ((status != NONE))
186+ then (status != VOTING)
187+ else false)
188+ then throw("vouting is not posible")
189+ else WriteSet([DataEntry(getKeyCommit(item, user), hash), DataEntry(getKeyCommitsCount(item), (commits + 1)), DataEntry(getKeyItemStatus(item), if ((commits == VOTERS))
190+ then REVEAL
191+ else VOTING)])
192+ }
193+
194+
195+
196+@Callable(i)
197+func voteReveal (item,vote,salt) = {
198+ let user = toBase58String(i.caller.bytes)
199+ let status = getValueItemStatus(item)
200+ let newVoteCount = getValueVouteCount(item, vote)
201+ if ((toBase58String(sha256(toBytes((vote + salt)))) != getValueCommit(item, user)))
202+ then throw("reveal data is not valid")
203+ else if ((VOTERS > getValueCommitsCount(item)))
204+ then throw("max num of hasn't reached yet")
205+ else if ((getValueReveal(item, user) != NONE))
206+ then throw("user has already participated")
207+ else if (if ((status != VOTING))
208+ then (status != REVEAL)
209+ else false)
210+ then throw("wrong status")
211+ else if (if ((vote != FEATURED))
212+ then (vote != DELISTED)
213+ else false)
214+ then throw("wrong vote")
215+ else if (if ((status == FEATURED))
216+ then true
217+ else (status == DELISTED))
218+ then throw("vote has finished")
219+ else WriteSet([DataEntry(getKeyReveal(item, user), vote), DataEntry(getKeyVoteCount(item, vote), newVoteCount), DataEntry(getKeyItemStatus(item), if ((newVoteCount >= QUORUM))
220+ then vote
221+ else REVEAL)])
222+ }
223+
224+
12225
13226 @Callable(i)
14227 func setStatus (supplier,status) = {
15228 let account = toBase58String(i.caller.bytes)
16229 if ((account != verifier))
17230 then throw("only oracle verifier are able manage WhiteList")
18231 else if (if ((status != VERIFIED))
19232 then (status != BLACKLISTED)
20233 else false)
21234 then throw("wrong status")
22235 else WriteSet([DataEntry(getExtValueItemWhiteListStatus(supplier), status)])
23236 }
24237
25238

github/deemru/w8io/169f3d6 
34.65 ms