tx · HQYBkyEqFZN1MiNtUSCBVABXcKbWb72DPAzms2rhDE8z

3NA73oUXjqp7SpudXWV1yMFuKm9awPbqsVz:  -0.01000000 Waves

2022.10.11 08:26 [2267258] smart account 3NA73oUXjqp7SpudXWV1yMFuKm9awPbqsVz > SELF 0.00000000 Waves

{ "type": 13, "id": "HQYBkyEqFZN1MiNtUSCBVABXcKbWb72DPAzms2rhDE8z", "fee": 1000000, "feeAssetId": null, "timestamp": 1665466027433, "version": 2, "chainId": 84, "sender": "3NA73oUXjqp7SpudXWV1yMFuKm9awPbqsVz", "senderPublicKey": "2mHW72YTfnxJ1M8WsdUQjgpp3a2SUbt9mbAiePGiuJok", "proofs": [ "5TfhFFP5tTsBeDTuNsRtvzsbwPZWBPEeMzTJcN1VvfDimp7NfocPrmvU7WWyyenWxjBPgs9wqRUZhnChhd5pdEhP" ], "script": "base64:AAIFAAAAAAAAADYIAhIDCgEBEgMKAQgSAwoBCBIDCgEIEgMKAQgSAwoBCBIDCgEIEgMKAQgSBQoDCAgBEgMKAQgAAAAiAQAAABBnZXRTdHJpbmdPclRocm93AAAAAgAAAAdhZGRyZXNzAAAAA2tleQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAMQ2FuJ3QgcmVhZCAnBQAAAANrZXkCAAAADScgYXQgYWRkcmVzcyAJAAQlAAAAAQUAAAAHYWRkcmVzcwEAAAARZ2V0SW50ZWdlck9yVGhyb3cAAAACAAAAB2FkZHJlc3MAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAxDYW4ndCByZWFkICcFAAAAA2tleQIAAAANJyBhdCBhZGRyZXNzIAkABCUAAAABBQAAAAdhZGRyZXNzAQAAABNwYXJzZUFkZHJlc3NPclRocm93AAAAAQAAAAxtYXliZUFkZHJlc3MJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABBQAAAAxtYXliZUFkZHJlc3MJAAEsAAAAAgkAASwAAAACAgAAABpDYW4ndCBwYXJzZSBhZGRyZXNzIGZyb20gJwUAAAAMbWF5YmVBZGRyZXNzAgAAAAEnAQAAAAprZXlfZW50aXR5AAAAAwAAAARuYW1lAAAAAnBrAAAACHByb3BlcnR5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABG5hbWUCAAAAAV8FAAAAAnBrAgAAAAFfBQAAAAhwcm9wZXJ0eQEAAAAOa2V5X1Rva2VuX25hbWUAAAABAAAAB3Rva2VuSWQJAQAAAAprZXlfZW50aXR5AAAAAwIAAAAFVG9rZW4FAAAAB3Rva2VuSWQCAAAABG5hbWUBAAAADmtleV9OYW1lX3Rva2VuAAAAAQAAAARuYW1lCQEAAAAKa2V5X2VudGl0eQAAAAMCAAAABE5hbWUFAAAABG5hbWUCAAAABXRva2VuAQAAAA5rZXlfTmFtZV9vd25lcgAAAAEAAAAEbmFtZQkBAAAACmtleV9lbnRpdHkAAAADAgAAAAROYW1lBQAAAARuYW1lAgAAAAVvd25lcgEAAAASa2V5X05hbWVfZXhwaXJlc0F0AAAAAQAAAARuYW1lCQEAAAAKa2V5X2VudGl0eQAAAAMCAAAABE5hbWUFAAAABG5hbWUCAAAACWV4cGlyZXNBdAEAAAASa2V5X05hbWVfY3JlYXRlZEF0AAAAAQAAAARuYW1lCQEAAAAKa2V5X2VudGl0eQAAAAMCAAAABE5hbWUFAAAABG5hbWUCAAAACWNyZWF0ZWRBdAAAAAALa2V5X25hbWVUVEwCAAAAB25hbWVUVEwAAAAAD2tleV9jb250cm9sbGVycwIAAAALY29udHJvbGxlcnMBAAAACV9zZXRPd25lcgAAAAIAAAAEbmFtZQAAAAVvd25lcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAOa2V5X05hbWVfb3duZXIAAAABBQAAAARuYW1lBQAAAAVvd25lcgUAAAADbmlsAQAAAAlfZ2V0T3duZXIAAAABAAAABG5hbWUJAAQdAAAAAgUAAAAEdGhpcwkBAAAADmtleV9OYW1lX293bmVyAAAAAQUAAAAEbmFtZQEAAAAJX2dldFRva2VuAAAAAQAAAARuYW1lCQAEHQAAAAIFAAAABHRoaXMJAQAAAA5rZXlfTmFtZV90b2tlbgAAAAEFAAAABG5hbWUBAAAADV9nZXRDcmVhdGVkQXQAAAABAAAABG5hbWUJAAQaAAAAAgUAAAAEdGhpcwkBAAAAEmtleV9OYW1lX2NyZWF0ZWRBdAAAAAEFAAAABG5hbWUBAAAADV9nZXRFeHBpcmVzQXQAAAABAAAABG5hbWUJAAQaAAAAAgUAAAAEdGhpcwkBAAAAEmtleV9OYW1lX2V4cGlyZXNBdAAAAAEFAAAABG5hbWUBAAAAD19nZXRDb250cm9sbGVycwAAAAAJAAQdAAAAAgUAAAAEdGhpcwUAAAAPa2V5X2NvbnRyb2xsZXJzAAAAAAtjb250cm9sbGVycwQAAAAHJG1hdGNoMAkBAAAAD19nZXRDb250cm9sbGVycwAAAAADCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAAEcmVw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CQABLAAAAAICAAAAAWAFAAAABG5hbWUCAAAAD2AgaXMgbm90IGFjdGl2ZQUAAAADbmlsBAAAAAhuZXdPd25lcggFAAAAA2ludgAAAAZjYWxsZXIEAAAAD25ld093bmVyQWRkcmVzcwkABCUAAAABBQAAAAhuZXdPd25lcgQAAAAIdG9rZW5TdHIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkBAAAACV9nZXRUb2tlbgAAAAEFAAAABG5hbWUJAAEsAAAAAgkAASwAAAACAgAAABhObyB0b2tlbiBpcyBpc3N1ZWQgZm9yIGAFAAAABG5hbWUCAAAAAWAEAAAAB3Rva2VuSWQJAAJZAAAAAQUAAAAIdG9rZW5TdHIEAAAACGhhc1Rva2VuCQAAAAAAAAIJAAPwAAAAAgUAAAAIbmV3T3duZXIFAAAAB3Rva2VuSWQAAAAAAAAAAAEEAAAADGlzVG9rZW5Pd25lcgkBAAAAB2lzT3duZXIAAAACBQAAAANpbnYFAAAABG5hbWUEAAAADWlzVG9rZW5FeGlzdHMEAAAAByRtYXRjaDAJAAPsAAAAAQUAAAAHdG9rZW5JZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAFQXNzZXQEAAAABXRva2VuBQAAAAckbWF0Y2gwCQAAAAAAAAIIBQAAAAV0b2tlbgAAAAhxdWFudGl0eQAAAAAAAAAAAQcDAwUAAAAMaXNUb2tlbk93bmVyCQEAAAABIQAAAAEFAAAADWlzVG9rZW5FeGlzdHMHBAAAAA1pc3N1ZU5ld1Rva2VuCQEAAAAPX2lzc3VlTmFtZVRva2VuAAAAAQUAAAAEbmFtZQQAAAAKbmV3VG9rZW5JZAkABDgAAAABCQABkQAAAAIFAAAADWlzc3VlTmV3VG9rZW4AAAAAAAAAAAAEAAAAC25ld1Rva2VuU3RyCQACWAAAAAEFAAAACm5ld1Rva2VuSWQEAAAAF3Jlc3RvcmVOYW1lV2l0aE5ld1Rva2VuCQEAAAAVX3Jlc3RvcmVOYW1lV2l0aFRva2VuAAAAAgUAAAAEbmFtZQUAAAALbmV3VG9rZW5TdHIEAAAAF3RyYW5zZmVyTmV3VG9rZW5Ub093bmVyCQEAAAAVX3RyYW5zZmVyVG9rZW5Ub093bmVyAAAAAgUAAAALbmV3VG9rZW5TdHIFAAAAD25ld093bmVyQWRkcmVzcwkABE4AAAACCQAETgAAAAIFAAAADWlzc3VlTmV3VG9rZW4FAAAAF3Jlc3RvcmVOYW1lV2l0aE5ld1Rva2VuBQAAABd0cmFuc2Zlck5ld1Rva2VuVG9Pd25lcgMDBQAAAAxpc1Rva2VuT3duZXIFAAAACGhhc1Rva2VuBwkAAAIAAAABAgAAABxZb3UgYWxyZWFkeSBvd24gYSBuYW1lIHRva2VuAwkBAAAAASEAAAABBQAAAAhoYXNUb2tlbgkAAAIAAAABAgAAABtZb3UgZG9uJ3QgaGF2ZSBhIG5hbWUgdG9rZW4JAQAAAAlfc2V0T3duZXIAAAACBQAAAARuYW1lBQAAAA9uZXdPd25lckFkZHJlc3MAAAAAwnqOkw==", "height": 2267258, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BAdaQGgqqyGcP16g8okMXKSeEMgLd7ktKQri45EKjzQF Next: 9VXzJkXmyaeB2ZyAJowtUcYhtDzsTABjFBMZGtJsaJ4r Diff:
OldNewDifferences
2828 func p (h) = g("Name", h, "createdAt")
2929
3030
31-func q (b) = g("Owner", b, "name")
31+let q = "nameTTL"
32+
33+let r = "controllers"
34+
35+func s (h,t) = [StringEntry(n(h), t)]
3236
3337
34-let r = "auctionAddress"
38+func u (h) = getString(this, n(h))
3539
36-let s = "nameExpirationInterval"
3740
38-let t = "maxAuthorizedFee"
41+func v (h) = getString(this, m(h))
3942
40-let u = a(this, r)
4143
42-let v = e(u)
44+func w (h) = getInteger(this, p(h))
4345
44-let w = d(this, s)
4546
46-let x = d(this, t)
47+func x (h) = getInteger(this, o(h))
4748
48-func y (h) = {
49- let z = d(this, o(h))
50- let A = a(this, m(h))
51- let B = a(this, n(h))
52- $Tuple3(B, z, A)
49+
50+func y () = getString(this, r)
51+
52+
53+let z = {
54+ let A = y()
55+ if ($isInstanceOf(A, "String"))
56+ then {
57+ let B = A
58+ split(B, ",")
59+ }
60+ else nil
5361 }
5462
55-
56-func C (l) = isDefined(getString(this, k(l)))
57-
63+let C = d(this, q)
5864
5965 func D (h) = isDefined(getString(this, m(h)))
6066
6167
62-func E (h) = {
63- let F = getInteger(this, o(h))
64- if ($isInstanceOf(F, "Int"))
68+func E (h) = isDefined(w(h))
69+
70+
71+func F (h) = {
72+ let A = x(h)
73+ if ($isInstanceOf(A, "Int"))
6574 then {
66- let z = F
67- (lastBlock.timestamp > z)
75+ let G = A
76+ (lastBlock.timestamp > G)
6877 }
6978 else false
7079 }
7180
7281
73-@Callable(G)
74-func init (u,w) = if ((G.caller != this))
75- then throw("Permission denied")
76- else [StringEntry(r, u), IntegerEntry(s, w)]
82+func H (h) = if (if (D(h))
83+ then E(h)
84+ else false)
85+ then !(F(h))
86+ else false
87+
88+
89+func I (h) = {
90+ let J = "abcdefghijklmnopqrstuvwxyz1234567890-"
91+ func K (L,M) = if (L)
92+ then contains(J, M)
93+ else false
94+
95+ let N = if (if (if (if (if ((size(h) > 0))
96+ then (63 >= size(h))
97+ else false)
98+ then (indexOf(h, "--") != 2)
99+ else false)
100+ then (indexOf(h, "-") != 0)
101+ else false)
102+ then (lastIndexOf(h, "-") != (size(h) - 1))
103+ else false)
104+ 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])
111+
112+ func U (S,T) = if ((T >= P))
113+ then S
114+ else throw("List size exceeds 63")
115+
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)
117+ }
118+ else false
119+ let V = if (D(h))
120+ then !(F(h))
121+ else false
122+ if (!(V))
123+ then N
124+ else false
125+ }
126+
127+
128+func W (X) = (X.caller == this)
129+
130+
131+func Y (X,h) = (toString(X.caller) == valueOrErrorMessage(u(h), (("Owner for `" + h) + "` is not found")))
132+
133+
134+func Z (b) = containsElement(z, b)
135+
136+
137+func aa (h) = [Issue(if ((size(h) > 16))
138+ then (take(h, 15) + "~")
139+ else take(h, 16), (h + ".waves"), 1, 0, false)]
140+
141+
142+func ab (h,l,ac) = [StringEntry(m(h), l), StringEntry(k(l), h), IntegerEntry(p(h), ac), IntegerEntry(o(h), (ac + C))]
143+
144+
145+func ad (h,l) = [StringEntry(m(h), l), StringEntry(k(l), h)]
146+
147+
148+func ae (l,t) = [ScriptTransfer(e(t), 1, fromBase58String(l))]
149+
150+
151+func af (ag) = unit
152+
153+
154+func ah (X) = if (W(X))
155+ then unit
156+ else throw("Permission denied")
157+
158+
159+func ai (X) = if (if (W(X))
160+ then true
161+ else Z(toString(X.caller)))
162+ then unit
163+ else throw("Permission denied")
164+
165+
166+@Callable(X)
167+func init (C) = valueOrElse(af([ah(X)]), [IntegerEntry(q, C)])
77168
78169
79170
80-@Callable(G)
81-func registerOwnership (h) = {
82- let H = G.caller
83- let I = toString(H)
84- let J = {
85- let F = invoke(v, "getWinnerInfo", [h], nil)
86- if ($isInstanceOf(F, "(Int, String, String)"))
87- then {
88- let K = F
89- K
90- }
91- else throw("Unsupported result format (getWinnerInfo)")
92- }
93- let L = J._1
94- let M = J._2
95- let N = J._3
96- let O = {
97- let F = invoke(v, "getAuctionById", [L], nil)
98- if ($isInstanceOf(F, "(Int, String, Int, Int, Int)"))
99- then {
100- let P = F
101- P._5
102- }
103- else throw("Unsupported result format (getAuctionById)")
104- }
105- if ((I != M))
106- then throw(((("Winner address " + M) + "doesn't match with caller address") + I))
107- else if (if (D(h))
108- then !(E(h))
109- else false)
110- then throw("Name already in use")
111- else {
112- let Q = Issue(if ((size(h) > 16))
113- then (take(h, 15) + "~")
114- else take(h, 16), h, 1, 0, false)
115- let l = calculateAssetId(Q)
116- let R = toBase58String(l)
117- let S = [Q, StringEntry(m(h), R), StringEntry(k(R), h), IntegerEntry(p(h), O), IntegerEntry(o(h), (O + w))]
118- let T = [StringEntry(n(h), I), ScriptTransfer(H, 1, l)]
119- (S ++ T)
120- }
121- }
171+@Callable(X)
172+func addController (b) = valueOrElse(af([ah(X), if (!(Z(b)))
173+ then unit
174+ else throw((("Controller `" + b) + "` is already registered"))]), [StringEntry(r, makeString((z :+ b), ","))])
122175
123176
124177
125-@Callable(G)
126-func approveOwnership (h) = {
127- let H = G.caller
128- let I = toString(H)
129- let B = valueOrErrorMessage(getString(this, n(h)), "Owner is not defined")
130- let R = valueOrErrorMessage(getString(this, m(h)), "No token is issued for this name")
131- let l = fromBase58String(R)
132- let A = {
133- let F = assetInfo(l)
134- if ($isInstanceOf(F, "Asset"))
178+@Callable(X)
179+func removeController (b) = valueOrElse(af([ah(X), if (Z(b))
180+ then unit
181+ else throw((("Controller `" + b) + "` is not registered"))]), {
182+ let aj = value(indexOf(z, b))
183+[StringEntry(r, makeString(removeByIndex(z, aj), ","))]
184+ })
185+
186+
187+
188+@Callable(X)
189+func available (h) = $Tuple2(nil, I(h))
190+
191+
192+
193+@Callable(X)
194+func owner (h) = $Tuple2(nil, u(h))
195+
196+
197+
198+@Callable(X)
199+func nameCreated (h) = $Tuple2(nil, w(h))
200+
201+
202+
203+@Callable(X)
204+func nameExpires (h) = $Tuple2(nil, x(h))
205+
206+
207+
208+@Callable(X)
209+func nameStatus (h) = $Tuple2(nil, if (!(D(h)))
210+ then "NOT_REGISTERED"
211+ else if (F(h))
212+ then "EXPIRED"
213+ else if ((assetBalance(value(addressFromString(value(u(h)))), fromBase58String(value(v(h)))) == 0))
214+ then "SUSPENDED"
215+ else "ACTIVE")
216+
217+
218+
219+@Callable(X)
220+func register (h,t,ac) = valueOrElse(af([ai(X), if (I(h))
221+ then unit
222+ else throw((("`" + h) + "` cannot be registered")), if ((lastBlock.timestamp >= ac))
223+ then unit
224+ else throw("createdAt cannot be in the future")]), {
225+ let ak = aa(h)
226+ let l = calculateAssetId(ak[0])
227+ let al = toBase58String(l)
228+ let am = ab(h, al, ac)
229+ let an = ae(al, t)
230+ let ao = s(h, t)
231+ (((ak ++ am) ++ an) ++ ao)
232+ })
233+
234+
235+
236+@Callable(X)
237+func reclaim (h) = valueOrElse(af([if (H(h))
238+ then unit
239+ else throw((("`" + h) + "` is not active"))]), {
240+ let ap = X.caller
241+ let aq = toString(ap)
242+ let al = valueOrErrorMessage(v(h), (("No token is issued for `" + h) + "`"))
243+ let l = fromBase58String(al)
244+ let ar = (assetBalance(ap, l) == 1)
245+ let as = Y(X, h)
246+ let at = {
247+ let A = assetInfo(l)
248+ if ($isInstanceOf(A, "Asset"))
135249 then {
136- let U = F
137- U
250+ let au = A
251+ (au.quantity == 1)
138252 }
139- else throw("Can't find asset")
253+ else false
140254 }
141- if ((I == B))
142- then throw("You already own this name")
143- else if (!(D(h)))
144- then throw("Name is not registered")
145- else if (E(h))
146- then throw("The period of ownership has expired")
147- else if ((assetBalance(H, l) == 0))
148- then throw("You don't have a named token")
149- else [StringEntry(n(h), I)]
150- }
255+ if (if (as)
256+ then !(at)
257+ else false)
258+ then {
259+ let av = aa(h)
260+ let aw = calculateAssetId(av[0])
261+ let ax = toBase58String(aw)
262+ let ay = ad(h, ax)
263+ let az = ae(ax, aq)
264+ ((av ++ ay) ++ az)
265+ }
266+ else if (if (as)
267+ then ar
268+ else false)
269+ then throw("You already own a name token")
270+ else if (!(ar))
271+ then throw("You don't have a name token")
272+ else s(h, aq)
273+ })
151274
152275
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
2525 func o (h) = g("Name", h, "expiresAt")
2626
2727
2828 func p (h) = g("Name", h, "createdAt")
2929
3030
31-func q (b) = g("Owner", b, "name")
31+let q = "nameTTL"
32+
33+let r = "controllers"
34+
35+func s (h,t) = [StringEntry(n(h), t)]
3236
3337
34-let r = "auctionAddress"
38+func u (h) = getString(this, n(h))
3539
36-let s = "nameExpirationInterval"
3740
38-let t = "maxAuthorizedFee"
41+func v (h) = getString(this, m(h))
3942
40-let u = a(this, r)
4143
42-let v = e(u)
44+func w (h) = getInteger(this, p(h))
4345
44-let w = d(this, s)
4546
46-let x = d(this, t)
47+func x (h) = getInteger(this, o(h))
4748
48-func y (h) = {
49- let z = d(this, o(h))
50- let A = a(this, m(h))
51- let B = a(this, n(h))
52- $Tuple3(B, z, A)
49+
50+func y () = getString(this, r)
51+
52+
53+let z = {
54+ let A = y()
55+ if ($isInstanceOf(A, "String"))
56+ then {
57+ let B = A
58+ split(B, ",")
59+ }
60+ else nil
5361 }
5462
55-
56-func C (l) = isDefined(getString(this, k(l)))
57-
63+let C = d(this, q)
5864
5965 func D (h) = isDefined(getString(this, m(h)))
6066
6167
62-func E (h) = {
63- let F = getInteger(this, o(h))
64- if ($isInstanceOf(F, "Int"))
68+func E (h) = isDefined(w(h))
69+
70+
71+func F (h) = {
72+ let A = x(h)
73+ if ($isInstanceOf(A, "Int"))
6574 then {
66- let z = F
67- (lastBlock.timestamp > z)
75+ let G = A
76+ (lastBlock.timestamp > G)
6877 }
6978 else false
7079 }
7180
7281
73-@Callable(G)
74-func init (u,w) = if ((G.caller != this))
75- then throw("Permission denied")
76- else [StringEntry(r, u), IntegerEntry(s, w)]
82+func H (h) = if (if (D(h))
83+ then E(h)
84+ else false)
85+ then !(F(h))
86+ else false
87+
88+
89+func I (h) = {
90+ let J = "abcdefghijklmnopqrstuvwxyz1234567890-"
91+ func K (L,M) = if (L)
92+ then contains(J, M)
93+ else false
94+
95+ let N = if (if (if (if (if ((size(h) > 0))
96+ then (63 >= size(h))
97+ else false)
98+ then (indexOf(h, "--") != 2)
99+ else false)
100+ then (indexOf(h, "-") != 0)
101+ else false)
102+ then (lastIndexOf(h, "-") != (size(h) - 1))
103+ else false)
104+ 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])
111+
112+ func U (S,T) = if ((T >= P))
113+ then S
114+ else throw("List size exceeds 63")
115+
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)
117+ }
118+ else false
119+ let V = if (D(h))
120+ then !(F(h))
121+ else false
122+ if (!(V))
123+ then N
124+ else false
125+ }
126+
127+
128+func W (X) = (X.caller == this)
129+
130+
131+func Y (X,h) = (toString(X.caller) == valueOrErrorMessage(u(h), (("Owner for `" + h) + "` is not found")))
132+
133+
134+func Z (b) = containsElement(z, b)
135+
136+
137+func aa (h) = [Issue(if ((size(h) > 16))
138+ then (take(h, 15) + "~")
139+ else take(h, 16), (h + ".waves"), 1, 0, false)]
140+
141+
142+func ab (h,l,ac) = [StringEntry(m(h), l), StringEntry(k(l), h), IntegerEntry(p(h), ac), IntegerEntry(o(h), (ac + C))]
143+
144+
145+func ad (h,l) = [StringEntry(m(h), l), StringEntry(k(l), h)]
146+
147+
148+func ae (l,t) = [ScriptTransfer(e(t), 1, fromBase58String(l))]
149+
150+
151+func af (ag) = unit
152+
153+
154+func ah (X) = if (W(X))
155+ then unit
156+ else throw("Permission denied")
157+
158+
159+func ai (X) = if (if (W(X))
160+ then true
161+ else Z(toString(X.caller)))
162+ then unit
163+ else throw("Permission denied")
164+
165+
166+@Callable(X)
167+func init (C) = valueOrElse(af([ah(X)]), [IntegerEntry(q, C)])
77168
78169
79170
80-@Callable(G)
81-func registerOwnership (h) = {
82- let H = G.caller
83- let I = toString(H)
84- let J = {
85- let F = invoke(v, "getWinnerInfo", [h], nil)
86- if ($isInstanceOf(F, "(Int, String, String)"))
87- then {
88- let K = F
89- K
90- }
91- else throw("Unsupported result format (getWinnerInfo)")
92- }
93- let L = J._1
94- let M = J._2
95- let N = J._3
96- let O = {
97- let F = invoke(v, "getAuctionById", [L], nil)
98- if ($isInstanceOf(F, "(Int, String, Int, Int, Int)"))
99- then {
100- let P = F
101- P._5
102- }
103- else throw("Unsupported result format (getAuctionById)")
104- }
105- if ((I != M))
106- then throw(((("Winner address " + M) + "doesn't match with caller address") + I))
107- else if (if (D(h))
108- then !(E(h))
109- else false)
110- then throw("Name already in use")
111- else {
112- let Q = Issue(if ((size(h) > 16))
113- then (take(h, 15) + "~")
114- else take(h, 16), h, 1, 0, false)
115- let l = calculateAssetId(Q)
116- let R = toBase58String(l)
117- let S = [Q, StringEntry(m(h), R), StringEntry(k(R), h), IntegerEntry(p(h), O), IntegerEntry(o(h), (O + w))]
118- let T = [StringEntry(n(h), I), ScriptTransfer(H, 1, l)]
119- (S ++ T)
120- }
121- }
171+@Callable(X)
172+func addController (b) = valueOrElse(af([ah(X), if (!(Z(b)))
173+ then unit
174+ else throw((("Controller `" + b) + "` is already registered"))]), [StringEntry(r, makeString((z :+ b), ","))])
122175
123176
124177
125-@Callable(G)
126-func approveOwnership (h) = {
127- let H = G.caller
128- let I = toString(H)
129- let B = valueOrErrorMessage(getString(this, n(h)), "Owner is not defined")
130- let R = valueOrErrorMessage(getString(this, m(h)), "No token is issued for this name")
131- let l = fromBase58String(R)
132- let A = {
133- let F = assetInfo(l)
134- if ($isInstanceOf(F, "Asset"))
178+@Callable(X)
179+func removeController (b) = valueOrElse(af([ah(X), if (Z(b))
180+ then unit
181+ else throw((("Controller `" + b) + "` is not registered"))]), {
182+ let aj = value(indexOf(z, b))
183+[StringEntry(r, makeString(removeByIndex(z, aj), ","))]
184+ })
185+
186+
187+
188+@Callable(X)
189+func available (h) = $Tuple2(nil, I(h))
190+
191+
192+
193+@Callable(X)
194+func owner (h) = $Tuple2(nil, u(h))
195+
196+
197+
198+@Callable(X)
199+func nameCreated (h) = $Tuple2(nil, w(h))
200+
201+
202+
203+@Callable(X)
204+func nameExpires (h) = $Tuple2(nil, x(h))
205+
206+
207+
208+@Callable(X)
209+func nameStatus (h) = $Tuple2(nil, if (!(D(h)))
210+ then "NOT_REGISTERED"
211+ else if (F(h))
212+ then "EXPIRED"
213+ else if ((assetBalance(value(addressFromString(value(u(h)))), fromBase58String(value(v(h)))) == 0))
214+ then "SUSPENDED"
215+ else "ACTIVE")
216+
217+
218+
219+@Callable(X)
220+func register (h,t,ac) = valueOrElse(af([ai(X), if (I(h))
221+ then unit
222+ else throw((("`" + h) + "` cannot be registered")), if ((lastBlock.timestamp >= ac))
223+ then unit
224+ else throw("createdAt cannot be in the future")]), {
225+ let ak = aa(h)
226+ let l = calculateAssetId(ak[0])
227+ let al = toBase58String(l)
228+ let am = ab(h, al, ac)
229+ let an = ae(al, t)
230+ let ao = s(h, t)
231+ (((ak ++ am) ++ an) ++ ao)
232+ })
233+
234+
235+
236+@Callable(X)
237+func reclaim (h) = valueOrElse(af([if (H(h))
238+ then unit
239+ else throw((("`" + h) + "` is not active"))]), {
240+ let ap = X.caller
241+ let aq = toString(ap)
242+ let al = valueOrErrorMessage(v(h), (("No token is issued for `" + h) + "`"))
243+ let l = fromBase58String(al)
244+ let ar = (assetBalance(ap, l) == 1)
245+ let as = Y(X, h)
246+ let at = {
247+ let A = assetInfo(l)
248+ if ($isInstanceOf(A, "Asset"))
135249 then {
136- let U = F
137- U
250+ let au = A
251+ (au.quantity == 1)
138252 }
139- else throw("Can't find asset")
253+ else false
140254 }
141- if ((I == B))
142- then throw("You already own this name")
143- else if (!(D(h)))
144- then throw("Name is not registered")
145- else if (E(h))
146- then throw("The period of ownership has expired")
147- else if ((assetBalance(H, l) == 0))
148- then throw("You don't have a named token")
149- else [StringEntry(n(h), I)]
150- }
255+ if (if (as)
256+ then !(at)
257+ else false)
258+ then {
259+ let av = aa(h)
260+ let aw = calculateAssetId(av[0])
261+ let ax = toBase58String(aw)
262+ let ay = ad(h, ax)
263+ let az = ae(ax, aq)
264+ ((av ++ ay) ++ az)
265+ }
266+ else if (if (as)
267+ then ar
268+ else false)
269+ then throw("You already own a name token")
270+ else if (!(ar))
271+ then throw("You don't have a name token")
272+ else s(h, aq)
273+ })
151274
152275

github/deemru/w8io/873ac7e 
40.83 ms