tx · 328wJvvGTQrNA1w9NYxtSMQc3ARinKkAJjfEZACPe6Ji

3MxssetYXJfiGwzo9pqChsSwYj3tCYq5FFH:  -0.01100000 Waves

2022.10.11 10:51 [2267402] smart account 3MxssetYXJfiGwzo9pqChsSwYj3tCYq5FFH > SELF 0.00000000 Waves

{ "type": 13, "id": "328wJvvGTQrNA1w9NYxtSMQc3ARinKkAJjfEZACPe6Ji", "fee": 1100000, "feeAssetId": null, "timestamp": 1665474709195, "version": 2, "chainId": 84, "sender": "3MxssetYXJfiGwzo9pqChsSwYj3tCYq5FFH", "senderPublicKey": "46sMMaC9rMPQdyTE87RpcnevTY9oheuDqzfnuQzoyCtv", "proofs": [ "3mKcEkG3TmqW4waVxi4HmSWeNTYn4uQzPChGNQAZcnZjMgcmUYiSAtp7hjgaLrQK9mS25wNTsGhc5BcUFQSKMRqa" ], "script": "base64:AAIFAAAAAAAAACkIAhIICgYBAQEBAQgSAwoBARIDCgEIEgQKAgEIEgUKAwEIARIECgIBGAAAACIBAAAAEWdldEludGVnZXJPclRocm93AAAAAgAAAAdhZGRyZXNzAAAAA2tleQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAMQ2FuJ3QgcmVhZCAnBQAAAANrZXkCAAAADScgYXQgYWRkcmVzcyAJAAQlAAAAAQUAAAAHYWRkcmVzcwEAAAAQZ2V0U3RyaW5nT3JUaHJvdwAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADENhbid0IHJlYWQgJwUAAAADa2V5AgAAAA0nIGF0IGFkZHJlc3MgCQAEJQAAAAEFAAAAB2FkZHJlc3MBAAAAE2dldEludGVnZXJPckRlZmF1bHQAAAADAAAAB2FkZHJlc3MAAAADa2V5AAAAB2RlZmF1bHQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5BQAAAAdkZWZhdWx0AQAAAA9wYXJzZUludE9yVGhyb3cAAAABAAAACG1heWJlSW50CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAS2AAAAAQUAAAAIbWF5YmVJbnQJAAEsAAAAAgkAASwAAAACAgAAABpDYW4ndCBwYXJzZSBpbnRlZ2VyIGZyb20gJwUAAAAIbWF5YmVJbnQCAAAAAScBAAAAE3BhcnNlQWRkcmVzc09yVGhyb3cAAAABAAAADG1heWJlQWRkcmVzcwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEJgAAAAEFAAAADG1heWJlQWRkcmVzcwkAASwAAAACCQABLAAAAAICAAAAGkNhbid0IHBhcnNlIGFkZHJlc3MgZnJvbSAnBQAAAAxtYXliZUFkZHJlc3MCAAAAAScBAAAAEXBhcnNlSW50T3JEZWZhdWx0AAAAAgAAAAhtYXliZUludAAAAAdkZWZhdWx0CQEAAAALdmFsdWVPckVsc2UAAAACCQAEtgAAAAEFAAAACG1heWJlSW50BQAAAAdkZWZhdWx0AQAAAAprZXlfZW50aXR5AAAAAwAAAARuYW1lAAAAAnBrAAAACHByb3BlcnR5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABG5hbWUCAAAAAV8FAAAAAnBrAgAAAAFfBQAAAAhwcm9wZXJ0eQEAAAAHa2V5X3RvcAAAAAEAAAAEbmFtZQkAASwAAAACAgAAAARUb3BfBQAAAARuYW1lAQAAAAhrZXlfdG9wMgAAAAEAAAAEbmFtZQkAASwAAAACAgAAAAVUb3AyXwUAAAAEbmFtZQEAAAAOa2V5X2JpZGRlckhhc2gAAAADAAAACWF1Y3Rpb25JZAAAAAdhZGRyZXNzAAAABGhhc2gJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAJYXVjdGlvbklkAgAAAAFfBQAAAAdhZGRyZXNzAgAAAAFfBQAAAARoYXNoAQAAAAdrZXlfYmlkAAAAAQAAAApiaWRkZXJIYXNoCQABLAAAAAICAAAABEJpZF8FAAAACmJpZGRlckhhc2gBAAAACmtleV9yZXZlYWwAAAABAAAACmJpZGRlckhhc2gJAAEsAAAAAgIAAAAHUmV2ZWFsXwUAAAAKYmlkZGVySGFzaAAAAAARa2V5X2luaXRUaW1lc3RhbXACAAAADWluaXRUaW1lc3RhbXAAAAAAD2tleV9iaWREdXJhdGlvbgIAAAALYmlkRHVyYXRpb24AAAAAEmtleV9yZXZlYWxEdXJhdGlvbgIAAAAOcmV2ZWFsRHVyYXRpb24AAAAADGtleV9lcnJvckZlZQIAAAAIZXJyb3JGZWUAAAAADmtleV9taW5pbWFsQmlkAgAAAAptaW5pbWFsQmlkAAAAABRrZXlfcmVnaXN0cmFyQWRkcmVzcwIAAAAQcmVnaXN0cmFyQWRkcmVzcwAAAAAMYXVjdGlvblN0YXJ0CQEAAAARZ2V0SW50ZWdlck9yVGhyb3cAAAACBQAAAAR0aGlzBQAAABFrZXlfaW5pdFRpbWVzdGFtcAAAAAALYmlkRHVyYXRpb24JAQAAABFnZXRJbnRlZ2VyT3JUaHJvdwAAAAIFAAAABHRoaXMFAAAAD2tleV9iaWREdXJhdGlvbgAAAAAOcmV2ZWFsRHVyYXRpb24JAQAAABFnZXRJbnRlZ2VyT3JUaHJvdwAAAAIFAAAABHRoaXMFAAAAEmtleV9yZXZlYWxEdXJhdGlvbgAAAAAPYXVjdGlvbkR1cmF0aW9uCQAAZAAAAAIFAAAAC2JpZER1cmF0aW9uBQAAAA5yZXZlYWxEdXJhdGlvbgAAAAAIZXJyb3JGZWUJAQAAABFnZXRJbnRlZ2VyT3JUaHJvdwAAAAIFAAAABHRoaXMFAAAADGtleV9lcnJvckZlZQAAAAAKbWluaW1hbEJpZAkBAAAAEWdldEludGVnZXJPclRocm93AAAAAgUAAAAEdGhpcwUAAAAOa2V5X21pbmltYWxCaWQAAAAAEHJlZ2lzdHJhckFkZHJlc3MJAQAAABBnZXRTdHJpbmdPclRocm93AAAAAgUAAAAEdGhpcwUAAAAUa2V5X3JlZ2lzdHJhckFkZHJlc3MAAAAACXJlZ2lzdHJhcgkBAAAAE3BhcnNlQWRkcmVzc09yVGhyb3cAAAABBQAAABByZWdpc3RyYXJBZGRyZXNzAQAAAAhjYWxjSGFzaAAAAAIAAAAEbmFtZQAAAAZhbW91bnQJAAJYAAAAAQkACvAAAAABCQAKjAAAAAEJAADLAAAAAgkAAZsAAAABBQAAAARuYW1lCQABmgAAAAEFAAAABmFtb3VudAEAAAANaXNDb3JyZWN0TmFtZQAAAAEAAAAEbmFtZQQAAAAHJG1hdGNoMAkAA/wAAAAEBQAAAAR0aGlzAgAAAAljaGVja05hbWUJAARMAAAAAgUAAAAEbmFtZQUAAAADbmlsBQAAAANuaWwDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAB0Jvb2xlYW4EAAAAAWIFAAAAByRtYXRjaDAFAAAAAWIJAAACAAAAAQIAAAAlVW5zdXBwb3J0ZWQgcmVzdWx0IGZvcm1hdCAoY2hlY2tOYW1lKQAAAAAJUEhBU0VfQklEAgAAAANCSUQAAAAADFBIQVNFX1JFVkVBTAIAAAAGUkVWRUFMAQAAAA9fZ2V0QXVjdGlvbkJ5SWQAAAABAAAACWF1Y3Rpb25JZAQAAAAIYmlkU3RhcnQJAABkAAAAAgUAAAAMYXVjdGlvblN0YXJ0CQAAaAAAAAIFAAAACWF1Y3Rpb25JZAUAAAAPYXVjdGlvbkR1cmF0aW9uBAAAAAtyZXZlYWxTdGFydAkAAGQAAAACBQAAAAhiaWRTdGFydAUAAAALYmlkRHVyYXRpb24EAAAACmF1Y3Rpb25FbmQJAABkAAAAAgUAAAALcmV2ZWFsU3RhcnQFAAAADnJldmVhbER1cmF0aW9uBAAAAAVwaGFzZQMJAABmAAAAAggFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAAC3JldmVhbFN0YXJ0BQAAAAxQSEFTRV9SRVZFQUwFAAAACVBIQVNFX0JJRAkABRcAAAAFBQAAAAlhdWN0aW9uSWQFAAAABXBoYXNlBQAAAAhiaWRTdGFydAUAAAALcmV2ZWFsU3RhcnQFAAAACmF1Y3Rpb25FbmQBAAAAC2lzQXZhaWxhYmxlAAAAAQAAAARuYW1lBAAAAAckbWF0Y2gwCQAD/AAAAAQFAAAACXJlZ2lzdHJhcgIAAAAJYXZhaWxhYmxlCQAETAAAAAIFAAAABG5hbWUFAAAAA25pbAUAAAADbmlsAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAdCb29sZWFuBAAAAAlhdmFpbGFibGUFAAAAByRtYXRjaDAFAAAACWF2YWlsYWJsZQkAAAIAAAABAgAAACVVbnN1cHBvcnRlZCByZXN1bHQgZm9ybWF0IChhdmFpbGFibGUpAQAAAApnZXRBdWN0aW9uAAAAAAQAAAAJYXVjdGlvbklkCQAAaQAAAAIJAABlAAAAAggFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAADGF1Y3Rpb25TdGFydAUAAAAPYXVjdGlvbkR1cmF0aW9uCQEAAAAPX2dldEF1Y3Rpb25CeUlkAAAAAQUAAAAJYXVjdGlvbklkAQAAAA9nZXRBdWN0aW9uUGhhc2UAAAAABAAAAAckbWF0Y2gwCQEAAAAKZ2V0QXVjdGlvbgAAAAADCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAHChJbnQsIFN0cmluZywgSW50LCBJbnQsIEludCkEAAAAB2F1Y3Rpb24FAAAAByRtYXRjaDAEAAAACWF1Y3Rpb25JZAgFAAAAB2F1Y3Rpb24AAAACXzEEAAAABXBoYXNlCAUAAAAHYXVjdGlvbgAAAAJfMgkABRQAAAACBQAAAAlhdWN0aW9uSWQFAAAABXBoYXNlCQAAAgAAAAECAAAAFEludmFsaWQgYXVjdGlvbiBpbmZvAAAABgAAAANpbnYBAAAABGluaXQAAAAGAAAACXRpbWVzdGFtcAAAAAtiaWREdXJhdGlvbgAAAA5yZXZlYWxEdXJhdGlvbgAAAAhlcnJvckZlZQAAAAptaW5pbWFsQmlkAAAAEHJlZ2lzdHJhckFkZHJlc3MDCQEAAAACIT0AAAACBQAAAAR0aGlzCAUAAAADaW52AAAABmNhbGxlcgkAAAIAAAABAgAAABtvbmx5IHNlbGYgY2FsbHMgYXJlIGFsbG93ZWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEWtleV9pbml0VGltZXN0YW1wBQAAAAl0aW1lc3RhbXAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAD2tleV9iaWREdXJhdGlvbgUAAAALYmlkRHVyYXRpb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEmtleV9yZXZlYWxEdXJhdGlvbgUAAAAOcmV2ZWFsRHVyYXRpb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADGtleV9lcnJvckZlZQUAAAAIZXJyb3JGZWUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADmtleV9taW5pbWFsQmlkBQAAAAptaW5pbWFsQmlkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAFGtleV9yZWdpc3RyYXJBZGRyZXNzBQAAABByZWdpc3RyYXJBZGRyZXNzBQAAAANuaWwAAAADaW52AQAAAA5nZXRBdWN0aW9uQnlJZAAAAAEAAAAJYXVjdGlvbklkCQAFFAAAAAIFAAAAA25pbAkBAAAAD19nZXRBdWN0aW9uQnlJZAAAAAEFAAAACWF1Y3Rpb25JZAAAAANpbnYBAAAACWF2YWlsYWJsZQAAAAEAAAAEbmFtZQkABRQAAAACBQAAAANuaWwJAQAAAAtpc0F2YWlsYWJsZQAAAAEFAAAABG5hbWUAAAADaW52AQAAAANiaWQAAAACAAAACWF1Y3Rpb25JZAAAAARoYXNoBAAAAANwbXQDAwkA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", "height": 2267402, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: AjVhcvjXzEMp2qRbg37G2QUnPbevWLESZvsz6UFrid9u Next: BjWfxN73V2WiWC55mmL6F3KkinH4HDeSspMYkkerrKc7 Diff:
OldNewDifferences
4949
5050 let key_registrarAddress = "registrarAddress"
5151
52-let key_minimalNameLength = "minimalNameLength"
53-
5452 let auctionStart = getIntegerOrThrow(this, key_initTimestamp)
5553
5654 let bidDuration = getIntegerOrThrow(this, key_bidDuration)
6664 let registrarAddress = getStringOrThrow(this, key_registrarAddress)
6765
6866 let registrar = parseAddressOrThrow(registrarAddress)
69-
70-let minimalNameLength = getIntegerOrThrow(this, key_minimalNameLength)
7167
7268 func calcHash (name,amount) = toBase58String(blake2b256_16Kb(keccak256_16Kb((toBytes(name) + toBytes(amount)))))
7369
9591 }
9692
9793
94+func isAvailable (name) = match invoke(registrar, "available", [name], nil) {
95+ case available: Boolean =>
96+ available
97+ case _ =>
98+ throw("Unsupported result format (available)")
99+}
100+
101+
98102 func getAuction () = {
99103 let auctionId = ((lastBlock.timestamp - auctionStart) / auctionDuration)
100104 _getAuctionById(auctionId)
112116
113117
114118 @Callable(inv)
119+func init (timestamp,bidDuration,revealDuration,errorFee,minimalBid,registrarAddress) = if ((this != inv.caller))
120+ then throw("only self calls are allowed")
121+ 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)]
122+
123+
124+
125+@Callable(inv)
115126 func getAuctionById (auctionId) = $Tuple2(nil, _getAuctionById(auctionId))
116127
117128
118129
119130 @Callable(inv)
120-func init (timestamp,bidDuration,revealDuration,errorFee,minimalBid,registrarAddress,minimalNameLength) = if ((this != inv.caller))
121- then throw("only self calls are allowed")
122- 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_minimalNameLength, minimalNameLength)]
123-
124-
125-
126-@Callable(inv)
127-func available (name) = {
128- let symbols = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-"]
129- let nameSplited = split(name, "")
130- let available = match invoke(registrar, "available", [name], nil) {
131- case a: Boolean =>
132- a
133- case _ =>
134- throw("Unsupported result format (available)")
135- }
136- if (!(available))
137- then $Tuple2(nil, false)
138- else if (if ((minimalNameLength > size(name)))
139- then true
140- else (size(name) > 63))
141- then $Tuple2(nil, false)
142- else if (if (if ((nameSplited[0] == "-"))
143- then true
144- else (nameSplited[(size(nameSplited) - 1)] == "-"))
145- then true
146- else contains(name, "--"))
147- then $Tuple2(nil, false)
148- else {
149- func foldCheckName (acc,char) = if (acc)
150- then containsElement(symbols, char)
151- else false
152-
153- $Tuple2(nil, {
154- let $l = nameSplited
155- let $s = size($l)
156- let $acc0 = true
157- func $f0_1 ($a,$i) = if (($i >= $s))
158- then $a
159- else foldCheckName($a, $l[$i])
160-
161- func $f0_2 ($a,$i) = if (($i >= $s))
162- then $a
163- else throw("List size exceeds 65")
164-
165- $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($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), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65)
166- })
167- }
168- }
131+func available (name) = $Tuple2(nil, isAvailable(name))
169132
170133
171134
178141 else throw("Single payment required")
179142 let address = toString(inv.caller)
180143 let bidKey = key_bid(key_bidderHash(toString(auctionId), address, hash))
181- let $t056885745 = getAuctionPhase()
182- let currentAuctionId = $t056885745._1
183- let currentPeriod = $t056885745._2
144+ let $t048604917 = getAuctionPhase()
145+ let currentAuctionId = $t048604917._1
146+ let currentPeriod = $t048604917._2
184147 if ((currentAuctionId != auctionId))
185148 then throw("Auctions is already over")
186149 else if ((currentPeriod != PHASE_BID))
201164 let topKey = key_top(name)
202165 let top2Key = key_top2(name)
203166 let deposit = valueOrErrorMessage(getInteger(this, key_bid(bidderHashKey)), ("Bid doesn't exists " + hash))
204- let $t065256582 = getAuctionPhase()
205- let currentAuctionId = $t065256582._1
206- let currentPeriod = $t065256582._2
167+ let $t056975754 = getAuctionPhase()
168+ let currentAuctionId = $t056975754._1
169+ let currentPeriod = $t056975754._2
207170 if ((currentAuctionId != auctionId))
208171 then throw("Auctions is already over")
209172 else if ((currentPeriod != PHASE_REVEAL))
224187 if (if (if (if ((bidAmount > minimalBid))
225188 then (deposit >= bidAmount)
226189 else false)
227- then isCorrectName(name)
190+ then isAvailable(name)
228191 else false)
229192 then (bidAmount > topBidAmount)
230193 else false)
262225 let bidKey = key_bid(bidderHashKey)
263226 let revealKey = key_reveal(bidderHashKey)
264227 let revealedBid = getString(this, revealKey)
265- let $t090489343 = {
228+ let $t082188513 = {
266229 let bidValues = split(valueOrErrorMessage(revealedBid, (("Bid with hash " + hash) + " not found")), ",")
267230 $Tuple3(parseIntValue(bidValues[0]), parseIntValue(bidValues[1]), bidValues[2])
268231 }
269- let deposit = $t090489343._1
270- let bid = $t090489343._2
271- let name = $t090489343._3
232+ let deposit = $t082188513._1
233+ let bid = $t082188513._2
234+ let name = $t082188513._3
272235 let topKey = key_top(name)
273236 let top2Key = key_top2(name)
274237 let winnerLink = valueOrErrorMessage(getString(this, topKey), "Auction winner has not been determined")
284247 then true
285248 else (winnerAuctionId != auctionId))
286249 then true
287- else !(isCorrectName(name)))
250+ else !(isAvailable(name)))
288251 then [ScriptTransfer(caller, (deposit - fraction(deposit, 10, 100)), unit)]
289252 else if ((winnerLink == revealKey))
290253 then {
291- let claimNft = invoke(registrar, "register", [name, winnerAddress, 31556952000], nil)
254+ let auctionEnd = _getAuctionById(auctionId)._5
255+ let claimNft = invoke(registrar, "register", [name, winnerAddress, auctionEnd], nil)
292256 if ((claimNft == claimNft))
293257 then [ScriptTransfer(caller, (deposit - top2Bid), unit), DeleteEntry(top2Key)]
294258 else throw("Strict value is not equal to itself.")
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
52-let key_minimalNameLength = "minimalNameLength"
53-
5452 let auctionStart = getIntegerOrThrow(this, key_initTimestamp)
5553
5654 let bidDuration = getIntegerOrThrow(this, key_bidDuration)
5755
5856 let revealDuration = getIntegerOrThrow(this, key_revealDuration)
5957
6058 let auctionDuration = (bidDuration + revealDuration)
6159
6260 let errorFee = getIntegerOrThrow(this, key_errorFee)
6361
6462 let minimalBid = getIntegerOrThrow(this, key_minimalBid)
6563
6664 let registrarAddress = getStringOrThrow(this, key_registrarAddress)
6765
6866 let registrar = parseAddressOrThrow(registrarAddress)
69-
70-let minimalNameLength = getIntegerOrThrow(this, key_minimalNameLength)
7167
7268 func calcHash (name,amount) = toBase58String(blake2b256_16Kb(keccak256_16Kb((toBytes(name) + toBytes(amount)))))
7369
7470
7571 func isCorrectName (name) = match invoke(this, "checkName", [name], nil) {
7672 case b: Boolean =>
7773 b
7874 case _ =>
7975 throw("Unsupported result format (checkName)")
8076 }
8177
8278
8379 let PHASE_BID = "BID"
8480
8581 let PHASE_REVEAL = "REVEAL"
8682
8783 func _getAuctionById (auctionId) = {
8884 let bidStart = (auctionStart + (auctionId * auctionDuration))
8985 let revealStart = (bidStart + bidDuration)
9086 let auctionEnd = (revealStart + revealDuration)
9187 let phase = if ((lastBlock.timestamp > revealStart))
9288 then PHASE_REVEAL
9389 else PHASE_BID
9490 $Tuple5(auctionId, phase, bidStart, revealStart, auctionEnd)
9591 }
9692
9793
94+func isAvailable (name) = match invoke(registrar, "available", [name], nil) {
95+ case available: Boolean =>
96+ available
97+ case _ =>
98+ throw("Unsupported result format (available)")
99+}
100+
101+
98102 func getAuction () = {
99103 let auctionId = ((lastBlock.timestamp - auctionStart) / auctionDuration)
100104 _getAuctionById(auctionId)
101105 }
102106
103107
104108 func getAuctionPhase () = match getAuction() {
105109 case auction: (Int, String, Int, Int, Int) =>
106110 let auctionId = auction._1
107111 let phase = auction._2
108112 $Tuple2(auctionId, phase)
109113 case _ =>
110114 throw("Invalid auction info")
111115 }
112116
113117
114118 @Callable(inv)
119+func init (timestamp,bidDuration,revealDuration,errorFee,minimalBid,registrarAddress) = if ((this != inv.caller))
120+ then throw("only self calls are allowed")
121+ 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)]
122+
123+
124+
125+@Callable(inv)
115126 func getAuctionById (auctionId) = $Tuple2(nil, _getAuctionById(auctionId))
116127
117128
118129
119130 @Callable(inv)
120-func init (timestamp,bidDuration,revealDuration,errorFee,minimalBid,registrarAddress,minimalNameLength) = if ((this != inv.caller))
121- then throw("only self calls are allowed")
122- 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_minimalNameLength, minimalNameLength)]
123-
124-
125-
126-@Callable(inv)
127-func available (name) = {
128- let symbols = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-"]
129- let nameSplited = split(name, "")
130- let available = match invoke(registrar, "available", [name], nil) {
131- case a: Boolean =>
132- a
133- case _ =>
134- throw("Unsupported result format (available)")
135- }
136- if (!(available))
137- then $Tuple2(nil, false)
138- else if (if ((minimalNameLength > size(name)))
139- then true
140- else (size(name) > 63))
141- then $Tuple2(nil, false)
142- else if (if (if ((nameSplited[0] == "-"))
143- then true
144- else (nameSplited[(size(nameSplited) - 1)] == "-"))
145- then true
146- else contains(name, "--"))
147- then $Tuple2(nil, false)
148- else {
149- func foldCheckName (acc,char) = if (acc)
150- then containsElement(symbols, char)
151- else false
152-
153- $Tuple2(nil, {
154- let $l = nameSplited
155- let $s = size($l)
156- let $acc0 = true
157- func $f0_1 ($a,$i) = if (($i >= $s))
158- then $a
159- else foldCheckName($a, $l[$i])
160-
161- func $f0_2 ($a,$i) = if (($i >= $s))
162- then $a
163- else throw("List size exceeds 65")
164-
165- $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($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), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65)
166- })
167- }
168- }
131+func available (name) = $Tuple2(nil, isAvailable(name))
169132
170133
171134
172135 @Callable(inv)
173136 func bid (auctionId,hash) = {
174137 let pmt = if (if ((size(inv.payments) == 1))
175138 then (inv.payments[0].assetId == unit)
176139 else false)
177140 then inv.payments[0].amount
178141 else throw("Single payment required")
179142 let address = toString(inv.caller)
180143 let bidKey = key_bid(key_bidderHash(toString(auctionId), address, hash))
181- let $t056885745 = getAuctionPhase()
182- let currentAuctionId = $t056885745._1
183- let currentPeriod = $t056885745._2
144+ let $t048604917 = getAuctionPhase()
145+ let currentAuctionId = $t048604917._1
146+ let currentPeriod = $t048604917._2
184147 if ((currentAuctionId != auctionId))
185148 then throw("Auctions is already over")
186149 else if ((currentPeriod != PHASE_BID))
187150 then throw("Bid period is over")
188151 else if (isDefined(getInteger(this, bidKey)))
189152 then throw("Bid with exact amount already presented")
190153 else [IntegerEntry(bidKey, pmt)]
191154 }
192155
193156
194157
195158 @Callable(inv)
196159 func reveal (auctionId,name,bidAmount) = {
197160 let address = toString(inv.caller)
198161 let hash = calcHash(name, bidAmount)
199162 let bidderHashKey = key_bidderHash(toString(auctionId), address, hash)
200163 let revealKey = key_reveal(bidderHashKey)
201164 let topKey = key_top(name)
202165 let top2Key = key_top2(name)
203166 let deposit = valueOrErrorMessage(getInteger(this, key_bid(bidderHashKey)), ("Bid doesn't exists " + hash))
204- let $t065256582 = getAuctionPhase()
205- let currentAuctionId = $t065256582._1
206- let currentPeriod = $t065256582._2
167+ let $t056975754 = getAuctionPhase()
168+ let currentAuctionId = $t056975754._1
169+ let currentPeriod = $t056975754._2
207170 if ((currentAuctionId != auctionId))
208171 then throw("Auctions is already over")
209172 else if ((currentPeriod != PHASE_REVEAL))
210173 then throw("Reveal period is over")
211174 else if (isDefined(getString(this, revealKey)))
212175 then throw("Bid is already revealed")
213176 else {
214177 let revealBid = [StringEntry(revealKey, ((((toString(deposit) + ",") + toString(bidAmount)) + ",") + name))]
215178 let topBidderRevealKey = getString(this, topKey)
216179 if (isDefined(topBidderRevealKey))
217180 then {
218181 let topBidderKey = value(topBidderRevealKey)
219182 let topBidderData = value(getString(this, topBidderKey))
220183 let topBidAmount = parseIntValue(split(topBidderData, ",")[1])
221184 let top2BidderInfo = split(getStringOrThrow(this, top2Key), ",")
222185 let top2BidderKey = top2BidderInfo[0]
223186 let top2BidAmount = parseIntOrThrow(top2BidderInfo[1])
224187 if (if (if (if ((bidAmount > minimalBid))
225188 then (deposit >= bidAmount)
226189 else false)
227- then isCorrectName(name)
190+ then isAvailable(name)
228191 else false)
229192 then (bidAmount > topBidAmount)
230193 else false)
231194 then {
232195 let newTopBids = [StringEntry(topKey, revealKey), StringEntry(topKey, ((topBidderKey + ",") + toString(topBidAmount)))]
233196 (revealBid ++ newTopBids)
234197 }
235198 else if (if ((top2BidAmount >= bidAmount))
236199 then (top2BidderKey == topBidderKey)
237200 else false)
238201 then (revealBid :+ StringEntry(top2Key, ((revealKey + ",") + toString(bidAmount))))
239202 else if ((bidAmount > top2BidAmount))
240203 then (revealBid :+ StringEntry(top2Key, ((revealKey + ",") + toString(bidAmount))))
241204 else revealBid
242205 }
243206 else if (if ((deposit >= bidAmount))
244207 then isCorrectName(name)
245208 else false)
246209 then {
247210 let topBids = [StringEntry(topKey, revealKey), StringEntry(top2Key, ((revealKey + ",") + toString(bidAmount)))]
248211 (revealBid ++ topBids)
249212 }
250213 else revealBid
251214 }
252215 }
253216
254217
255218
256219 @Callable(inv)
257220 func finalize (auctionId,hashes) = {
258221 let caller = inv.caller
259222 let callerStr = toString(caller)
260223 func foldRefund (acc,hash) = {
261224 let bidderHashKey = key_bidderHash(toString(auctionId), callerStr, hash)
262225 let bidKey = key_bid(bidderHashKey)
263226 let revealKey = key_reveal(bidderHashKey)
264227 let revealedBid = getString(this, revealKey)
265- let $t090489343 = {
228+ let $t082188513 = {
266229 let bidValues = split(valueOrErrorMessage(revealedBid, (("Bid with hash " + hash) + " not found")), ",")
267230 $Tuple3(parseIntValue(bidValues[0]), parseIntValue(bidValues[1]), bidValues[2])
268231 }
269- let deposit = $t090489343._1
270- let bid = $t090489343._2
271- let name = $t090489343._3
232+ let deposit = $t082188513._1
233+ let bid = $t082188513._2
234+ let name = $t082188513._3
272235 let topKey = key_top(name)
273236 let top2Key = key_top2(name)
274237 let winnerLink = valueOrErrorMessage(getString(this, topKey), "Auction winner has not been determined")
275238 let winnerInfo = split(winnerLink, "_")
276239 let winnerAuctionId = parseIntValue(winnerInfo[1])
277240 let winnerAddress = winnerInfo[2]
278241 let top2BidderInfo = split(getStringOrThrow(this, top2Key), ",")
279242 let top2Bid = parseIntOrThrow(top2BidderInfo[1])
280243 let deleteEntries = [DeleteEntry(revealKey), DeleteEntry(bidKey)]
281244 let transferAndDeleteEntry = if (if (if (if ((minimalBid > bid))
282245 then true
283246 else (bid > deposit))
284247 then true
285248 else (winnerAuctionId != auctionId))
286249 then true
287- else !(isCorrectName(name)))
250+ else !(isAvailable(name)))
288251 then [ScriptTransfer(caller, (deposit - fraction(deposit, 10, 100)), unit)]
289252 else if ((winnerLink == revealKey))
290253 then {
291- let claimNft = invoke(registrar, "register", [name, winnerAddress, 31556952000], nil)
254+ let auctionEnd = _getAuctionById(auctionId)._5
255+ let claimNft = invoke(registrar, "register", [name, winnerAddress, auctionEnd], nil)
292256 if ((claimNft == claimNft))
293257 then [ScriptTransfer(caller, (deposit - top2Bid), unit), DeleteEntry(top2Key)]
294258 else throw("Strict value is not equal to itself.")
295259 }
296260 else [ScriptTransfer(caller, deposit, unit)]
297261 ((acc ++ deleteEntries) ++ transferAndDeleteEntry)
298262 }
299263
300264 let $l = hashes
301265 let $s = size($l)
302266 let $acc0 = nil
303267 func $f0_1 ($a,$i) = if (($i >= $s))
304268 then $a
305269 else foldRefund($a, $l[$i])
306270
307271 func $f0_2 ($a,$i) = if (($i >= $s))
308272 then $a
309273 else throw("List size exceeds 10")
310274
311275 $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)
312276 }
313277
314278

github/deemru/w8io/169f3d6 
64.70 ms