tx · D41TLMtkcGZvmDMKpiW65tFGTht3f45Rao9FGtFJuk3r

3MzvMg5dRiLMVdHJ3v4AfeCXttmaSPHdoVN:  -0.01400000 Waves

2019.11.17 22:05 [769534] smart account 3MzvMg5dRiLMVdHJ3v4AfeCXttmaSPHdoVN > SELF 0.00000000 Waves

{ "type": 13, "id": "D41TLMtkcGZvmDMKpiW65tFGTht3f45Rao9FGtFJuk3r", "fee": 1400000, "feeAssetId": null, "timestamp": 1574017533128, "version": 1, "sender": "3MzvMg5dRiLMVdHJ3v4AfeCXttmaSPHdoVN", "senderPublicKey": "GvoCzLxrhCgZzNLksqhf43ehht8jTASRqtGBmXaNn7Jq", "proofs": [ "c3Y95LxYcdShpVq4zVQsbQEVQWbLqKXfi6xmSQco5ZPrmzy5AazMDkYpejeyDsyeCmLcxXWL1HxAgbo591vtj6o" ], "script": "base64:AAIDAAAAAAAAABYIARIAEgMKAQESBQoDCAEIEgQKAggIAAAAHAAAAAAETk9ORQIAAAAEbm9uZQAAAAAGVk9URVJTAAAAAAAAAAADAAAAAAZRVU9SVU0AAAAAAAAAAAIAAAAABlZPVElORwIAAAAGdm90aW5nAAAAAAZSRVZFQUwCAAAABnJldmVhbAAAAAAIRkVBVFVSRUQCAAAACGZlYXR1cmVkAAAAAAhERUxJU1RFRAIAAAAIZGVsaXN0ZWQBAAAADmdldE51bWJlckJ5S2V5AAAAAQAAAANrZXkEAAAAA251bQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAUAAAADbnVtAQAAAAtnZXRTdHJCeUtleQAAAAEAAAADa2V5BAAAAANzdHIEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEFAAAABE5PTkUFAAAAA3N0cgEAAAAPZ2V0S2V5SXRlbVByaWNlAAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAABl9wcmljZQEAAAARZ2V0VmFsdWVJdGVtUHJpY2UAAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAAA9nZXRLZXlJdGVtUHJpY2UAAAABBQAAAARpdGVtAQAAABVnZXRLZXlVc2VySXRlbUNvdW50ZXIAAAACAAAABHVzZXIAAAAEaXRlbQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEaXRlbQIAAAABXwUAAAAEdXNlcgIAAAAEX2NudAEAAAAKZ2V0S2V5SXRlbQAAAAIAAAAIc3VwcGxpZXIAAAAFdGl0bGUJAAEsAAAAAgIAAAAFaXRlbV8JAAJYAAAAAQkAAfcAAAABCQABmwAAAAEJAAEsAAAAAgUAAAAIc3VwcGxpZXIFAAAABXRpdGxlAQAAAA5nZXRLZXlJdGVtRGF0YQAAAAEAAAAEaXRlbQkAASwAAAACBQAAAARpdGVtAgAAAAVfZGF0YQEAAAASZ2V0S2V5SXRlbVN1cHBsaWVyAAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAABl9vd25lcgEAAAAUZ2V0VmFsdWVJdGVtU3VwcGxpZXIAAAABAAAABGl0ZW0JAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABJnZXRLZXlJdGVtU3VwcGxpZXIAAAABBQAAAARpdGVtAQAAABVnZXRLZXlCYWxhbmNlU3VwcGxpZXIAAAABAAAAB2FjY291bnQJAAEsAAAAAgUAAAAHYWNjb3VudAIAAAAIX2JhbGFuY2UBAAAAF2dldFZhbHVlQmFsYW5jZVN1cHBsaWVyAAAAAQAAAAdhY2NvdW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAVZ2V0S2V5QmFsYW5jZVN1cHBsaWVyAAAAAQUAAAAHYWNjb3VudAEAAAAMZ2V0S2V5Q29tbWl0AAAAAgAAAARpdGVtAAAABHVzZXIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABGl0ZW0CAAAAAV8FAAAABHVzZXICAAAAB19jb21taXQBAAAADmdldFZhbHVlQ29tbWl0AAAAAgAAAARpdGVtAAAABHVzZXIJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAAAxnZXRLZXlDb21taXQAAAACBQAAAARpdGVtBQAAAAR1c2VyAQAAABJnZXRLZXlDb21taXRzQ291bnQAAAABAAAABGl0ZW0JAAEsAAAAAgUAAAAEaXRlbQIAAAAHX2NvbWN0bgEAAAAUZ2V0VmFsdWVDb21taXRzQ291bnQAAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABJnZXRLZXlDb21taXRzQ291bnQAAAABBQAAAARpdGVtAQAAAAxnZXRLZXlSZXZlYWwAAAACAAAABGl0ZW0AAAAEdXNlcgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEaXRlbQIAAAABXwUAAAAEdXNlcgIAAAAHX3JldmVhbAEAAAAOZ2V0VmFsdWVSZXZlYWwAAAACAAAABGl0ZW0AAAAEdXNlcgkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAADGdldEtleVJldmVhbAAAAAIFAAAABGl0ZW0FAAAA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", "chainId": 84, "height": 769534, "spentComplexity": 0 } View: original | compacted Prev: 7Lvqugt9H6zB6HVFDatBnnvTkNmWMNM2yNhFBZCGdfgk Next: 7hFmwEj7tsA1GPPDmqEX7hzjYL2U2T7T2acC183P1CJT Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let NONE = "none"
5+
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"
17+
18+func getNumberByKey (key) = {
19+ let num = match getInteger(this, key) {
20+ case a: Int =>
21+ a
22+ case _ =>
23+ 0
24+ }
25+ num
26+ }
27+
28+
29+func getStrByKey (key) = {
30+ let str = match getString(this, key) {
31+ case a: String =>
32+ a
33+ case _ =>
34+ NONE
35+ }
36+ str
37+ }
38+
39+
40+func getKeyItemPrice (item) = (item + "_price")
41+
42+
43+func getValueItemPrice (item) = getNumberByKey(getKeyItemPrice(item))
44+
45+
46+func getKeyUserItemCounter (user,item) = (((item + "_") + user) + "_cnt")
47+
48+
49+func getKeyItem (supplier,title) = ("item_" + toBase58String(sha256(toBytes((supplier + title)))))
50+
51+
52+func getKeyItemData (item) = (item + "_data")
53+
54+
55+func getKeyItemSupplier (item) = (item + "_owner")
56+
57+
58+func getValueItemSupplier (item) = getStrByKey(getKeyItemSupplier(item))
59+
60+
61+func getKeyBalanceSupplier (account) = (account + "_balance")
62+
63+
64+func getValueBalanceSupplier (account) = getNumberByKey(getKeyBalanceSupplier(account))
65+
66+
67+func getKeyCommit (item,user) = (((item + "_") + user) + "_commit")
68+
69+
70+func getValueCommit (item,user) = getStrByKey(getKeyCommit(item, user))
71+
72+
73+func getKeyCommitsCount (item) = (item + "_comctn")
74+
75+
76+func getValueCommitsCount (item) = getNumberByKey(getKeyCommitsCount(item))
77+
78+
79+func getKeyReveal (item,user) = (((item + "_") + user) + "_reveal")
80+
81+
82+func getValueReveal (item,user) = getStrByKey(getKeyReveal(item, user))
83+
84+
85+func getKeyItemStatus (item) = (item + "_status")
86+
87+
88+func getValueItemStatus (item) = getStrByKey(getKeyItemStatus(item))
89+
90+
91+func getKeyVoteCount (item,vote) = ((item + "_res:") + vote)
92+
93+
94+func getValueVoteCount (item,vote) = getNumberByKey(getKeyVoteCount(item, vote))
495
596
697 @Callable(i)
7-func foo () = WriteSet(nil)
98+func deposit () = {
99+ let pmt = extract(i.payment)
100+ if (isDefined(pmt.assetId))
101+ then throw("can hold waves only at the moment")
102+ else {
103+ let currentKey = toBase58String(i.caller.bytes)
104+ let currentAmount = match getInteger(this, currentKey) {
105+ case a: Int =>
106+ a
107+ case _ =>
108+ 0
109+ }
110+ let wlStsCurr = match getString(this, ("wl_sts_" + currentKey)) {
111+ case a: String =>
112+ a
113+ case _ =>
114+ throw("User has not been whitelisted")
115+ }
116+ let newAmount = (currentAmount + pmt.amount)
117+ WriteSet([DataEntry(currentKey, newAmount)])
118+ }
119+ }
120+
121+
122+
123+@Callable(i)
124+func withdraw (amount) = {
125+ let currentKey = toBase58String(i.caller.bytes)
126+ let currentAmount = match getInteger(this, currentKey) {
127+ case a: Int =>
128+ a
129+ case _ =>
130+ 0
131+ }
132+ let newAmount = (currentAmount - amount)
133+ if ((0 > amount))
134+ then throw("Can't withdraw negative amount")
135+ else if ((0 > newAmount))
136+ then throw("Not enough balance")
137+ else ScriptResult(WriteSet([DataEntry(currentKey, newAmount)]), TransferSet([ScriptTransfer(i.caller, amount, unit)]))
138+ }
139+
140+
141+
142+@Callable(i)
143+func addItem (title,price,data) = {
144+ let supplierAddress = toBase58String(i.caller.bytes)
145+ let item = getKeyItem(supplierAddress, title)
146+ if ((0 >= price))
147+ then throw("purchase amount cannot be less than item price")
148+ else if ((getValueItemSupplier(item) != NONE))
149+ then throw("an item is already exist")
150+ else WriteSet([DataEntry(getKeyItemSupplier(item), supplierAddress), DataEntry(getKeyItemPrice(item), price), DataEntry(getKeyItemData(item), data)])
151+ }
152+
153+
154+
155+@Callable(i)
156+func voteCommit (item,hash) = {
157+ let user = toBase58String(i.caller.bytes)
158+ let commits = getValueCommitsCount(item)
159+ let status = getValueItemStatus(item)
160+ if ((commits >= VOTERS))
161+ then throw("reached max num of voters")
162+ else if ((getValueCommit(item, user) != NONE))
163+ then throw("user has already participated")
164+ else if ((getKeyItemSupplier(item) == NONE))
165+ then throw("item does not exist")
166+ else if (if ((status != NONE))
167+ then (status != VOTING)
168+ else false)
169+ then throw("voting is not possible")
170+ else WriteSet([DataEntry(getKeyCommit(item, user), hash), DataEntry(getKeyCommitsCount(item), (commits + 1)), DataEntry(getKeyItemStatus(item), if ((commits == VOTERS))
171+ then REVEAL
172+ else VOTING)])
173+ }
8174
9175

github/deemru/w8io/873ac7e 
37.68 ms