tx · 3v2vgfwo5QMZcDa7to9gB8pU7Ax2fW8o98AtmJsZG5is 3MxssetYXJfiGwzo9pqChsSwYj3tCYq5FFH: -0.01300000 Waves 2022.10.04 13:42 [2257482] smart account 3MxssetYXJfiGwzo9pqChsSwYj3tCYq5FFH > SELF 0.00000000 Waves
{ "type": 13, "id": "3v2vgfwo5QMZcDa7to9gB8pU7Ax2fW8o98AtmJsZG5is", "fee": 1300000, "feeAssetId": null, "timestamp": 1664880177848, "version": 2, "chainId": 84, "sender": "3MxssetYXJfiGwzo9pqChsSwYj3tCYq5FFH", "senderPublicKey": "46sMMaC9rMPQdyTE87RpcnevTY9oheuDqzfnuQzoyCtv", "proofs": [ "3s9zzkxKTUXq8t5SJbARZet1UxmHAMYWrGM4zQXmJ2RGXMzUYhQSsBzukt6DL4XQ7sk29bUbofTesrFjMiKhdbMX" ], "script": "base64:AAIFAAAAAAAAAC0IAhIDCgEBEgMKAQgSAwoBCBIHCgUBAQEBARIECgIBCBIFCgMBCAESBAoCARgAAAAeAQAAABFnZXRJbnRlZ2VyT3JUaHJvdwAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAdhZGRyZXNzBQAAAANrZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADENhbid0IHJlYWQgJwUAAAADa2V5AgAAAA0nIGF0IGFkZHJlc3MgCQAEJQAAAAEFAAAAB2FkZHJlc3MBAAAAEGdldFN0cmluZ09yVGhyb3cAAAACAAAAB2FkZHJlc3MAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAxDYW4ndCByZWFkICcFAAAAA2tleQIAAAANJyBhdCBhZGRyZXNzIAkABCUAAAABBQAAAAdhZGRyZXNzAQAAABNnZXRJbnRlZ2VyT3JEZWZhdWx0AAAAAwAAAAdhZGRyZXNzAAAAA2tleQAAAAdkZWZhdWx0CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQUAAAAHZGVmYXVsdAEAAAAPcGFyc2VJbnRPclRocm93AAAAAQAAAAhtYXliZUludAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEtgAAAAEFAAAACG1heWJlSW50CQABLAAAAAIJAAEsAAAAAgIAAAAaQ2FuJ3QgcGFyc2UgaW50ZWdlciBmcm9tICcFAAAACG1heWJlSW50AgAAAAEnAQAAABNwYXJzZUFkZHJlc3NPclRocm93AAAAAQAAAAxtYXliZUFkZHJlc3MJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABBQAAAAxtYXliZUFkZHJlc3MJAAEsAAAAAgkAASwAAAACAgAAABpDYW4ndCBwYXJzZSBhZGRyZXNzIGZyb20gJwUAAAAMbWF5YmVBZGRyZXNzAgAAAAEnAQAAABFwYXJzZUludE9yRGVmYXVsdAAAAAIAAAAIbWF5YmVJbnQAAAAHZGVmYXVsdAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABLYAAAABBQAAAAhtYXliZUludAUAAAAHZGVmYXVsdAEAAAAKa2V5X2VudGl0eQAAAAMAAAAEbmFtZQAAAAJwawAAAAhwcm9wZXJ0eQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARuYW1lAgAAAAFfBQAAAAJwawIAAAABXwUAAAAIcHJvcGVydHkBAAAAB2tleV90b3AAAAABAAAABG5hbWUJAAEsAAAAAgIAAAAEVG9wXwUAAAAEbmFtZQEAAAAOa2V5X2JpZGRlckhhc2gAAAADAAAACWF1Y3Rpb25JZAAAAAdhZGRyZXNzAAAABGhhc2gJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAJYXVjdGlvbklkAgAAAAFfBQAAAAdhZGRyZXNzAgAAAAFfBQAAAARoYXNoAQAAAAdrZXlfYmlkAAAAAQAAAApiaWRkZXJIYXNoCQABLAAAAAICAAAABEJpZF8FAAAACmJpZGRlckhhc2gBAAAACmtleV9yZXZlYWwAAAABAAAACmJpZGRlckhhc2gJAAEsAAAAAgIAAAAHUmV2ZWFsXwUAAAAKYmlkZGVySGFzaAAAAAARa2V5X2luaXRUaW1lc3RhbXACAAAADWluaXRUaW1lc3RhbXAAAAAAD2tleV9iaWREdXJhdGlvbgIAAAALYmlkRHVyYXRpb24AAAAAEmtleV9yZXZlYWxEdXJhdGlvbgIAAAAOcmV2ZWFsRHVyYXRpb24AAAAADGtleV9lcnJvckZlZQIAAAAIZXJyb3JGZWUAAAAADmtleV9taW5pbWFsQmlkAgAAAAptaW5pbWFsQmlkAAAAAAxhdWN0aW9uU3RhcnQJAQAAABFnZXRJbnRlZ2VyT3JUaHJvdwAAAAIFAAAABHRoaXMFAAAAEWtleV9pbml0VGltZXN0YW1wAAAAAAtiaWREdXJhdGlvbgkBAAAAEWdldEludGVnZXJPclRocm93AAAAAgUAAAAEdGhpcwUAAAAPa2V5X2JpZER1cmF0aW9uAAAAAA5yZXZlYWxEdXJhdGlvbgkBAAAAEWdldEludGVnZXJPclRocm93AAAAAgUAAAAEdGhpcwUAAAASa2V5X3JldmVhbER1cmF0aW9uAAAAAA9hdWN0aW9uRHVyYXRpb24JAABkAAAAAgUAAAALYmlkRHVyYXRpb24FAAAADnJldmVhbER1cmF0aW9uAAAAAAhlcnJvckZlZQkBAAAAEWdldEludGVnZXJPclRocm93AAAAAgUAAAAEdGhpcwUAAAAMa2V5X2Vycm9yRmVlAAAAAAptaW5pbWFsQmlkCQEAAAARZ2V0SW50ZWdlck9yVGhyb3cAAAACBQAAAAR0aGlzBQAAAA5rZXlfbWluaW1hbEJpZAAAAAAJUEhBU0VfQklEAgAAAANCSUQAAAAADFBIQVNFX1JFVkVBTAIAAAAGUkVWRUFMAQAAABZwcml2YXRlX2dldEF1Y3Rpb25CeUlkAAAAAQAAAAlhdWN0aW9uSWQEAAAACGJpZFN0YXJ0CQAAZAAAAAIFAAAADGF1Y3Rpb25TdGFydAkAAGgAAAACBQAAAAlhdWN0aW9uSWQFAAAAD2F1Y3Rpb25EdXJhdGlvbgQAAAALcmV2ZWFsU3RhcnQJAABkAAAAAgUAAAAIYmlkU3RhcnQFAAAAC2JpZER1cmF0aW9uBAAAAAphdWN0aW9uRW5kCQAAZAAAAAIFAAAAC3JldmVhbFN0YXJ0BQAAAA5yZXZlYWxEdXJhdGlvbgQAAAAFcGhhc2UDCQAAZgAAAAIIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAAAtyZXZlYWxTdGFydAUAAAAMUEhBU0VfUkVWRUFMBQAAAAlQSEFTRV9CSUQJAAUXAAAABQUAAAAJYXVjdGlvbklkBQAAAAVwaGFzZQUAAAAIYmlkU3RhcnQFAAAAC3JldmVhbFN0YXJ0BQAAAAphdWN0aW9uRW5kAQAAAApnZXRBdWN0aW9uAAAAAAQAAAAJYXVjdGlvbklkCQAAaQAAAAIJAABlAAAAAggFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAADGF1Y3Rpb25TdGFydAUAAAAPYXVjdGlvbkR1cmF0aW9uCQEAAAAWcHJpdmF0ZV9nZXRBdWN0aW9uQnlJZAAAAAEFAAAACWF1Y3Rpb25JZAEAAAAPZ2V0QXVjdGlvblBoYXNlAAAAAAQAAAAHJG1hdGNoMAkBAAAACmdldEF1Y3Rpb24AAAAAAwkAAAEAAAACBQAAAAck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XzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACBQAAAAUkYWNjMAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAgAAAAAAAAAAAwAAAAAAAAAABAAAAAAAAAAABQAAAAAAAAAABgAAAAAAAAAABwAAAAAAAAAACAAAAAAAAAAACQAAAAAAAAAACgAAAAAAAAAACwAAAAAAAAAADAAAAAAAAAAADQAAAAAAAAAADgAAAAAAAAAADwAAAAAAAAAAEAAAAAAAAAAAEQAAAAAAAAAAEgAAAAAAAAAAEwAAAAAAAAAAFAAAAAAAAAAAFQAAAAAAAAAAFgAAAAAAAAAAFwAAAAAAAAAAGAAAAAAAAAAAGQAAAAAAAAAAGgAAAAAAAAAAGwAAAAAAAAAAHAAAAAAAAAAAHQAAAAAAAAAAHgAAAAAAAAAAHwAAAAAAAAAAIAAAAAAAAAAAIQAAAAAAAAAAIgAAAAAAAAAAIwAAAAAAAAAAJAAAAAAAAAAAJQAA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", "height": 2257482, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: AkpcQGH5fnbgJfBhmGksAuD8Yk11yyqY3gNwbGyBUoxE Next: 9kzFXayTxKYFV6mu9vLAxYbDervH7oVcMTwyb1TvKmcX Diff:
Old | New | Differences | |
---|---|---|---|
60 | 60 | ||
61 | 61 | let PHASE_REVEAL = "REVEAL" | |
62 | 62 | ||
63 | - | func getAuction () = { | |
64 | - | let auctionId = ((lastBlock.timestamp - auctionStart) / auctionDuration) | |
63 | + | func private_getAuctionById (auctionId) = { | |
65 | 64 | let bidStart = (auctionStart + (auctionId * auctionDuration)) | |
66 | 65 | let revealStart = (bidStart + bidDuration) | |
67 | 66 | let auctionEnd = (revealStart + revealDuration) | |
69 | 68 | then PHASE_REVEAL | |
70 | 69 | else PHASE_BID | |
71 | 70 | $Tuple5(auctionId, phase, bidStart, revealStart, auctionEnd) | |
71 | + | } | |
72 | + | ||
73 | + | ||
74 | + | func getAuction () = { | |
75 | + | let auctionId = ((lastBlock.timestamp - auctionStart) / auctionDuration) | |
76 | + | private_getAuctionById(auctionId) | |
72 | 77 | } | |
73 | 78 | ||
74 | 79 | ||
98 | 103 | case _ => | |
99 | 104 | throw("Unexpected checkName result") | |
100 | 105 | } | |
106 | + | ||
107 | + | ||
108 | + | @Callable(inv) | |
109 | + | func getAuctionById (auctionId) = $Tuple2(nil, private_getAuctionById(auctionId)) | |
110 | + | ||
101 | 111 | ||
102 | 112 | ||
103 | 113 | @Callable(inv) | |
159 | 169 | else throw("Single payment required") | |
160 | 170 | let address = toString(inv.caller) | |
161 | 171 | let bidKey = key_bid(key_bidderHash(toString(auctionId), address, hash)) | |
162 | - | let $ | |
163 | - | let currentAuctionId = $ | |
164 | - | let currentPeriod = $ | |
172 | + | let $t051575214 = getAuctionPhase() | |
173 | + | let currentAuctionId = $t051575214._1 | |
174 | + | let currentPeriod = $t051575214._2 | |
165 | 175 | if ((currentAuctionId != auctionId)) | |
166 | 176 | then throw("Auctions is already over") | |
167 | 177 | else if ((currentPeriod != PHASE_BID)) | |
181 | 191 | let revealKey = key_reveal(bidderHashKey) | |
182 | 192 | let topKey = key_top(name) | |
183 | 193 | let deposit = valueOrErrorMessage(getInteger(this, key_bid(bidderHashKey)), ("Bid doesn't exists " + hash)) | |
184 | - | let $ | |
185 | - | let currentAuctionId = $ | |
186 | - | let currentPeriod = $ | |
194 | + | let $t059626019 = getAuctionPhase() | |
195 | + | let currentAuctionId = $t059626019._1 | |
196 | + | let currentPeriod = $t059626019._2 | |
187 | 197 | if ((currentAuctionId != auctionId)) | |
188 | 198 | then throw("Auctions is already over") | |
189 | 199 | else if ((currentPeriod != PHASE_REVEAL)) | |
238 | 248 | let bidKey = key_bid(bidderHashKey) | |
239 | 249 | let revealKey = key_reveal(bidderHashKey) | |
240 | 250 | let revealedBid = getString(this, revealKey) | |
241 | - | let $ | |
251 | + | let $t082348529 = { | |
242 | 252 | let bidValues = split(valueOrErrorMessage(revealedBid, (("Bid with hash " + hash) + " not found")), ",") | |
243 | 253 | $Tuple3(parseIntValue(bidValues[0]), parseIntValue(bidValues[1]), bidValues[2]) | |
244 | 254 | } | |
245 | - | let deposit = $ | |
246 | - | let bid = $ | |
247 | - | let name = $ | |
255 | + | let deposit = $t082348529._1 | |
256 | + | let bid = $t082348529._2 | |
257 | + | let name = $t082348529._3 | |
248 | 258 | let topKey = key_top(name) | |
249 | 259 | let winnerInfo = split(valueOrErrorMessage(getString(this, topKey), "Auction winner has not been determined"), ",") | |
250 | - | let $ | |
251 | - | let winnerLink = $ | |
252 | - | let secondTopBid = $ | |
260 | + | let $t086958776 = $Tuple2(winnerInfo[0], parseIntOrThrow(winnerInfo[1])) | |
261 | + | let winnerLink = $t086958776._1 | |
262 | + | let secondTopBid = $t086958776._2 | |
253 | 263 | let winnerAuctionId = parseIntValue(split(winnerLink, "_")[1]) | |
254 | 264 | let refundAmont = if (if (if (if ((minimalBid > bid)) | |
255 | 265 | then true |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | func getIntegerOrThrow (address,key) = valueOrErrorMessage(getInteger(address, key), ((("Can't read '" + key) + "' at address ") + toString(address))) | |
5 | 5 | ||
6 | 6 | ||
7 | 7 | func getStringOrThrow (address,key) = valueOrErrorMessage(getString(address, key), ((("Can't read '" + key) + "' at address ") + toString(address))) | |
8 | 8 | ||
9 | 9 | ||
10 | 10 | func getIntegerOrDefault (address,key,default) = valueOrElse(getInteger(address, key), default) | |
11 | 11 | ||
12 | 12 | ||
13 | 13 | func parseIntOrThrow (maybeInt) = valueOrErrorMessage(parseInt(maybeInt), (("Can't parse integer from '" + maybeInt) + "'")) | |
14 | 14 | ||
15 | 15 | ||
16 | 16 | func parseAddressOrThrow (maybeAddress) = valueOrErrorMessage(addressFromString(maybeAddress), (("Can't parse address from '" + maybeAddress) + "'")) | |
17 | 17 | ||
18 | 18 | ||
19 | 19 | func parseIntOrDefault (maybeInt,default) = valueOrElse(parseInt(maybeInt), default) | |
20 | 20 | ||
21 | 21 | ||
22 | 22 | func key_entity (name,pk,property) = ((((name + "_") + pk) + "_") + property) | |
23 | 23 | ||
24 | 24 | ||
25 | 25 | func key_top (name) = ("Top_" + name) | |
26 | 26 | ||
27 | 27 | ||
28 | 28 | func key_bidderHash (auctionId,address,hash) = ((((auctionId + "_") + address) + "_") + hash) | |
29 | 29 | ||
30 | 30 | ||
31 | 31 | func key_bid (bidderHash) = ("Bid_" + bidderHash) | |
32 | 32 | ||
33 | 33 | ||
34 | 34 | func key_reveal (bidderHash) = ("Reveal_" + bidderHash) | |
35 | 35 | ||
36 | 36 | ||
37 | 37 | let key_initTimestamp = "initTimestamp" | |
38 | 38 | ||
39 | 39 | let key_bidDuration = "bidDuration" | |
40 | 40 | ||
41 | 41 | let key_revealDuration = "revealDuration" | |
42 | 42 | ||
43 | 43 | let key_errorFee = "errorFee" | |
44 | 44 | ||
45 | 45 | let key_minimalBid = "minimalBid" | |
46 | 46 | ||
47 | 47 | let auctionStart = getIntegerOrThrow(this, key_initTimestamp) | |
48 | 48 | ||
49 | 49 | let bidDuration = getIntegerOrThrow(this, key_bidDuration) | |
50 | 50 | ||
51 | 51 | let revealDuration = getIntegerOrThrow(this, key_revealDuration) | |
52 | 52 | ||
53 | 53 | let auctionDuration = (bidDuration + revealDuration) | |
54 | 54 | ||
55 | 55 | let errorFee = getIntegerOrThrow(this, key_errorFee) | |
56 | 56 | ||
57 | 57 | let minimalBid = getIntegerOrThrow(this, key_minimalBid) | |
58 | 58 | ||
59 | 59 | let PHASE_BID = "BID" | |
60 | 60 | ||
61 | 61 | let PHASE_REVEAL = "REVEAL" | |
62 | 62 | ||
63 | - | func getAuction () = { | |
64 | - | let auctionId = ((lastBlock.timestamp - auctionStart) / auctionDuration) | |
63 | + | func private_getAuctionById (auctionId) = { | |
65 | 64 | let bidStart = (auctionStart + (auctionId * auctionDuration)) | |
66 | 65 | let revealStart = (bidStart + bidDuration) | |
67 | 66 | let auctionEnd = (revealStart + revealDuration) | |
68 | 67 | let phase = if ((lastBlock.timestamp > revealStart)) | |
69 | 68 | then PHASE_REVEAL | |
70 | 69 | else PHASE_BID | |
71 | 70 | $Tuple5(auctionId, phase, bidStart, revealStart, auctionEnd) | |
71 | + | } | |
72 | + | ||
73 | + | ||
74 | + | func getAuction () = { | |
75 | + | let auctionId = ((lastBlock.timestamp - auctionStart) / auctionDuration) | |
76 | + | private_getAuctionById(auctionId) | |
72 | 77 | } | |
73 | 78 | ||
74 | 79 | ||
75 | 80 | func getAuctionPhase () = match getAuction() { | |
76 | 81 | case auction: (Int, String, Int, Int, Int) => | |
77 | 82 | let auctionId = auction._1 | |
78 | 83 | let phase = auction._2 | |
79 | 84 | $Tuple2(auctionId, phase) | |
80 | 85 | case _ => | |
81 | 86 | throw("Invalid auction info") | |
82 | 87 | } | |
83 | 88 | ||
84 | 89 | ||
85 | 90 | func calcHash (name,amount) = toBase58String(blake2b256_16Kb(keccak256_16Kb((toBytes(name) + toBytes(amount))))) | |
86 | 91 | ||
87 | 92 | ||
88 | 93 | func getWinnerInfoWrap (name) = { | |
89 | 94 | let winnerInfo = split(valueOrErrorMessage(getString(this, key_top(name)), (("Auction winner, for " + name) + " has not been determined")), ",") | |
90 | 95 | let winnerLink = split(winnerInfo[0], "_") | |
91 | 96 | $Tuple3(parseIntOrThrow(winnerLink[1]), winnerLink[2], winnerLink[3]) | |
92 | 97 | } | |
93 | 98 | ||
94 | 99 | ||
95 | 100 | func isCorrectName (name) = match invoke(this, "checkName", [name], nil) { | |
96 | 101 | case b: Boolean => | |
97 | 102 | b | |
98 | 103 | case _ => | |
99 | 104 | throw("Unexpected checkName result") | |
100 | 105 | } | |
106 | + | ||
107 | + | ||
108 | + | @Callable(inv) | |
109 | + | func getAuctionById (auctionId) = $Tuple2(nil, private_getAuctionById(auctionId)) | |
110 | + | ||
101 | 111 | ||
102 | 112 | ||
103 | 113 | @Callable(inv) | |
104 | 114 | func checkName (name) = { | |
105 | 115 | 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", "-"] | |
106 | 116 | let nameSplited = split(name, "") | |
107 | 117 | if (if ((size(name) == 0)) | |
108 | 118 | then true | |
109 | 119 | else (size(name) > 65)) | |
110 | 120 | then $Tuple2(nil, false) | |
111 | 121 | else if (if (if ((nameSplited[0] == "-")) | |
112 | 122 | then true | |
113 | 123 | else (nameSplited[(size(nameSplited) - 1)] == "-")) | |
114 | 124 | then true | |
115 | 125 | else contains(name, "--")) | |
116 | 126 | then $Tuple2(nil, false) | |
117 | 127 | else { | |
118 | 128 | func foldCheckName (acc,char) = if (acc) | |
119 | 129 | then containsElement(symbols, char) | |
120 | 130 | else false | |
121 | 131 | ||
122 | 132 | $Tuple2(nil, { | |
123 | 133 | let $l = nameSplited | |
124 | 134 | let $s = size($l) | |
125 | 135 | let $acc0 = true | |
126 | 136 | func $f0_1 ($a,$i) = if (($i >= $s)) | |
127 | 137 | then $a | |
128 | 138 | else foldCheckName($a, $l[$i]) | |
129 | 139 | ||
130 | 140 | func $f0_2 ($a,$i) = if (($i >= $s)) | |
131 | 141 | then $a | |
132 | 142 | else throw("List size exceeds 65") | |
133 | 143 | ||
134 | 144 | $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) | |
135 | 145 | }) | |
136 | 146 | } | |
137 | 147 | } | |
138 | 148 | ||
139 | 149 | ||
140 | 150 | ||
141 | 151 | @Callable(inv) | |
142 | 152 | func getWinnerInfo (name) = $Tuple2(nil, getWinnerInfoWrap(name)) | |
143 | 153 | ||
144 | 154 | ||
145 | 155 | ||
146 | 156 | @Callable(inv) | |
147 | 157 | func init (timestamp,bidDuration,revealDuration,errorFee,minimalBid) = if ((this != inv.caller)) | |
148 | 158 | then throw("only self calls are allowed") | |
149 | 159 | else [IntegerEntry(key_initTimestamp, timestamp), IntegerEntry(key_bidDuration, bidDuration), IntegerEntry(key_revealDuration, revealDuration), IntegerEntry(key_errorFee, errorFee), IntegerEntry(key_minimalBid, minimalBid)] | |
150 | 160 | ||
151 | 161 | ||
152 | 162 | ||
153 | 163 | @Callable(inv) | |
154 | 164 | func bid (auctionId,hash) = { | |
155 | 165 | let pmt = if (if ((size(inv.payments) == 1)) | |
156 | 166 | then (inv.payments[0].assetId == unit) | |
157 | 167 | else false) | |
158 | 168 | then inv.payments[0].amount | |
159 | 169 | else throw("Single payment required") | |
160 | 170 | let address = toString(inv.caller) | |
161 | 171 | let bidKey = key_bid(key_bidderHash(toString(auctionId), address, hash)) | |
162 | - | let $ | |
163 | - | let currentAuctionId = $ | |
164 | - | let currentPeriod = $ | |
172 | + | let $t051575214 = getAuctionPhase() | |
173 | + | let currentAuctionId = $t051575214._1 | |
174 | + | let currentPeriod = $t051575214._2 | |
165 | 175 | if ((currentAuctionId != auctionId)) | |
166 | 176 | then throw("Auctions is already over") | |
167 | 177 | else if ((currentPeriod != PHASE_BID)) | |
168 | 178 | then throw("Bid period is over") | |
169 | 179 | else if (isDefined(getInteger(this, bidKey))) | |
170 | 180 | then throw("Bid with exact amount already presented") | |
171 | 181 | else [IntegerEntry(bidKey, pmt)] | |
172 | 182 | } | |
173 | 183 | ||
174 | 184 | ||
175 | 185 | ||
176 | 186 | @Callable(inv) | |
177 | 187 | func reveal (auctionId,name,bidAmount) = { | |
178 | 188 | let address = toString(inv.caller) | |
179 | 189 | let hash = calcHash(name, bidAmount) | |
180 | 190 | let bidderHashKey = key_bidderHash(toString(auctionId), address, hash) | |
181 | 191 | let revealKey = key_reveal(bidderHashKey) | |
182 | 192 | let topKey = key_top(name) | |
183 | 193 | let deposit = valueOrErrorMessage(getInteger(this, key_bid(bidderHashKey)), ("Bid doesn't exists " + hash)) | |
184 | - | let $ | |
185 | - | let currentAuctionId = $ | |
186 | - | let currentPeriod = $ | |
194 | + | let $t059626019 = getAuctionPhase() | |
195 | + | let currentAuctionId = $t059626019._1 | |
196 | + | let currentPeriod = $t059626019._2 | |
187 | 197 | if ((currentAuctionId != auctionId)) | |
188 | 198 | then throw("Auctions is already over") | |
189 | 199 | else if ((currentPeriod != PHASE_REVEAL)) | |
190 | 200 | then throw("Reveal period is over") | |
191 | 201 | else if (isDefined(getString(this, revealKey))) | |
192 | 202 | then throw("Bid is already revealed") | |
193 | 203 | else { | |
194 | 204 | let revealBid = [StringEntry(revealKey, ((((toString(deposit) + ",") + toString(bidAmount)) + ",") + name))] | |
195 | 205 | let topBidderRevealKey = getString(this, topKey) | |
196 | 206 | if (isDefined(topBidderRevealKey)) | |
197 | 207 | then { | |
198 | 208 | let topBidderInfo = split(value(topBidderRevealKey), ",") | |
199 | 209 | let topBidderKey = topBidderInfo[0] | |
200 | 210 | let topAuctionId = parseIntValue(split(topBidderKey, "_")[1]) | |
201 | 211 | let secondPlaceBid = parseIntOrThrow(topBidderInfo[0]) | |
202 | 212 | if ((auctionId == topAuctionId)) | |
203 | 213 | then revealBid | |
204 | 214 | else { | |
205 | 215 | let topBidderData = value(getString(this, topBidderKey)) | |
206 | 216 | let currentTopBidAmount = parseIntValue(split(topBidderData, ",")[1]) | |
207 | 217 | if (if (if (if (if ((bidAmount > minimalBid)) | |
208 | 218 | then (bidAmount > currentTopBidAmount) | |
209 | 219 | else false) | |
210 | 220 | then (deposit >= bidAmount) | |
211 | 221 | else false) | |
212 | 222 | then (65 >= size(name)) | |
213 | 223 | else false) | |
214 | 224 | then isCorrectName(name) | |
215 | 225 | else false) | |
216 | 226 | then (revealBid :+ StringEntry(topKey, ((revealKey + ",") + toString(currentTopBidAmount)))) | |
217 | 227 | else if ((bidAmount > secondPlaceBid)) | |
218 | 228 | then (revealBid :+ StringEntry(topKey, ((revealKey + ",") + toString(bidAmount)))) | |
219 | 229 | else revealBid | |
220 | 230 | } | |
221 | 231 | } | |
222 | 232 | else if (if ((deposit >= bidAmount)) | |
223 | 233 | then isCorrectName(name) | |
224 | 234 | else false) | |
225 | 235 | then (revealBid :+ StringEntry(topKey, ((revealKey + ",") + toString(bidAmount)))) | |
226 | 236 | else revealBid | |
227 | 237 | } | |
228 | 238 | } | |
229 | 239 | ||
230 | 240 | ||
231 | 241 | ||
232 | 242 | @Callable(inv) | |
233 | 243 | func finalize (auctionId,hashes) = { | |
234 | 244 | let caller = inv.caller | |
235 | 245 | let callerStr = toString(caller) | |
236 | 246 | func foldRefund (acc,hash) = { | |
237 | 247 | let bidderHashKey = key_bidderHash(toString(auctionId), callerStr, hash) | |
238 | 248 | let bidKey = key_bid(bidderHashKey) | |
239 | 249 | let revealKey = key_reveal(bidderHashKey) | |
240 | 250 | let revealedBid = getString(this, revealKey) | |
241 | - | let $ | |
251 | + | let $t082348529 = { | |
242 | 252 | let bidValues = split(valueOrErrorMessage(revealedBid, (("Bid with hash " + hash) + " not found")), ",") | |
243 | 253 | $Tuple3(parseIntValue(bidValues[0]), parseIntValue(bidValues[1]), bidValues[2]) | |
244 | 254 | } | |
245 | - | let deposit = $ | |
246 | - | let bid = $ | |
247 | - | let name = $ | |
255 | + | let deposit = $t082348529._1 | |
256 | + | let bid = $t082348529._2 | |
257 | + | let name = $t082348529._3 | |
248 | 258 | let topKey = key_top(name) | |
249 | 259 | let winnerInfo = split(valueOrErrorMessage(getString(this, topKey), "Auction winner has not been determined"), ",") | |
250 | - | let $ | |
251 | - | let winnerLink = $ | |
252 | - | let secondTopBid = $ | |
260 | + | let $t086958776 = $Tuple2(winnerInfo[0], parseIntOrThrow(winnerInfo[1])) | |
261 | + | let winnerLink = $t086958776._1 | |
262 | + | let secondTopBid = $t086958776._2 | |
253 | 263 | let winnerAuctionId = parseIntValue(split(winnerLink, "_")[1]) | |
254 | 264 | let refundAmont = if (if (if (if ((minimalBid > bid)) | |
255 | 265 | then true | |
256 | 266 | else (bid > deposit)) | |
257 | 267 | then true | |
258 | 268 | else (winnerAuctionId != auctionId)) | |
259 | 269 | then true | |
260 | 270 | else !(isCorrectName(name))) | |
261 | 271 | then (deposit - fraction(deposit, 10, 100)) | |
262 | 272 | else if ((winnerLink == revealKey)) | |
263 | 273 | then (deposit - secondTopBid) | |
264 | 274 | else deposit | |
265 | 275 | let result = [DeleteEntry(revealKey), DeleteEntry(bidKey), ScriptTransfer(caller, refundAmont, unit)] | |
266 | 276 | (acc ++ result) | |
267 | 277 | } | |
268 | 278 | ||
269 | 279 | let $l = hashes | |
270 | 280 | let $s = size($l) | |
271 | 281 | let $acc0 = nil | |
272 | 282 | func $f0_1 ($a,$i) = if (($i >= $s)) | |
273 | 283 | then $a | |
274 | 284 | else foldRefund($a, $l[$i]) | |
275 | 285 | ||
276 | 286 | func $f0_2 ($a,$i) = if (($i >= $s)) | |
277 | 287 | then $a | |
278 | 288 | else throw("List size exceeds 10") | |
279 | 289 | ||
280 | 290 | $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) | |
281 | 291 | } | |
282 | 292 | ||
283 | 293 |
github/deemru/w8io/873ac7e 51.85 ms ◑![]()