tx · Hnhk5sAkXNvnaBgXXWGjcX91HrE1KaAtrHuRUXnvVXby

3P4p5XcmYbr4NMkKciD8NMATifdRTBZJ2M2:  -0.01000000 Waves

2022.11.02 18:06 [3364996] smart account 3P4p5XcmYbr4NMkKciD8NMATifdRTBZJ2M2 > SELF 0.00000000 Waves

{ "type": 13, "id": "Hnhk5sAkXNvnaBgXXWGjcX91HrE1KaAtrHuRUXnvVXby", "fee": 1000000, "feeAssetId": null, "timestamp": 1667401686187, "version": 2, "chainId": 87, "sender": "3P4p5XcmYbr4NMkKciD8NMATifdRTBZJ2M2", "senderPublicKey": "EJkN5GNmovQsjMWSyGhsZWVEmVB3FqVKawCpGMDmW8T", "proofs": [ "2gURGWPXZosKMSmwyoNULNZmsALNgDXithVguSAnsJi9t1gLsyDprsptt4w4ZbfCGoibBRfJHQC33GpffPD22C6U" ], "script": "base64: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", "height": 3364996, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: 8sSnaFDbhZz9B6XcJx8zVjBxa6SREkmQx3dVecSGLfyW Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 5 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let key_registry = "registry"
5+
6+let registry = valueOrErrorMessage(addressFromString(value(getString(this, key_registry))), "Registry is not valid address")
7+
8+let isInitialized = isDefined(getString(this, key_registry))
9+
10+func isAdmin (inv) = (inv.caller == this)
11+
12+
13+func isValidAddress (maybeAddress) = isDefined(addressFromString(maybeAddress))
14+
15+
16+func modifiers (validations) = unit
17+
18+
19+func onlyAdmin (inv) = if (isAdmin(inv))
20+ then unit
21+ else throw("Permission denied")
22+
23+
24+func onlyInitialized () = if (isInitialized)
25+ then unit
26+ else throw("Contract is not initialized")
27+
28+
29+func _splitLastLabel (name) = {
30+ let labels = split(name, ".")
31+ let lastIndex = (size(labels) - 1)
32+ let lastLabel = labels[lastIndex]
33+ let restLabels = makeString(removeByIndex(labels, lastIndex), ".")
34+ $Tuple2(lastLabel, restLabels)
35+ }
36+
37+
38+func _findResolver (name) = {
39+ let $t012621313 = _splitLastLabel(name)
40+ let lastLabel = $t012621313._1
41+ let restLabels = $t012621313._2
42+ let throwIf = !(isDefined(registry))
43+ if ((throwIf == throwIf))
44+ then if ((size(restLabels) == 0))
45+ then $Tuple2(unit, name)
46+ else match invoke(registry, "getResolver", [lastLabel], nil) {
47+ case resolverAddress: String =>
48+ $Tuple2(addressFromString(resolverAddress), restLabels)
49+ case _ =>
50+ $Tuple2(unit, name)
51+ }
52+ else throw("Strict value is not equal to itself.")
53+ }
54+
55+
56+@Callable(inv)
57+func init (registryAddress) = valueOrElse(modifiers([onlyAdmin(inv), if (isValidAddress(registryAddress))
58+ then unit
59+ else throw("Registry must be a valid address"), if (!(isInitialized))
60+ then unit
61+ else throw("Contract has already been initialized")]), [StringEntry(key_registry, registryAddress)])
62+
63+
64+
65+@Callable(inv)
66+func resolve (name,callData) = valueOrElse(modifiers([onlyInitialized()]), {
67+ let $t021362184 = _findResolver(name)
68+ let resolver = $t021362184._1
69+ let restLabels = $t021362184._2
70+ let $t021902334 = match callData {
71+ case _ =>
72+ if (("getAddr" == $match0))
73+ then $Tuple2("getAddr", [value(restLabels)])
74+ else $Tuple2(unit, unit)
75+ }
76+ let callFunction = $t021902334._1
77+ let callArgs = $t021902334._2
78+ let supportsInterface = if (!(isDefined(resolver)))
79+ then false
80+ else match invoke(value(resolver), "supportsInterface", [callData], nil) {
81+ case supportsInterface: Boolean =>
82+ supportsInterface
83+ case _ =>
84+ false
85+ }
86+ $Tuple2(nil, if (!(supportsInterface))
87+ then unit
88+ else match invoke(value(resolver), value(callFunction), value(callArgs), nil) {
89+ case callbackData: String =>
90+ callbackData
91+ case _ =>
92+ unit
93+ })
94+ })
95+
96+

github/deemru/w8io/6500d08 
19.22 ms