tx · 56KTxUU2NTHhPHAAxEAphWce1zJtnrxAw5qNf2TeUins

3NCuvNpsAnHXAwbRJYsSedk7EeMVvkRjk2h:  -0.01400000 Waves

2021.03.04 12:36 [1422753] smart account 3NCuvNpsAnHXAwbRJYsSedk7EeMVvkRjk2h > SELF 0.00000000 Waves

{ "type": 13, "id": "56KTxUU2NTHhPHAAxEAphWce1zJtnrxAw5qNf2TeUins", "fee": 1400000, "feeAssetId": null, "timestamp": 1614850665047, "version": 2, "chainId": 84, "sender": "3NCuvNpsAnHXAwbRJYsSedk7EeMVvkRjk2h", "senderPublicKey": "FqVysDQayU9yY217imGD7JrbATCDNcbENdGYU5JBBnkV", "proofs": [ "4w4wUXDju3gQP4BhkZhk84M1kbsJpav5d1GV6sP9jdzZC8iLZTAiGDKJvDmNxX4FHM7kRmR3Sn9jJoS88VXy41B7" ], "script": "base64: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c3RhbXBJbnZhbGlkAAAAAQUAAAAHa2V5SW5mbwkAAAIAAAABAgAAAAtLZXkgZXhwaXJlZAQAAAAHY2hhbmdlcwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAPZGV2aWNlQWN0aW9uS2V5AAAAAQUAAAAJZGV2aWNlU3RyBQAAAAZhY3Rpb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABZkZXZpY2VBY3Rpb25Db3VudGVyS2V5AAAAAQUAAAAJZGV2aWNlU3RyCQAAZAAAAAIJAQAAABhkZXZpY2VBY3Rpb25Db3VudGVyVmFsdWUAAAABBQAAAAlkZXZpY2VTdHIAAAAAAAAAAAEFAAAAA25pbAMDCQAAZgAAAAIFAAAACHJlY2hhcmdlCAkAA+8AAAABCAUAAAABaQAAAAZjYWxsZXIAAAAHcmVndWxhcgkBAAAAAiE9AAAAAgUAAAAIcmVjaGFyZ2UAAAAAAAAAAAAHCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAIcmVjaGFyZ2UFAAAABHVuaXQFAAAAB2NoYW5nZXMFAAAAB2NoYW5nZXMAAAABaQEAAAALdHJhbnNmZXJLZXkAAAABAAAACXJlY2lwaWVudAQAAAAHa2V5SW5mbwkBAAAAF2dldEFzc2V0SW5mb0Zyb21QYXltZW50AAAAAQUAAAABaQQAAAAIcmVjaGFyZ2UJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEFAAAAEHJlY2hhcmdlTGltaXRLZXkEAAAADXJlY2lwaWVudEFkZHIJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAACXJlY2lwaWVudAQAAAAIdHJhbnNmZXIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAANcmVjaXBpZW50QWRkcgAAAAAAAAAAAQgFAAAAB2tleUluZm8AAAACaWQFAAAAA25pbAkBAAAAEHJlY2hhcmdlSWZOZWVkZWQAAAADBQAAAA1yZWNpcGllbnRBZGRyBQAAAAhyZWNoYXJnZQkBAAAAEHJlY2hhcmdlSWZOZWVkZWQAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAACHJlY2hhcmdlBQAAAAh0cmFuc2ZlcgAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5eKIhBQ==", "height": 1422753, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: u7EpC39xc6fYpmnNSr8TuVqnqYz1c95rtyprNF7QB65 Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 4 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let a = "none"
5+
6+let b = "banned"
7+
8+let c = "active"
9+
10+let d = "close"
11+
12+let e = "open"
13+
14+let f = "asset"
15+
16+let g = "key_price"
17+
18+let h = "owner"
19+
20+let i = "recharge_limit"
21+
22+let j = [e, d]
23+
24+let k = 0
25+
26+let l = 0
27+
28+let m = 1
29+
30+func n (o) = {
31+ let p = getInteger(this, o)
32+ if ($isInstanceOf(p, "Int"))
33+ then {
34+ let q = p
35+ q
36+ }
37+ else 0
38+ }
39+
40+
41+func r (o) = {
42+ let p = getString(this, o)
43+ if ($isInstanceOf(p, "String"))
44+ then {
45+ let q = p
46+ q
47+ }
48+ else a
49+ }
50+
51+
52+func s (o) = {
53+ let p = getInteger(this, o)
54+ if ($isInstanceOf(p, "Int"))
55+ then {
56+ let q = p
57+ q
58+ }
59+ else 0
60+ }
61+
62+
63+func t (u,o) = {
64+ let p = getString(u, o)
65+ if ($isInstanceOf(p, "String"))
66+ then {
67+ let q = p
68+ q
69+ }
70+ else a
71+ }
72+
73+
74+func v () = fromBase58String(r(f))
75+
76+
77+func w (u) = ("user_" + u)
78+
79+
80+func x (u) = {
81+ let p = getString(this, w(u))
82+ if ($isInstanceOf(p, "String"))
83+ then {
84+ let q = p
85+ q
86+ }
87+ else a
88+ }
89+
90+
91+func y (u) = ("device_" + u)
92+
93+
94+func z (u) = ("device_counter_" + u)
95+
96+
97+func A (u) = r(y(u))
98+
99+
100+func B (u) = n(z(u))
101+
102+
103+func C (D) = ("key_" + D)
104+
105+
106+func E (D) = r(C(D))
107+
108+
109+func F (G,o) = {
110+ let H = C(o)
111+ let I = t(G, H)
112+ if ((I != a))
113+ then false
114+ else true
115+ }
116+
117+
118+func J (o) = {
119+ let G = split(o.description, "_")[l]
120+ let p = addressFromString(G)
121+ if ($isInstanceOf(p, "Address"))
122+ then {
123+ let K = p
124+ K
125+ }
126+ else throw("Not a device key")
127+ }
128+
129+
130+func L (M) = {
131+ let p = assetInfo(M)
132+ if ($isInstanceOf(p, "Asset"))
133+ then {
134+ let K = p
135+ K
136+ }
137+ else throw("Not a key")
138+ }
139+
140+
141+func N (o) = {
142+ let O = parseIntValue(split(o.description, "_")[m])
143+ (lastBlock.timestamp > O)
144+ }
145+
146+
147+func P (G) = {
148+ let p = getInteger(G, g)
149+ if ($isInstanceOf(p, "Int"))
150+ then {
151+ let K = p
152+ K
153+ }
154+ else throw("Price not specified in device")
155+ }
156+
157+
158+func Q (G) = {
159+ let p = getString(G, h)
160+ if ($isInstanceOf(p, "String"))
161+ then {
162+ let K = p
163+ K
164+ }
165+ else throw("Owner not specified in device")
166+ }
167+
168+
169+func R (S,T,U) = if ((1 > size(S.payments)))
170+ then throw("wrong payments count")
171+ else if ((S.payments[0].assetId != unit))
172+ then throw("wrong asset, supported only wws")
173+ else if ((S.payments[0].amount != U))
174+ then throw(("wrong payment value, expected " + toString(U)))
175+ else false
176+
177+
178+func V (W) = {
179+ let p = W.assetId
180+ if ($isInstanceOf(p, "ByteVector"))
181+ then {
182+ let K = p
183+ K
184+ }
185+ else throw("Wrong asset")
186+ }
187+
188+
189+func X (S) = if ((size(S.payments) != 1))
190+ then throw("wrong assets count")
191+ else {
192+ let M = L(V(S.payments[0]))
193+ if ((M.issuer != this))
194+ then throw("wrong asset issuer")
195+ else if (N(M))
196+ then throw("key expired")
197+ else M
198+ }
199+
200+
201+func Y (Z,aa,ab) = if (if ((aa > wavesBalance(Z).regular))
202+ then (aa != 0)
203+ else false)
204+ then ScriptTransfer(Z, aa, unit) :: ab
205+ else ab
206+
207+
208+func ac (ad) = {
209+ let p = indexOf(j, ad)
210+ if ($isInstanceOf(p, "Int"))
211+ then {
212+ let q = p
213+ false
214+ }
215+ else true
216+ }
217+
218+
219+@Callable(S)
220+func addDevice (ae) = if ((S.caller != this))
221+ then throw("Not permitted")
222+ else if ((A(ae) != a))
223+ then throw("Device already added")
224+ else [StringEntry(y(ae), d), IntegerEntry(z(ae), k)]
225+
226+
227+
228+@Callable(S)
229+func addUser (ae) = if ((S.caller != this))
230+ then throw("Not permitted")
231+ else [StringEntry(w(ae), c)]
232+
233+
234+
235+@Callable(S)
236+func removeUser (ae) = if ((S.caller != this))
237+ then throw("Not permitted")
238+ else [DeleteEntry(w(ae))]
239+
240+
241+
242+@Callable(S)
243+func deviceAction (af,ad) = {
244+ let ag = (1 > assetBalance(S.caller, fromBase58String(af)))
245+ let ah = L(fromBase58String(af))
246+ let G = J(ah)
247+ let ai = toBase58String(G.bytes)
248+ let aj = s(i)
249+ if (ag)
250+ then throw("Key not owned")
251+ else if ((y(ai) == a))
252+ then throw("No such device")
253+ else if (F(G, af))
254+ then throw("Key not whitelisted")
255+ else if (ac(ad))
256+ then throw("Action is not allowed")
257+ else if (N(ah))
258+ then throw("Key expired")
259+ else {
260+ let ak = [StringEntry(y(ai), ad), IntegerEntry(z(ai), (B(ai) + 1))]
261+ if (if ((aj > wavesBalance(S.caller).regular))
262+ then (aj != 0)
263+ else false)
264+ then ScriptTransfer(S.caller, aj, unit) :: ak
265+ else ak
266+ }
267+ }
268+
269+
270+
271+@Callable(S)
272+func transferKey (al) = {
273+ let ah = X(S)
274+ let aj = n(i)
275+ let am = addressFromStringValue(al)
276+ let an = [ScriptTransfer(am, 1, ah.id)]
277+ Y(am, aj, Y(S.caller, aj, an))
278+ }
279+
280+
281+@Verifier(ao)
282+func ap () = sigVerify(ao.bodyBytes, ao.proofs[0], ao.senderPublicKey)
283+

github/deemru/w8io/873ac7e 
33.86 ms