tx · 9WES6x6Cjiv7ud3ZbYEiHUdYX77SRs5YdJLy1UvCcSkY

3MumW7BtRwX8w1dn9tWwB7TpHAUkqoSEXve:  -0.00300000 Waves

2022.10.11 08:30 [2267263] smart account 3MumW7BtRwX8w1dn9tWwB7TpHAUkqoSEXve > SELF 0.00000000 Waves

{ "type": 13, "id": "9WES6x6Cjiv7ud3ZbYEiHUdYX77SRs5YdJLy1UvCcSkY", "fee": 300000, "feeAssetId": null, "timestamp": 1665466222149, "version": 2, "chainId": 84, "sender": "3MumW7BtRwX8w1dn9tWwB7TpHAUkqoSEXve", "senderPublicKey": "3H3TbYHdAJUPh9yFbybSbc1SGAgghXJ3kVJxDE8duuPJ", "proofs": [ "3RmCiyL1EqmyEuJhWxSqjjUndvGxrfB9uFoeX1x16FcGPJAQrkEm9JamCCFtFPYaNhUWyGMkL82LCigXQtQVGTYa" ], "script": "base64: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", "height": 2267263, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: EKSF1CPRMXgvASwhygcKrR3guqfAtmEULJL9M6Wh8cYN Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 5 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+func getStringOrThrow (address,key) = valueOrErrorMessage(getString(address, key), ((("Can't read '" + key) + "' at address ") + toString(address)))
5+
6+
7+func parseAddressOrThrow (maybeAddress) = valueOrErrorMessage(addressFromString(maybeAddress), (("Can't parse address from '" + maybeAddress) + "'"))
8+
9+
10+let key_registry = "registry"
11+
12+let registry = parseAddressOrThrow(getStringOrThrow(this, key_registry))
13+
14+func isAdmin (inv) = (inv.caller == this)
15+
16+
17+func modifiers (validations) = unit
18+
19+
20+func onlyAdmin (inv) = if (isAdmin(inv))
21+ then unit
22+ else throw("Permission denied")
23+
24+
25+func _addr (label) = match invoke(registry, "owner", [label], nil) {
26+ case owner: String =>
27+ owner
28+ case _ =>
29+ unit
30+}
31+
32+
33+func _splitLastLabel (name) = {
34+ let labels = split(name, ".")
35+ let lastIndex = (size(labels) - 1)
36+ let lastLabel = labels[lastIndex]
37+ let restLabels = makeString(removeByIndex(labels, lastIndex), ".")
38+ $Tuple2(lastLabel, restLabels)
39+ }
40+
41+
42+@Callable(inv)
43+func init (registryAddress) = valueOrElse(modifiers([onlyAdmin(inv)]), [StringEntry(key_registry, registryAddress)])
44+
45+
46+
47+@Callable(inv)
48+func addr (label) = $Tuple2(nil, _addr(label))
49+
50+
51+
52+@Callable(inv)
53+func resolve (name) = valueOrElse(modifiers([if ((size(name) > 0))
54+ then unit
55+ else throw("Name cannot be empty")]), {
56+ let lastLabel = _splitLastLabel(name)._1
57+ $Tuple2(nil, _addr(lastLabel))
58+ })
59+
60+
61+
62+@Callable(inv)
63+func whoIs (name) = valueOrElse(modifiers([if ((size(name) > 0))
64+ then unit
65+ else throw("Name cannot be empty")]), {
66+ let lastLabel = _splitLastLabel(name)._1
67+ let registrant = match invoke(registry, "owner", [lastLabel], nil) {
68+ case owner: String =>
69+ owner
70+ case _ =>
71+ unit
72+ }
73+ let resolver = unit
74+ let nameCreated = match invoke(registry, "nameCreated", [lastLabel], nil) {
75+ case createdAt: Int =>
76+ createdAt
77+ case _ =>
78+ unit
79+ }
80+ let nameExpires = match invoke(registry, "nameExpires", [lastLabel], nil) {
81+ case expiresAt: Int =>
82+ expiresAt
83+ case _ =>
84+ unit
85+ }
86+ let nameStatus = match invoke(registry, "nameStatus", [lastLabel], nil) {
87+ case status: String =>
88+ status
89+ case _ =>
90+ unit
91+ }
92+ $Tuple2(nil, $Tuple5(registrant, resolver, nameCreated, nameExpires, nameStatus))
93+ })
94+
95+

github/deemru/w8io/169f3d6 
21.06 ms