tx · 8BtWfTksDrcodFa3aCMbnt7DuXESFgbnX5Dk6jDrwevW

3MyVvNfXht9piazyf1e5BVFsqv1R7z5cWJL:  -0.02000000 Waves

2022.06.06 17:31 [2084618] smart account 3MyVvNfXht9piazyf1e5BVFsqv1R7z5cWJL > SELF 0.00000000 Waves

{ "type": 13, "id": "8BtWfTksDrcodFa3aCMbnt7DuXESFgbnX5Dk6jDrwevW", "fee": 2000000, "feeAssetId": null, "timestamp": 1654525873518, "version": 1, "sender": "3MyVvNfXht9piazyf1e5BVFsqv1R7z5cWJL", "senderPublicKey": "DnPyGWCgpQChvoQrnXQRcC9FtN32mPGrcog2wcKHdkVn", "proofs": [ "3XmV6fjKG5wNtMZZYshJLrgH9dfUiZGDUFPTJRsqbbqGtpFVL8pkNYrRvNQQa3rrinFNBND3oS1L9v1gQZvdNDy8" ], "script": "base64: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aXQJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IBAAAAC211c3RNYW5hZ2VyAAAAAQAAAAFpBAAAAAJwZAkAAAIAAAABAgAAABFQZXJtaXNzaW9uIGRlbmllZAQAAAAHJG1hdGNoMAkBAAAAFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAAAAAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAJwawUAAAAHJG1hdGNoMAMJAAAAAAAAAggFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BQAAAAJwawYFAAAAAnBkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0AwkAAAAAAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMGBQAAAAJwZAkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgAAAAoAAAABaQEAAAAKc2V0TWFuYWdlcgAAAAEAAAAXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkEAAAAC2NoZWNrQ2FsbGVyCQEAAAALbXVzdE1hbmFnZXIAAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIEAAAAFWNoZWNrTWFuYWdlclB1YmxpY0tleQkAAlkAAAABBQAAABdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQMJAAAAAAAAAgUAAAAVY2hlY2tNYW5hZ2VyUHVibGljS2V5BQAAABVjaGVja01hbmFnZXJQdWJsaWNLZXkJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAAAAAUAAAAXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAADmNvbmZpcm1NYW5hZ2VyAAAAAAQAAAACcG0JAQAAAB1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAAAAAEAAAABWhhc1BNAwkBAAAACWlzRGVmaW5lZAAAAAEFAAAAAnBtBgkAAAIAAAABAgAAABJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAAAAAAIFAAAABWhhc1BNBQAAAAVoYXNQTQQAAAAHY2hlY2tQTQMJAAAAAAAAAggFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5CQEAAAAFdmFsdWUAAAABBQAAAAJwbQYJAAACAAAAAQIAAAAbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAAAAAACBQAAAAdjaGVja1BNBQAAAAdjaGVja1BNCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABNrZXlNYW5hZ2VyUHVibGljS2V5AAAAAAkAAlgAAAABCQEAAAAFdmFsdWUAAAABBQAAAAJwbQkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAAAABQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAABhnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHQAAAACAAAAC3VzZXJBZGRyZXNzAAAADHRhcmdldEhlaWdodAQAAAAXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABCQEAAAAMZ2V0U3RyT3JGYWlsAAAAAgUAAAAEdGhpcwUAAAATa2V5Qm9vc3RpbmdDb250cmFjdAIAAAAhaW52YWxpZCBib29zdGluZyBjb250cmFjdCBhZGRyZXNzCQAFFAAAAAIFAAAAA25pbAoAAAAAAUAJAAP8AAAABAUAAAAXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MCAAAAIGdldFVzZXJHd3hBbW91bnRBdEhlaWdodFJFQURPTkxZCQAETAAAAAIFAAAAC3VzZXJBZGRyZXNzCQAETAAAAAIFAAAADHRhcmdldEhlaWdodAUAAAADbmlsBQAAAANuaWwDCQAAAQAAAAIFAAAAAUACAAAAA0ludAUAAAABQAkAAAIAAAABAgAAABhDb3VsZG4ndCBjYXN0IEFueSB0byBJbnQAAAABaQEAAAALY29uc3RydWN0b3IAAAADAAAAH3ZvdGluZ0VtaXNzaW9uQ2FuZGlkYXRlQ29udHJhY3QAAAAQYm9vc3RpbmdDb250cmFjdAAAAAtlcG9jaExlbmd0aAQAAAAFY2hla3MJAARMAAAAAgkBAAAAC211c3RNYW5hZ2VyAAAAAQUAAAABaQkABEwAAAACAwkBAAAAAiE9AAAAAgkABCYAAAABBQAAAB92b3RpbmdFbWlzc2lvbkNhbmRpZGF0ZUNvbnRyYWN0BQAAAAR1bml0BgIAAAAyaW52YWxpZCB2b3RpbmcgZW1pc3Npb24gY2FuZGlkYXRlIGNvbnRyYWN0IGFkZHJlc3MJAARMAAAAAgMJAQAAAAIhPQAAAAIJAAQmAAAAAQUAAAAQYm9vc3RpbmdDb250cmFjdAUAAAAEdW5pdAYCAAAAIWludmFsaWQgYm9vc3RpbmcgY29udHJhY3QgYWRkcmVzcwkABEwAAAACAwkAAGYAAAACBQAAAAtlcG9jaExlbmd0aAAAAAAAAAAAAAYJAAACAAAAAQIAAAAUaW52YWxpZCBlcG9jaCBsZW5ndGgFAAAAA25pbAMJAAAAAAAAAgUAAAAFY2hla3MFAAAABWNoZWtzCQAFFAAAAAIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAia2V5Vm90aW5nRW1pc3Npb25DYW5kaWRhdGVDb250cmFjdAUAAAAfdm90aW5nRW1pc3Npb25DYW5kaWRhdGVDb250cmFjdAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABNrZXlCb29zdGluZ0NvbnRyYWN0BQAAABBib29zdGluZ0NvbnRyYWN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA5rZXlFcG9jaExlbmd0aAUAAAALZXBvY2hMZW5ndGgFAAAAA25pbAUAAAAEdW5pdAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAGY3JlYXRlAAAAAgAAAA1hbW91bnRBc3NldElkAAAADHByaWNlQXNzZXRJZAQAAAAGY2hlY2tzCQAETAAAAAIDCQAAAAAAAAIJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAACJrZXlWb3RpbmdFbWlzc2lvbkNhbmRpZGF0ZUNvbnRyYWN0AgAAAAAGCQEAAAALbXVzdE1hbmFnZXIAAAABBQAAAAFpBQAAAANuaWwDCQAAAAAAAAIFAAAABmNoZWNrcwUAAAAGY2hlY2tzBAAAAARwb29sCQAFFAAAAAIFAAAADWFtb3VudEFzc2V0SWQFAAAADHByaWNlQXNzZXRJZAQAAAANaW5MaXN0QWN0aW9ucwkABE4AAAACCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACCQEAAAAJa2V5SW5MaXN0AAAAAQUAAAAEcG9vbAYFAAAAA25pbAkBAAAAEWluc2VydE5vZGVBY3Rpb25zAAAAAgUAAAANcG9vbHNMaXN0TmFtZQkBAAAADHBvb2xUb1N0cmluZwAAAAEFAAAABHBvb2wEAAAAF3N0YXJ0SGVpZ2h0SXNOb3REZWZpbmVkCQAAAAAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAAOa2V5U3RhcnRIZWlnaHQFAAAABHVuaXQEAAAAEnN0YXJ0SGVpZ2h0QWN0aW9ucwMFAAAAF3N0YXJ0SGVpZ2h0SXNOb3REZWZpbmVkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA9rZXlDdXJyZW50RXBvY2gAAAAAAAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADmtleVN0YXJ0SGVpZ2h0BQAAAAZoZWlnaHQFAAAAA25pbAUAAAADbmlsCQAFFAAAAAIJAAROAAAAAgUAAAANaW5MaXN0QWN0aW9ucwUAAAASc3RhcnRIZWlnaHRBY3Rpb25zBQAAAAR1bml0CQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAR2b3RlAAAAAwAAAA1hbW91bnRBc3NldElkAAAADHByaWNlQXNzZXRJZAAAAAZhbW91bnQEAAAABHBvb2wJAAUUAAAAAgUAAAANYW1vdW50QXNzZXRJZAUAAAAMcHJpY2VBc3Nl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", "chainId": 84, "height": 2084618, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: AcP9fHThEBmPtsUuoQ7o4yrnxLXhSXkaAKGnc3jRNGvr Next: 2ckhnPmFDhBrmzLc95dfUtfFKT4RYizrSE15CyVDUmSu Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
6-let b = 100
6+let b = makeString(["%s", "epochLength"], a)
77
8-let c = makeString(["%s", "epochLength"], a)
8+let c = makeString(["%s", "currentEpoch"], a)
99
10-let d = makeString(["%s", "currentEpoch"], a)
10+let d = makeString(["%s", "startHeight"], a)
1111
12-let e = makeString(["%s", "startHeight"], a)
12+let e = makeString(["%s", "votingEmissionCandidateContract"], a)
1313
14-let f = makeString(["%s", "votingEmissionCandidateContract"], a)
14+let f = makeString(["%s", "boostingContract"], a)
1515
16-let g = makeString(["%s", "boostingContract"], a)
17-
18-func h (i) = {
19- let j = i
20- let k = j._1
21- let l = j._2
22- makeString(["%s%s%s", "inList", k, l], a)
16+func g (h) = {
17+ let i = h
18+ let j = i._1
19+ let k = i._2
20+ makeString(["%s%s%s", "inList", j, k], a)
2321 }
2422
2523
26-func m (n) = makeString(["%s%s", "shareUsed", toString(n)], a)
24+func l (m,n) = makeString(["%s%s%d", "used", toString(m), toString(n)], a)
2725
2826
29-func o (n,i) = {
30- let p = i
31- let k = p._1
32- let l = p._2
33- makeString(["%s%s%s%s", "voteShare", k, l, toString(n)], a)
27+func o (m,h,n) = {
28+ let p = h
29+ let j = p._1
30+ let k = p._2
31+ makeString(["%s%s%s%s%d", "vote", j, k, toString(m), toString(n)], a)
3432 }
3533
3634
37-func q (i) = {
38- let r = i
39- let k = r._1
40- let l = r._2
41- makeString(["%s%s%s", "votingResult", k, l], a)
35+func q (h,n) = {
36+ let r = h
37+ let j = r._1
38+ let k = r._2
39+ makeString(["%s%s%s%d", "votingResult", j, k, toString(n)], a)
4240 }
4341
4442
45-func s (n,t,u) = {
46- let v = makeString(["mandatory ", toString(n), ".", t, " is not defined"], "")
43+func s (n) = makeString(["%s%d", "totalVotes", toString(n)], a)
44+
45+
46+func t (m,u,v) = {
47+ let w = makeString(["mandatory ", toString(m), ".", u, " is not defined"], "")
4748 valueOrErrorMessage({
48- let w = u
49- if ($isInstanceOf(w, "String"))
49+ let x = v
50+ if ($isInstanceOf(x, "String"))
5051 then {
51- let x = w
52- getString(n, t)
52+ let y = x
53+ getString(m, u)
5354 }
54- else if ($isInstanceOf(w, "Int"))
55+ else if ($isInstanceOf(x, "Int"))
5556 then {
56- let y = w
57- getInteger(n, t)
57+ let z = x
58+ getInteger(m, u)
5859 }
5960 else throw("invalid entry type")
60- }, v)
61+ }, w)
6162 }
6263
6364
64-func z (n,t) = {
65- let A = s(n, t, "")
66- if ($isInstanceOf(A, "String"))
67- then A
65+func A (m,u) = {
66+ let B = t(m, u, "")
67+ if ($isInstanceOf(B, "String"))
68+ then B
6869 else throw("Couldn't cast Int|String to String")
6970 }
7071
7172
72-func B (n,t) = {
73- let A = s(n, t, 0)
74- if ($isInstanceOf(A, "Int"))
75- then A
73+func C (m,u) = {
74+ let B = t(m, u, 0)
75+ if ($isInstanceOf(B, "Int"))
76+ then B
7677 else throw("Couldn't cast Int|String to Int")
7778 }
7879
7980
80-let C = "__pools"
81+func D (h) = ((h._1 + a) + h._2)
8182
82-func D (i) = {
83- let E = i
84- let k = E._1
85- let l = E._2
86- makeString(["%s%s__votes", k, l], a)
83+
84+func E (y) = {
85+ let F = split(y, a)
86+ if ((size(F) == 2))
87+ then $Tuple2(F[0], F[1])
88+ else throw("invalid pool string")
8789 }
8890
8991
90-func F (G) = makeString([("%s%s" + G), "head"], a)
92+let G = "pools"
9193
92-
93-func H (G) = makeString([("%s%s" + G), "size"], a)
94-
95-
96-func I (G,J) = makeString([("%s%s%s" + G), J, "prev"], a)
97-
98-
99-func K (G,J) = makeString([("%s%s%s" + G), J, "next"], a)
100-
101-
102-func L (G,J) = {
103- let M = valueOrElse(getString(this, F(G)), "")
104- let N = getString(this, I(G, J))
105- let O = getString(this, K(G, J))
106- if (if ((J == M))
107- then true
108- else (N != unit))
109- then true
110- else (O != unit)
94+func H (h) = {
95+ let I = h
96+ let j = I._1
97+ let k = I._2
98+ makeString(["votes", j, k], a)
11199 }
112100
113101
114-func P (G,J) = {
115- let M = getString(this, F(G))
116- let Q = valueOrElse(getInteger(this, H(G)), 0)
117- let R = if (!(L(G, J)))
102+func J (K) = {
103+ let L = if ((K == G))
104+ then "%s%s"
105+ else "%s%s%s%s"
106+ makeString([L, K, "head"], a)
107+ }
108+
109+
110+func M (K) = {
111+ let L = if ((K == G))
112+ then "%s%s"
113+ else "%s%s%s%s"
114+ makeString([L, K, "size"], a)
115+ }
116+
117+
118+func N (K,O) = {
119+ let L = if ((K == G))
120+ then "%s%s%s%s"
121+ else "%s%s%s%s%s"
122+ makeString([L, K, O, "prev"], a)
123+ }
124+
125+
126+func P (K,O) = {
127+ let L = if ((K == G))
128+ then "%s%s%s%s"
129+ else "%s%s%s%s%s"
130+ makeString([L, K, O, "next"], a)
131+ }
132+
133+
134+func Q (K,O) = {
135+ let R = getString(this, J(K))
136+ let S = getString(this, N(K, O))
137+ let T = getString(this, P(K, O))
138+ if (if ((O == valueOrElse(R, "")))
139+ then true
140+ else (S != unit))
141+ then true
142+ else (T != unit)
143+ }
144+
145+
146+func U (K,O) = {
147+ let R = getString(this, J(K))
148+ let V = valueOrElse(getInteger(this, M(K)), 0)
149+ let W = if (!(Q(K, O)))
118150 then true
119151 else throw("Node exists")
120- if ((R == R))
121- then (([IntegerEntry(H(G), (Q + 1))] ++ (if (isDefined(M))
122- then [StringEntry(K(G, J), value(M)), StringEntry(I(G, value(M)), J)]
123- else nil)) ++ [StringEntry(F(G), J)])
152+ if ((W == W))
153+ then (([IntegerEntry(M(K), (V + 1))] ++ (if ((R != unit))
154+ then [StringEntry(P(K, O), value(R)), StringEntry(N(K, value(R)), O)]
155+ else nil)) ++ [StringEntry(J(K), O)])
124156 else throw("Strict value is not equal to itself.")
125157 }
126158
127159
128-func S (G,J) = {
129- let M = getString(this, F(G))
130- let Q = valueOrElse(getInteger(this, H(G)), 0)
131- let N = getString(this, I(G, J))
132- let O = getString(this, K(G, J))
133- ([IntegerEntry(H(G), (Q - 1))] ++ (if (if (isDefined(N))
134- then isDefined(O)
160+func X (K,O) = {
161+ let R = getString(this, J(K))
162+ let V = valueOrElse(getInteger(this, M(K)), 0)
163+ let S = getString(this, N(K, O))
164+ let T = getString(this, P(K, O))
165+ ([IntegerEntry(M(K), (V - 1))] ++ (if (if ((S != unit))
166+ then (T != unit)
135167 else false)
136- then [StringEntry(K(G, value(N)), value(O)), StringEntry(I(G, value(O)), value(N)), DeleteEntry(I(G, J)), DeleteEntry(K(G, J))]
137- else if (isDefined(O))
138- then [StringEntry(F(G), value(O)), DeleteEntry(K(G, J)), DeleteEntry(I(G, value(O)))]
139- else if (isDefined(N))
140- then [DeleteEntry(I(G, J)), DeleteEntry(K(G, value(N)))]
141- else if ((J == M))
142- then [DeleteEntry(F(G))]
168+ then [StringEntry(P(K, value(S)), value(T)), StringEntry(N(K, value(T)), value(S)), DeleteEntry(N(K, O)), DeleteEntry(P(K, O))]
169+ else if ((T != unit))
170+ then [StringEntry(J(K), value(T)), DeleteEntry(P(K, O)), DeleteEntry(N(K, value(T)))]
171+ else if ((S != unit))
172+ then [DeleteEntry(N(K, O)), DeleteEntry(P(K, value(S)))]
173+ else if ((O == valueOrElse(R, "")))
174+ then [DeleteEntry(J(K))]
143175 else throw("Invalid node")))
144176 }
145177
146178
147-func T () = "%s__managerPublicKey"
179+func Y () = "%s__managerPublicKey"
148180
149181
150-func U () = "%s__pendingManagerPublicKey"
182+func Z () = "%s__pendingManagerPublicKey"
151183
152184
153-func V () = {
154- let w = getString(T())
155- if ($isInstanceOf(w, "String"))
185+func aa () = {
186+ let x = getString(Y())
187+ if ($isInstanceOf(x, "String"))
156188 then {
157- let W = w
158- fromBase58String(W)
189+ let ab = x
190+ fromBase58String(ab)
159191 }
160- else if ($isInstanceOf(w, "Unit"))
192+ else if ($isInstanceOf(x, "Unit"))
161193 then unit
162194 else throw("Match error")
163195 }
164196
165197
166-func X () = {
167- let w = getString(U())
168- if ($isInstanceOf(w, "String"))
198+func ac () = {
199+ let x = getString(Z())
200+ if ($isInstanceOf(x, "String"))
169201 then {
170- let W = w
171- fromBase58String(W)
202+ let ab = x
203+ fromBase58String(ab)
172204 }
173- else if ($isInstanceOf(w, "Unit"))
205+ else if ($isInstanceOf(x, "Unit"))
174206 then unit
175207 else throw("Match error")
176208 }
177209
178210
179-func Y (Z) = {
180- let aa = throw("Permission denied")
181- let w = V()
182- if ($isInstanceOf(w, "ByteVector"))
211+func ad (ae) = {
212+ let af = throw("Permission denied")
213+ let x = aa()
214+ if ($isInstanceOf(x, "ByteVector"))
183215 then {
184- let ab = w
185- if ((Z.callerPublicKey == ab))
216+ let ag = x
217+ if ((ae.callerPublicKey == ag))
186218 then true
187- else aa
219+ else af
188220 }
189- else if ($isInstanceOf(w, "Unit"))
190- then if ((Z.caller == this))
221+ else if ($isInstanceOf(x, "Unit"))
222+ then if ((ae.caller == this))
191223 then true
192- else aa
224+ else af
193225 else throw("Match error")
194226 }
195227
196228
197-@Callable(Z)
198-func setManager (ac) = {
199- let ad = Y(Z)
200- if ((ad == ad))
229+@Callable(ae)
230+func setManager (ah) = {
231+ let ai = ad(ae)
232+ if ((ai == ai))
201233 then {
202- let ae = fromBase58String(ac)
203- if ((ae == ae))
204- then [StringEntry(U(), ac)]
234+ let aj = fromBase58String(ah)
235+ if ((aj == aj))
236+ then [StringEntry(Z(), ah)]
205237 else throw("Strict value is not equal to itself.")
206238 }
207239 else throw("Strict value is not equal to itself.")
209241
210242
211243
212-@Callable(Z)
244+@Callable(ae)
213245 func confirmManager () = {
214- let af = X()
215- let ag = if (isDefined(af))
246+ let ak = ac()
247+ let al = if (isDefined(ak))
216248 then true
217249 else throw("No pending manager")
218- if ((ag == ag))
250+ if ((al == al))
219251 then {
220- let ah = if ((Z.callerPublicKey == value(af)))
252+ let am = if ((ae.callerPublicKey == value(ak)))
221253 then true
222254 else throw("You are not pending manager")
223- if ((ah == ah))
224- then [StringEntry(T(), toBase58String(value(af))), DeleteEntry(U())]
255+ if ((am == am))
256+ then [StringEntry(Y(), toBase58String(value(ak))), DeleteEntry(Z())]
225257 else throw("Strict value is not equal to itself.")
226258 }
227259 else throw("Strict value is not equal to itself.")
229261
230262
231263
232-@Callable(Z)
233-func getUserGwxAmountAtHeight (ai,aj) = {
234- let ak = valueOrErrorMessage(addressFromString(z(this, g)), "invalid boosting contract address")
264+@Callable(ae)
265+func getUserGwxAmountAtHeight (an,ao) = {
266+ let ap = valueOrErrorMessage(addressFromString(A(this, f)), "invalid boosting contract address")
235267 $Tuple2(nil, {
236- let A = invoke(ak, "getUserGwxAmountAtHeightREADONLY", [ai, aj], nil)
237- if ($isInstanceOf(A, "Int"))
238- then A
268+ let B = invoke(ap, "getUserGwxAmountAtHeightREADONLY", [an, ao], nil)
269+ if ($isInstanceOf(B, "Int"))
270+ then B
239271 else throw("Couldn't cast Any to Int")
240272 })
241273 }
242274
243275
244276
245-@Callable(Z)
246-func constructor (al,am,an) = {
247- let ao = [Y(Z), if ((addressFromString(al) != unit))
277+@Callable(ae)
278+func constructor (aq,ar,as) = {
279+ let at = [ad(ae), if ((addressFromString(aq) != unit))
248280 then true
249- else "invalid voting emission candidate contract address", if ((addressFromString(am) != unit))
281+ else "invalid voting emission candidate contract address", if ((addressFromString(ar) != unit))
250282 then true
251- else "invalid boosting contract address", if ((an > 0))
283+ else "invalid boosting contract address", if ((as > 0))
252284 then true
253285 else throw("invalid epoch length")]
254- if ((ao == ao))
255- then $Tuple2([StringEntry(f, al), StringEntry(g, am), IntegerEntry(c, an)], unit)
286+ if ((at == at))
287+ then $Tuple2([StringEntry(e, aq), StringEntry(f, ar), IntegerEntry(b, as)], unit)
256288 else throw("Strict value is not equal to itself.")
257289 }
258290
259291
260292
261-@Callable(Z)
262-func create (k,l) = {
263- let ap = [if ((toBase58String(Z.caller.bytes) == valueOrElse(getString(this, f), "")))
293+@Callable(ae)
294+func create (j,k) = {
295+ let au = [if ((toBase58String(ae.caller.bytes) == valueOrElse(getString(this, e), "")))
264296 then true
265- else Y(Z)]
266- if ((ap == ap))
297+ else ad(ae)]
298+ if ((au == au))
267299 then {
268- let i = $Tuple2(k, l)
269- let aq = [BooleanEntry(h(i), true)]
270- let ar = (getString(this, e) == unit)
271- let as = if (ar)
272- then [IntegerEntry(d, 0), IntegerEntry(e, height)]
300+ let h = $Tuple2(j, k)
301+ let av = ([BooleanEntry(g(h), true)] ++ U(G, D(h)))
302+ let aw = (getString(this, d) == unit)
303+ let ax = if (aw)
304+ then [IntegerEntry(c, 0), IntegerEntry(d, height)]
273305 else nil
274- $Tuple2((aq ++ as), unit)
306+ $Tuple2((av ++ ax), unit)
275307 }
276308 else throw("Strict value is not equal to itself.")
277309 }
278310
279311
280312
281-@Callable(Z)
282-func vote (k,l,at) = {
283- let i = $Tuple2(k, l)
284- let au = B(this, e)
285- let an = B(this, c)
286- let av = (au + an)
287- let aw = valueOrElse(getInteger(this, m(Z.caller)), 0)
288- let ax = valueOrElse(getInteger(this, o(Z.caller, i)), 0)
289- let ay = (b - aw)
290- let az = (ax + at)
291- let aA = {
292- let A = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(Z.caller.bytes), av], nil)
293- if ($isInstanceOf(A, "Int"))
294- then A
313+@Callable(ae)
314+func vote (j,k,ay) = {
315+ let h = $Tuple2(j, k)
316+ let az = C(this, d)
317+ let as = C(this, b)
318+ let aA = (az + as)
319+ let n = valueOrElse(getInteger(this, c), 0)
320+ let aB = valueOrElse(getInteger(this, l(ae.caller, n)), 0)
321+ let aC = valueOrElse(getInteger(this, o(ae.caller, h, n)), 0)
322+ let aD = valueOrElse(getInteger(this, q(h, n)), 0)
323+ let aE = valueOrElse(getInteger(this, s(n)), 0)
324+ let aF = {
325+ let B = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(ae.caller.bytes), aA], nil)
326+ if ($isInstanceOf(B, "Int"))
327+ then B
295328 else throw("Couldn't cast Any to Int")
296329 }
297- let aB = fraction(aA, az, b)
298- let ap = [if ((getBoolean(h(i)) != unit))
330+ let aG = (aF - aB)
331+ let aH = (aC + ay)
332+ let au = [if ((getBoolean(g(h)) != unit))
299333 then true
300- else throw("invalid assets"), if ((av > height))
334+ else throw("invalid assets"), if ((aA > height))
301335 then true
302- else throw("invalid height"), if ((aB > 0))
336+ else throw("invalid height"), if ((aF > 0))
303337 then true
304- else throw("you do not have gWX"), if (if ((at > 0))
305- then (ay >= at)
338+ else throw("you do not have gWX"), if (if ((ay > 0))
339+ then (aG >= ay)
306340 else false)
307341 then true
308- else throw("invalid share")]
309- if ((ap == ap))
310- then $Tuple2([IntegerEntry(m(Z.caller), (aw + at)), IntegerEntry(o(Z.caller, i), az)], unit)
342+ else throw("invalid amount")]
343+ if ((au == au))
344+ then {
345+ let aI = H(h)
346+ let aJ = D(h)
347+ let aK = if (Q(aI, aJ))
348+ then nil
349+ else U(aI, aJ)
350+ $Tuple2(([IntegerEntry(l(ae.caller, n), (aB + ay)), IntegerEntry(o(ae.caller, h, n), aH), IntegerEntry(q(h, n), (aD + ay)), IntegerEntry(s(n), (aE + ay))] ++ aK), unit)
351+ }
311352 else throw("Strict value is not equal to itself.")
312353 }
313354
314355
315356
316-@Callable(Z)
317-func cancelVote (k,l) = {
318- let i = $Tuple2(k, l)
319- let au = B(this, e)
320- let an = B(this, c)
321- let av = (au + an)
322- let ax = valueOrElse(getInteger(this, o(Z.caller, i)), 0)
323- let aw = valueOrElse(getInteger(this, m(Z.caller)), 0)
324- let ap = [if ((getBoolean(h(i)) != unit))
357+@Callable(ae)
358+func cancelVote (j,k) = {
359+ let h = $Tuple2(j, k)
360+ let az = C(this, d)
361+ let as = C(this, b)
362+ let aA = (az + as)
363+ let n = valueOrElse(getInteger(this, c), 0)
364+ let aB = valueOrElse(getInteger(this, l(ae.caller, n)), 0)
365+ let aC = valueOrElse(getInteger(this, o(ae.caller, h, n)), 0)
366+ let aD = valueOrElse(getInteger(this, q(h, n)), 0)
367+ let aE = valueOrElse(getInteger(this, s(n)), 0)
368+ let au = [if ((getBoolean(g(h)) != unit))
325369 then true
326- else throw("invalid assets"), if ((av > height))
370+ else throw("invalid assets"), if ((aA > height))
327371 then true
328- else throw("invalid height"), if ((ax > 0))
372+ else throw("invalid height"), if ((aC > 0))
329373 then true
330374 else throw("no vote")]
331- if ((ap == ap))
332- then $Tuple2([IntegerEntry(m(Z.caller), max([(aw - ax), 0])), DeleteEntry(o(Z.caller, i))], unit)
375+ if ((au == au))
376+ then {
377+ let aI = H(h)
378+ let aJ = D(h)
379+ $Tuple2(([IntegerEntry(l(ae.caller, n), max([(aB - aC), 0])), DeleteEntry(o(ae.caller, h, n)), IntegerEntry(q(h, n), (aD - aC)), IntegerEntry(s(n), (aE - aC))] ++ X(aI, aJ)), unit)
380+ }
333381 else throw("Strict value is not equal to itself.")
334382 }
335383
336384
337385
338-@Callable(Z)
339-func setEpochLength (aC) = {
340- let ao = [Y(Z), if ((aC > 0))
386+@Callable(ae)
387+func setEpochLength (aL) = {
388+ let at = [ad(ae), if ((aL > 0))
341389 then true
342390 else throw("invalid epoch length")]
343- if ((ao == ao))
344- then $Tuple2([IntegerEntry(c, aC)], unit)
391+ if ((at == at))
392+ then $Tuple2([IntegerEntry(b, aL)], unit)
345393 else throw("Strict value is not equal to itself.")
346394 }
347395
348396
349397
350-@Callable(Z)
398+@Callable(ae)
351399 func finalize () = $Tuple2(nil, unit)
352400
353401
354402
355-@Callable(Z)
356-func onVerificationLoss (aD) = $Tuple2(nil, unit)
403+@Callable(ae)
404+func onVerificationLoss (aM) = $Tuple2(nil, unit)
357405
358406
359-@Verifier(aE)
360-func aF () = {
361- let aG = {
362- let w = V()
363- if ($isInstanceOf(w, "ByteVector"))
407+@Verifier(aN)
408+func aO () = {
409+ let aP = {
410+ let x = aa()
411+ if ($isInstanceOf(x, "ByteVector"))
364412 then {
365- let ab = w
366- ab
413+ let ag = x
414+ ag
367415 }
368- else if ($isInstanceOf(w, "Unit"))
369- then aE.senderPublicKey
416+ else if ($isInstanceOf(x, "Unit"))
417+ then aN.senderPublicKey
370418 else throw("Match error")
371419 }
372- sigVerify(aE.bodyBytes, aE.proofs[0], aG)
420+ sigVerify(aN.bodyBytes, aN.proofs[0], aP)
373421 }
374422
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
6-let b = 100
6+let b = makeString(["%s", "epochLength"], a)
77
8-let c = makeString(["%s", "epochLength"], a)
8+let c = makeString(["%s", "currentEpoch"], a)
99
10-let d = makeString(["%s", "currentEpoch"], a)
10+let d = makeString(["%s", "startHeight"], a)
1111
12-let e = makeString(["%s", "startHeight"], a)
12+let e = makeString(["%s", "votingEmissionCandidateContract"], a)
1313
14-let f = makeString(["%s", "votingEmissionCandidateContract"], a)
14+let f = makeString(["%s", "boostingContract"], a)
1515
16-let g = makeString(["%s", "boostingContract"], a)
17-
18-func h (i) = {
19- let j = i
20- let k = j._1
21- let l = j._2
22- makeString(["%s%s%s", "inList", k, l], a)
16+func g (h) = {
17+ let i = h
18+ let j = i._1
19+ let k = i._2
20+ makeString(["%s%s%s", "inList", j, k], a)
2321 }
2422
2523
26-func m (n) = makeString(["%s%s", "shareUsed", toString(n)], a)
24+func l (m,n) = makeString(["%s%s%d", "used", toString(m), toString(n)], a)
2725
2826
29-func o (n,i) = {
30- let p = i
31- let k = p._1
32- let l = p._2
33- makeString(["%s%s%s%s", "voteShare", k, l, toString(n)], a)
27+func o (m,h,n) = {
28+ let p = h
29+ let j = p._1
30+ let k = p._2
31+ makeString(["%s%s%s%s%d", "vote", j, k, toString(m), toString(n)], a)
3432 }
3533
3634
37-func q (i) = {
38- let r = i
39- let k = r._1
40- let l = r._2
41- makeString(["%s%s%s", "votingResult", k, l], a)
35+func q (h,n) = {
36+ let r = h
37+ let j = r._1
38+ let k = r._2
39+ makeString(["%s%s%s%d", "votingResult", j, k, toString(n)], a)
4240 }
4341
4442
45-func s (n,t,u) = {
46- let v = makeString(["mandatory ", toString(n), ".", t, " is not defined"], "")
43+func s (n) = makeString(["%s%d", "totalVotes", toString(n)], a)
44+
45+
46+func t (m,u,v) = {
47+ let w = makeString(["mandatory ", toString(m), ".", u, " is not defined"], "")
4748 valueOrErrorMessage({
48- let w = u
49- if ($isInstanceOf(w, "String"))
49+ let x = v
50+ if ($isInstanceOf(x, "String"))
5051 then {
51- let x = w
52- getString(n, t)
52+ let y = x
53+ getString(m, u)
5354 }
54- else if ($isInstanceOf(w, "Int"))
55+ else if ($isInstanceOf(x, "Int"))
5556 then {
56- let y = w
57- getInteger(n, t)
57+ let z = x
58+ getInteger(m, u)
5859 }
5960 else throw("invalid entry type")
60- }, v)
61+ }, w)
6162 }
6263
6364
64-func z (n,t) = {
65- let A = s(n, t, "")
66- if ($isInstanceOf(A, "String"))
67- then A
65+func A (m,u) = {
66+ let B = t(m, u, "")
67+ if ($isInstanceOf(B, "String"))
68+ then B
6869 else throw("Couldn't cast Int|String to String")
6970 }
7071
7172
72-func B (n,t) = {
73- let A = s(n, t, 0)
74- if ($isInstanceOf(A, "Int"))
75- then A
73+func C (m,u) = {
74+ let B = t(m, u, 0)
75+ if ($isInstanceOf(B, "Int"))
76+ then B
7677 else throw("Couldn't cast Int|String to Int")
7778 }
7879
7980
80-let C = "__pools"
81+func D (h) = ((h._1 + a) + h._2)
8182
82-func D (i) = {
83- let E = i
84- let k = E._1
85- let l = E._2
86- makeString(["%s%s__votes", k, l], a)
83+
84+func E (y) = {
85+ let F = split(y, a)
86+ if ((size(F) == 2))
87+ then $Tuple2(F[0], F[1])
88+ else throw("invalid pool string")
8789 }
8890
8991
90-func F (G) = makeString([("%s%s" + G), "head"], a)
92+let G = "pools"
9193
92-
93-func H (G) = makeString([("%s%s" + G), "size"], a)
94-
95-
96-func I (G,J) = makeString([("%s%s%s" + G), J, "prev"], a)
97-
98-
99-func K (G,J) = makeString([("%s%s%s" + G), J, "next"], a)
100-
101-
102-func L (G,J) = {
103- let M = valueOrElse(getString(this, F(G)), "")
104- let N = getString(this, I(G, J))
105- let O = getString(this, K(G, J))
106- if (if ((J == M))
107- then true
108- else (N != unit))
109- then true
110- else (O != unit)
94+func H (h) = {
95+ let I = h
96+ let j = I._1
97+ let k = I._2
98+ makeString(["votes", j, k], a)
11199 }
112100
113101
114-func P (G,J) = {
115- let M = getString(this, F(G))
116- let Q = valueOrElse(getInteger(this, H(G)), 0)
117- let R = if (!(L(G, J)))
102+func J (K) = {
103+ let L = if ((K == G))
104+ then "%s%s"
105+ else "%s%s%s%s"
106+ makeString([L, K, "head"], a)
107+ }
108+
109+
110+func M (K) = {
111+ let L = if ((K == G))
112+ then "%s%s"
113+ else "%s%s%s%s"
114+ makeString([L, K, "size"], a)
115+ }
116+
117+
118+func N (K,O) = {
119+ let L = if ((K == G))
120+ then "%s%s%s%s"
121+ else "%s%s%s%s%s"
122+ makeString([L, K, O, "prev"], a)
123+ }
124+
125+
126+func P (K,O) = {
127+ let L = if ((K == G))
128+ then "%s%s%s%s"
129+ else "%s%s%s%s%s"
130+ makeString([L, K, O, "next"], a)
131+ }
132+
133+
134+func Q (K,O) = {
135+ let R = getString(this, J(K))
136+ let S = getString(this, N(K, O))
137+ let T = getString(this, P(K, O))
138+ if (if ((O == valueOrElse(R, "")))
139+ then true
140+ else (S != unit))
141+ then true
142+ else (T != unit)
143+ }
144+
145+
146+func U (K,O) = {
147+ let R = getString(this, J(K))
148+ let V = valueOrElse(getInteger(this, M(K)), 0)
149+ let W = if (!(Q(K, O)))
118150 then true
119151 else throw("Node exists")
120- if ((R == R))
121- then (([IntegerEntry(H(G), (Q + 1))] ++ (if (isDefined(M))
122- then [StringEntry(K(G, J), value(M)), StringEntry(I(G, value(M)), J)]
123- else nil)) ++ [StringEntry(F(G), J)])
152+ if ((W == W))
153+ then (([IntegerEntry(M(K), (V + 1))] ++ (if ((R != unit))
154+ then [StringEntry(P(K, O), value(R)), StringEntry(N(K, value(R)), O)]
155+ else nil)) ++ [StringEntry(J(K), O)])
124156 else throw("Strict value is not equal to itself.")
125157 }
126158
127159
128-func S (G,J) = {
129- let M = getString(this, F(G))
130- let Q = valueOrElse(getInteger(this, H(G)), 0)
131- let N = getString(this, I(G, J))
132- let O = getString(this, K(G, J))
133- ([IntegerEntry(H(G), (Q - 1))] ++ (if (if (isDefined(N))
134- then isDefined(O)
160+func X (K,O) = {
161+ let R = getString(this, J(K))
162+ let V = valueOrElse(getInteger(this, M(K)), 0)
163+ let S = getString(this, N(K, O))
164+ let T = getString(this, P(K, O))
165+ ([IntegerEntry(M(K), (V - 1))] ++ (if (if ((S != unit))
166+ then (T != unit)
135167 else false)
136- then [StringEntry(K(G, value(N)), value(O)), StringEntry(I(G, value(O)), value(N)), DeleteEntry(I(G, J)), DeleteEntry(K(G, J))]
137- else if (isDefined(O))
138- then [StringEntry(F(G), value(O)), DeleteEntry(K(G, J)), DeleteEntry(I(G, value(O)))]
139- else if (isDefined(N))
140- then [DeleteEntry(I(G, J)), DeleteEntry(K(G, value(N)))]
141- else if ((J == M))
142- then [DeleteEntry(F(G))]
168+ then [StringEntry(P(K, value(S)), value(T)), StringEntry(N(K, value(T)), value(S)), DeleteEntry(N(K, O)), DeleteEntry(P(K, O))]
169+ else if ((T != unit))
170+ then [StringEntry(J(K), value(T)), DeleteEntry(P(K, O)), DeleteEntry(N(K, value(T)))]
171+ else if ((S != unit))
172+ then [DeleteEntry(N(K, O)), DeleteEntry(P(K, value(S)))]
173+ else if ((O == valueOrElse(R, "")))
174+ then [DeleteEntry(J(K))]
143175 else throw("Invalid node")))
144176 }
145177
146178
147-func T () = "%s__managerPublicKey"
179+func Y () = "%s__managerPublicKey"
148180
149181
150-func U () = "%s__pendingManagerPublicKey"
182+func Z () = "%s__pendingManagerPublicKey"
151183
152184
153-func V () = {
154- let w = getString(T())
155- if ($isInstanceOf(w, "String"))
185+func aa () = {
186+ let x = getString(Y())
187+ if ($isInstanceOf(x, "String"))
156188 then {
157- let W = w
158- fromBase58String(W)
189+ let ab = x
190+ fromBase58String(ab)
159191 }
160- else if ($isInstanceOf(w, "Unit"))
192+ else if ($isInstanceOf(x, "Unit"))
161193 then unit
162194 else throw("Match error")
163195 }
164196
165197
166-func X () = {
167- let w = getString(U())
168- if ($isInstanceOf(w, "String"))
198+func ac () = {
199+ let x = getString(Z())
200+ if ($isInstanceOf(x, "String"))
169201 then {
170- let W = w
171- fromBase58String(W)
202+ let ab = x
203+ fromBase58String(ab)
172204 }
173- else if ($isInstanceOf(w, "Unit"))
205+ else if ($isInstanceOf(x, "Unit"))
174206 then unit
175207 else throw("Match error")
176208 }
177209
178210
179-func Y (Z) = {
180- let aa = throw("Permission denied")
181- let w = V()
182- if ($isInstanceOf(w, "ByteVector"))
211+func ad (ae) = {
212+ let af = throw("Permission denied")
213+ let x = aa()
214+ if ($isInstanceOf(x, "ByteVector"))
183215 then {
184- let ab = w
185- if ((Z.callerPublicKey == ab))
216+ let ag = x
217+ if ((ae.callerPublicKey == ag))
186218 then true
187- else aa
219+ else af
188220 }
189- else if ($isInstanceOf(w, "Unit"))
190- then if ((Z.caller == this))
221+ else if ($isInstanceOf(x, "Unit"))
222+ then if ((ae.caller == this))
191223 then true
192- else aa
224+ else af
193225 else throw("Match error")
194226 }
195227
196228
197-@Callable(Z)
198-func setManager (ac) = {
199- let ad = Y(Z)
200- if ((ad == ad))
229+@Callable(ae)
230+func setManager (ah) = {
231+ let ai = ad(ae)
232+ if ((ai == ai))
201233 then {
202- let ae = fromBase58String(ac)
203- if ((ae == ae))
204- then [StringEntry(U(), ac)]
234+ let aj = fromBase58String(ah)
235+ if ((aj == aj))
236+ then [StringEntry(Z(), ah)]
205237 else throw("Strict value is not equal to itself.")
206238 }
207239 else throw("Strict value is not equal to itself.")
208240 }
209241
210242
211243
212-@Callable(Z)
244+@Callable(ae)
213245 func confirmManager () = {
214- let af = X()
215- let ag = if (isDefined(af))
246+ let ak = ac()
247+ let al = if (isDefined(ak))
216248 then true
217249 else throw("No pending manager")
218- if ((ag == ag))
250+ if ((al == al))
219251 then {
220- let ah = if ((Z.callerPublicKey == value(af)))
252+ let am = if ((ae.callerPublicKey == value(ak)))
221253 then true
222254 else throw("You are not pending manager")
223- if ((ah == ah))
224- then [StringEntry(T(), toBase58String(value(af))), DeleteEntry(U())]
255+ if ((am == am))
256+ then [StringEntry(Y(), toBase58String(value(ak))), DeleteEntry(Z())]
225257 else throw("Strict value is not equal to itself.")
226258 }
227259 else throw("Strict value is not equal to itself.")
228260 }
229261
230262
231263
232-@Callable(Z)
233-func getUserGwxAmountAtHeight (ai,aj) = {
234- let ak = valueOrErrorMessage(addressFromString(z(this, g)), "invalid boosting contract address")
264+@Callable(ae)
265+func getUserGwxAmountAtHeight (an,ao) = {
266+ let ap = valueOrErrorMessage(addressFromString(A(this, f)), "invalid boosting contract address")
235267 $Tuple2(nil, {
236- let A = invoke(ak, "getUserGwxAmountAtHeightREADONLY", [ai, aj], nil)
237- if ($isInstanceOf(A, "Int"))
238- then A
268+ let B = invoke(ap, "getUserGwxAmountAtHeightREADONLY", [an, ao], nil)
269+ if ($isInstanceOf(B, "Int"))
270+ then B
239271 else throw("Couldn't cast Any to Int")
240272 })
241273 }
242274
243275
244276
245-@Callable(Z)
246-func constructor (al,am,an) = {
247- let ao = [Y(Z), if ((addressFromString(al) != unit))
277+@Callable(ae)
278+func constructor (aq,ar,as) = {
279+ let at = [ad(ae), if ((addressFromString(aq) != unit))
248280 then true
249- else "invalid voting emission candidate contract address", if ((addressFromString(am) != unit))
281+ else "invalid voting emission candidate contract address", if ((addressFromString(ar) != unit))
250282 then true
251- else "invalid boosting contract address", if ((an > 0))
283+ else "invalid boosting contract address", if ((as > 0))
252284 then true
253285 else throw("invalid epoch length")]
254- if ((ao == ao))
255- then $Tuple2([StringEntry(f, al), StringEntry(g, am), IntegerEntry(c, an)], unit)
286+ if ((at == at))
287+ then $Tuple2([StringEntry(e, aq), StringEntry(f, ar), IntegerEntry(b, as)], unit)
256288 else throw("Strict value is not equal to itself.")
257289 }
258290
259291
260292
261-@Callable(Z)
262-func create (k,l) = {
263- let ap = [if ((toBase58String(Z.caller.bytes) == valueOrElse(getString(this, f), "")))
293+@Callable(ae)
294+func create (j,k) = {
295+ let au = [if ((toBase58String(ae.caller.bytes) == valueOrElse(getString(this, e), "")))
264296 then true
265- else Y(Z)]
266- if ((ap == ap))
297+ else ad(ae)]
298+ if ((au == au))
267299 then {
268- let i = $Tuple2(k, l)
269- let aq = [BooleanEntry(h(i), true)]
270- let ar = (getString(this, e) == unit)
271- let as = if (ar)
272- then [IntegerEntry(d, 0), IntegerEntry(e, height)]
300+ let h = $Tuple2(j, k)
301+ let av = ([BooleanEntry(g(h), true)] ++ U(G, D(h)))
302+ let aw = (getString(this, d) == unit)
303+ let ax = if (aw)
304+ then [IntegerEntry(c, 0), IntegerEntry(d, height)]
273305 else nil
274- $Tuple2((aq ++ as), unit)
306+ $Tuple2((av ++ ax), unit)
275307 }
276308 else throw("Strict value is not equal to itself.")
277309 }
278310
279311
280312
281-@Callable(Z)
282-func vote (k,l,at) = {
283- let i = $Tuple2(k, l)
284- let au = B(this, e)
285- let an = B(this, c)
286- let av = (au + an)
287- let aw = valueOrElse(getInteger(this, m(Z.caller)), 0)
288- let ax = valueOrElse(getInteger(this, o(Z.caller, i)), 0)
289- let ay = (b - aw)
290- let az = (ax + at)
291- let aA = {
292- let A = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(Z.caller.bytes), av], nil)
293- if ($isInstanceOf(A, "Int"))
294- then A
313+@Callable(ae)
314+func vote (j,k,ay) = {
315+ let h = $Tuple2(j, k)
316+ let az = C(this, d)
317+ let as = C(this, b)
318+ let aA = (az + as)
319+ let n = valueOrElse(getInteger(this, c), 0)
320+ let aB = valueOrElse(getInteger(this, l(ae.caller, n)), 0)
321+ let aC = valueOrElse(getInteger(this, o(ae.caller, h, n)), 0)
322+ let aD = valueOrElse(getInteger(this, q(h, n)), 0)
323+ let aE = valueOrElse(getInteger(this, s(n)), 0)
324+ let aF = {
325+ let B = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(ae.caller.bytes), aA], nil)
326+ if ($isInstanceOf(B, "Int"))
327+ then B
295328 else throw("Couldn't cast Any to Int")
296329 }
297- let aB = fraction(aA, az, b)
298- let ap = [if ((getBoolean(h(i)) != unit))
330+ let aG = (aF - aB)
331+ let aH = (aC + ay)
332+ let au = [if ((getBoolean(g(h)) != unit))
299333 then true
300- else throw("invalid assets"), if ((av > height))
334+ else throw("invalid assets"), if ((aA > height))
301335 then true
302- else throw("invalid height"), if ((aB > 0))
336+ else throw("invalid height"), if ((aF > 0))
303337 then true
304- else throw("you do not have gWX"), if (if ((at > 0))
305- then (ay >= at)
338+ else throw("you do not have gWX"), if (if ((ay > 0))
339+ then (aG >= ay)
306340 else false)
307341 then true
308- else throw("invalid share")]
309- if ((ap == ap))
310- then $Tuple2([IntegerEntry(m(Z.caller), (aw + at)), IntegerEntry(o(Z.caller, i), az)], unit)
342+ else throw("invalid amount")]
343+ if ((au == au))
344+ then {
345+ let aI = H(h)
346+ let aJ = D(h)
347+ let aK = if (Q(aI, aJ))
348+ then nil
349+ else U(aI, aJ)
350+ $Tuple2(([IntegerEntry(l(ae.caller, n), (aB + ay)), IntegerEntry(o(ae.caller, h, n), aH), IntegerEntry(q(h, n), (aD + ay)), IntegerEntry(s(n), (aE + ay))] ++ aK), unit)
351+ }
311352 else throw("Strict value is not equal to itself.")
312353 }
313354
314355
315356
316-@Callable(Z)
317-func cancelVote (k,l) = {
318- let i = $Tuple2(k, l)
319- let au = B(this, e)
320- let an = B(this, c)
321- let av = (au + an)
322- let ax = valueOrElse(getInteger(this, o(Z.caller, i)), 0)
323- let aw = valueOrElse(getInteger(this, m(Z.caller)), 0)
324- let ap = [if ((getBoolean(h(i)) != unit))
357+@Callable(ae)
358+func cancelVote (j,k) = {
359+ let h = $Tuple2(j, k)
360+ let az = C(this, d)
361+ let as = C(this, b)
362+ let aA = (az + as)
363+ let n = valueOrElse(getInteger(this, c), 0)
364+ let aB = valueOrElse(getInteger(this, l(ae.caller, n)), 0)
365+ let aC = valueOrElse(getInteger(this, o(ae.caller, h, n)), 0)
366+ let aD = valueOrElse(getInteger(this, q(h, n)), 0)
367+ let aE = valueOrElse(getInteger(this, s(n)), 0)
368+ let au = [if ((getBoolean(g(h)) != unit))
325369 then true
326- else throw("invalid assets"), if ((av > height))
370+ else throw("invalid assets"), if ((aA > height))
327371 then true
328- else throw("invalid height"), if ((ax > 0))
372+ else throw("invalid height"), if ((aC > 0))
329373 then true
330374 else throw("no vote")]
331- if ((ap == ap))
332- then $Tuple2([IntegerEntry(m(Z.caller), max([(aw - ax), 0])), DeleteEntry(o(Z.caller, i))], unit)
375+ if ((au == au))
376+ then {
377+ let aI = H(h)
378+ let aJ = D(h)
379+ $Tuple2(([IntegerEntry(l(ae.caller, n), max([(aB - aC), 0])), DeleteEntry(o(ae.caller, h, n)), IntegerEntry(q(h, n), (aD - aC)), IntegerEntry(s(n), (aE - aC))] ++ X(aI, aJ)), unit)
380+ }
333381 else throw("Strict value is not equal to itself.")
334382 }
335383
336384
337385
338-@Callable(Z)
339-func setEpochLength (aC) = {
340- let ao = [Y(Z), if ((aC > 0))
386+@Callable(ae)
387+func setEpochLength (aL) = {
388+ let at = [ad(ae), if ((aL > 0))
341389 then true
342390 else throw("invalid epoch length")]
343- if ((ao == ao))
344- then $Tuple2([IntegerEntry(c, aC)], unit)
391+ if ((at == at))
392+ then $Tuple2([IntegerEntry(b, aL)], unit)
345393 else throw("Strict value is not equal to itself.")
346394 }
347395
348396
349397
350-@Callable(Z)
398+@Callable(ae)
351399 func finalize () = $Tuple2(nil, unit)
352400
353401
354402
355-@Callable(Z)
356-func onVerificationLoss (aD) = $Tuple2(nil, unit)
403+@Callable(ae)
404+func onVerificationLoss (aM) = $Tuple2(nil, unit)
357405
358406
359-@Verifier(aE)
360-func aF () = {
361- let aG = {
362- let w = V()
363- if ($isInstanceOf(w, "ByteVector"))
407+@Verifier(aN)
408+func aO () = {
409+ let aP = {
410+ let x = aa()
411+ if ($isInstanceOf(x, "ByteVector"))
364412 then {
365- let ab = w
366- ab
413+ let ag = x
414+ ag
367415 }
368- else if ($isInstanceOf(w, "Unit"))
369- then aE.senderPublicKey
416+ else if ($isInstanceOf(x, "Unit"))
417+ then aN.senderPublicKey
370418 else throw("Match error")
371419 }
372- sigVerify(aE.bodyBytes, aE.proofs[0], aG)
420+ sigVerify(aN.bodyBytes, aN.proofs[0], aP)
373421 }
374422

github/deemru/w8io/169f3d6 
100.08 ms