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:AAIFAAAAAAAAAC0IAhIDCgEBEgMKAQgSAwoBCBIHCgUBAQEBARIECgIBCBIFCgMBCAESBAoCARgAAAAeAQAAABFnZXRJbnRlZ2VyT3JUaHJvdwAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAdhZGRyZXNzBQAAAANrZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADENhbid0IHJlYWQgJwUAAAADa2V5AgAAAA0nIGF0IGFkZHJlc3MgCQAEJQAAAAEFAAAAB2FkZHJlc3MBAAAAEGdldFN0cmluZ09yVGhyb3cAAAACAAAAB2FkZHJlc3MAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAxDYW4ndCByZWFkICcFAAAAA2tleQIAAAANJyBhdCBhZGRyZXNzIAkABCUAAAABBQAAAAdhZGRyZXNzAQAAABNnZXRJbnRlZ2VyT3JEZWZhdWx0AAAAAwAAAAdhZGRyZXNzAAAAA2tleQAAAAdkZWZhdWx0CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQUAAAAHZGVmYXVsdAEAAAAPcGFyc2VJbnRPclRocm93AAAAAQAAAAhtYXliZUludAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEtgAAAAEFAAAACG1heWJlSW50CQABLAAAAAIJAAEsAAAAAgIAAAAaQ2FuJ3QgcGFyc2UgaW50ZWdlciBmcm9tICcFAAAACG1heWJlSW50AgAAAAEnAQAAABNwYXJzZUFkZHJlc3NPclRocm93AAAAAQAAAAxtYXliZUFkZHJlc3MJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABBQAAAAxtYXliZUFkZHJlc3MJAAEsAAAAAgkAASwAAAACAgAAABpDYW4ndCBwYXJzZSBhZGRyZXNzIGZyb20gJwUAAAAMbWF5YmVBZGRyZXNzAgAAAAEnAQAAABFwYXJzZUludE9yRGVmYXVsdAAAAAIAAAAIbWF5YmVJbnQAAAAHZGVmYXVsdAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABLYAAAABBQAAAAhtYXliZUludAUAAAAHZGVmYXVsdAEAAAAKa2V5X2VudGl0eQAAAAMAAAAEbmFtZQAAAAJwawAAAAhwcm9wZXJ0eQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARuYW1lAgAAAAFfBQAAAAJwawIAAAABXwUAAAAIcHJvcGVydHkBAAAAB2tleV90b3AAAAABAAAABG5hbWUJAAEsAAAAAgIAAAAEVG9wXwUAAAAEbmFtZQEAAAAOa2V5X2JpZGRlckhhc2gAAAADAAAACWF1Y3Rpb25JZAAAAAdhZGRyZXNzAAAABGhhc2gJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAJYXVjdGlvbklkAgAAAAFfBQAAAAdhZGRyZXNzAgAAAAFfBQAAAARoYXNoAQAAAAdrZXlfYmlkAAAAAQAAAApiaWRkZXJIYXNoCQABLAAAAAICAAAABEJpZF8FAAAACmJpZGRlckhhc2gBAAAACmtleV9yZXZlYWwAAAABAAAACmJpZGRlckhhc2gJAAEsAAAAAgIAAAAHUmV2ZWFsXwUAAAAKYmlkZGVySGFzaAAAAAARa2V5X2luaXRUaW1lc3RhbXACAAAADWluaXRUaW1lc3RhbXAAAAAAD2tleV9iaWREdXJhdGlvbgIAAAALYmlkRHVyYXRpb24AAAAAEmtleV9yZXZlYWxEdXJhdGlvbgIAAAAOcmV2ZWFsRHVyYXRpb24AAAAADGtleV9lcnJvckZlZQIAAAAIZXJyb3JGZWUAAAAADmtleV9taW5pbWFsQmlkAgAAAAptaW5pbWFsQmlkAAAAAAxhdWN0aW9uU3RhcnQJAQAAABFnZXRJbnRlZ2VyT3JUaHJvdwAAAAIFAAAABHRoaXMFAAAAEWtleV9pbml0VGltZXN0YW1wAAAAAAtiaWREdXJhdGlvbgkBAAAAEWdldEludGVnZXJPclRocm93AAAAAgUAAAAEdGhpcwUAAAAPa2V5X2JpZER1cmF0aW9uAAAAAA5yZXZlYWxEdXJhdGlvbgkBAAAAEWdldEludGVnZXJPclRocm93AAAAAgUAAAAEdGhpcwUAAAASa2V5X3JldmVhbER1cmF0aW9uAAAAAA9hdWN0aW9uRHVyYXRpb24JAABkAAAAAgUAAAALYmlkRHVyYXRpb24FAAAADnJldmVhbER1cmF0aW9uAAAAAAhlcnJvckZlZQkBAAAAEWdldEludGVnZXJPclRocm93AAAAAgUAAAAEdGhpcwUAAAAMa2V5X2Vycm9yRmVlAAAAAAptaW5pbWFsQmlkCQEAAAARZ2V0SW50ZWdlck9yVGhyb3cAAAACBQAAAAR0aGlzBQAAAA5rZXlfbWluaW1hbEJpZAAAAAAJUEhBU0VfQklEAgAAAANCSUQAAAAADFBIQVNFX1JFVkVBTAIAAAAGUkVWRUFMAQAAABZwcml2YXRlX2dldEF1Y3Rpb25CeUlkAAAAAQAAAAlhdWN0aW9uSWQEAAAACGJpZFN0YXJ0CQAAZAAAAAIFAAAADGF1Y3Rpb25TdGFydAkAAGgAAAACBQAAAAlhdWN0aW9uSWQFAAAAD2F1Y3Rpb25EdXJhdGlvbgQAAAALcmV2ZWFsU3RhcnQJAABkAAAAAgUAAAAIYmlkU3RhcnQFAAAAC2JpZER1cmF0aW9uBAAAAAphdWN0aW9uRW5kCQAAZAAAAAIFAAAAC3JldmVhbFN0YXJ0BQAAAA5yZXZlYWxEdXJhdGlvbgQAAAAFcGhhc2UDCQAAZgAAAAIIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAAAtyZXZlYWxTdGFydAUAAAAMUEhBU0VfUkVWRUFMBQAAAAlQSEFTRV9CSUQJAAUXAAAABQUAAAAJYXVjdGlvbklkBQAAAAVwaGFzZQUAAAAIYmlkU3RhcnQFAAAAC3JldmVhbFN0YXJ0BQAAAAphdWN0aW9uRW5kAQAAAApnZXRBdWN0aW9uAAAAAAQAAAAJYXVjdGlvbklkCQAAaQAAAAIJAABlAAAAAggFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAADGF1Y3Rpb25TdGFydAUAAAAPYXVjdGlvbkR1cmF0aW9uCQEAAAAWcHJpdmF0ZV9nZXRBdWN0aW9uQnlJZAAAAAEFAAAACWF1Y3Rpb25JZAEAAAAPZ2V0QXVjdGlvblBoYXNlAAAAAAQAAAAHJG1hdGNoMAkBAAAACmdldEF1Y3Rpb24AAAAAAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABwoSW50LCBTdHJpbmcsIEludCwgSW50LCBJbnQpBAAAAAdhdWN0aW9uBQAAAAckbWF0Y2gwBAAAAAlhdWN0aW9uSWQIBQAAAAdhdWN0aW9uAAAAAl8xBAAAAAVwaGFzZQgFAAAAB2F1Y3Rpb24AAAACXzIJAAUUAAAAAgUAAAAJYXVjdGlvbklkBQAAAAVwaGFzZQkAAAIAAAABAgAAABRJbnZhbGlkIGF1Y3Rpb24gaW5mbwEAAAAIY2FsY0hhc2gAAAACAAAABG5hbWUAAAAGYW1vdW50CQACWAAAAAEJAArwAAAAAQkACowAAAABCQAAywAAAAIJAAGbAAAAAQUAAAAEbmFtZQkAAZoAAAABBQAAAAZhbW91bnQBAAAAEWdldFdpbm5lckluZm9XcmFwAAAAAQAAAARuYW1lBAAAAAp3aW5uZXJJbmZvCQAEtQAAAAIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAR0aGlzCQEAAAAHa2V5X3RvcAAAAAEFAAAABG5hbWUJAAEsAAAAAgkAASwAAAACAgAAABRBdWN0aW9uIHdpbm5lciwgZm9yIAUAAAAEbmFtZQIAAAAYIGhhcyBub3QgYmVlbiBkZXRlcm1pbmVkAgAAAAEsBAAAAAp3aW5uZXJMaW5rCQAEtQAAAAIJAAGRAAAAAgUAAAAKd2lubmVySW5mbwAAAAAAAAAAAAIAAAABXwkABRUAAAADCQEAAAAPcGFyc2VJbnRPclRocm93AAAAAQkAAZEAAAACBQAAAAp3aW5uZXJMaW5rAAAAAAAAAAABCQABkQAAAAIFAAAACndpbm5lckxpbmsAAAAAAAAAAAIJAAGRAAAAAgUAAAAKd2lubmVyTGluawAAAAAAAAAAAwEAAAANaXNDb3JyZWN0TmFtZQAAAAEAAAAEbmFtZQQAAAAHJG1hdGNoMAkAA/wAAAAEBQAAAAR0aGlzAgAAAAljaGVja05hbWUJAARMAAAAAgUAAAAEbmFtZQUAAAADbmlsBQAAAANuaWwDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAB0Jvb2xlYW4EAAAAAWIFAAAAByRtYXRjaDAFAAAAAWIJAAACAAAAAQIAAAAbVW5leHBlY3RlZCBjaGVja05hbWUgcmVzdWx0AAAABwAAAANpbnYBAAAADmdldEF1Y3Rpb25CeUlkAAAAAQAAAAlhdWN0aW9uSWQJAAUUAAAAAgUAAAADbmlsCQEAAAAWcHJpdmF0ZV9nZXRBdWN0aW9uQnlJZAAAAAEFAAAACWF1Y3Rpb25JZAAAAANpbnYBAAAACWNoZWNrTmFtZQAAAAEAAAAEbmFtZQQAAAAHc3ltYm9scwkABEwAAAACAgAAAAFhCQAETAAAAAICAAAAAWIJAARMAAAAAgIAAAABYwkABEwAAAACAgAAAAFkCQAETAAAAAICAAAAAWUJAARMAAAAAgIAAAABZgkABEwAAAACAgAAAAFnCQAETAAAAAICAAAAAWgJAARMAAAAAgIAAAABaQkABEwAAAACAgAAAAFqCQAETAAAAAICAAAAAWsJAARMAAAAAgIAAAABbAkABEwAAAACAgAAAAFtCQAETAAAAAICAAAAAW4JAARMAAAAAgIAAAABbwkABEwAAAACAgAAAAFwCQAETAAAAAICAAAAAXEJAARMAAAAAgIAAAABcgkABEwAAAACAgAAAAFzCQAETAAAAAICAAAAAXQJAARMAAAAAgIAAAABdQkABEwAAAACAgAAAAF2CQAETAAAAAICAAAAAXcJAARMAAAAAgIAAAABeAkABEwAAAACAgAAAAF5CQAETAAAAAICAAAAAXoJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATMJAARMAAAAAgIAAAABNAkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATYJAARMAAAAAgIAAAABNwkABEwAAAACAgAAAAE4CQAETAAAAAICAAAAATkJAARMAAAAAgIAAAABMAkABEwAAAACAgAAAAEtBQAAAANuaWwEAAAAC25hbWVTcGxpdGVkCQAEtQAAAAIFAAAABG5hbWUCAAAAAAMDCQAAAAAAAAIJAAExAAAAAQUAAAAEbmFtZQAAAAAAAAAAAAYJAABmAAAAAgkAATEAAAABBQAAAARuYW1lAAAAAAAAAABBCQAFFAAAAAIFAAAAA25pbAcDAwMJAAAAAAAAAgkAAZEAAAACBQAAAAtuYW1lU3BsaXRlZAAAAAAAAAAAAAIAAAABLQYJAAAAAAAAAgkAAZEAAAACBQAAAAtuYW1lU3BsaXRlZAkAAGUAAAACCQABkAAAAAEFAAAAC25hbWVTcGxpdGVkAAAAAAAAAAABAgAAAAEtBgkBAAAACGNvbnRhaW5zAAAAAgUAAAAEbmFtZQIAAAACLS0JAAUUAAAAAgUAAAADbmlsBwoBAAAADWZvbGRDaGVja05hbWUAAAACAAAAA2FjYwAAAARjaGFyAwUAAAADYWNjCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAHc3ltYm9scwUAAAAEY2hhcgcJAAUUAAAAAgUAAAADbmlsCgAAAAACJGwFAAAAC25hbWVTcGxpdGVkCgAAAAACJHMJAAGQAAAAAQUAAAACJGwKAAAAAAUkYWNjMAYKAQAAAAUkZjBfMQAAAAIAAAACJGEAAAACJGkDCQAAZwAAAAIFAAAAAiRpBQAAAAIkcwUAAAACJGEJAQAAAA1mb2xkQ2hlY2tOYW1lAAAAAgUAAAACJGEJAAGRAAAAAgUAAAACJGwFAAAAAiRpCgEAAAAFJGYwXzIAAAACAAAAAiRhAAAAAiRpAwkAAGcAAAACBQAAAAIkaQUAAAACJHMFAAAAAiRhCQAAAgAAAAECAAAAFExpc3Qgc2l6ZSBleGNlZWRzIDY1CQEAAAAFJGYwXzIAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACBQAAAAUkYWNjMAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAgAAAAAAAAAAAwAAAAAAAAAABAAAAAAAAAAABQAAAAAAAAAABgAAAAAAAAAABwAAAAAAAAAACAAAAAAAAAAACQAAAAAAAAAACgAAAAAAAAAACwAAAAAAAAAADAAAAAAAAAAADQAAAAAAAAAADgAAAAAAAAAADwAAAAAAAAAAEAAAAAAAAAAAEQAAAAAAAAAAEgAAAAAAAAAAEwAAAAAAAAAAFAAAAAAAAAAAFQAAAAAAAAAAFgAAAAAAAAAAFwAAAAAAAAAAGAAAAAAAAAAAGQAAAAAAAAAAGgAAAAAAAAAAGwAAAAAAAAAAHAAAAAAAAAAAHQAAAAAAAAAAHgAAAAAAAAAAHwAAAAAAAAAAIAAAAAAAAAAAIQAAAAAAAAAAIgAAAAAAAAAAIwAAAAAAAAAAJAAAAAAAAAAAJQAA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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 I = "REVEAL" | |
62 | 62 | ||
63 | - | func J () = { | |
64 | - | let r = ((lastBlock.timestamp - B) / E) | |
63 | + | func J (r) = { | |
65 | 64 | let K = (B + (r * E)) | |
66 | 65 | let L = (K + C) | |
67 | 66 | let M = (L + D) | |
73 | 72 | ||
74 | 73 | ||
75 | 74 | func O () = { | |
76 | - | let P = J() | |
77 | - | if ($isInstanceOf(P, "(Int, String, Int, Int, Int)")) | |
75 | + | let r = ((lastBlock.timestamp - B) / E) | |
76 | + | J(r) | |
77 | + | } | |
78 | + | ||
79 | + | ||
80 | + | func P () = { | |
81 | + | let Q = O() | |
82 | + | if ($isInstanceOf(Q, "(Int, String, Int, Int, Int)")) | |
78 | 83 | then { | |
79 | - | let | |
80 | - | let r = | |
81 | - | let N = | |
84 | + | let R = Q | |
85 | + | let r = R._1 | |
86 | + | let N = R._2 | |
82 | 87 | $Tuple2(r, N) | |
83 | 88 | } | |
84 | 89 | else throw("Invalid auction info") | |
85 | 90 | } | |
86 | 91 | ||
87 | 92 | ||
88 | - | func | |
93 | + | func S (m,T) = toBase58String(blake2b256_16Kb(keccak256_16Kb((toBytes(m) + toBytes(T))))) | |
89 | 94 | ||
90 | 95 | ||
91 | - | func | |
92 | - | let | |
93 | - | let | |
94 | - | $Tuple3(g( | |
96 | + | func U (m) = { | |
97 | + | let V = split(valueOrErrorMessage(getString(this, p(m)), (("Auction winner, for " + m) + " has not been determined")), ",") | |
98 | + | let W = split(V[0], "_") | |
99 | + | $Tuple3(g(W[1]), W[2], W[3]) | |
95 | 100 | } | |
96 | 101 | ||
97 | 102 | ||
98 | - | func | |
99 | - | let | |
100 | - | if ($isInstanceOf( | |
103 | + | func X (m) = { | |
104 | + | let Q = invoke(this, "checkName", [m], nil) | |
105 | + | if ($isInstanceOf(Q, "Boolean")) | |
101 | 106 | then { | |
102 | - | let | |
103 | - | | |
107 | + | let Y = Q | |
108 | + | Y | |
104 | 109 | } | |
105 | 110 | else throw("Unexpected checkName result") | |
106 | 111 | } | |
107 | 112 | ||
108 | 113 | ||
109 | - | @Callable(Y) | |
114 | + | @Callable(Z) | |
115 | + | func getAuctionById (r) = $Tuple2(nil, J(r)) | |
116 | + | ||
117 | + | ||
118 | + | ||
119 | + | @Callable(Z) | |
110 | 120 | func checkName (m) = { | |
111 | - | let | |
112 | - | let | |
121 | + | let aa = ["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", "-"] | |
122 | + | let ab = split(m, "") | |
113 | 123 | if (if ((size(m) == 0)) | |
114 | 124 | then true | |
115 | 125 | else (size(m) > 65)) | |
116 | 126 | then $Tuple2(nil, false) | |
117 | - | else if (if (if (( | |
127 | + | else if (if (if ((ab[0] == "-")) | |
118 | 128 | then true | |
119 | - | else ( | |
129 | + | else (ab[(size(ab) - 1)] == "-")) | |
120 | 130 | then true | |
121 | 131 | else contains(m, "--")) | |
122 | 132 | then $Tuple2(nil, false) | |
123 | 133 | else { | |
124 | - | func | |
125 | - | then containsElement( | |
134 | + | func ac (ad,ae) = if (ad) | |
135 | + | then containsElement(aa, ae) | |
126 | 136 | else false | |
127 | 137 | ||
128 | 138 | $Tuple2(nil, { | |
129 | - | let | |
130 | - | let | |
131 | - | let | |
132 | - | func | |
133 | - | then | |
134 | - | else | |
139 | + | let af = ab | |
140 | + | let ag = size(af) | |
141 | + | let ah = true | |
142 | + | func ai (aj,ak) = if ((ak >= ag)) | |
143 | + | then aj | |
144 | + | else ac(aj, af[ak]) | |
135 | 145 | ||
136 | - | func | |
137 | - | then | |
146 | + | func al (aj,ak) = if ((ak >= ag)) | |
147 | + | then aj | |
138 | 148 | else throw("List size exceeds 65") | |
139 | 149 | ||
140 | - | | |
150 | + | al(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ah, 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) | |
141 | 151 | }) | |
142 | 152 | } | |
143 | 153 | } | |
144 | 154 | ||
145 | 155 | ||
146 | 156 | ||
147 | - | @Callable( | |
148 | - | func getWinnerInfo (m) = $Tuple2(nil, | |
157 | + | @Callable(Z) | |
158 | + | func getWinnerInfo (m) = $Tuple2(nil, U(m)) | |
149 | 159 | ||
150 | 160 | ||
151 | 161 | ||
152 | - | @Callable( | |
153 | - | func init ( | |
162 | + | @Callable(Z) | |
163 | + | func init (am,C,D,F,G) = if ((this != Z.caller)) | |
154 | 164 | then throw("only self calls are allowed") | |
155 | - | else [IntegerEntry(w, | |
165 | + | else [IntegerEntry(w, am), IntegerEntry(x, C), IntegerEntry(y, D), IntegerEntry(z, F), IntegerEntry(A, G)] | |
156 | 166 | ||
157 | 167 | ||
158 | 168 | ||
159 | - | @Callable( | |
169 | + | @Callable(Z) | |
160 | 170 | func bid (r,s) = { | |
161 | - | let | |
162 | - | then ( | |
171 | + | let an = if (if ((size(Z.payments) == 1)) | |
172 | + | then (Z.payments[0].assetId == unit) | |
163 | 173 | else false) | |
164 | - | then | |
174 | + | then Z.payments[0].amount | |
165 | 175 | else throw("Single payment required") | |
166 | - | let b = toString( | |
167 | - | let | |
168 | - | let | |
169 | - | let | |
170 | - | let | |
171 | - | if (( | |
176 | + | let b = toString(Z.caller) | |
177 | + | let ao = t(q(toString(r), b, s)) | |
178 | + | let ap = P() | |
179 | + | let aq = ap._1 | |
180 | + | let ar = ap._2 | |
181 | + | if ((aq != r)) | |
172 | 182 | then throw("Auctions is already over") | |
173 | - | else if (( | |
183 | + | else if ((ar != H)) | |
174 | 184 | then throw("Bid period is over") | |
175 | - | else if (isDefined(getInteger(this, | |
185 | + | else if (isDefined(getInteger(this, ao))) | |
176 | 186 | then throw("Bid with exact amount already presented") | |
177 | - | else [IntegerEntry( | |
187 | + | else [IntegerEntry(ao, an)] | |
178 | 188 | } | |
179 | 189 | ||
180 | 190 | ||
181 | 191 | ||
182 | - | @Callable( | |
183 | - | func reveal (r,m, | |
184 | - | let b = toString( | |
185 | - | let s = | |
186 | - | let | |
187 | - | let | |
188 | - | let | |
189 | - | let | |
190 | - | let | |
191 | - | let | |
192 | - | let | |
193 | - | if (( | |
192 | + | @Callable(Z) | |
193 | + | func reveal (r,m,as) = { | |
194 | + | let b = toString(Z.caller) | |
195 | + | let s = S(m, as) | |
196 | + | let at = q(toString(r), b, s) | |
197 | + | let au = v(at) | |
198 | + | let av = p(m) | |
199 | + | let aw = valueOrErrorMessage(getInteger(this, t(at)), ("Bid doesn't exists " + s)) | |
200 | + | let ax = P() | |
201 | + | let aq = ax._1 | |
202 | + | let ar = ax._2 | |
203 | + | if ((aq != r)) | |
194 | 204 | then throw("Auctions is already over") | |
195 | - | else if (( | |
205 | + | else if ((ar != I)) | |
196 | 206 | then throw("Reveal period is over") | |
197 | - | else if (isDefined(getString(this, | |
207 | + | else if (isDefined(getString(this, au))) | |
198 | 208 | then throw("Bid is already revealed") | |
199 | 209 | else { | |
200 | - | let | |
201 | - | let | |
202 | - | if (isDefined( | |
210 | + | let ay = [StringEntry(au, ((((toString(aw) + ",") + toString(as)) + ",") + m))] | |
211 | + | let az = getString(this, av) | |
212 | + | if (isDefined(az)) | |
203 | 213 | then { | |
204 | - | let | |
205 | - | let | |
206 | - | let | |
207 | - | let | |
208 | - | if ((r == | |
209 | - | then | |
214 | + | let aA = split(value(az), ",") | |
215 | + | let aB = aA[0] | |
216 | + | let aC = parseIntValue(split(aB, "_")[1]) | |
217 | + | let aD = g(aA[0]) | |
218 | + | if ((r == aC)) | |
219 | + | then ay | |
210 | 220 | else { | |
211 | - | let | |
212 | - | let | |
213 | - | if (if (if (if (if (( | |
214 | - | then ( | |
221 | + | let aE = value(getString(this, aB)) | |
222 | + | let aF = parseIntValue(split(aE, ",")[1]) | |
223 | + | if (if (if (if (if ((as > G)) | |
224 | + | then (as > aF) | |
215 | 225 | else false) | |
216 | - | then ( | |
226 | + | then (aw >= as) | |
217 | 227 | else false) | |
218 | 228 | then (65 >= size(m)) | |
219 | 229 | else false) | |
220 | - | then | |
230 | + | then X(m) | |
221 | 231 | else false) | |
222 | - | then ( | |
223 | - | else if (( | |
224 | - | then ( | |
225 | - | else | |
232 | + | then (ay :+ StringEntry(av, ((au + ",") + toString(aF)))) | |
233 | + | else if ((as > aD)) | |
234 | + | then (ay :+ StringEntry(av, ((au + ",") + toString(as)))) | |
235 | + | else ay | |
226 | 236 | } | |
227 | 237 | } | |
228 | - | else if (if (( | |
229 | - | then | |
238 | + | else if (if ((aw >= as)) | |
239 | + | then X(m) | |
230 | 240 | else false) | |
231 | - | then ( | |
232 | - | else | |
241 | + | then (ay :+ StringEntry(av, ((au + ",") + toString(as)))) | |
242 | + | else ay | |
233 | 243 | } | |
234 | 244 | } | |
235 | 245 | ||
236 | 246 | ||
237 | 247 | ||
238 | - | @Callable( | |
239 | - | func finalize (r, | |
240 | - | let | |
241 | - | let | |
242 | - | func | |
243 | - | let | |
244 | - | let | |
245 | - | let | |
246 | - | let | |
247 | - | let | |
248 | - | let | |
249 | - | $Tuple3(parseIntValue( | |
248 | + | @Callable(Z) | |
249 | + | func finalize (r,aG) = { | |
250 | + | let aH = Z.caller | |
251 | + | let aI = toString(aH) | |
252 | + | func aJ (ad,s) = { | |
253 | + | let at = q(toString(r), aI, s) | |
254 | + | let ao = t(at) | |
255 | + | let au = v(at) | |
256 | + | let aK = getString(this, au) | |
257 | + | let aL = { | |
258 | + | let aM = split(valueOrErrorMessage(aK, (("Bid with hash " + s) + " not found")), ",") | |
259 | + | $Tuple3(parseIntValue(aM[0]), parseIntValue(aM[1]), aM[2]) | |
250 | 260 | } | |
251 | - | let | |
252 | - | let | |
253 | - | let m = | |
254 | - | let | |
255 | - | let | |
256 | - | let | |
257 | - | let | |
258 | - | let | |
259 | - | let | |
260 | - | let | |
261 | + | let aw = aL._1 | |
262 | + | let aN = aL._2 | |
263 | + | let m = aL._3 | |
264 | + | let av = p(m) | |
265 | + | let V = split(valueOrErrorMessage(getString(this, av), "Auction winner has not been determined"), ",") | |
266 | + | let aO = $Tuple2(V[0], g(V[1])) | |
267 | + | let W = aO._1 | |
268 | + | let aP = aO._2 | |
269 | + | let aQ = parseIntValue(split(W, "_")[1]) | |
270 | + | let aR = if (if (if (if ((G > aN)) | |
261 | 271 | then true | |
262 | - | else ( | |
272 | + | else (aN > aw)) | |
263 | 273 | then true | |
264 | - | else ( | |
274 | + | else (aQ != r)) | |
265 | 275 | then true | |
266 | - | else !( | |
267 | - | then ( | |
268 | - | else if (( | |
269 | - | then ( | |
270 | - | else | |
271 | - | let | |
272 | - | ( | |
276 | + | else !(X(m))) | |
277 | + | then (aw - fraction(aw, 10, 100)) | |
278 | + | else if ((W == au)) | |
279 | + | then (aw - aP) | |
280 | + | else aw | |
281 | + | let aS = [DeleteEntry(au), DeleteEntry(ao), ScriptTransfer(aH, aR, unit)] | |
282 | + | (ad ++ aS) | |
273 | 283 | } | |
274 | 284 | ||
275 | - | let | |
276 | - | let | |
277 | - | let | |
278 | - | func | |
279 | - | then | |
280 | - | else | |
285 | + | let af = aG | |
286 | + | let ag = size(af) | |
287 | + | let ah = nil | |
288 | + | func ai (aj,ak) = if ((ak >= ag)) | |
289 | + | then aj | |
290 | + | else aJ(aj, af[ak]) | |
281 | 291 | ||
282 | - | func | |
283 | - | then | |
292 | + | func al (aj,ak) = if ((ak >= ag)) | |
293 | + | then aj | |
284 | 294 | else throw("List size exceeds 10") | |
285 | 295 | ||
286 | - | | |
296 | + | al(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ah, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
287 | 297 | } | |
288 | 298 | ||
289 | 299 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | func a (b,c) = valueOrErrorMessage(getInteger(b, c), ((("Can't read '" + c) + "' at address ") + toString(b))) | |
5 | 5 | ||
6 | 6 | ||
7 | 7 | func d (b,c) = valueOrErrorMessage(getString(b, c), ((("Can't read '" + c) + "' at address ") + toString(b))) | |
8 | 8 | ||
9 | 9 | ||
10 | 10 | func e (b,c,f) = valueOrElse(getInteger(b, c), f) | |
11 | 11 | ||
12 | 12 | ||
13 | 13 | func g (h) = valueOrErrorMessage(parseInt(h), (("Can't parse integer from '" + h) + "'")) | |
14 | 14 | ||
15 | 15 | ||
16 | 16 | func i (j) = valueOrErrorMessage(addressFromString(j), (("Can't parse address from '" + j) + "'")) | |
17 | 17 | ||
18 | 18 | ||
19 | 19 | func k (h,f) = valueOrElse(parseInt(h), f) | |
20 | 20 | ||
21 | 21 | ||
22 | 22 | func l (m,n,o) = ((((m + "_") + n) + "_") + o) | |
23 | 23 | ||
24 | 24 | ||
25 | 25 | func p (m) = ("Top_" + m) | |
26 | 26 | ||
27 | 27 | ||
28 | 28 | func q (r,b,s) = ((((r + "_") + b) + "_") + s) | |
29 | 29 | ||
30 | 30 | ||
31 | 31 | func t (u) = ("Bid_" + u) | |
32 | 32 | ||
33 | 33 | ||
34 | 34 | func v (u) = ("Reveal_" + u) | |
35 | 35 | ||
36 | 36 | ||
37 | 37 | let w = "initTimestamp" | |
38 | 38 | ||
39 | 39 | let x = "bidDuration" | |
40 | 40 | ||
41 | 41 | let y = "revealDuration" | |
42 | 42 | ||
43 | 43 | let z = "errorFee" | |
44 | 44 | ||
45 | 45 | let A = "minimalBid" | |
46 | 46 | ||
47 | 47 | let B = a(this, w) | |
48 | 48 | ||
49 | 49 | let C = a(this, x) | |
50 | 50 | ||
51 | 51 | let D = a(this, y) | |
52 | 52 | ||
53 | 53 | let E = (C + D) | |
54 | 54 | ||
55 | 55 | let F = a(this, z) | |
56 | 56 | ||
57 | 57 | let G = a(this, A) | |
58 | 58 | ||
59 | 59 | let H = "BID" | |
60 | 60 | ||
61 | 61 | let I = "REVEAL" | |
62 | 62 | ||
63 | - | func J () = { | |
64 | - | let r = ((lastBlock.timestamp - B) / E) | |
63 | + | func J (r) = { | |
65 | 64 | let K = (B + (r * E)) | |
66 | 65 | let L = (K + C) | |
67 | 66 | let M = (L + D) | |
68 | 67 | let N = if ((lastBlock.timestamp > L)) | |
69 | 68 | then I | |
70 | 69 | else H | |
71 | 70 | $Tuple5(r, N, K, L, M) | |
72 | 71 | } | |
73 | 72 | ||
74 | 73 | ||
75 | 74 | func O () = { | |
76 | - | let P = J() | |
77 | - | if ($isInstanceOf(P, "(Int, String, Int, Int, Int)")) | |
75 | + | let r = ((lastBlock.timestamp - B) / E) | |
76 | + | J(r) | |
77 | + | } | |
78 | + | ||
79 | + | ||
80 | + | func P () = { | |
81 | + | let Q = O() | |
82 | + | if ($isInstanceOf(Q, "(Int, String, Int, Int, Int)")) | |
78 | 83 | then { | |
79 | - | let | |
80 | - | let r = | |
81 | - | let N = | |
84 | + | let R = Q | |
85 | + | let r = R._1 | |
86 | + | let N = R._2 | |
82 | 87 | $Tuple2(r, N) | |
83 | 88 | } | |
84 | 89 | else throw("Invalid auction info") | |
85 | 90 | } | |
86 | 91 | ||
87 | 92 | ||
88 | - | func | |
93 | + | func S (m,T) = toBase58String(blake2b256_16Kb(keccak256_16Kb((toBytes(m) + toBytes(T))))) | |
89 | 94 | ||
90 | 95 | ||
91 | - | func | |
92 | - | let | |
93 | - | let | |
94 | - | $Tuple3(g( | |
96 | + | func U (m) = { | |
97 | + | let V = split(valueOrErrorMessage(getString(this, p(m)), (("Auction winner, for " + m) + " has not been determined")), ",") | |
98 | + | let W = split(V[0], "_") | |
99 | + | $Tuple3(g(W[1]), W[2], W[3]) | |
95 | 100 | } | |
96 | 101 | ||
97 | 102 | ||
98 | - | func | |
99 | - | let | |
100 | - | if ($isInstanceOf( | |
103 | + | func X (m) = { | |
104 | + | let Q = invoke(this, "checkName", [m], nil) | |
105 | + | if ($isInstanceOf(Q, "Boolean")) | |
101 | 106 | then { | |
102 | - | let | |
103 | - | | |
107 | + | let Y = Q | |
108 | + | Y | |
104 | 109 | } | |
105 | 110 | else throw("Unexpected checkName result") | |
106 | 111 | } | |
107 | 112 | ||
108 | 113 | ||
109 | - | @Callable(Y) | |
114 | + | @Callable(Z) | |
115 | + | func getAuctionById (r) = $Tuple2(nil, J(r)) | |
116 | + | ||
117 | + | ||
118 | + | ||
119 | + | @Callable(Z) | |
110 | 120 | func checkName (m) = { | |
111 | - | let | |
112 | - | let | |
121 | + | let aa = ["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", "-"] | |
122 | + | let ab = split(m, "") | |
113 | 123 | if (if ((size(m) == 0)) | |
114 | 124 | then true | |
115 | 125 | else (size(m) > 65)) | |
116 | 126 | then $Tuple2(nil, false) | |
117 | - | else if (if (if (( | |
127 | + | else if (if (if ((ab[0] == "-")) | |
118 | 128 | then true | |
119 | - | else ( | |
129 | + | else (ab[(size(ab) - 1)] == "-")) | |
120 | 130 | then true | |
121 | 131 | else contains(m, "--")) | |
122 | 132 | then $Tuple2(nil, false) | |
123 | 133 | else { | |
124 | - | func | |
125 | - | then containsElement( | |
134 | + | func ac (ad,ae) = if (ad) | |
135 | + | then containsElement(aa, ae) | |
126 | 136 | else false | |
127 | 137 | ||
128 | 138 | $Tuple2(nil, { | |
129 | - | let | |
130 | - | let | |
131 | - | let | |
132 | - | func | |
133 | - | then | |
134 | - | else | |
139 | + | let af = ab | |
140 | + | let ag = size(af) | |
141 | + | let ah = true | |
142 | + | func ai (aj,ak) = if ((ak >= ag)) | |
143 | + | then aj | |
144 | + | else ac(aj, af[ak]) | |
135 | 145 | ||
136 | - | func | |
137 | - | then | |
146 | + | func al (aj,ak) = if ((ak >= ag)) | |
147 | + | then aj | |
138 | 148 | else throw("List size exceeds 65") | |
139 | 149 | ||
140 | - | | |
150 | + | al(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ah, 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) | |
141 | 151 | }) | |
142 | 152 | } | |
143 | 153 | } | |
144 | 154 | ||
145 | 155 | ||
146 | 156 | ||
147 | - | @Callable( | |
148 | - | func getWinnerInfo (m) = $Tuple2(nil, | |
157 | + | @Callable(Z) | |
158 | + | func getWinnerInfo (m) = $Tuple2(nil, U(m)) | |
149 | 159 | ||
150 | 160 | ||
151 | 161 | ||
152 | - | @Callable( | |
153 | - | func init ( | |
162 | + | @Callable(Z) | |
163 | + | func init (am,C,D,F,G) = if ((this != Z.caller)) | |
154 | 164 | then throw("only self calls are allowed") | |
155 | - | else [IntegerEntry(w, | |
165 | + | else [IntegerEntry(w, am), IntegerEntry(x, C), IntegerEntry(y, D), IntegerEntry(z, F), IntegerEntry(A, G)] | |
156 | 166 | ||
157 | 167 | ||
158 | 168 | ||
159 | - | @Callable( | |
169 | + | @Callable(Z) | |
160 | 170 | func bid (r,s) = { | |
161 | - | let | |
162 | - | then ( | |
171 | + | let an = if (if ((size(Z.payments) == 1)) | |
172 | + | then (Z.payments[0].assetId == unit) | |
163 | 173 | else false) | |
164 | - | then | |
174 | + | then Z.payments[0].amount | |
165 | 175 | else throw("Single payment required") | |
166 | - | let b = toString( | |
167 | - | let | |
168 | - | let | |
169 | - | let | |
170 | - | let | |
171 | - | if (( | |
176 | + | let b = toString(Z.caller) | |
177 | + | let ao = t(q(toString(r), b, s)) | |
178 | + | let ap = P() | |
179 | + | let aq = ap._1 | |
180 | + | let ar = ap._2 | |
181 | + | if ((aq != r)) | |
172 | 182 | then throw("Auctions is already over") | |
173 | - | else if (( | |
183 | + | else if ((ar != H)) | |
174 | 184 | then throw("Bid period is over") | |
175 | - | else if (isDefined(getInteger(this, | |
185 | + | else if (isDefined(getInteger(this, ao))) | |
176 | 186 | then throw("Bid with exact amount already presented") | |
177 | - | else [IntegerEntry( | |
187 | + | else [IntegerEntry(ao, an)] | |
178 | 188 | } | |
179 | 189 | ||
180 | 190 | ||
181 | 191 | ||
182 | - | @Callable( | |
183 | - | func reveal (r,m, | |
184 | - | let b = toString( | |
185 | - | let s = | |
186 | - | let | |
187 | - | let | |
188 | - | let | |
189 | - | let | |
190 | - | let | |
191 | - | let | |
192 | - | let | |
193 | - | if (( | |
192 | + | @Callable(Z) | |
193 | + | func reveal (r,m,as) = { | |
194 | + | let b = toString(Z.caller) | |
195 | + | let s = S(m, as) | |
196 | + | let at = q(toString(r), b, s) | |
197 | + | let au = v(at) | |
198 | + | let av = p(m) | |
199 | + | let aw = valueOrErrorMessage(getInteger(this, t(at)), ("Bid doesn't exists " + s)) | |
200 | + | let ax = P() | |
201 | + | let aq = ax._1 | |
202 | + | let ar = ax._2 | |
203 | + | if ((aq != r)) | |
194 | 204 | then throw("Auctions is already over") | |
195 | - | else if (( | |
205 | + | else if ((ar != I)) | |
196 | 206 | then throw("Reveal period is over") | |
197 | - | else if (isDefined(getString(this, | |
207 | + | else if (isDefined(getString(this, au))) | |
198 | 208 | then throw("Bid is already revealed") | |
199 | 209 | else { | |
200 | - | let | |
201 | - | let | |
202 | - | if (isDefined( | |
210 | + | let ay = [StringEntry(au, ((((toString(aw) + ",") + toString(as)) + ",") + m))] | |
211 | + | let az = getString(this, av) | |
212 | + | if (isDefined(az)) | |
203 | 213 | then { | |
204 | - | let | |
205 | - | let | |
206 | - | let | |
207 | - | let | |
208 | - | if ((r == | |
209 | - | then | |
214 | + | let aA = split(value(az), ",") | |
215 | + | let aB = aA[0] | |
216 | + | let aC = parseIntValue(split(aB, "_")[1]) | |
217 | + | let aD = g(aA[0]) | |
218 | + | if ((r == aC)) | |
219 | + | then ay | |
210 | 220 | else { | |
211 | - | let | |
212 | - | let | |
213 | - | if (if (if (if (if (( | |
214 | - | then ( | |
221 | + | let aE = value(getString(this, aB)) | |
222 | + | let aF = parseIntValue(split(aE, ",")[1]) | |
223 | + | if (if (if (if (if ((as > G)) | |
224 | + | then (as > aF) | |
215 | 225 | else false) | |
216 | - | then ( | |
226 | + | then (aw >= as) | |
217 | 227 | else false) | |
218 | 228 | then (65 >= size(m)) | |
219 | 229 | else false) | |
220 | - | then | |
230 | + | then X(m) | |
221 | 231 | else false) | |
222 | - | then ( | |
223 | - | else if (( | |
224 | - | then ( | |
225 | - | else | |
232 | + | then (ay :+ StringEntry(av, ((au + ",") + toString(aF)))) | |
233 | + | else if ((as > aD)) | |
234 | + | then (ay :+ StringEntry(av, ((au + ",") + toString(as)))) | |
235 | + | else ay | |
226 | 236 | } | |
227 | 237 | } | |
228 | - | else if (if (( | |
229 | - | then | |
238 | + | else if (if ((aw >= as)) | |
239 | + | then X(m) | |
230 | 240 | else false) | |
231 | - | then ( | |
232 | - | else | |
241 | + | then (ay :+ StringEntry(av, ((au + ",") + toString(as)))) | |
242 | + | else ay | |
233 | 243 | } | |
234 | 244 | } | |
235 | 245 | ||
236 | 246 | ||
237 | 247 | ||
238 | - | @Callable( | |
239 | - | func finalize (r, | |
240 | - | let | |
241 | - | let | |
242 | - | func | |
243 | - | let | |
244 | - | let | |
245 | - | let | |
246 | - | let | |
247 | - | let | |
248 | - | let | |
249 | - | $Tuple3(parseIntValue( | |
248 | + | @Callable(Z) | |
249 | + | func finalize (r,aG) = { | |
250 | + | let aH = Z.caller | |
251 | + | let aI = toString(aH) | |
252 | + | func aJ (ad,s) = { | |
253 | + | let at = q(toString(r), aI, s) | |
254 | + | let ao = t(at) | |
255 | + | let au = v(at) | |
256 | + | let aK = getString(this, au) | |
257 | + | let aL = { | |
258 | + | let aM = split(valueOrErrorMessage(aK, (("Bid with hash " + s) + " not found")), ",") | |
259 | + | $Tuple3(parseIntValue(aM[0]), parseIntValue(aM[1]), aM[2]) | |
250 | 260 | } | |
251 | - | let | |
252 | - | let | |
253 | - | let m = | |
254 | - | let | |
255 | - | let | |
256 | - | let | |
257 | - | let | |
258 | - | let | |
259 | - | let | |
260 | - | let | |
261 | + | let aw = aL._1 | |
262 | + | let aN = aL._2 | |
263 | + | let m = aL._3 | |
264 | + | let av = p(m) | |
265 | + | let V = split(valueOrErrorMessage(getString(this, av), "Auction winner has not been determined"), ",") | |
266 | + | let aO = $Tuple2(V[0], g(V[1])) | |
267 | + | let W = aO._1 | |
268 | + | let aP = aO._2 | |
269 | + | let aQ = parseIntValue(split(W, "_")[1]) | |
270 | + | let aR = if (if (if (if ((G > aN)) | |
261 | 271 | then true | |
262 | - | else ( | |
272 | + | else (aN > aw)) | |
263 | 273 | then true | |
264 | - | else ( | |
274 | + | else (aQ != r)) | |
265 | 275 | then true | |
266 | - | else !( | |
267 | - | then ( | |
268 | - | else if (( | |
269 | - | then ( | |
270 | - | else | |
271 | - | let | |
272 | - | ( | |
276 | + | else !(X(m))) | |
277 | + | then (aw - fraction(aw, 10, 100)) | |
278 | + | else if ((W == au)) | |
279 | + | then (aw - aP) | |
280 | + | else aw | |
281 | + | let aS = [DeleteEntry(au), DeleteEntry(ao), ScriptTransfer(aH, aR, unit)] | |
282 | + | (ad ++ aS) | |
273 | 283 | } | |
274 | 284 | ||
275 | - | let | |
276 | - | let | |
277 | - | let | |
278 | - | func | |
279 | - | then | |
280 | - | else | |
285 | + | let af = aG | |
286 | + | let ag = size(af) | |
287 | + | let ah = nil | |
288 | + | func ai (aj,ak) = if ((ak >= ag)) | |
289 | + | then aj | |
290 | + | else aJ(aj, af[ak]) | |
281 | 291 | ||
282 | - | func | |
283 | - | then | |
292 | + | func al (aj,ak) = if ((ak >= ag)) | |
293 | + | then aj | |
284 | 294 | else throw("List size exceeds 10") | |
285 | 295 | ||
286 | - | | |
296 | + | al(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ah, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
287 | 297 | } | |
288 | 298 | ||
289 | 299 |
github/deemru/w8io/873ac7e 129.32 ms ◑![]()