tx · 5uGqjtYnGwLDp1TwRraQbRHYAtbvHFgNS7av3apDCT8d

3MvrXJVzDMDcshazxn88FybxHV2JvWQBxTc:  -0.01200000 Waves

2022.10.15 11:11 [2273203] smart account 3MvrXJVzDMDcshazxn88FybxHV2JvWQBxTc > SELF 0.00000000 Waves

{ "type": 13, "id": "5uGqjtYnGwLDp1TwRraQbRHYAtbvHFgNS7av3apDCT8d", "fee": 1200000, "feeAssetId": null, "timestamp": 1665821521065, "version": 2, "chainId": 84, "sender": "3MvrXJVzDMDcshazxn88FybxHV2JvWQBxTc", "senderPublicKey": "Fq8P5ctrS7PNTX37bWWxvnwoB7C2FaNySZWnRmgPUaDH", "proofs": [ "xErurutqt3CeEjGDsJvsa5iJYnyDcoVuJmCj95v7GgUgsxyDLPgztE12ViYWrWvz4SfMTuxJPuUZVisL8pkYJTS" ], "script": "base64:AAIFAAAAAAAAAEEIAhIDCgEBEgMKAQgSAwoBCBIDCgEIEgMKAQgSAwoBCBIDCgEIEgQKAggIEgMKAQgSAwoBCBIFCgMICAESAwoBCAAAACgBAAAAEGdldFN0cmluZ09yVGhyb3cAAAACAAAAB2FkZHJlc3MAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAxDYW4ndCByZWFkICcFAAAAA2tleQIAAAANJyBhdCBhZGRyZXNzIAkABCUAAAABBQAAAAdhZGRyZXNzAQAAABFnZXRJbnRlZ2VyT3JUaHJvdwAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAdhZGRyZXNzBQAAAANrZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADENhbid0IHJlYWQgJwUAAAADa2V5AgAAAA0nIGF0IGFkZHJlc3MgCQAEJQAAAAEFAAAAB2FkZHJlc3MBAAAAE3BhcnNlQWRkcmVzc09yVGhyb3cAAAABAAAADG1heWJlQWRkcmVzcwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEJgAAAAEFAAAADG1heWJlQWRkcmVzcwkAASwAAAACCQABLAAAAAICAAAAGkNhbid0IHBhcnNlIGFkZHJlc3MgZnJvbSAnBQAAAAxtYXliZUFkZHJlc3MCAAAAAScBAAAACmtleV9lbnRpdHkAAAADAAAABG5hbWUAAAACcGsAAAAIcHJvcGVydHkJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEbmFtZQIAAAABXwUAAAACcGsCAAAAAV8FAAAACHByb3BlcnR5AQAAAA5rZXlfVG9rZW5fbmFtZQAAAAEAAAAHdG9rZW5JZAkBAAAACmtleV9lbnRpdHkAAAADAgAAAAVUb2tlbgUAAAAHdG9rZW5JZAIAAAAEbmFtZQEAAAAOa2V5X05hbWVfdG9rZW4AAAABAAAABG5hbWUJAQAAAAprZXlfZW50aXR5AAAAAwIAAAAETmFtZQUAAAAEbmFtZQIAAAAFdG9rZW4BAAAADmtleV9OYW1lX293bmVyAAAAAQAAAARuYW1lCQEAAAAKa2V5X2VudGl0eQAAAAMCAAAABE5hbWUFAAAABG5hbWUCAAAABW93bmVyAQAAABFrZXlfTmFtZV9yZXNvbHZlcgAAAAEAAAAEbmFtZQkBAAAACmtleV9lbnRpdHkAAAADAgAAAAROYW1lBQAAAARuYW1lAgAAAAhyZXNvbHZlcgEAAAASa2V5X05hbWVfZXhwaXJlc0F0AAAAAQAAAARuYW1lCQEAAAAKa2V5X2VudGl0eQAAAAMCAAAABE5hbWUFAAAABG5hbWUCAAAACWV4cGlyZXNBdAEAAAASa2V5X05hbWVfY3JlYXRlZEF0AAAAAQAAAARuYW1lCQEAAAAKa2V5X2VudGl0eQAAAAMCAAAABE5hbWUFAAAABG5hbWUCAAAACWNyZWF0ZWRBdAAAAAALa2V5X25hbWVUVEwCAAAAB25hbWVUVEwAAAAAD2tleV9jb250cm9sbGVycwIAAAALY29udHJvbGxlcnMBAAAACV9zZXRPd25lcgAAAAIAAAAEbmFtZQAAAAVvd25lcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAOa2V5X05hbWVfb3duZXIAAAABBQAAAARuYW1lBQAAAAVvd25lcgUAAAADbmlsAQAAAAlfZ2V0T3duZXIAAAABAAAABG5hbWUJAAQdAAAAAgUAAAAEdGhpcwkBAAAADmtleV9OYW1lX293bmVyAAAAAQUAAAAEbmFtZQEAAAAMX3NldFJlc29sdmVyAAAAAgAAAARuYW1lAAAACHJlc29sdmVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABFrZXlfTmFtZV9yZXNvbHZlcgAAAAEFAAAABG5hbWUFAAAACHJlc29sdmVyBQAAAANuaWwBAAAADF9nZXRSZXNvbHZlcgAAAAEAAAAEbmFtZQkABB0AAAACBQAAAAR0aGlzCQEAAAARa2V5X05hbWVfcmVzb2x2ZXIAAAABBQAAAARuYW1lAQAAAAlfZ2V0VG9rZW4AAAABAAAABG5hbWUJAAQdAAAAAgUAAAAEdGhpcwkBAAAADmtleV9OYW1lX3Rva2VuAAAAAQUAAAAEbmFtZQEAAAANX2dldENyZWF0ZWRB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BSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgUAAAAFJGFjYzAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAIAAAAAAAAAAAMAAAAAAAAAAAQAAAAAAAAAAAUAAAAAAAAAAAYAAAAAAAAAAAcAAAAAAAAAAAgAAAAAAAAAAAkAAAAAAAAAAAoAAAAAAAAAAAsAAAAAAAAA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AAAEbmFtZQQAAAANaXNUb2tlbkV4aXN0cwQAAAAHJG1hdGNoMAkAA+wAAAABBQAAAAd0b2tlbklkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAVBc3NldAQAAAAFdG9rZW4FAAAAByRtYXRjaDAJAAAAAAAAAggFAAAABXRva2VuAAAACHF1YW50aXR5AAAAAAAAAAABBwMDBQAAAAxpc1Rva2VuT3duZXIJAQAAAAEhAAAAAQUAAAANaXNUb2tlbkV4aXN0cwcEAAAADWlzc3VlTmV3VG9rZW4JAQAAAA9faXNzdWVOYW1lVG9rZW4AAAABBQAAAARuYW1lBAAAAApuZXdUb2tlbklkCQAEOAAAAAEJAAGRAAAAAgUAAAANaXNzdWVOZXdUb2tlbgAAAAAAAAAAAAQAAAALbmV3VG9rZW5TdHIJAAJYAAAAAQUAAAAKbmV3VG9rZW5JZAQAAAAXcmVzdG9yZU5hbWVXaXRoTmV3VG9rZW4JAQAAABVfcmVzdG9yZU5hbWVXaXRoVG9rZW4AAAACBQAAAARuYW1lBQAAAAtuZXdUb2tlblN0cgQAAAAXdHJhbnNmZXJOZXdUb2tlblRvT3duZXIJAQAAABVfdHJhbnNmZXJUb2tlblRvT3duZXIAAAACBQAAAAtuZXdUb2tlblN0cgUAAAAPbmV3T3duZXJBZGRyZXNzCQAETgAAAAIJAAROAAAAAgUAAAANaXNzdWVOZXdUb2tlbgUAAAAXcmVzdG9yZU5hbWVXaXRoTmV3VG9rZW4FAAAAF3RyYW5zZmVyTmV3VG9rZW5Ub093bmVyAwMFAAAADGlzVG9rZW5Pd25lcgUAAAAIaGFzVG9rZW4HCQAAAgAAAAECAAAAHFlvdSBhbHJlYWR5IG93biBhIG5hbWUgdG9rZW4DCQEAAAABIQAAAAEFAAAACGhhc1Rva2VuCQAAAgAAAAECAAAAG1lvdSBkb24ndCBoYXZlIGEgbmFtZSB0b2tlbgkBAAAACV9zZXRPd25lcgAAAAIFAAAABG5hbWUFAAAAD25ld093bmVyQWRkcmVzcwAAAABr237I", "height": 2273203, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 88N9etBM8frPBZgfv3L6mrYP6c8fm142DNj9H7fEw7Ad Next: CtLvok2QfLh1TUBRBbvxEobx52uviprNERr3FcoH6cXE Diff:
OldNewDifferences
2222 func n (h) = g("Name", h, "owner")
2323
2424
25-func o (h) = g("Name", h, "expiresAt")
25+func o (h) = g("Name", h, "resolver")
2626
2727
28-func p (h) = g("Name", h, "createdAt")
28+func p (h) = g("Name", h, "expiresAt")
2929
3030
31-let q = "nameTTL"
32-
33-let r = "controllers"
34-
35-func s (h,t) = [StringEntry(n(h), t)]
31+func q (h) = g("Name", h, "createdAt")
3632
3733
38-func u (h) = getString(this, n(h))
34+let r = "nameTTL"
35+
36+let s = "controllers"
37+
38+func t (h,u) = [StringEntry(n(h), u)]
3939
4040
41-func v (h) = getString(this, m(h))
41+func v (h) = getString(this, n(h))
4242
4343
44-func w (h) = getInteger(this, p(h))
44+func w (h,x) = [StringEntry(o(h), x)]
4545
4646
47-func x (h) = getInteger(this, o(h))
47+func y (h) = getString(this, o(h))
4848
4949
50-func y () = getString(this, r)
50+func z (h) = getString(this, m(h))
5151
5252
53-let z = {
54- let A = y()
55- if ($isInstanceOf(A, "String"))
53+func A (h) = getInteger(this, q(h))
54+
55+
56+func B (h) = getInteger(this, p(h))
57+
58+
59+func C () = getString(this, s)
60+
61+
62+let D = {
63+ let E = C()
64+ if ($isInstanceOf(E, "String"))
5665 then {
57- let B = A
58- split(B, ",")
66+ let F = E
67+ split(F, ",")
5968 }
6069 else nil
6170 }
6271
63-let C = d(this, q)
72+let G = d(this, r)
6473
65-func D (h) = isDefined(getString(this, m(h)))
74+func H (h) = isDefined(getString(this, m(h)))
6675
6776
68-func E (h) = isDefined(w(h))
77+func I (h) = isDefined(A(h))
6978
7079
71-func F (h) = {
72- let A = x(h)
73- if ($isInstanceOf(A, "Int"))
80+func J (h) = {
81+ let E = B(h)
82+ if ($isInstanceOf(E, "Int"))
7483 then {
75- let G = A
76- (lastBlock.timestamp > G)
84+ let K = E
85+ (lastBlock.timestamp > K)
7786 }
7887 else false
7988 }
8089
8190
82-func H (h) = if (if (D(h))
83- then E(h)
91+func L (h) = if (if (H(h))
92+ then I(h)
8493 else false)
85- then !(F(h))
94+ then !(J(h))
8695 else false
8796
8897
89-func I (h) = {
90- let J = "abcdefghijklmnopqrstuvwxyz1234567890-"
91- func K (L,M) = if (L)
92- then contains(J, M)
98+func M (h) = {
99+ let N = "abcdefghijklmnopqrstuvwxyz1234567890-"
100+ func O (P,Q) = if (P)
101+ then contains(N, Q)
93102 else false
94103
95- let N = if (if (if (if (if ((size(h) > 0))
104+ let R = if (if (if (if (if ((size(h) > 0))
96105 then (63 >= size(h))
97106 else false)
98107 then (indexOf(h, "--") != 2)
102111 then (lastIndexOf(h, "-") != (size(h) - 1))
103112 else false)
104113 then {
105- let O = split(h, "")
106- let P = size(O)
107- let Q = true
108- func R (S,T) = if ((T >= P))
109- then S
110- else K(S, O[T])
114+ let S = split(h, "")
115+ let T = size(S)
116+ let U = true
117+ func V (W,X) = if ((X >= T))
118+ then W
119+ else O(W, S[X])
111120
112- func U (S,T) = if ((T >= P))
113- then S
121+ func Y (W,X) = if ((X >= T))
122+ then W
114123 else throw("List size exceeds 63")
115124
116- U(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(Q, 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)
125+ Y(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(U, 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)
117126 }
118127 else false
119- let V = if (D(h))
120- then !(F(h))
128+ let Z = if (H(h))
129+ then !(J(h))
121130 else false
122- if (!(V))
123- then N
131+ if (!(Z))
132+ then R
124133 else false
125134 }
126135
127136
128-func W (X) = (X.caller == this)
137+func aa (ab) = (ab.caller == this)
129138
130139
131-func Y (X,h) = (toString(X.caller) == valueOrElse(u(h), ""))
140+func ac (ab,h) = (toString(ab.caller) == valueOrElse(v(h), ""))
132141
133142
134-func Z (b) = containsElement(z, b)
143+func ad (b) = containsElement(D, b)
135144
136145
137-func aa (h) = {
138- let ab = split(h, ".")
139- let ac = (size(ab) - 1)
140- let ad = ab[ac]
141- let ae = makeString(removeByIndex(ab, ac), ".")
142- $Tuple2(ad, ae)
146+func ae (h) = {
147+ let af = split(h, ".")
148+ let ag = (size(af) - 1)
149+ let ah = af[ag]
150+ let ai = makeString(removeByIndex(af, ag), ".")
151+ $Tuple2(ah, ai)
143152 }
144153
145154
146-func af (h) = [Issue(if ((size(h) > 16))
155+func aj (h) = [Issue(if ((size(h) > 16))
147156 then (take(h, 15) + "~")
148157 else take(h, 16), (h + ".waves"), 1, 0, false)]
149158
150159
151-func ag (h,l,ah) = [StringEntry(m(h), l), StringEntry(k(l), h), IntegerEntry(p(h), ah), IntegerEntry(o(h), (ah + C))]
160+func ak (h,l,al) = [StringEntry(m(h), l), StringEntry(k(l), h), IntegerEntry(q(h), al), IntegerEntry(p(h), (al + G))]
152161
153162
154-func ai (h,l) = [StringEntry(m(h), l), StringEntry(k(l), h)]
163+func am (h,l) = [StringEntry(m(h), l), StringEntry(k(l), h)]
155164
156165
157-func aj (l,t) = [ScriptTransfer(e(t), 1, fromBase58String(l))]
166+func an (l,u) = [ScriptTransfer(e(u), 1, fromBase58String(l))]
158167
159168
160-func ak (al) = unit
169+func ao (ap) = unit
161170
162171
163-func am (X) = if (W(X))
172+func aq (ab) = if (aa(ab))
164173 then unit
165174 else throw("Permission denied")
166175
167176
168-func an (X) = if (if (W(X))
177+func ar (ab) = if (if (aa(ab))
169178 then true
170- else Z(toString(X.caller)))
179+ else ad(toString(ab.caller)))
171180 then unit
172181 else throw("Permission denied")
173182
174183
175-func ao (b) = if (isDefined(addressFromString(b)))
184+func as (ab,h) = if (if (aa(ab))
185+ then true
186+ else ac(ab, h))
187+ then unit
188+ else throw("Permission denied")
189+
190+
191+func at (b) = if (isDefined(addressFromString(b)))
176192 then unit
177193 else throw("The address must be valid")
178194
179195
180-@Callable(X)
181-func init (C) = valueOrElse(ak([am(X), if ((C > 0))
196+@Callable(ab)
197+func init (G) = valueOrElse(ao([aq(ab), if ((G > 0))
182198 then unit
183- else throw("TTL cannot be negative")]), [IntegerEntry(q, C)])
199+ else throw("TTL cannot be negative")]), [IntegerEntry(r, G)])
184200
185201
186202
187-@Callable(X)
188-func supportsInterface (ap) = $Tuple2(nil, (ap == "whoIs"))
203+@Callable(ab)
204+func supportsInterface (au) = $Tuple2(nil, containsElement(["owner", "resolver", "nameCreated", "nameExpires"], au))
189205
190206
191207
192-@Callable(X)
193-func addController (b) = valueOrElse(ak([am(X), ao(b), if (!(Z(b)))
208+@Callable(ab)
209+func addController (b) = valueOrElse(ao([aq(ab), at(b), if (!(ad(b)))
194210 then unit
195- else throw((("Controller `" + b) + "` is already registered"))]), [StringEntry(r, makeString((z :+ b), ","))])
211+ else throw((("Controller `" + b) + "` is already registered"))]), [StringEntry(s, makeString((D :+ b), ","))])
196212
197213
198214
199-@Callable(X)
200-func removeController (b) = valueOrElse(ak([am(X), ao(b), if (Z(b))
215+@Callable(ab)
216+func removeController (b) = valueOrElse(ao([aq(ab), at(b), if (ad(b))
201217 then unit
202218 else throw((("Controller `" + b) + "` is not registered"))]), {
203- let aq = value(indexOf(z, b))
204-[StringEntry(r, makeString(removeByIndex(z, aq), ","))]
219+ let av = value(indexOf(D, b))
220+[StringEntry(s, makeString(removeByIndex(D, av), ","))]
205221 })
206222
207223
208224
209-@Callable(X)
210-func available (h) = $Tuple2(nil, I(h))
225+@Callable(ab)
226+func available (h) = $Tuple2(nil, M(h))
211227
212228
213229
214-@Callable(X)
215-func owner (h) = $Tuple2(nil, u(h))
230+@Callable(ab)
231+func owner (h) = $Tuple2(nil, v(h))
216232
217233
218234
219-@Callable(X)
220-func nameCreated (h) = $Tuple2(nil, w(h))
235+@Callable(ab)
236+func resolver (h) = $Tuple2(nil, y(h))
221237
222238
223239
224-@Callable(X)
225-func nameExpires (h) = $Tuple2(nil, x(h))
240+@Callable(ab)
241+func setResolver (h,x) = valueOrElse(ao([if (L(h))
242+ then unit
243+ else throw("Name expired or not registered"), as(ab, h), if (isDefined(addressFromString(x)))
244+ then unit
245+ else throw("Resolver must be a valid contract address")]), $Tuple2(nil, w(h, x)))
226246
227247
228248
229-@Callable(X)
230-func register (h,t,ah) = valueOrElse(ak([an(X), if (I(h))
249+@Callable(ab)
250+func nameCreated (h) = $Tuple2(nil, A(h))
251+
252+
253+
254+@Callable(ab)
255+func nameExpires (h) = $Tuple2(nil, B(h))
256+
257+
258+
259+@Callable(ab)
260+func register (h,u,al) = valueOrElse(ao([ar(ab), if (M(h))
231261 then unit
232- else throw((("`" + h) + "` cannot be registered")), ao(t), if ((ah > 0))
262+ else throw((("`" + h) + "` cannot be registered")), at(u), if ((al > 0))
233263 then unit
234- else throw("CreatedAt cannot be negative"), if ((lastBlock.timestamp >= ah))
264+ else throw("CreatedAt cannot be negative"), if ((lastBlock.timestamp >= al))
235265 then unit
236266 else throw("CreatedAt cannot be in the future")]), {
237- let ar = af(h)
238- let l = calculateAssetId(ar[0])
239- let as = toBase58String(l)
240- let at = ag(h, as, ah)
241- let au = aj(as, t)
242- let av = s(h, t)
243- (((ar ++ at) ++ au) ++ av)
267+ let aw = aj(h)
268+ let l = calculateAssetId(aw[0])
269+ let ax = toBase58String(l)
270+ let ay = ak(h, ax, al)
271+ let az = an(ax, u)
272+ let aA = t(h, u)
273+ (((aw ++ ay) ++ az) ++ aA)
244274 })
245275
246276
247277
248-@Callable(X)
249-func reclaim (h) = valueOrElse(ak([if (H(h))
278+@Callable(ab)
279+func reclaim (h) = valueOrElse(ao([if (L(h))
250280 then unit
251281 else throw((("`" + h) + "` is not active"))]), {
252- let aw = X.caller
253- let ax = toString(aw)
254- let as = valueOrErrorMessage(v(h), (("No token is issued for `" + h) + "`"))
255- let l = fromBase58String(as)
256- let ay = (assetBalance(aw, l) == 1)
257- let az = Y(X, h)
258- let aA = {
259- let A = assetInfo(l)
260- if ($isInstanceOf(A, "Asset"))
282+ let aB = ab.caller
283+ let aC = toString(aB)
284+ let ax = valueOrErrorMessage(z(h), (("No token is issued for `" + h) + "`"))
285+ let l = fromBase58String(ax)
286+ let aD = (assetBalance(aB, l) == 1)
287+ let aE = ac(ab, h)
288+ let aF = {
289+ let E = assetInfo(l)
290+ if ($isInstanceOf(E, "Asset"))
261291 then {
262- let aB = A
263- (aB.quantity == 1)
292+ let aG = E
293+ (aG.quantity == 1)
264294 }
265295 else false
266296 }
267- if (if (az)
268- then !(aA)
297+ if (if (aE)
298+ then !(aF)
269299 else false)
270300 then {
271- let aC = af(h)
272- let aD = calculateAssetId(aC[0])
273- let aE = toBase58String(aD)
274- let aF = ai(h, aE)
275- let aG = aj(aE, ax)
276- ((aC ++ aF) ++ aG)
301+ let aH = aj(h)
302+ let aI = calculateAssetId(aH[0])
303+ let aJ = toBase58String(aI)
304+ let aK = am(h, aJ)
305+ let aL = an(aJ, aC)
306+ ((aH ++ aK) ++ aL)
277307 }
278- else if (if (az)
279- then ay
308+ else if (if (aE)
309+ then aD
280310 else false)
281311 then throw("You already own a name token")
282- else if (!(ay))
312+ else if (!(aD))
283313 then throw("You don't have a name token")
284- else s(h, ax)
285- })
286-
287-
288-
289-@Callable(X)
290-func whoIs (h) = valueOrElse(ak([if ((size(h) > 0))
291- then unit
292- else throw("Name cannot be empty")]), {
293- let ad = aa(h)._1
294- let aH = u(ad)
295- let aI = unit
296- let aJ = w(ad)
297- let aK = x(ad)
298- $Tuple2(nil, $Tuple4(aH, aI, aJ, aK))
314+ else t(h, aC)
299315 })
300316
301317
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b,c) = valueOrErrorMessage(getString(b, c), ((("Can't read '" + c) + "' at address ") + toString(b)))
55
66
77 func d (b,c) = valueOrErrorMessage(getInteger(b, c), ((("Can't read '" + c) + "' at address ") + toString(b)))
88
99
1010 func e (f) = valueOrErrorMessage(addressFromString(f), (("Can't parse address from '" + f) + "'"))
1111
1212
1313 func g (h,i,j) = ((((h + "_") + i) + "_") + j)
1414
1515
1616 func k (l) = g("Token", l, "name")
1717
1818
1919 func m (h) = g("Name", h, "token")
2020
2121
2222 func n (h) = g("Name", h, "owner")
2323
2424
25-func o (h) = g("Name", h, "expiresAt")
25+func o (h) = g("Name", h, "resolver")
2626
2727
28-func p (h) = g("Name", h, "createdAt")
28+func p (h) = g("Name", h, "expiresAt")
2929
3030
31-let q = "nameTTL"
32-
33-let r = "controllers"
34-
35-func s (h,t) = [StringEntry(n(h), t)]
31+func q (h) = g("Name", h, "createdAt")
3632
3733
38-func u (h) = getString(this, n(h))
34+let r = "nameTTL"
35+
36+let s = "controllers"
37+
38+func t (h,u) = [StringEntry(n(h), u)]
3939
4040
41-func v (h) = getString(this, m(h))
41+func v (h) = getString(this, n(h))
4242
4343
44-func w (h) = getInteger(this, p(h))
44+func w (h,x) = [StringEntry(o(h), x)]
4545
4646
47-func x (h) = getInteger(this, o(h))
47+func y (h) = getString(this, o(h))
4848
4949
50-func y () = getString(this, r)
50+func z (h) = getString(this, m(h))
5151
5252
53-let z = {
54- let A = y()
55- if ($isInstanceOf(A, "String"))
53+func A (h) = getInteger(this, q(h))
54+
55+
56+func B (h) = getInteger(this, p(h))
57+
58+
59+func C () = getString(this, s)
60+
61+
62+let D = {
63+ let E = C()
64+ if ($isInstanceOf(E, "String"))
5665 then {
57- let B = A
58- split(B, ",")
66+ let F = E
67+ split(F, ",")
5968 }
6069 else nil
6170 }
6271
63-let C = d(this, q)
72+let G = d(this, r)
6473
65-func D (h) = isDefined(getString(this, m(h)))
74+func H (h) = isDefined(getString(this, m(h)))
6675
6776
68-func E (h) = isDefined(w(h))
77+func I (h) = isDefined(A(h))
6978
7079
71-func F (h) = {
72- let A = x(h)
73- if ($isInstanceOf(A, "Int"))
80+func J (h) = {
81+ let E = B(h)
82+ if ($isInstanceOf(E, "Int"))
7483 then {
75- let G = A
76- (lastBlock.timestamp > G)
84+ let K = E
85+ (lastBlock.timestamp > K)
7786 }
7887 else false
7988 }
8089
8190
82-func H (h) = if (if (D(h))
83- then E(h)
91+func L (h) = if (if (H(h))
92+ then I(h)
8493 else false)
85- then !(F(h))
94+ then !(J(h))
8695 else false
8796
8897
89-func I (h) = {
90- let J = "abcdefghijklmnopqrstuvwxyz1234567890-"
91- func K (L,M) = if (L)
92- then contains(J, M)
98+func M (h) = {
99+ let N = "abcdefghijklmnopqrstuvwxyz1234567890-"
100+ func O (P,Q) = if (P)
101+ then contains(N, Q)
93102 else false
94103
95- let N = if (if (if (if (if ((size(h) > 0))
104+ let R = if (if (if (if (if ((size(h) > 0))
96105 then (63 >= size(h))
97106 else false)
98107 then (indexOf(h, "--") != 2)
99108 else false)
100109 then (indexOf(h, "-") != 0)
101110 else false)
102111 then (lastIndexOf(h, "-") != (size(h) - 1))
103112 else false)
104113 then {
105- let O = split(h, "")
106- let P = size(O)
107- let Q = true
108- func R (S,T) = if ((T >= P))
109- then S
110- else K(S, O[T])
114+ let S = split(h, "")
115+ let T = size(S)
116+ let U = true
117+ func V (W,X) = if ((X >= T))
118+ then W
119+ else O(W, S[X])
111120
112- func U (S,T) = if ((T >= P))
113- then S
121+ func Y (W,X) = if ((X >= T))
122+ then W
114123 else throw("List size exceeds 63")
115124
116- U(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(R(Q, 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)
125+ Y(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(V(U, 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)
117126 }
118127 else false
119- let V = if (D(h))
120- then !(F(h))
128+ let Z = if (H(h))
129+ then !(J(h))
121130 else false
122- if (!(V))
123- then N
131+ if (!(Z))
132+ then R
124133 else false
125134 }
126135
127136
128-func W (X) = (X.caller == this)
137+func aa (ab) = (ab.caller == this)
129138
130139
131-func Y (X,h) = (toString(X.caller) == valueOrElse(u(h), ""))
140+func ac (ab,h) = (toString(ab.caller) == valueOrElse(v(h), ""))
132141
133142
134-func Z (b) = containsElement(z, b)
143+func ad (b) = containsElement(D, b)
135144
136145
137-func aa (h) = {
138- let ab = split(h, ".")
139- let ac = (size(ab) - 1)
140- let ad = ab[ac]
141- let ae = makeString(removeByIndex(ab, ac), ".")
142- $Tuple2(ad, ae)
146+func ae (h) = {
147+ let af = split(h, ".")
148+ let ag = (size(af) - 1)
149+ let ah = af[ag]
150+ let ai = makeString(removeByIndex(af, ag), ".")
151+ $Tuple2(ah, ai)
143152 }
144153
145154
146-func af (h) = [Issue(if ((size(h) > 16))
155+func aj (h) = [Issue(if ((size(h) > 16))
147156 then (take(h, 15) + "~")
148157 else take(h, 16), (h + ".waves"), 1, 0, false)]
149158
150159
151-func ag (h,l,ah) = [StringEntry(m(h), l), StringEntry(k(l), h), IntegerEntry(p(h), ah), IntegerEntry(o(h), (ah + C))]
160+func ak (h,l,al) = [StringEntry(m(h), l), StringEntry(k(l), h), IntegerEntry(q(h), al), IntegerEntry(p(h), (al + G))]
152161
153162
154-func ai (h,l) = [StringEntry(m(h), l), StringEntry(k(l), h)]
163+func am (h,l) = [StringEntry(m(h), l), StringEntry(k(l), h)]
155164
156165
157-func aj (l,t) = [ScriptTransfer(e(t), 1, fromBase58String(l))]
166+func an (l,u) = [ScriptTransfer(e(u), 1, fromBase58String(l))]
158167
159168
160-func ak (al) = unit
169+func ao (ap) = unit
161170
162171
163-func am (X) = if (W(X))
172+func aq (ab) = if (aa(ab))
164173 then unit
165174 else throw("Permission denied")
166175
167176
168-func an (X) = if (if (W(X))
177+func ar (ab) = if (if (aa(ab))
169178 then true
170- else Z(toString(X.caller)))
179+ else ad(toString(ab.caller)))
171180 then unit
172181 else throw("Permission denied")
173182
174183
175-func ao (b) = if (isDefined(addressFromString(b)))
184+func as (ab,h) = if (if (aa(ab))
185+ then true
186+ else ac(ab, h))
187+ then unit
188+ else throw("Permission denied")
189+
190+
191+func at (b) = if (isDefined(addressFromString(b)))
176192 then unit
177193 else throw("The address must be valid")
178194
179195
180-@Callable(X)
181-func init (C) = valueOrElse(ak([am(X), if ((C > 0))
196+@Callable(ab)
197+func init (G) = valueOrElse(ao([aq(ab), if ((G > 0))
182198 then unit
183- else throw("TTL cannot be negative")]), [IntegerEntry(q, C)])
199+ else throw("TTL cannot be negative")]), [IntegerEntry(r, G)])
184200
185201
186202
187-@Callable(X)
188-func supportsInterface (ap) = $Tuple2(nil, (ap == "whoIs"))
203+@Callable(ab)
204+func supportsInterface (au) = $Tuple2(nil, containsElement(["owner", "resolver", "nameCreated", "nameExpires"], au))
189205
190206
191207
192-@Callable(X)
193-func addController (b) = valueOrElse(ak([am(X), ao(b), if (!(Z(b)))
208+@Callable(ab)
209+func addController (b) = valueOrElse(ao([aq(ab), at(b), if (!(ad(b)))
194210 then unit
195- else throw((("Controller `" + b) + "` is already registered"))]), [StringEntry(r, makeString((z :+ b), ","))])
211+ else throw((("Controller `" + b) + "` is already registered"))]), [StringEntry(s, makeString((D :+ b), ","))])
196212
197213
198214
199-@Callable(X)
200-func removeController (b) = valueOrElse(ak([am(X), ao(b), if (Z(b))
215+@Callable(ab)
216+func removeController (b) = valueOrElse(ao([aq(ab), at(b), if (ad(b))
201217 then unit
202218 else throw((("Controller `" + b) + "` is not registered"))]), {
203- let aq = value(indexOf(z, b))
204-[StringEntry(r, makeString(removeByIndex(z, aq), ","))]
219+ let av = value(indexOf(D, b))
220+[StringEntry(s, makeString(removeByIndex(D, av), ","))]
205221 })
206222
207223
208224
209-@Callable(X)
210-func available (h) = $Tuple2(nil, I(h))
225+@Callable(ab)
226+func available (h) = $Tuple2(nil, M(h))
211227
212228
213229
214-@Callable(X)
215-func owner (h) = $Tuple2(nil, u(h))
230+@Callable(ab)
231+func owner (h) = $Tuple2(nil, v(h))
216232
217233
218234
219-@Callable(X)
220-func nameCreated (h) = $Tuple2(nil, w(h))
235+@Callable(ab)
236+func resolver (h) = $Tuple2(nil, y(h))
221237
222238
223239
224-@Callable(X)
225-func nameExpires (h) = $Tuple2(nil, x(h))
240+@Callable(ab)
241+func setResolver (h,x) = valueOrElse(ao([if (L(h))
242+ then unit
243+ else throw("Name expired or not registered"), as(ab, h), if (isDefined(addressFromString(x)))
244+ then unit
245+ else throw("Resolver must be a valid contract address")]), $Tuple2(nil, w(h, x)))
226246
227247
228248
229-@Callable(X)
230-func register (h,t,ah) = valueOrElse(ak([an(X), if (I(h))
249+@Callable(ab)
250+func nameCreated (h) = $Tuple2(nil, A(h))
251+
252+
253+
254+@Callable(ab)
255+func nameExpires (h) = $Tuple2(nil, B(h))
256+
257+
258+
259+@Callable(ab)
260+func register (h,u,al) = valueOrElse(ao([ar(ab), if (M(h))
231261 then unit
232- else throw((("`" + h) + "` cannot be registered")), ao(t), if ((ah > 0))
262+ else throw((("`" + h) + "` cannot be registered")), at(u), if ((al > 0))
233263 then unit
234- else throw("CreatedAt cannot be negative"), if ((lastBlock.timestamp >= ah))
264+ else throw("CreatedAt cannot be negative"), if ((lastBlock.timestamp >= al))
235265 then unit
236266 else throw("CreatedAt cannot be in the future")]), {
237- let ar = af(h)
238- let l = calculateAssetId(ar[0])
239- let as = toBase58String(l)
240- let at = ag(h, as, ah)
241- let au = aj(as, t)
242- let av = s(h, t)
243- (((ar ++ at) ++ au) ++ av)
267+ let aw = aj(h)
268+ let l = calculateAssetId(aw[0])
269+ let ax = toBase58String(l)
270+ let ay = ak(h, ax, al)
271+ let az = an(ax, u)
272+ let aA = t(h, u)
273+ (((aw ++ ay) ++ az) ++ aA)
244274 })
245275
246276
247277
248-@Callable(X)
249-func reclaim (h) = valueOrElse(ak([if (H(h))
278+@Callable(ab)
279+func reclaim (h) = valueOrElse(ao([if (L(h))
250280 then unit
251281 else throw((("`" + h) + "` is not active"))]), {
252- let aw = X.caller
253- let ax = toString(aw)
254- let as = valueOrErrorMessage(v(h), (("No token is issued for `" + h) + "`"))
255- let l = fromBase58String(as)
256- let ay = (assetBalance(aw, l) == 1)
257- let az = Y(X, h)
258- let aA = {
259- let A = assetInfo(l)
260- if ($isInstanceOf(A, "Asset"))
282+ let aB = ab.caller
283+ let aC = toString(aB)
284+ let ax = valueOrErrorMessage(z(h), (("No token is issued for `" + h) + "`"))
285+ let l = fromBase58String(ax)
286+ let aD = (assetBalance(aB, l) == 1)
287+ let aE = ac(ab, h)
288+ let aF = {
289+ let E = assetInfo(l)
290+ if ($isInstanceOf(E, "Asset"))
261291 then {
262- let aB = A
263- (aB.quantity == 1)
292+ let aG = E
293+ (aG.quantity == 1)
264294 }
265295 else false
266296 }
267- if (if (az)
268- then !(aA)
297+ if (if (aE)
298+ then !(aF)
269299 else false)
270300 then {
271- let aC = af(h)
272- let aD = calculateAssetId(aC[0])
273- let aE = toBase58String(aD)
274- let aF = ai(h, aE)
275- let aG = aj(aE, ax)
276- ((aC ++ aF) ++ aG)
301+ let aH = aj(h)
302+ let aI = calculateAssetId(aH[0])
303+ let aJ = toBase58String(aI)
304+ let aK = am(h, aJ)
305+ let aL = an(aJ, aC)
306+ ((aH ++ aK) ++ aL)
277307 }
278- else if (if (az)
279- then ay
308+ else if (if (aE)
309+ then aD
280310 else false)
281311 then throw("You already own a name token")
282- else if (!(ay))
312+ else if (!(aD))
283313 then throw("You don't have a name token")
284- else s(h, ax)
285- })
286-
287-
288-
289-@Callable(X)
290-func whoIs (h) = valueOrElse(ak([if ((size(h) > 0))
291- then unit
292- else throw("Name cannot be empty")]), {
293- let ad = aa(h)._1
294- let aH = u(ad)
295- let aI = unit
296- let aJ = w(ad)
297- let aK = x(ad)
298- $Tuple2(nil, $Tuple4(aH, aI, aJ, aK))
314+ else t(h, aC)
299315 })
300316
301317

github/deemru/w8io/c3f4982 
89.66 ms