tx · 8Q6qQTJxNYGn4KqABFLK8pBB3RyJUVckeA74sKvQzFWa

3N8X6wT7GZLavL2ayUQzwRD2kRFRSDyhkKS:  -0.01000000 Waves

2021.07.09 11:15 [1605823] smart account 3N8X6wT7GZLavL2ayUQzwRD2kRFRSDyhkKS > SELF 0.00000000 Waves

{ "type": 13, "id": "8Q6qQTJxNYGn4KqABFLK8pBB3RyJUVckeA74sKvQzFWa", "fee": 1000000, "feeAssetId": null, "timestamp": 1625818540847, "version": 2, "chainId": 84, "sender": "3N8X6wT7GZLavL2ayUQzwRD2kRFRSDyhkKS", "senderPublicKey": "7DT6yPGiY3eZiSytDKBx5ToZcjhem3SyxdX6Zz9fsMED", "proofs": [ "2jafkQLfLy5RmMF8ySkBv8z8KKQBLpPyQVXVnBzYsXdbzF28izWWw7qhTFKDuRmUWLKZPGzhafLTMah3svW3MxfL" ], "script": "base64:AAIFAAAAAAAABHMIAhIFCgMIAQgSAwoBCBIAEgQKAggIEgUKAwgICBoKCgJhMRIETk9ORRoUCgJhMhIOZ2V0TnVtYmVyQnlLZXkaCQoCYTMSA2tleRoJCgJhNBIDbnVtGg0KAmE1EgckbWF0Y2gwGgcKAmE2EgFhGhEKAmE3EgtnZXRTdHJCeUtleRoJCgJhOBIDc3RyGhUKAmE5Eg9nZXRLZXlJdGVtUHJpY2UaCgoCYjESBGl0ZW0aFwoCYjISEWdldFZhbHVlSXRlbVByaWNlGhsKAmIzEhVnZXRLZXlVc2VySXRlbUNvdW50ZXIaCgoCYjQSBHVzZXIaHQoCYjUSF2dldFZhbHVlVXNlckl0ZW1Db3VudGVyGhAKAmI2EgpnZXRLZXlJdGVtGg4KAmI3EghzdXBwbGllchoLCgJiOBIFdGl0bGUaFAoCYjkSDmdldEtleUl0ZW1EYXRhGhgKAmMxEhJnZXRLZXlJdGVtU3VwcGxpZXIaGgoCYzISFGdldFZhbHVlSXRlbVN1cHBsaWVyGhsKAmMzEhVnZXRLZXlCYWxhbmNlU3VwcGxpZXIaDQoCYzQSB2FjY291bnQaHQoCYzUSF2dldFZhbHVlQmFsYW5jZVN1cHBsaWVyGgwKAmM2EgZWT1RFUlMaDAoCYzcSBlFVT1JVTRoMCgJjOBIGVk9USU5HGgwKAmM5EgZSRVZFQUwaDgoCZDESCEZFQVRVUkVEGg4KAmQyEghERUxJU1RFRBoSCgJkMxIMZ2V0S2V5Q29tbWl0GhQKAmQ0Eg5nZXRWYWx1ZUNvbW1pdBoYCgJkNRISZ2V0S2V5Q29tbWl0c0NvdW50GhoKAmQ2EhRnZXRWYWx1ZUNvbW1pdHNDb3VudBoSCgJkNxIMZ2V0S2V5UmV2ZWFsGhQKAmQ4Eg5nZXRWYWx1ZVJldmVhbBoWCgJkORIQZ2V0S2V5SXRlbVN0YXR1cxoYCgJlMRISZ2V0VmFsdWVJdGVtU3RhdHVzGhUKAmUyEg9nZXRLZXlWb3RlQ291bnQaCgoCZTMSBHZvdGUaFwoCZTQSEWdldFZhbHVlVm90ZUNvdW50GhkKAmU1EhNnZXRFeHRBZGRyZXNzT3JhY2xlGhEKAmU2EgtCTEFDS0xJU1RFRBoiCgJlNxIcZ2V0RXh0S2V5SXRlbVdoaXRlTGlzdFN0YXR1cxok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", "height": 1605823, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: JCKsBDCyJt26BcjcicX2qTzRSaMoTLEDc2oDj4vn9iyN Next: 4xXcqbMedyXKeU6emzZNDwysCqiyTFpmqVG1ysNrxSzm Diff:
OldNewDifferences
100100 func getExtAddressOracle () = value(addressFromString("3MsbiyFyy8B3aN3kF8ntda474SPn4YMVkiq"))
101101
102102
103+let BLACKLISTED = "blacklist"
104+
103105 func getExtKeyItemWhiteListStatus (account) = (account + "_verifier_status")
104106
105107
123125 then throw("Purchase amount cannot be less than item price")
124126 else if ((getValueItemSupplier(item) != NONE))
125127 then throw("an item already exists")
126- else [StringEntry(getKeyItemSupplier(item), supplierAddress), IntegerEntry(getKeyItemPrice(item), price), StringEntry(getKeyItemData(item), data)]
128+ else if ((supplierWhiteList == BLACKLISTED))
129+ then throw("supplier's account has been blacklisted")
130+ else [StringEntry(getKeyItemSupplier(item), supplierAddress), IntegerEntry(getKeyItemPrice(item), price), StringEntry(getKeyItemData(item), data), StringEntry(getExtKeyItemWhiteListStatus(supplierAddress), supplierWhiteList)]
127131 }
128132
129133
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let NONE = "none"
55
66 func getNumberByKey (key) = {
77 let num = match getInteger(this, key) {
88 case a: Int =>
99 a
1010 case _ =>
1111 0
1212 }
1313 num
1414 }
1515
1616
1717 func getStrByKey (key) = {
1818 let str = match getString(this, key) {
1919 case a: String =>
2020 a
2121 case _ =>
2222 NONE
2323 }
2424 str
2525 }
2626
2727
2828 func getKeyItemPrice (item) = (item + "_price")
2929
3030
3131 func getValueItemPrice (item) = getNumberByKey(getKeyItemPrice(item))
3232
3333
3434 func getKeyUserItemCounter (user,item) = (((item + "_") + user) + "_cnt")
3535
3636
3737 func getValueUserItemCounter (user,item) = getNumberByKey(getKeyUserItemCounter(user, item))
3838
3939
4040 func getKeyItem (supplier,title) = ("item_" + toBase58String(sha256(toBytes((supplier + title)))))
4141
4242
4343 func getKeyItemData (item) = (item + "_data")
4444
4545
4646 func getKeyItemSupplier (item) = (item + "_owner")
4747
4848
4949 func getValueItemSupplier (item) = getStrByKey(getKeyItemSupplier(item))
5050
5151
5252 func getKeyBalanceSupplier (account) = (account + "_balance")
5353
5454
5555 func getValueBalanceSupplier (account) = getNumberByKey(getKeyBalanceSupplier(account))
5656
5757
5858 let VOTERS = 3
5959
6060 let QUORUM = 2
6161
6262 let VOTING = "voting"
6363
6464 let REVEAL = "reveal"
6565
6666 let FEATURED = "featured"
6767
6868 let DELISTED = "delisted"
6969
7070 func getKeyCommit (item,user) = (((item + "_") + user) + "_commit")
7171
7272
7373 func getValueCommit (item,user) = getStrByKey(getKeyCommit(item, user))
7474
7575
7676 func getKeyCommitsCount (item) = (item + "_comcnt")
7777
7878
7979 func getValueCommitsCount (item) = getNumberByKey(getKeyCommitsCount(item))
8080
8181
8282 func getKeyReveal (item,user) = (((item + "_") + user) + "_reveal")
8383
8484
8585 func getValueReveal (item,user) = getStrByKey(getKeyReveal(item, user))
8686
8787
8888 func getKeyItemStatus (item) = (item + "_status")
8989
9090
9191 func getValueItemStatus (item) = getStrByKey(getKeyItemStatus(item))
9292
9393
9494 func getKeyVoteCount (item,vote) = ((item + "_res:") + vote)
9595
9696
9797 func getValueVoteCount (item,vote) = getNumberByKey(getKeyVoteCount(item, vote))
9898
9999
100100 func getExtAddressOracle () = value(addressFromString("3MsbiyFyy8B3aN3kF8ntda474SPn4YMVkiq"))
101101
102102
103+let BLACKLISTED = "blacklist"
104+
103105 func getExtKeyItemWhiteListStatus (account) = (account + "_verifier_status")
104106
105107
106108 func getExtValueItemWhiteListStatus (oracle,account) = {
107109 let str = match getString(oracle, getExtKeyItemWhiteListStatus(account)) {
108110 case a: String =>
109111 a
110112 case _ =>
111113 NONE
112114 }
113115 str
114116 }
115117
116118
117119 @Callable(i)
118120 func addItem (title,price,data) = {
119121 let supplierAddress = toBase58String(i.caller.bytes)
120122 let item = getKeyItem(supplierAddress, title)
121123 let supplierWhiteList = getExtValueItemWhiteListStatus(getExtAddressOracle(), supplierAddress)
122124 if ((0 >= price))
123125 then throw("Purchase amount cannot be less than item price")
124126 else if ((getValueItemSupplier(item) != NONE))
125127 then throw("an item already exists")
126- else [StringEntry(getKeyItemSupplier(item), supplierAddress), IntegerEntry(getKeyItemPrice(item), price), StringEntry(getKeyItemData(item), data)]
128+ else if ((supplierWhiteList == BLACKLISTED))
129+ then throw("supplier's account has been blacklisted")
130+ else [StringEntry(getKeyItemSupplier(item), supplierAddress), IntegerEntry(getKeyItemPrice(item), price), StringEntry(getKeyItemData(item), data), StringEntry(getExtKeyItemWhiteListStatus(supplierAddress), supplierWhiteList)]
127131 }
128132
129133
130134
131135 @Callable(i)
132136 func purchase (item) = {
133137 let pmt = i.payments[0]
134138 if (isDefined(pmt.assetId))
135139 then throw("WAVES ONLY HHEUAWHEUAS")
136140 else {
137141 let userAddress = toBase58String(i.caller.bytes)
138142 let price = getValueItemPrice(item)
139143 let supplierAddress = getValueItemSupplier(item)
140144 if ((price > pmt.amount))
141145 then throw("Purchase amount cannot be less than item price")
142146 else if ((supplierAddress == NONE))
143147 then throw("Supplier does not exist")
144148 else [IntegerEntry(getKeyUserItemCounter(userAddress, item), (getValueUserItemCounter(userAddress, item) + 1)), IntegerEntry(getKeyBalanceSupplier(supplierAddress), (getValueBalanceSupplier(supplierAddress) + pmt.amount))]
145149 }
146150 }
147151
148152
149153
150154 @Callable(i)
151155 func withdraw () = {
152156 let supplierAddress = toBase58String(i.caller.bytes)
153157 let balance = getValueBalanceSupplier(supplierAddress)
154158 if ((0 >= balance))
155159 then throw("insuficient balance")
156160 else [IntegerEntry(getKeyBalanceSupplier(supplierAddress), 0), ScriptTransfer(addressFromStringValue(supplierAddress), balance, unit)]
157161 }
158162
159163
160164
161165 @Callable(i)
162166 func voteCommit (item,hash) = {
163167 let user = toBase58String(i.caller.bytes)
164168 let commits = getValueCommitsCount(item)
165169 let status = getValueItemStatus(item)
166170 if ((commits >= VOTERS))
167171 then throw("Reached max num of voters")
168172 else if ((getValueCommit(item, user) != NONE))
169173 then throw("b1")
170174 else if ((getKeyItemSupplier(item) == NONE))
171175 then throw("b2")
172176 else if (if ((status != NONE))
173177 then (status != VOTING)
174178 else false)
175179 then throw("b3")
176180 else [StringEntry(getKeyCommit(item, user), hash), IntegerEntry(getKeyCommitsCount(item), (commits + 1)), StringEntry(getKeyItemStatus(item), if ((commits == VOTERS))
177181 then REVEAL
178182 else VOTING)]
179183 }
180184
181185
182186
183187 @Callable(i)
184188 func voteReveal (item,vote,salt) = {
185189 let user = toBase58String(i.caller.bytes)
186190 let status = getValueItemStatus(item)
187191 let newVoteCount = (getValueVoteCount(item, vote) + 1)
188192 if ((toBase58String(sha256(toBytes((vote + salt)))) != getValueCommit(item, user)))
189193 then throw("Reveal data is not valid")
190194 else if ((VOTERS > getValueCommitsCount(item)))
191195 then throw("max num of voters hasnt reached yet")
192196 else if ((getValueReveal(item, user) != NONE))
193197 then throw("user has already participated")
194198 else if (if ((status != VOTING))
195199 then (status != REVEAL)
196200 else false)
197201 then throw("wrong status")
198202 else if (if ((vote != FEATURED))
199203 then (vote != DELISTED)
200204 else false)
201205 then throw("wrong vote")
202206 else if (if ((status == FEATURED))
203207 then true
204208 else (status == DELISTED))
205209 then throw("vote has finished")
206210 else [StringEntry(getKeyReveal(item, user), vote), IntegerEntry(getKeyVoteCount(item, vote), newVoteCount), StringEntry(getKeyItemStatus(item), if ((newVoteCount >= QUORUM))
207211 then vote
208212 else REVEAL)]
209213 }
210214
211215

github/deemru/w8io/873ac7e 
43.53 ms