tx · 3HoVSnDvwM3VMRC1CUcdwwumDnfHLSjDKWpxnDn9Dgtw

3MxssetYXJfiGwzo9pqChsSwYj3tCYq5FFH:  -0.01200000 Waves

2022.10.12 14:06 [2269049] smart account 3MxssetYXJfiGwzo9pqChsSwYj3tCYq5FFH > SELF 0.00000000 Waves

{ "type": 13, "id": "3HoVSnDvwM3VMRC1CUcdwwumDnfHLSjDKWpxnDn9Dgtw", "fee": 1200000, "feeAssetId": null, "timestamp": 1665572870133, "version": 2, "chainId": 84, "sender": "3MxssetYXJfiGwzo9pqChsSwYj3tCYq5FFH", "senderPublicKey": "46sMMaC9rMPQdyTE87RpcnevTY9oheuDqzfnuQzoyCtv", "proofs": [ "5LBnHtNBBPhSmu9LiUK2ikEjD5SgTe6j1ePMT3iQtYb7U7XctBJBSUbuzSkrorRk2kpRdR7td7CVosJXusyXfgnE" ], "script": "base64:AAIFAAAAAAAAACoIAhIJCgcBAQEBAQgBEgMKAQESAwoBCBIECgIBCBIFCgMBCAESBAoCARgAAAAlAQAAABFnZXRJbnRlZ2VyT3JUaHJvdwAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAdhZGRyZXNzBQAAAANrZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADENhbid0IHJlYWQgJwUAAAADa2V5AgAAAA0nIGF0IGFkZHJlc3MgCQAEJQAAAAEFAAAAB2FkZHJlc3MBAAAAEGdldFN0cmluZ09yVGhyb3cAAAACAAAAB2FkZHJlc3MAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAxDYW4ndCByZWFkICcFAAAAA2tleQIAAAANJyBhdCBhZGRyZXNzIAkABCUAAAABBQAAAAdhZGRyZXNzAQAAABNnZXRJbnRlZ2VyT3JEZWZhdWx0AAAAAwAAAAdhZGRyZXNzAAAAA2tleQAAAAdkZWZhdWx0CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQUAAAAHZGVmYXVsdAEAAAAPcGFyc2VJbnRPclRocm93AAAAAQAAAAhtYXliZUludAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEtgAAAAEFAAAACG1heWJlSW50CQABLAAAAAIJAAEsAAAAAgIAAAAaQ2FuJ3QgcGFyc2UgaW50ZWdlciBmcm9tICcFAAAACG1heWJlSW50AgAAAAEnAQAAABNwYXJzZUFkZHJlc3NPclRocm93AAAAAQAAAAxtYXliZUFkZHJlc3MJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABBQAAAAxtYXliZUFkZHJlc3MJAAEsAAAAAgkAASwAAAACAgAAABpDYW4ndCBwYXJzZSBhZGRyZXNzIGZyb20gJwUAAAAMbWF5YmVBZGRyZXNzAgAAAAEnAQAAABFwYXJzZUludE9yRGVmYXVsdAAAAAIAAAAIbWF5YmVJbnQAAAAHZGVmYXVsdAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABLYAAAABBQAAAAhtYXliZUludAUAAAAHZGVmYXVsdAEAAAAKa2V5X2VudGl0eQAAAAMAAAAEbmFtZQAAAAJwawAAAAhwcm9wZXJ0eQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARuYW1lAgAAAAFfBQAAAAJwawIAAAABXwUAAAAIcHJvcGVydHkBAAAAB2tleV90b3AAAAABAAAABG5hbWUJAAEsAAAAAgIAAAAEVG9wXwUAAAAEbmFtZQEAAAAIa2V5X3RvcDIAAAABAAAABG5hbWUJAAEsAAAAAgIAAAAFVG9wMl8FAAAABG5hbWUBAAAADmtleV9iaWRkZXJIYXNoAAAAAwAAAAlhdWN0aW9uSWQAAAAHYWRkcmVzcwAAAARoYXNoCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAACWF1Y3Rpb25JZAIAAAABXwUAAAAHYWRkcmVzcwIAAAABXwUAAAAEaGFzaAEAAAAHa2V5X2JpZAAAAAEAAAAKYmlkZGVySGFzaAkAASwAAAACAgAAAARCaWRfBQAAAApiaWRkZXJIYXNoAQAAAAprZXlfcmV2ZWFsAAAAAQAAAApiaWRkZXJIYXNoCQABLAAAAAICAAAAB1JldmVhbF8FAAAACmJpZGRlckhhc2gAAAAAEWtleV9pbml0VGltZXN0YW1wAgAAAA1pbml0VGltZXN0YW1wAAAAAA9rZXlfYmlkRHVyYXRpb24CAAAAC2JpZER1cmF0aW9uAAAAABJrZXlfcmV2ZWFsRHVyYXRpb24CAAAADnJldmVhbER1cmF0aW9uAAAAAAxrZXlfZXJyb3JGZWUCAAAACGVycm9yRmVlAAAAAA5rZXlfbWluaW1hbEJpZAIAAAAKbWluaW1hbEJpZAAAAAAUa2V5X3JlZ2lzdHJhckFkZHJlc3MCAAAAEHJlZ2lzdHJhckFkZHJlc3MAAAAAFWtleV9uYW1lTWluaW1hbExlbmd0aAIAAAARbmFtZU1pbmltYWxMZW5ndGgAAAAADGF1Y3Rpb25TdGFydAkBAAAAEWdldEludGVnZXJPclRocm93AAAAAgUAAAAEdGhpcwUAAAARa2V5X2luaXRUaW1lc3RhbXAAAAAAC2JpZER1cmF0aW9uCQEAAAARZ2V0SW50ZWdlck9yVGhyb3cAAAACBQAAAAR0aGlzBQAAAA9rZXlfYmlkRHVyYXRpb24AAAAADnJldmVhbER1cmF0aW9uCQEAAAARZ2V0SW50ZWdlck9yVGhyb3cAAAACBQAAAAR0aGlzBQAAABJrZXlfcmV2ZWFsRHVyYXRpb24AAAAAD2F1Y3Rpb25EdXJhdGlvbgkAAGQAAAACBQAAAAtiaWREdXJhdGlvbgUAAAAOcmV2ZWFsRHVyYXRpb24AAAAACGVycm9yRmVlCQEAAAARZ2V0SW50ZWdlck9yVGhyb3cAAAACBQAAAAR0aGlzBQAAAAxrZXlfZXJyb3JGZWUAAAAACm1pbmltYWxCaWQJAQAAABFnZXRJbnRlZ2VyT3JUaHJvdwAAAAIFAAAABHRoaXMFAAAADmtleV9taW5pbWFsQmlkAAAAABFuYW1lTWluaW1hbExlbmd0aAkBAAAAEWdldEludGVnZXJPclRocm93AAAAAgUAAAAEdGhpcwUAAAAVa2V5X25hbWVNaW5pbWFsTGVuZ3RoAAAAABByZWdpc3RyYXJBZGRyZXNzCQEAAAAQZ2V0U3RyaW5nT3JUaHJvdwAAAAIFAAAABHRoaXMFAAAAFGtleV9yZWdpc3RyYXJBZGRyZXNzAAAAAAlyZWdpc3RyYXIJAQAAABNwYXJzZUFkZHJlc3NPclRocm93AAAAAQUAAAAQcmVnaXN0cmFyQWRkcmVzcwEAAAAIY2FsY0hhc2gAAAACAAAABG5hbWUAAAAGYW1vdW50CQACWAAAAAEJAArwAAAAAQkACowAAAABCQAAywAAAAIJAAGbAAAAAQUAAAAEbmFtZQkAAZoAAAABBQAAAAZhbW91bnQAAAAACVBIQVNFX0JJRAIAAAADQklEAAAAAAxQSEFTRV9SRVZFQUwCAAAABlJFVkVBTAEAAAAPX2dldEF1Y3Rpb25CeUlkAAAAAQAAAAlhdWN0aW9uSWQEAAAACGJpZFN0YXJ0CQAAZAAAAAIFAAAADGF1Y3Rpb25TdGFydAkAAGgAAAACBQAAAAlhdWN0aW9uSWQFAAAAD2F1Y3Rpb25EdXJhdGlvbgQAAAALcmV2ZWFsU3RhcnQJAABkAAAAAgUAAAAIYmlkU3RhcnQFAAAAC2JpZER1cmF0aW9uBAAAAAphdWN0aW9uRW5kCQAAZAAAAAIFAAAAC3JldmVhbFN0YXJ0BQAAAA5yZXZlYWxEdXJhdGlvbgQAAAAFcGhhc2UDCQAAZgAAAAIIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAAAtyZXZlYWxTdGFydAUAAAAMUEhBU0VfUkVWRUFMBQAAAAlQSEFTRV9CSUQJAAUXAAAABQUAAAAJYXVjdGlvbklkBQAAAAVwaGFzZQUAAAAIYmlkU3RhcnQFAAAAC3JldmVhbFN0YXJ0BQAAAAphdWN0aW9uRW5kAQAAAApnZXRBdWN0aW9uAAAAAAQAAAAJYXVjdGlvbklkCQAAaQAAAAIJAABlAAAAAggFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAADGF1Y3Rpb25TdGFydAUAAAAPYXVjdGlvbkR1cmF0aW9uCQEAAAAPX2dldEF1Y3Rpb25CeUlkAAAAAQUAAAAJYXVjdGlvbklkAQAAAA9nZXRBdWN0aW9uUGhhc2UAAAAABAAAAAckbWF0Y2gwCQEAAAAKZ2V0QXVjdGlvbgAAAAADCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAHChJbnQsIFN0cmluZywgSW50LCBJbnQsIEludCkEAAAAB2F1Y3Rpb24FAAAAByRtYXRjaDAEAAAACWF1Y3Rpb25JZAgFAAAAB2F1Y3Rpb24AAAACXzEEAAAABXBoYXNlCAUAAAAHYXVjdGlvbgAAAAJfMgkABRQAAAACBQAAAAlhdWN0aW9uSWQFAAAABXBoYXNlCQAAAgAAAAECAAAAFEludmFsaWQgYXVjdGlvbiBpbmZvAQAAAAlpc0NvcnJlY3QAAAABAAAABG5hbWUEAAAACWF2YWlsYWJsZQQAAAAHJG1hdGNoMAkAA/wAAAAEBQAAAAlyZWdpc3RyYXICAAAACWF2YWlsYWJsZQkABEwAAAACBQAAAARuYW1lBQAAAANuaWwFAAAAA25pbAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQm9vbGVhbgQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQkAAAIAAAABAgAAACVVbnN1cHBvcnRlZCByZXN1bHQgZm9ybWF0IChhdmFpbGFibGUpAwUAAAAJYXZhaWxhYmxlCQAAZwAAAAIJAAExAAAAAQUAAAAEbmFtZQUAAAARbmFtZU1pbmltYWxMZW5ndGgHAQAAAAppc1dpbm5hYmxlAAAAAQAAAARuYW1lBAAAAAlyZXZlYWxLZXkJAAQdAAAAAgUAAAAEdGhpcwkBAAAAB2tleV90b3AAAAABBQAAAARuYW1lAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAAJcmV2ZWFsS2V5BgQAAAAOY3VycmVudEF1Y3Rpb24ICQEAAAAPZ2V0QXVjdGlvblBoYXNlAAAAAAAAAAJfMQQAAAAMdG9wQXVjdGlvbklkCQABkQAAAAIJAAS1AAAAAgkBAAAABXZhbHVlAAAAAQUAAAAJcmV2ZWFsS2V5AgAAAAFfAAAAAAAAAAABBAAAAAlhdWN0aW9uSWQJAQAAABFwYXJzZUludE9yRGVmYXVsdAAAAAIFAAAADHRvcEF1Y3Rpb25JZAAAAAAAAAAAAAkAAAAAAAACBQAAAAlhdWN0aW9uSWQFAAAADmN1cnJlbnRBdWN0aW9uAQAAAAtpc0F2YWlsYWJsZQAAAAEAAAAEbmFtZQMJAQAAAAlpc0NvcnJlY3QAAAABBQAAAARuYW1lCQEAAAAKaXNXaW5uYWJsZQAAAAEFAAAABG5hbWUHAAAABgAAAANpbnYBAAAABGluaXQAAAAHAAAACXRpbWVzdGFtcAAAAAtiaWREdXJhdGlvbgAAAA5yZXZlYWxEdXJhdGlvbgAAAAhlcnJvckZlZQAAAAptaW5pbWFsQmlkAAAAEHJlZ2lzdHJhckFkZHJlc3MAAAARbmFtZU1pbmltYWxMZW5ndGgDCQEAAAACIT0AAAACBQAAAAR0aGlzCAUAAAADaW52AAAABmNhbGxlcgkAAAIAAAABAgAAABtvbmx5IHNlbGYgY2FsbHMgYXJlIGFsbG93ZWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEWtleV9pbml0VGltZXN0YW1wBQAAAAl0aW1lc3RhbXAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAD2tleV9iaWREdXJhdGlvbgUAAAALYmlkRHVyYXRpb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEmtleV9yZXZlYWxEdXJhdGlvbgUA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AAAHZGVwb3NpdAUAAAAJYmlkQW1vdW50CQEAAAALaXNBdmFpbGFibGUAAAABBQAAAARuYW1lBwQAAAAHdG9wQmlkcwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAZ0b3BLZXkFAAAACXJldmVhbEtleQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAd0b3AyS2V5CQABLAAAAAIJAAEsAAAAAgUAAAAJcmV2ZWFsS2V5AgAAAAEsCQABpAAAAAEFAAAACWJpZEFtb3VudAUAAAADbmlsCQAETgAAAAIFAAAACXJldmVhbEJpZAUAAAAHdG9wQmlkcwUAAAAJcmV2ZWFsQmlkAAAAA2ludgEAAAAIZmluYWxpemUAAAACAAAACWF1Y3Rpb25JZAAAAAZoYXNoZXMEAAAAC19hdWN0aW9uRW5kCAkBAAAAD19nZXRBdWN0aW9uQnlJZAAAAAEFAAAACWF1Y3Rpb25JZAAAAAJfNQQAAAAKYXVjdGlvbkVuZAMJAABmAAAAAggFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAAC19hdWN0aW9uRW5kBQAAAAtfYXVjdGlvbkVuZAkAAAIAAAABAgAAACpDYW5ub3QgZmluYWxpemUgYXVjdGlvbiB0aGF0IGhhcyBub3QgZW5kZWQEAAAABmNhbGxlcggFAAAAA2ludgAAAAZjYWxsZXIEAAAACWNhbGxlclN0cgkABCUAAAABBQAAAAZjYWxsZXIKAQAAAApmb2xkUmVmdW5kAAAAAgAAAANhY2MAAAAEaGFzaAQAAAANYmlkZGVySGFzaEtleQkBAAAADmtleV9iaWRkZXJIYXNoAAAAAwkAAaQAAAABBQAAAAlhdWN0aW9uSWQFAAAACWNhbGxlclN0cgUAAAAEaGFzaAQAAAAGYmlkS2V5CQEAAAAHa2V5X2JpZAAAAAEFAAAADWJpZGRlckhhc2hLZXkEAAAACXJldmVhbEtleQkBAAAACmtleV9yZXZlYWwAAAABBQAAAA1iaWRkZXJIYXNoS2V5BAAAAAtyZXZlYWxlZEJpZAkABB0AAAACBQAAAAR0aGlzBQAAAAlyZXZlYWxLZXkEAAAACyR0MDg5MTY5MjExBAAAAAliaWRWYWx1ZXMJAAS1AAAAAgkBAAAAE3Zh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", "height": 2269049, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5v6BRQEdLCu1wBcRjuS5psSoNSbRTP9fGESEEjbHJfA6 Next: FrcFEPe3c2Q4biky73t689YDHHV4fk1sqFgRGE3hfddD Diff:
OldNewDifferences
103103 }
104104
105105
106-func isAvailable (name) = {
106+func isCorrect (name) = {
107107 let available = match invoke(registrar, "available", [name], nil) {
108108 case a: Boolean =>
109109 a
116116 }
117117
118118
119-func isTradable (name) = {
119+func isWinnable (name) = {
120120 let revealKey = getString(this, key_top(name))
121121 if (!(isDefined(revealKey)))
122122 then true
127127 (auctionId == currentAuction)
128128 }
129129 }
130+
131+
132+func isAvailable (name) = if (isCorrect(name))
133+ then isWinnable(name)
134+ else false
130135
131136
132137 @Callable(inv)
142147
143148
144149 @Callable(inv)
145-func available (name) = $Tuple2(nil, if (isAvailable(name))
146- then isTradable(name)
147- else false)
150+func available (name) = $Tuple2(nil, isAvailable(name))
148151
149152
150153
157160 else throw("Single payment required")
158161 let address = toString(inv.caller)
159162 let bidKey = key_bid(key_bidderHash(toString(auctionId), address, hash))
160- let $t053155372 = getAuctionPhase()
161- let currentAuctionId = $t053155372._1
162- let currentPeriod = $t053155372._2
163+ let $t053715428 = getAuctionPhase()
164+ let currentAuctionId = $t053715428._1
165+ let currentPeriod = $t053715428._2
163166 if ((currentAuctionId != auctionId))
164167 then throw("Auctions is already over")
165168 else if ((currentPeriod != PHASE_BID))
180183 let topKey = key_top(name)
181184 let top2Key = key_top2(name)
182185 let deposit = valueOrErrorMessage(getInteger(this, key_bid(bidderHashKey)), ("Bid doesn't exists " + hash))
183- let $t061526209 = getAuctionPhase()
184- let currentAuctionId = $t061526209._1
185- let currentPeriod = $t061526209._2
186+ let $t062086265 = getAuctionPhase()
187+ let currentAuctionId = $t062086265._1
188+ let currentPeriod = $t062086265._2
186189 if ((currentAuctionId != auctionId))
187190 then throw("Auctions is already over")
188191 else if ((currentPeriod != PHASE_REVEAL))
200203 let top2BidderInfo = split(getStringOrThrow(this, top2Key), ",")
201204 let top2BidderKey = top2BidderInfo[0]
202205 let top2BidAmount = parseIntOrThrow(top2BidderInfo[1])
203- if (if (if (if (if ((bidAmount > minimalBid))
206+ if (if (if (if ((bidAmount > minimalBid))
204207 then (deposit >= bidAmount)
205208 else false)
206209 then isAvailable(name)
207- else false)
208- then isTradable(name)
209210 else false)
210211 then (bidAmount > topBidAmount)
211212 else false)
221222 then (revealBid :+ StringEntry(top2Key, ((revealKey + ",") + toString(bidAmount))))
222223 else revealBid
223224 }
224- else if (if (if ((deposit >= bidAmount))
225+ else if (if ((deposit >= bidAmount))
225226 then isAvailable(name)
226- else false)
227- then isTradable(name)
228227 else false)
229228 then {
230229 let topBids = [StringEntry(topKey, revealKey), StringEntry(top2Key, ((revealKey + ",") + toString(bidAmount)))]
249248 let bidKey = key_bid(bidderHashKey)
250249 let revealKey = key_reveal(bidderHashKey)
251250 let revealedBid = getString(this, revealKey)
252- let $t089009195 = {
251+ let $t089169211 = {
253252 let bidValues = split(valueOrErrorMessage(revealedBid, (("Bid with hash " + hash) + " not found")), ",")
254253 $Tuple3(parseIntValue(bidValues[0]), parseIntValue(bidValues[1]), bidValues[2])
255254 }
256- let deposit = $t089009195._1
257- let bid = $t089009195._2
258- let name = $t089009195._3
255+ let deposit = $t089169211._1
256+ let bid = $t089169211._2
257+ let name = $t089169211._3
259258 let topKey = key_top(name)
260259 let top2Key = key_top2(name)
261260 let winnerLink = valueOrErrorMessage(getString(this, topKey), "Auction winner has not been determined")
271270 then true
272271 else (winnerAuctionId != auctionId))
273272 then true
274- else !(isAvailable(name)))
273+ else !(isCorrect(name)))
275274 then [ScriptTransfer(caller, (deposit - fraction(deposit, 10, 100)), unit)]
276275 else if ((winnerLink == revealKey))
277276 then {
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func getIntegerOrThrow (address,key) = valueOrErrorMessage(getInteger(address, key), ((("Can't read '" + key) + "' at address ") + toString(address)))
55
66
77 func getStringOrThrow (address,key) = valueOrErrorMessage(getString(address, key), ((("Can't read '" + key) + "' at address ") + toString(address)))
88
99
1010 func getIntegerOrDefault (address,key,default) = valueOrElse(getInteger(address, key), default)
1111
1212
1313 func parseIntOrThrow (maybeInt) = valueOrErrorMessage(parseInt(maybeInt), (("Can't parse integer from '" + maybeInt) + "'"))
1414
1515
1616 func parseAddressOrThrow (maybeAddress) = valueOrErrorMessage(addressFromString(maybeAddress), (("Can't parse address from '" + maybeAddress) + "'"))
1717
1818
1919 func parseIntOrDefault (maybeInt,default) = valueOrElse(parseInt(maybeInt), default)
2020
2121
2222 func key_entity (name,pk,property) = ((((name + "_") + pk) + "_") + property)
2323
2424
2525 func key_top (name) = ("Top_" + name)
2626
2727
2828 func key_top2 (name) = ("Top2_" + name)
2929
3030
3131 func key_bidderHash (auctionId,address,hash) = ((((auctionId + "_") + address) + "_") + hash)
3232
3333
3434 func key_bid (bidderHash) = ("Bid_" + bidderHash)
3535
3636
3737 func key_reveal (bidderHash) = ("Reveal_" + bidderHash)
3838
3939
4040 let key_initTimestamp = "initTimestamp"
4141
4242 let key_bidDuration = "bidDuration"
4343
4444 let key_revealDuration = "revealDuration"
4545
4646 let key_errorFee = "errorFee"
4747
4848 let key_minimalBid = "minimalBid"
4949
5050 let key_registrarAddress = "registrarAddress"
5151
5252 let key_nameMinimalLength = "nameMinimalLength"
5353
5454 let auctionStart = getIntegerOrThrow(this, key_initTimestamp)
5555
5656 let bidDuration = getIntegerOrThrow(this, key_bidDuration)
5757
5858 let revealDuration = getIntegerOrThrow(this, key_revealDuration)
5959
6060 let auctionDuration = (bidDuration + revealDuration)
6161
6262 let errorFee = getIntegerOrThrow(this, key_errorFee)
6363
6464 let minimalBid = getIntegerOrThrow(this, key_minimalBid)
6565
6666 let nameMinimalLength = getIntegerOrThrow(this, key_nameMinimalLength)
6767
6868 let registrarAddress = getStringOrThrow(this, key_registrarAddress)
6969
7070 let registrar = parseAddressOrThrow(registrarAddress)
7171
7272 func calcHash (name,amount) = toBase58String(blake2b256_16Kb(keccak256_16Kb((toBytes(name) + toBytes(amount)))))
7373
7474
7575 let PHASE_BID = "BID"
7676
7777 let PHASE_REVEAL = "REVEAL"
7878
7979 func _getAuctionById (auctionId) = {
8080 let bidStart = (auctionStart + (auctionId * auctionDuration))
8181 let revealStart = (bidStart + bidDuration)
8282 let auctionEnd = (revealStart + revealDuration)
8383 let phase = if ((lastBlock.timestamp > revealStart))
8484 then PHASE_REVEAL
8585 else PHASE_BID
8686 $Tuple5(auctionId, phase, bidStart, revealStart, auctionEnd)
8787 }
8888
8989
9090 func getAuction () = {
9191 let auctionId = ((lastBlock.timestamp - auctionStart) / auctionDuration)
9292 _getAuctionById(auctionId)
9393 }
9494
9595
9696 func getAuctionPhase () = match getAuction() {
9797 case auction: (Int, String, Int, Int, Int) =>
9898 let auctionId = auction._1
9999 let phase = auction._2
100100 $Tuple2(auctionId, phase)
101101 case _ =>
102102 throw("Invalid auction info")
103103 }
104104
105105
106-func isAvailable (name) = {
106+func isCorrect (name) = {
107107 let available = match invoke(registrar, "available", [name], nil) {
108108 case a: Boolean =>
109109 a
110110 case _ =>
111111 throw("Unsupported result format (available)")
112112 }
113113 if (available)
114114 then (size(name) >= nameMinimalLength)
115115 else false
116116 }
117117
118118
119-func isTradable (name) = {
119+func isWinnable (name) = {
120120 let revealKey = getString(this, key_top(name))
121121 if (!(isDefined(revealKey)))
122122 then true
123123 else {
124124 let currentAuction = getAuctionPhase()._1
125125 let topAuctionId = split(value(revealKey), "_")[1]
126126 let auctionId = parseIntOrDefault(topAuctionId, 0)
127127 (auctionId == currentAuction)
128128 }
129129 }
130+
131+
132+func isAvailable (name) = if (isCorrect(name))
133+ then isWinnable(name)
134+ else false
130135
131136
132137 @Callable(inv)
133138 func init (timestamp,bidDuration,revealDuration,errorFee,minimalBid,registrarAddress,nameMinimalLength) = if ((this != inv.caller))
134139 then throw("only self calls are allowed")
135140 else [IntegerEntry(key_initTimestamp, timestamp), IntegerEntry(key_bidDuration, bidDuration), IntegerEntry(key_revealDuration, revealDuration), IntegerEntry(key_errorFee, errorFee), IntegerEntry(key_minimalBid, minimalBid), StringEntry(key_registrarAddress, registrarAddress), IntegerEntry(key_nameMinimalLength, nameMinimalLength)]
136141
137142
138143
139144 @Callable(inv)
140145 func getAuctionById (auctionId) = $Tuple2(nil, _getAuctionById(auctionId))
141146
142147
143148
144149 @Callable(inv)
145-func available (name) = $Tuple2(nil, if (isAvailable(name))
146- then isTradable(name)
147- else false)
150+func available (name) = $Tuple2(nil, isAvailable(name))
148151
149152
150153
151154 @Callable(inv)
152155 func bid (auctionId,hash) = {
153156 let pmt = if (if ((size(inv.payments) == 1))
154157 then (inv.payments[0].assetId == unit)
155158 else false)
156159 then inv.payments[0].amount
157160 else throw("Single payment required")
158161 let address = toString(inv.caller)
159162 let bidKey = key_bid(key_bidderHash(toString(auctionId), address, hash))
160- let $t053155372 = getAuctionPhase()
161- let currentAuctionId = $t053155372._1
162- let currentPeriod = $t053155372._2
163+ let $t053715428 = getAuctionPhase()
164+ let currentAuctionId = $t053715428._1
165+ let currentPeriod = $t053715428._2
163166 if ((currentAuctionId != auctionId))
164167 then throw("Auctions is already over")
165168 else if ((currentPeriod != PHASE_BID))
166169 then throw("Bid period is over")
167170 else if (isDefined(getInteger(this, bidKey)))
168171 then throw("Bid with exact amount already presented")
169172 else [IntegerEntry(bidKey, pmt)]
170173 }
171174
172175
173176
174177 @Callable(inv)
175178 func reveal (auctionId,name,bidAmount) = {
176179 let address = toString(inv.caller)
177180 let hash = calcHash(name, bidAmount)
178181 let bidderHashKey = key_bidderHash(toString(auctionId), address, hash)
179182 let revealKey = key_reveal(bidderHashKey)
180183 let topKey = key_top(name)
181184 let top2Key = key_top2(name)
182185 let deposit = valueOrErrorMessage(getInteger(this, key_bid(bidderHashKey)), ("Bid doesn't exists " + hash))
183- let $t061526209 = getAuctionPhase()
184- let currentAuctionId = $t061526209._1
185- let currentPeriod = $t061526209._2
186+ let $t062086265 = getAuctionPhase()
187+ let currentAuctionId = $t062086265._1
188+ let currentPeriod = $t062086265._2
186189 if ((currentAuctionId != auctionId))
187190 then throw("Auctions is already over")
188191 else if ((currentPeriod != PHASE_REVEAL))
189192 then throw("Reveal period is over")
190193 else if (isDefined(getString(this, revealKey)))
191194 then throw("Bid is already revealed")
192195 else {
193196 let revealBid = [StringEntry(revealKey, ((((toString(deposit) + ",") + toString(bidAmount)) + ",") + name))]
194197 let topBidderRevealKey = getString(this, topKey)
195198 if (isDefined(topBidderRevealKey))
196199 then {
197200 let topBidderKey = value(topBidderRevealKey)
198201 let topBidderData = value(getString(this, topBidderKey))
199202 let topBidAmount = parseIntValue(split(topBidderData, ",")[1])
200203 let top2BidderInfo = split(getStringOrThrow(this, top2Key), ",")
201204 let top2BidderKey = top2BidderInfo[0]
202205 let top2BidAmount = parseIntOrThrow(top2BidderInfo[1])
203- if (if (if (if (if ((bidAmount > minimalBid))
206+ if (if (if (if ((bidAmount > minimalBid))
204207 then (deposit >= bidAmount)
205208 else false)
206209 then isAvailable(name)
207- else false)
208- then isTradable(name)
209210 else false)
210211 then (bidAmount > topBidAmount)
211212 else false)
212213 then {
213214 let newTopBids = [StringEntry(topKey, revealKey), StringEntry(topKey, ((topBidderKey + ",") + toString(topBidAmount)))]
214215 (revealBid ++ newTopBids)
215216 }
216217 else if (if ((top2BidAmount >= bidAmount))
217218 then (top2BidderKey == topBidderKey)
218219 else false)
219220 then (revealBid :+ StringEntry(top2Key, ((revealKey + ",") + toString(bidAmount))))
220221 else if ((bidAmount > top2BidAmount))
221222 then (revealBid :+ StringEntry(top2Key, ((revealKey + ",") + toString(bidAmount))))
222223 else revealBid
223224 }
224- else if (if (if ((deposit >= bidAmount))
225+ else if (if ((deposit >= bidAmount))
225226 then isAvailable(name)
226- else false)
227- then isTradable(name)
228227 else false)
229228 then {
230229 let topBids = [StringEntry(topKey, revealKey), StringEntry(top2Key, ((revealKey + ",") + toString(bidAmount)))]
231230 (revealBid ++ topBids)
232231 }
233232 else revealBid
234233 }
235234 }
236235
237236
238237
239238 @Callable(inv)
240239 func finalize (auctionId,hashes) = {
241240 let _auctionEnd = _getAuctionById(auctionId)._5
242241 let auctionEnd = if ((lastBlock.timestamp > _auctionEnd))
243242 then _auctionEnd
244243 else throw("Cannot finalize auction that has not ended")
245244 let caller = inv.caller
246245 let callerStr = toString(caller)
247246 func foldRefund (acc,hash) = {
248247 let bidderHashKey = key_bidderHash(toString(auctionId), callerStr, hash)
249248 let bidKey = key_bid(bidderHashKey)
250249 let revealKey = key_reveal(bidderHashKey)
251250 let revealedBid = getString(this, revealKey)
252- let $t089009195 = {
251+ let $t089169211 = {
253252 let bidValues = split(valueOrErrorMessage(revealedBid, (("Bid with hash " + hash) + " not found")), ",")
254253 $Tuple3(parseIntValue(bidValues[0]), parseIntValue(bidValues[1]), bidValues[2])
255254 }
256- let deposit = $t089009195._1
257- let bid = $t089009195._2
258- let name = $t089009195._3
255+ let deposit = $t089169211._1
256+ let bid = $t089169211._2
257+ let name = $t089169211._3
259258 let topKey = key_top(name)
260259 let top2Key = key_top2(name)
261260 let winnerLink = valueOrErrorMessage(getString(this, topKey), "Auction winner has not been determined")
262261 let winnerInfo = split(winnerLink, "_")
263262 let winnerAuctionId = parseIntValue(winnerInfo[1])
264263 let winnerAddress = winnerInfo[2]
265264 let top2BidderInfo = split(getStringOrThrow(this, top2Key), ",")
266265 let top2Bid = parseIntOrThrow(top2BidderInfo[1])
267266 let deleteEntries = [DeleteEntry(revealKey), DeleteEntry(bidKey)]
268267 let transferAndDeleteEntry = if (if (if (if ((minimalBid > bid))
269268 then true
270269 else (bid > deposit))
271270 then true
272271 else (winnerAuctionId != auctionId))
273272 then true
274- else !(isAvailable(name)))
273+ else !(isCorrect(name)))
275274 then [ScriptTransfer(caller, (deposit - fraction(deposit, 10, 100)), unit)]
276275 else if ((winnerLink == revealKey))
277276 then {
278277 let claimNft = invoke(registrar, "register", [name, winnerAddress, auctionEnd], nil)
279278 if ((claimNft == claimNft))
280279 then [ScriptTransfer(caller, (deposit - top2Bid), unit), DeleteEntry(top2Key)]
281280 else throw("Strict value is not equal to itself.")
282281 }
283282 else [ScriptTransfer(caller, deposit, unit)]
284283 ((acc ++ deleteEntries) ++ transferAndDeleteEntry)
285284 }
286285
287286 let $l = hashes
288287 let $s = size($l)
289288 let $acc0 = nil
290289 func $f0_1 ($a,$i) = if (($i >= $s))
291290 then $a
292291 else foldRefund($a, $l[$i])
293292
294293 func $f0_2 ($a,$i) = if (($i >= $s))
295294 then $a
296295 else throw("List size exceeds 10")
297296
298297 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
299298 }
300299
301300

github/deemru/w8io/169f3d6 
81.88 ms