tx · HhSCi9Vd6CumoZvqaxVt4VS5zpmquQV7RTFUFZUf26vm 3N9pfmX4sH1bKuohmPdggVCFMy6c2iC3Mw2: -0.05000000 Waves 2023.05.15 20:39 [2579391] smart account 3N9pfmX4sH1bKuohmPdggVCFMy6c2iC3Mw2 > SELF 0.00000000 Waves
{ "type": 13, "id": "HhSCi9Vd6CumoZvqaxVt4VS5zpmquQV7RTFUFZUf26vm", "fee": 5000000, "feeAssetId": null, "timestamp": 1684172392640, "version": 2, "chainId": 84, "sender": "3N9pfmX4sH1bKuohmPdggVCFMy6c2iC3Mw2", "senderPublicKey": "7DsETusJ9kRt9q7Me2mjMpd2ZMkxHHnLmBRGZXfc8zen", "proofs": [ "iFQNFNA2TSBnonPoSKokJRCLVRwyBAJcntfEfGxsXnF59krqt7VNpyrQpTBPs27t9fmE8iWaEVpX5YVbrjG2x1t" ], "script": "base64:BgLCBAgCEgMKAQgSAwoBARIDCgEIEgMKAQgiA1NFUCIEam9pbiICYXIiDmtleUluaXRpYWxpemVkIhVrZXlDb29yZGluYXRvckFkZHJlc3MiEmtleVZlcmlmaWVyQWRkcmVzcyIJa2V5U2lnbmVkIghfYWRkcmVzcyIFX3R4SWQiEWtleVByb3RvY29sQWN0aXZlIg1pc0luaXRpYWxpemVkIg9tdXN0SW5pdGlhbGl6ZWQiEm11c3ROb3RJbml0aWFsaXplZCIIbXVzdFNlbGYiAWkiC2Nvb3JkaW5hdG9yIgh2ZXJpZmllciIHJG1hdGNoMCIBcyIIaXNBY3RpdmUiCm11c3RBY3RpdmUiDGNoZWNrQWRkcmVzcyIHYWRkcmVzcyIKQVNTRVRfTkFNRSILREVTQ1JJUFRJT04iEWtleUFsbG93ZWRBZGRyZXNzIhBpc0FkZHJlc3NFbmFibGVkIhJtdXN0QWxsb3dlZEFkZHJlc3MiEGNhbGxlckFkZHJlc3NTdHIiCWlzRW5hYmxlZCITY2hlY2tBZGRyZXNzRW5hYmxlZCIUY2hlY2tBZGRyZXNzRGlzYWJsZWQiDWtleU5vcnRoQXNzZXQiEGdldE5vcnRoQXNzZXRTdHIiDWdldE5vcnRoQXNzZXQiE19jb29yZGluYXRvckFkZHJlc3MiBmNoZWNrcyIFbm9ydGgiDG5vcnRoQXNzZXRJZCIMX25vcnRoQW1vdW50Igpub3J0aEFzc2V0IgJ0eCIGdmVyaWZ5GgABYQICX18BAWIBAWMJALkJAgUBYwUBYQEBZAAJAQFiAQkAzAgCAgIlcwkAzAgCAgtpbml0aWFsaXplZAUDbmlsAQFlAAkBAWIBCQDMCAICAiVzCQDMCAICEmNvb3JkaW5hdG9yQWRkcmVzcwUDbmlsAQFmAAkBAWIBCQDMCAICAiVzCQDMCAICD3ZlcmlmaWVyQWRkcmVzcwUDbmlsAQFnAgFoAWkJAQFiAQkAzAgCAgYlcyVzJXMJAMwIAgIGc2lnbmVkCQDMCAIFAWgJAMwIAgUBaQUDbmlsAQFqAAkBAWIBCQDMCAICAiVzCQDMCAICDnByb3RvY29sQWN0aXZlBQNuaWwBAWsACQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMJAQFkAAcBAWwAAwkBASEBCQEBawAJAAIBAg9Ob3QgaW5pdGlhbGl6ZWQFBHVuaXQBAW0AAwkBAWsACQACAQITQWxyZWFkeSBpbml0aWFsaXplZAUEdW5pdAEBbgEBbwMJAQIhPQIIBQFvBmNhbGxlcgUEdGhpcwkAAgECHU9ubHkgc2VsZiBpbnZvY2F0aW9uIGFsbG93ZWQuBQR1bml0AQFwAAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJAQFlAAIWQ29vcmRpbmF0b3IgaXMgbm90IHNldAEBcQAEAXIJAKIIAQkBAWUAAwkAAQIFAXICBlN0cmluZwQBcwUBcgkAnQgCCQERQGV4dHJOYXRpdmUoMTA2MikBBQFzCQEBZgADCQABAgUBcgIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQF0AAkBC3ZhbHVlT3JFbHNlAgkAmwgCCQEBcAAJAQFqAAcBAXUAAwMJAQEhAQkBAXQABgkBASEBCQEBawAJAAIBAi1Qcm90b2NvbCBpcyBkaXNhYmxlZC4gUGxlYXNlIGNvbnRhY3Qgc3VwcG9ydC4FBHVuaXQBAXYBAWgEAXIJAKYIAQUBaAMJAAECBQFyAgdBZGRyZXNzBAF3BQFyBgMJAAECBQFyAgRVbml0CQACAQIPSW52YWxpZCBhZGRyZXNzCQACAQILTWF0Y2ggZXJyb3IAAXgCBk9SSUVOVAABeQJOT1JJRU5UIGlzIGFuIGFkZGl0aW9uYWwgaW5jZW50aXZlIGZvciBFQVNUIGFjdGl2ZSB1c2VycyBhbmQgZ292ZXJuYW5jZSB0b2tlbnMuAQF6AQFoCQEBYgEJAMwIAgIEJXMlcwkAzAgCAg5hbGxvd2VkQWRkcmVzcwkAzAgCBQFoBQNuaWwBAUEBAWgJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwkBAXoBBQFoBwEBQgEBbwQBQwkA2AQBCAgFAW8GY2FsbGVyBWJ5dGVzBAFECQEBQQEFAUMDBQFEBQR1bml0CQACAQkArAICCQCsAgIJAKwCAgIYVW5rbm93biBjYWxsZXIgYWRkcmVzcy4gCQClCAEIBQFvBmNhbGxlcgIBIAkA2AQBCAgFAW8GY2FsbGVyBWJ5dGVzAQFFAQFoAwkBAUEBBQFoBQR1bml0CQACAQIYQWRkcmVzcyBhbHJlYWR5IGRpc2FibGVkAQFGAQFoAwkBAUEBBQFoCQACAQIXQWRkcmVzcyBhbHJlYWR5IGVuYWJsZWQFBHVuaXQBAUcACQEBYgEJAMwIAgICJXMJAMwIAgIKbm9ydGhBc3NldAUDbmlsAQFIAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAQFHAAIWTm9ydGggYXNzZXQgaXMgbm90IHNldAEBSQAJANkEAQkBAUgABAFvAQppbml0aWFsaXplAQFKBAFLCQDMCAIJAQFtAAkAzAgCCQEBdgEFAUoFA25pbAMJAAACBQFLBQFLBAFMCQDDCAcFAXgFAXkAAAAIBgUEdW5pdAAABAFNCQC4CAEFAUwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAWUABQFKCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFHAAkA2AQBBQFNCQDMCAIJAQxCb29sZWFuRW50cnkCCQEBZAAGCQDMCAIFAUwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFvAQVpc3N1ZQEBTgQBSwkAzAgCCQEBdQAJAMwIAgkBAUIBBQFvBQNuaWwDCQAAAgUBSwUBSwQBTwkBAUkACQDMCAIJAQdSZWlzc3VlAwUBTwUBTgYJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAW8GY2FsbGVyBQFOBQFPBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BbwEKYWRkQWRkcmVzcwEBaAQBSwkAzAgCCQEBbAAJAMwIAgkBAW4BBQFvCQDMCAIJAQF2AQUBaAkAzAgCCQEBRgEFAWgFA25pbAMJAAACBQFLBQFLCQDMCAIJAQxCb29sZWFuRW50cnkCCQEBegEFAWgGBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BbwENcmVtb3ZlQWRkcmVzcwEBaAQBSwkAzAgCCQEBbAAJAMwIAgkBAW4BBQFvCQDMCAIJAQF2AQUBaAkAzAgCCQEBRQEFAWgFA25pbAMJAAACBQFLBQFLCQDMCAIJAQxCb29sZWFuRW50cnkCCQEBegEFAWgHBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAVABAVEABAFyCQEBcQADCQABAgUBcgIGU3RyaW5nBAF3BQFyCQELdmFsdWVPckVsc2UCCQCbCAIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAXcJAQFnAgkApQgBBQR0aGlzCQDYBAEIBQFQAmlkBwkA9AMDCAUBUAlib2R5Qnl0ZXMJAJEDAggFAVAGcHJvb2ZzAAAIBQFQD3NlbmRlclB1YmxpY0tleUVQlRE=", "height": 2579391, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 6 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let a = "__" | |
5 | + | ||
6 | + | func b (c) = makeString(c, a) | |
7 | + | ||
8 | + | ||
9 | + | func d () = b(["%s", "initialized"]) | |
10 | + | ||
11 | + | ||
12 | + | func e () = b(["%s", "coordinatorAddress"]) | |
13 | + | ||
14 | + | ||
15 | + | func f () = b(["%s", "verifierAddress"]) | |
16 | + | ||
17 | + | ||
18 | + | func g (h,i) = b(["%s%s%s", "signed", h, i]) | |
19 | + | ||
20 | + | ||
21 | + | func j () = b(["%s", "protocolActive"]) | |
22 | + | ||
23 | + | ||
24 | + | func k () = valueOrElse(getBoolean(this, d()), false) | |
25 | + | ||
26 | + | ||
27 | + | func l () = if (!(k())) | |
28 | + | then throw("Not initialized") | |
29 | + | else unit | |
30 | + | ||
31 | + | ||
32 | + | func m () = if (k()) | |
33 | + | then throw("Already initialized") | |
34 | + | else unit | |
35 | + | ||
36 | + | ||
37 | + | func n (o) = if ((o.caller != this)) | |
38 | + | then throw("Only self invocation allowed.") | |
39 | + | else unit | |
40 | + | ||
41 | + | ||
42 | + | func p () = addressFromStringValue(valueOrErrorMessage(getString(e()), "Coordinator is not set")) | |
43 | + | ||
44 | + | ||
45 | + | func q () = { | |
46 | + | let r = getString(e()) | |
47 | + | if ($isInstanceOf(r, "String")) | |
48 | + | then { | |
49 | + | let s = r | |
50 | + | getString(addressFromStringValue(s), f()) | |
51 | + | } | |
52 | + | else if ($isInstanceOf(r, "Unit")) | |
53 | + | then unit | |
54 | + | else throw("Match error") | |
55 | + | } | |
56 | + | ||
57 | + | ||
58 | + | func t () = valueOrElse(getBoolean(p(), j()), false) | |
59 | + | ||
60 | + | ||
61 | + | func u () = if (if (!(t())) | |
62 | + | then true | |
63 | + | else !(k())) | |
64 | + | then throw("Protocol is disabled. Please contact support.") | |
65 | + | else unit | |
66 | + | ||
67 | + | ||
68 | + | func v (h) = { | |
69 | + | let r = addressFromString(h) | |
70 | + | if ($isInstanceOf(r, "Address")) | |
71 | + | then { | |
72 | + | let w = r | |
73 | + | true | |
74 | + | } | |
75 | + | else if ($isInstanceOf(r, "Unit")) | |
76 | + | then throw("Invalid address") | |
77 | + | else throw("Match error") | |
78 | + | } | |
79 | + | ||
80 | + | ||
81 | + | let x = "ORIENT" | |
82 | + | ||
83 | + | let y = "ORIENT is an additional incentive for EAST active users and governance tokens." | |
84 | + | ||
85 | + | func z (h) = b(["%s%s", "allowedAddress", h]) | |
86 | + | ||
87 | + | ||
88 | + | func A (h) = valueOrElse(getBoolean(this, z(h)), false) | |
89 | + | ||
90 | + | ||
91 | + | func B (o) = { | |
92 | + | let C = toBase58String(o.caller.bytes) | |
93 | + | let D = A(C) | |
94 | + | if (D) | |
95 | + | then unit | |
96 | + | else throw(((("Unknown caller address. " + toString(o.caller)) + " ") + toBase58String(o.caller.bytes))) | |
97 | + | } | |
98 | + | ||
99 | + | ||
100 | + | func E (h) = if (A(h)) | |
101 | + | then unit | |
102 | + | else throw("Address already disabled") | |
103 | + | ||
104 | + | ||
105 | + | func F (h) = if (A(h)) | |
106 | + | then throw("Address already enabled") | |
107 | + | else unit | |
108 | + | ||
109 | + | ||
110 | + | func G () = b(["%s", "northAsset"]) | |
111 | + | ||
112 | + | ||
113 | + | func H () = valueOrErrorMessage(getString(this, G()), "North asset is not set") | |
114 | + | ||
115 | + | ||
116 | + | func I () = fromBase58String(H()) | |
117 | + | ||
118 | + | ||
119 | + | @Callable(o) | |
120 | + | func initialize (J) = { | |
121 | + | let K = [m(), v(J)] | |
122 | + | if ((K == K)) | |
123 | + | then { | |
124 | + | let L = Issue(x, y, 0, 8, true, unit, 0) | |
125 | + | let M = calculateAssetId(L) | |
126 | + | [StringEntry(e(), J), StringEntry(G(), toBase58String(M)), BooleanEntry(d(), true), L] | |
127 | + | } | |
128 | + | else throw("Strict value is not equal to itself.") | |
129 | + | } | |
130 | + | ||
131 | + | ||
132 | + | ||
133 | + | @Callable(o) | |
134 | + | func issue (N) = { | |
135 | + | let K = [u(), B(o)] | |
136 | + | if ((K == K)) | |
137 | + | then { | |
138 | + | let O = I() | |
139 | + | [Reissue(O, N, true), ScriptTransfer(o.caller, N, O)] | |
140 | + | } | |
141 | + | else throw("Strict value is not equal to itself.") | |
142 | + | } | |
143 | + | ||
144 | + | ||
145 | + | ||
146 | + | @Callable(o) | |
147 | + | func addAddress (h) = { | |
148 | + | let K = [l(), n(o), v(h), F(h)] | |
149 | + | if ((K == K)) | |
150 | + | then [BooleanEntry(z(h), true)] | |
151 | + | else throw("Strict value is not equal to itself.") | |
152 | + | } | |
153 | + | ||
154 | + | ||
155 | + | ||
156 | + | @Callable(o) | |
157 | + | func removeAddress (h) = { | |
158 | + | let K = [l(), n(o), v(h), E(h)] | |
159 | + | if ((K == K)) | |
160 | + | then [BooleanEntry(z(h), false)] | |
161 | + | else throw("Strict value is not equal to itself.") | |
162 | + | } | |
163 | + | ||
164 | + | ||
165 | + | @Verifier(P) | |
166 | + | func Q () = { | |
167 | + | let r = q() | |
168 | + | if ($isInstanceOf(r, "String")) | |
169 | + | then { | |
170 | + | let w = r | |
171 | + | valueOrElse(getBoolean(addressFromStringValue(w), g(toString(this), toBase58String(P.id))), false) | |
172 | + | } | |
173 | + | else sigVerify(P.bodyBytes, P.proofs[0], P.senderPublicKey) | |
174 | + | } | |
175 | + |
github/deemru/w8io/169f3d6 74.96 ms ◑![]()