tx · 7cZihdB6jum9cwmofEsk1q9K5juMWRe9d7QFZ5hhxtYo

3NB6ViLiZv3r5EdQ2Q8GA8GKpuwmG3zevAt:  -0.05000000 Waves

2019.08.16 21:38 [634014] smart account 3NB6ViLiZv3r5EdQ2Q8GA8GKpuwmG3zevAt > SELF 0.00000000 Waves

{ "type": 13, "id": "7cZihdB6jum9cwmofEsk1q9K5juMWRe9d7QFZ5hhxtYo", "fee": 5000000, "feeAssetId": null, "timestamp": 1565980594652, "version": 1, "sender": "3NB6ViLiZv3r5EdQ2Q8GA8GKpuwmG3zevAt", "senderPublicKey": "3ghbp6Z5eXoKniLSE8XPjn5od7gT1K7qhk6zANBhv9C3", "proofs": [ "2HjNfweBkEMLBsLX7fe6FTC6z9vmDjaNuFtud3GNacG7D1t3D7VRkiRovREydX5tpLYBSCm5QrCS7spnb1iuv6mu" ], "script": "base64:AAIDAAAAAAAAAAAAAAAlAAAAAA5vd25lclB1YmxpY2tleQEAAAAgJ+LupRtywYm1DtC2wa7+mcHTm1BkasCvRteam1vswWgAAAAADGFsbGljZVB1YmtleQEAAAAgdahQG7OF8VCvnmrXif7UUhoQjaCrm/2hFDfEk/59nDEAAAAACWJvYlB1YmtleQEAAAAgoHwmi+qXZSlN20yTARZQ9O8s6pUs/3qey7EnxhpjMk8AAAAADGNvb3BlclB1YmtleQEAAAAgU/w5K0kRwpKzXSOUcyJ72drbib04bPq1q9XqkXENjioAAAAABE5PTkUCAAAABG5vbmUAAAAABlZPVEVSUwAAAAAAAAAAAwAAAAAGUVVPUlVNAAAAAAAAAAACAAAAAAZWT1RJTkcCAAAABnZvdGluZwAAAAAGUkVWRUFMAgAAAAZyZXZlYWwAAAAACEZFQVRVUkVEAgAAAAhmZWF0dXJlZAAAAAAIREVMSVNURUQCAAAACGRlbGlzdGVkAAAAAAh2ZXJpZmllcgIAAAAjM01zOXNVYjdXM0w1NUxMR3hlSFdpcWdUZmRIOXluMm1heWIAAAAACFZFUklGSUVEAgAAAAh2ZXJpZmllZAAAAAALQkxBQ0tMSVNURUQCAAAACWJsYWNrbGlzdAAAAAASbWF4QXVjdGlvbkR1cmF0aW9uCQAAaAAAAAIAAAAAAAAABaAAAAAAAAAAAB4BAAAADmdldE51bWJlckJ5S2V5AAAAAQAAAANrZXkEAAAAA251bQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAUAAAADbnVtAQAAAAtnZXRTdHJCeUtleQAAAAEAAAADa2V5BAAAAANzdHIEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEFAAAABE5PTkUFAAAAA3N0cgEAAAAPZ2V0S2V5SXRlbVByaWNlAAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAABl9wcmljZQEAAAARZ2V0VmFsdWVJdGVtUHJpY2UAAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAAA9nZXRLZXlJdGVtUHJpY2UAAAABBQAAAARpdGVtAQAAABVnZXRLZXlVc2VySXRlbUNvdW50ZXIAAAACAAAABHVzZXIAAAAEaXRlbQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEaXRlbQIAAAABXwUAAAAEdXNlcgIAAAAEX2NudAEAAAAXZ2V0VmFsdWVVc2VySXRlbUNvdW50ZXIAAAACAAAABHVzZXIAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFWdldEtleVVzZXJJdGVtQ291bnRlcgAAAAIFAAAABHVzZXIFAAAABGl0ZW0BAAAACmdldEtleUl0ZW0AAAACAAAACHN1cHBsaWVyAAAABXRpdGxlCQABLAAAAAICAAAABWl0ZW1fCQACWAAAAAEJAAH3AAAAAQkAAZsAAAABCQABLAAAAAIFAAAACHN1cHBsaWVyBQAAAAV0aXRsZQEAAAAOZ2V0S2V5SXRlbURhdGEAAAABAAAABGl0ZW0JAAEsAAAAAgUAAAAEaXRlbQIAAAAFX2RhdGEBAAAAEmdldEtleUl0ZW1TdXBwbGllcgAAAAEAAAAEaXRlbQkAASwAAAACBQAAAARpdGVtAgAAAAZfb3duZXIBAAAAFGdldFZhbHVlSXRlbVN1cHBsaWVyAAAAAQAAAARpdGVtCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAASZ2V0S2V5SXRlbVN1cHBsaWVyAAAAAQUAAAAEaXRlbQEAAAAVZ2V0S2V5QmFsYW5jZVN1cHBsaWVyAAAAAQAAAAdhY2NvdW50CQABLAAAAAIFAAAAB2FjY291bnQCAAAACF9iYWxhbmNlAQAAABdnZXRWYWx1ZUJhbGFuY2VTdXBwbGllcgAAAAEAAAAHYWNjb3VudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFWdldEtleUJhbGFuY2VTdXBwbGllcgAAAAEFAAAAB2FjY291bnQBAAAADGdldEtleUNvbW1pdAAAAAIAAAAEaXRlbQAAAAR1c2VyCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARpdGVtAgAAAAFfBQAAAAR1c2VyAgAAAAdfY29tbWl0AQAAAA5nZXRWYWx1ZUNvbW1pdAAAAAIAAAAEaXRlbQAAAAR1c2VyCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAMZ2V0S2V5Q29tbWl0AAAAAgUAAAAEaXRlbQUAAAAEdXNlcgEAAAASZ2V0S2V5Q29tbWl0c0NvdW50AAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAAB19jb21jbnQBAAAAFGdldFZhbHVlQ29tbWl0c0NvdW50AAAAAQAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAASZ2V0S2V5Q29tbWl0c0NvdW50AAAAAQUAAAAEaXRlbQEAAAAMZ2V0S2V5UmV2ZWFsAAAAAgAAAARpdGVtAAAABHVzZXIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABGl0ZW0CAAAAAV8FAAAABHVzZXICAAAAB19yZXZlYWwBAAAADmdldFZhbHVlUmV2ZWFsAAAAAgAAAARpdGVtAAAABHVzZXIJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAAAxnZXRLZXlSZXZlYWwAAAACBQAAAARpdGVtBQAAAAR1c2VyAQAAABBnZXRLZXlJdGVtU3RhdHVzAAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAAB19zdGF0dXMBAAAAEmdldFZhbHVlSXRlbVN0YXR1cwAAAAEAAAAEaXRlbQkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAEGdldEtleUl0ZW1TdGF0dXMAAAABBQAAAARpdGVtAQAAAA9nZXRLZXlWb3RlQ291bnQAAAACAAAABGl0ZW0AAAAFdm91dGUJAAEsAAAAAgkAASwAAAACBQAAAARpdGVtAgAAAAVfcmVzOgUAAAAFdm91dGUBAAAAEmdldFZhbHVlVm91dGVDb3VudAAAAAIAAAAEaXRlbQAAAAV2b3V0ZQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAD2dldEtleVZvdGVDb3VudAAAAAIFAAAABGl0ZW0FAAAABXZvdXRlAAAABwAAAAFpAQAAAAxzdGFydEF1Y3Rpb24AAAADAAAACGR1cmF0aW9uAAAACnN0YXJ0UHJpY2UAAAAMcHJpY2VBc3NldElk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", "chainId": 84, "height": 634014, "spentComplexity": 0 } View: original | compacted Prev: 2TXmuwvHRyghCkug98W6jPJCA1hy3E5NTkEWuov1FHqN Next: QwWQ9G7YsaUpm38hQcbf8vUzWN87ZeuyRu4rpQN8kUV Diff:
OldNewDifferences
2828 let VERIFIED = "verified"
2929
3030 let BLACKLISTED = "blacklist"
31+
32+let maxAuctionDuration = (1440 * 30)
3133
3234 func getNumberByKey (key) = {
3335 let num = match getInteger(this, key) {
109111
110112
111113 func getValueVouteCount (item,voute) = getNumberByKey(getKeyVoteCount(item, voute))
114+
115+
116+@Callable(i)
117+func startAuction (duration,startPrice,priceAssetId) = {
118+ let auctionId = toBase58String(i.transactionId)
119+ let endHeight = (lastBlock.height + duration)
120+ let pmt = extract(i.payment)
121+ if ((duration > maxAuctionDuration))
122+ then throw(("Duration is too long. Must be less than " + toString(maxAuctionDuration)))
123+ else WriteSet([DataEntry(auctionId, endHeight), DataEntry((auctionId + "_organizer"), toBase58String(i.caller.bytes)), DataEntry((auctionId + "_lot_assetId"), if (isDefined(pmt.assetId))
124+ then toBase58String(value(pmt.assetId))
125+ else "WAVES"), DataEntry((auctionId + "_lot_amount"), pmt.amount), DataEntry((auctionId + "_startPrice"), startPrice), DataEntry((auctionId + "_priceAssetId"), priceAssetId)])
126+ }
127+
112128
113129
114130 @Callable(i)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let ownerPublickey = base58'3ghbp6Z5eXoKniLSE8XPjn5od7gT1K7qhk6zANBhv9C3'
55
66 let allicePubkey = base58'8vHZLEG3BmzYYVjQyNi1m11kh6FeSoVAKKwtsYXC3bqA'
77
88 let bobPubkey = base58'BoU2oQn7y52MZgT1Q7vJCJwUxov9tXb2zpC5gmWQbutJ'
99
1010 let cooperPubkey = base58'6equaSt4fnw6gEoLGiL3dTDDGxDc4PY5NyV3gVkEEr1F'
1111
1212 let NONE = "none"
1313
1414 let VOTERS = 3
1515
1616 let QUORUM = 2
1717
1818 let VOTING = "voting"
1919
2020 let REVEAL = "reveal"
2121
2222 let FEATURED = "featured"
2323
2424 let DELISTED = "delisted"
2525
2626 let verifier = "3Ms9sUb7W3L55LLGxeHWiqgTfdH9yn2mayb"
2727
2828 let VERIFIED = "verified"
2929
3030 let BLACKLISTED = "blacklist"
31+
32+let maxAuctionDuration = (1440 * 30)
3133
3234 func getNumberByKey (key) = {
3335 let num = match getInteger(this, key) {
3436 case a: Int =>
3537 a
3638 case _ =>
3739 0
3840 }
3941 num
4042 }
4143
4244
4345 func getStrByKey (key) = {
4446 let str = match getString(this, key) {
4547 case a: String =>
4648 a
4749 case _ =>
4850 NONE
4951 }
5052 str
5153 }
5254
5355
5456 func getKeyItemPrice (item) = (item + "_price")
5557
5658
5759 func getValueItemPrice (item) = getNumberByKey(getKeyItemPrice(item))
5860
5961
6062 func getKeyUserItemCounter (user,item) = (((item + "_") + user) + "_cnt")
6163
6264
6365 func getValueUserItemCounter (user,item) = getNumberByKey(getKeyUserItemCounter(user, item))
6466
6567
6668 func getKeyItem (supplier,title) = ("item_" + toBase58String(sha256(toBytes((supplier + title)))))
6769
6870
6971 func getKeyItemData (item) = (item + "_data")
7072
7173
7274 func getKeyItemSupplier (item) = (item + "_owner")
7375
7476
7577 func getValueItemSupplier (item) = getStrByKey(getKeyItemSupplier(item))
7678
7779
7880 func getKeyBalanceSupplier (account) = (account + "_balance")
7981
8082
8183 func getValueBalanceSupplier (account) = getNumberByKey(getKeyBalanceSupplier(account))
8284
8385
8486 func getKeyCommit (item,user) = (((item + "_") + user) + "_commit")
8587
8688
8789 func getValueCommit (item,user) = getStrByKey(getKeyCommit(item, user))
8890
8991
9092 func getKeyCommitsCount (item) = (item + "_comcnt")
9193
9294
9395 func getValueCommitsCount (item) = getNumberByKey(getKeyCommitsCount(item))
9496
9597
9698 func getKeyReveal (item,user) = (((item + "_") + user) + "_reveal")
9799
98100
99101 func getValueReveal (item,user) = getStrByKey(getKeyReveal(item, user))
100102
101103
102104 func getKeyItemStatus (item) = (item + "_status")
103105
104106
105107 func getValueItemStatus (item) = getStrByKey(getKeyItemStatus(item))
106108
107109
108110 func getKeyVoteCount (item,voute) = ((item + "_res:") + voute)
109111
110112
111113 func getValueVouteCount (item,voute) = getNumberByKey(getKeyVoteCount(item, voute))
114+
115+
116+@Callable(i)
117+func startAuction (duration,startPrice,priceAssetId) = {
118+ let auctionId = toBase58String(i.transactionId)
119+ let endHeight = (lastBlock.height + duration)
120+ let pmt = extract(i.payment)
121+ if ((duration > maxAuctionDuration))
122+ then throw(("Duration is too long. Must be less than " + toString(maxAuctionDuration)))
123+ else WriteSet([DataEntry(auctionId, endHeight), DataEntry((auctionId + "_organizer"), toBase58String(i.caller.bytes)), DataEntry((auctionId + "_lot_assetId"), if (isDefined(pmt.assetId))
124+ then toBase58String(value(pmt.assetId))
125+ else "WAVES"), DataEntry((auctionId + "_lot_amount"), pmt.amount), DataEntry((auctionId + "_startPrice"), startPrice), DataEntry((auctionId + "_priceAssetId"), priceAssetId)])
126+ }
127+
112128
113129
114130 @Callable(i)
115131 func purchase (item) = {
116132 let pmt = extract(i.payment)
117133 if (isDefined(pmt.assetId))
118134 then throw("can use Waves only at the moment")
119135 else {
120136 let userAddress = toBase58String(i.caller.bytes)
121137 let price = getValueItemPrice(item)
122138 let supplierAddress = getValueItemSupplier(item)
123139 if ((price > pmt.amount))
124140 then throw("purchase amount cannot be less than item price")
125141 else if ((pmt.amount > price))
126142 then throw("purchase amount cannot be higher than item price")
127143 else if ((supplierAddress == NONE))
128144 then throw("supplier is not exist")
129145 else WriteSet([DataEntry(getKeyUserItemCounter(userAddress, item), (getValueUserItemCounter(userAddress, item) + 1)), DataEntry(getKeyBalanceSupplier(supplierAddress), (getValueBalanceSupplier(supplierAddress) + pmt.amount))])
130146 }
131147 }
132148
133149
134150
135151 @Callable(i)
136152 func addItem (title,price,data) = {
137153 let supplierAddress = toBase58String(i.caller.bytes)
138154 let item = getKeyItem(supplierAddress, title)
139155 if ((0 >= price))
140156 then throw("purchase amount cannot be less than item price")
141157 else if ((getValueItemSupplier(item) != NONE))
142158 then throw("An item is allready exist")
143159 else if ((supplierAddress == BLACKLISTED))
144160 then throw("supplier's account has been blacklist")
145161 else WriteSet([DataEntry(getKeyItemSupplier(item), supplierAddress), DataEntry(getKeyItemPrice(item), price), DataEntry(getKeyItemData(item), data)])
146162 }
147163
148164
149165
150166 @Callable(i)
151167 func deposit () = {
152168 let pmt = extract(i.payment)
153169 let supplierAddress = toBase58String(i.caller.bytes)
154170 let balance = getValueBalanceSupplier(supplierAddress)
155171 let newBalance = (balance + pmt.amount)
156172 if (isDefined(pmt.assetId))
157173 then throw("can hodl waves only at the moment")
158174 else if ((0 > pmt.amount))
159175 then throw("Can not deposit negative amount")
160176 else WriteSet([DataEntry(getKeyBalanceSupplier(supplierAddress), newBalance)])
161177 }
162178
163179
164180
165181 @Callable(i)
166182 func withdraw (amount) = {
167183 let supplierAddress = toBase58String(i.caller.bytes)
168184 let balance = getValueBalanceSupplier(supplierAddress)
169185 let newBalance = (balance - amount)
170186 if ((0 > amount))
171187 then throw("Can not withdraw negative amount")
172188 else if ((0 > newBalance))
173189 then throw("not enough balance")
174190 else if ((0 >= balance))
175191 then throw("insufficient balance")
176192 else ScriptResult(WriteSet([DataEntry(getKeyBalanceSupplier(supplierAddress), newBalance)]), TransferSet([ScriptTransfer(addressFromStringValue(supplierAddress), amount, unit)]))
177193 }
178194
179195
180196
181197 @Callable(i)
182198 func voteCommit (item,hash) = {
183199 let user = toBase58String(i.caller.bytes)
184200 let commits = getValueCommitsCount(item)
185201 let status = getValueItemStatus(item)
186202 if ((commits >= VOTERS))
187203 then throw("reached max num of vouters")
188204 else if ((getValueCommit(item, user) != NONE))
189205 then throw("user has allready participated")
190206 else if ((getKeyItemSupplier(item) == NONE))
191207 then throw("item dose not exist")
192208 else if (if ((status != NONE))
193209 then (status != VOTING)
194210 else false)
195211 then throw("vouting is not posible")
196212 else WriteSet([DataEntry(getKeyCommit(item, user), hash), DataEntry(getKeyCommitsCount(item), (commits + 1)), DataEntry(getKeyItemStatus(item), if ((commits == VOTERS))
197213 then REVEAL
198214 else VOTING)])
199215 }
200216
201217
202218
203219 @Callable(i)
204220 func voteReveal (item,vote,salt) = {
205221 let user = toBase58String(i.caller.bytes)
206222 let status = getValueItemStatus(item)
207223 let newVoteCount = getValueVouteCount(item, vote)
208224 if ((toBase58String(sha256(toBytes((vote + salt)))) != getValueCommit(item, user)))
209225 then throw("reveal data is not valid")
210226 else if ((VOTERS > getValueCommitsCount(item)))
211227 then throw("max num of hasn't reached yet")
212228 else if ((getValueReveal(item, user) != NONE))
213229 then throw("user has already participated")
214230 else if (if ((status != VOTING))
215231 then (status != REVEAL)
216232 else false)
217233 then throw("wrong status")
218234 else if (if ((vote != FEATURED))
219235 then (vote != DELISTED)
220236 else false)
221237 then throw("wrong vote")
222238 else if (if ((status == FEATURED))
223239 then true
224240 else (status == DELISTED))
225241 then throw("vote has finished")
226242 else WriteSet([DataEntry(getKeyReveal(item, user), vote), DataEntry(getKeyVoteCount(item, vote), newVoteCount), DataEntry(getKeyItemStatus(item), if ((newVoteCount >= QUORUM))
227243 then vote
228244 else REVEAL)])
229245 }
230246
231247
232248 @Verifier(tx)
233249 func verify () = {
234250 let alice1 = sigVerify(tx.bodyBytes, tx.proofs[0], allicePubkey)
235251 let alice2 = sigVerify(tx.bodyBytes, tx.proofs[1], allicePubkey)
236252 let alice3 = sigVerify(tx.bodyBytes, tx.proofs[2], allicePubkey)
237253 let bob1 = sigVerify(tx.bodyBytes, tx.proofs[0], bobPubkey)
238254 let bob2 = sigVerify(tx.bodyBytes, tx.proofs[1], bobPubkey)
239255 let bob3 = sigVerify(tx.bodyBytes, tx.proofs[2], bobPubkey)
240256 let cooper1 = sigVerify(tx.bodyBytes, tx.proofs[0], cooperPubkey)
241257 let copper2 = sigVerify(tx.bodyBytes, tx.proofs[1], cooperPubkey)
242258 let copper3 = sigVerify(tx.bodyBytes, tx.proofs[2], cooperPubkey)
243259 let alliceAndBob = if (if (if (if (if (if (alice1)
244260 then bob2
245261 else false)
246262 then true
247263 else if (alice1)
248264 then bob3
249265 else false)
250266 then true
251267 else if (alice2)
252268 then bob1
253269 else false)
254270 then true
255271 else if (alice2)
256272 then bob3
257273 else false)
258274 then true
259275 else if (alice3)
260276 then bob1
261277 else false)
262278 then true
263279 else if (alice3)
264280 then bob2
265281 else false
266282 let alliceAndCooper = if (if (if (if (if (if (alice1)
267283 then copper2
268284 else false)
269285 then true
270286 else if (alice1)
271287 then copper3
272288 else false)
273289 then true
274290 else if (alice2)
275291 then cooper1
276292 else false)
277293 then true
278294 else if (alice2)
279295 then copper3
280296 else false)
281297 then true
282298 else if (alice3)
283299 then cooper1
284300 else false)
285301 then true
286302 else if (alice3)
287303 then copper2
288304 else false
289305 let bobeAndCooper = if (if (if (if (if (if (cooper1)
290306 then bob2
291307 else false)
292308 then true
293309 else if (cooper1)
294310 then bob3
295311 else false)
296312 then true
297313 else if (copper2)
298314 then bob1
299315 else false)
300316 then true
301317 else if (copper2)
302318 then bob3
303319 else false)
304320 then true
305321 else if (copper3)
306322 then bob1
307323 else false)
308324 then true
309325 else if (copper3)
310326 then bob2
311327 else false
312328 match tx {
313329 case d: SetScriptTransaction =>
314330 sigVerify(tx.bodyBytes, tx.proofs[0], ownerPublickey)
315331 case d: DataTransaction =>
316332 true
317333 case _ =>
318334 if (if (alliceAndBob)
319335 then true
320336 else alliceAndCooper)
321337 then true
322338 else bobeAndCooper
323339 }
324340 }
325341

github/deemru/w8io/169f3d6 
47.91 ms