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:
Old | New | Differences | |
---|---|---|---|
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "__" | |
5 | 5 | ||
6 | - | let b = | |
6 | + | let b = makeString(["%s", "epochLength"], a) | |
7 | 7 | ||
8 | - | let c = makeString(["%s", " | |
8 | + | let c = makeString(["%s", "currentEpoch"], a) | |
9 | 9 | ||
10 | - | let d = makeString(["%s", " | |
10 | + | let d = makeString(["%s", "startHeight"], a) | |
11 | 11 | ||
12 | - | let e = makeString(["%s", " | |
12 | + | let e = makeString(["%s", "votingEmissionCandidateContract"], a) | |
13 | 13 | ||
14 | - | let f = makeString(["%s", " | |
14 | + | let f = makeString(["%s", "boostingContract"], a) | |
15 | 15 | ||
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) | |
23 | 21 | } | |
24 | 22 | ||
25 | 23 | ||
26 | - | func | |
24 | + | func l (m,n) = makeString(["%s%s%d", "used", toString(m), toString(n)], a) | |
27 | 25 | ||
28 | 26 | ||
29 | - | func o (n | |
30 | - | let p = | |
31 | - | let | |
32 | - | let | |
33 | - | makeString(["%s%s%s%s", " | |
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) | |
34 | 32 | } | |
35 | 33 | ||
36 | 34 | ||
37 | - | func q ( | |
38 | - | let r = | |
39 | - | let | |
40 | - | let | |
41 | - | makeString(["%s%s%s", "votingResult", k, | |
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) | |
42 | 40 | } | |
43 | 41 | ||
44 | 42 | ||
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"], "") | |
47 | 48 | valueOrErrorMessage({ | |
48 | - | let | |
49 | - | if ($isInstanceOf( | |
49 | + | let x = v | |
50 | + | if ($isInstanceOf(x, "String")) | |
50 | 51 | then { | |
51 | - | let | |
52 | - | getString( | |
52 | + | let y = x | |
53 | + | getString(m, u) | |
53 | 54 | } | |
54 | - | else if ($isInstanceOf( | |
55 | + | else if ($isInstanceOf(x, "Int")) | |
55 | 56 | then { | |
56 | - | let | |
57 | - | getInteger( | |
57 | + | let z = x | |
58 | + | getInteger(m, u) | |
58 | 59 | } | |
59 | 60 | else throw("invalid entry type") | |
60 | - | }, | |
61 | + | }, w) | |
61 | 62 | } | |
62 | 63 | ||
63 | 64 | ||
64 | - | func | |
65 | - | let | |
66 | - | if ($isInstanceOf( | |
67 | - | then | |
65 | + | func A (m,u) = { | |
66 | + | let B = t(m, u, "") | |
67 | + | if ($isInstanceOf(B, "String")) | |
68 | + | then B | |
68 | 69 | else throw("Couldn't cast Int|String to String") | |
69 | 70 | } | |
70 | 71 | ||
71 | 72 | ||
72 | - | func | |
73 | - | let | |
74 | - | if ($isInstanceOf( | |
75 | - | then | |
73 | + | func C (m,u) = { | |
74 | + | let B = t(m, u, 0) | |
75 | + | if ($isInstanceOf(B, "Int")) | |
76 | + | then B | |
76 | 77 | else throw("Couldn't cast Int|String to Int") | |
77 | 78 | } | |
78 | 79 | ||
79 | 80 | ||
80 | - | ||
81 | + | func D (h) = ((h._1 + a) + h._2) | |
81 | 82 | ||
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") | |
87 | 89 | } | |
88 | 90 | ||
89 | 91 | ||
90 | - | ||
92 | + | let G = "pools" | |
91 | 93 | ||
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) | |
111 | 99 | } | |
112 | 100 | ||
113 | 101 | ||
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))) | |
118 | 150 | then true | |
119 | 151 | else throw("Node exists") | |
120 | - | if (( | |
121 | - | then (([IntegerEntry( | |
122 | - | then [StringEntry(K | |
123 | - | else nil)) ++ [StringEntry( | |
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)]) | |
124 | 156 | else throw("Strict value is not equal to itself.") | |
125 | 157 | } | |
126 | 158 | ||
127 | 159 | ||
128 | - | func | |
129 | - | let | |
130 | - | let | |
131 | - | let | |
132 | - | let | |
133 | - | ([IntegerEntry( | |
134 | - | then | |
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) | |
135 | 167 | else false) | |
136 | - | then [StringEntry(K | |
137 | - | else if ( | |
138 | - | then [StringEntry( | |
139 | - | else if ( | |
140 | - | then [DeleteEntry( | |
141 | - | else if (( | |
142 | - | then [DeleteEntry( | |
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))] | |
143 | 175 | else throw("Invalid node"))) | |
144 | 176 | } | |
145 | 177 | ||
146 | 178 | ||
147 | - | func | |
179 | + | func Y () = "%s__managerPublicKey" | |
148 | 180 | ||
149 | 181 | ||
150 | - | func | |
182 | + | func Z () = "%s__pendingManagerPublicKey" | |
151 | 183 | ||
152 | 184 | ||
153 | - | func | |
154 | - | let | |
155 | - | if ($isInstanceOf( | |
185 | + | func aa () = { | |
186 | + | let x = getString(Y()) | |
187 | + | if ($isInstanceOf(x, "String")) | |
156 | 188 | then { | |
157 | - | let | |
158 | - | fromBase58String( | |
189 | + | let ab = x | |
190 | + | fromBase58String(ab) | |
159 | 191 | } | |
160 | - | else if ($isInstanceOf( | |
192 | + | else if ($isInstanceOf(x, "Unit")) | |
161 | 193 | then unit | |
162 | 194 | else throw("Match error") | |
163 | 195 | } | |
164 | 196 | ||
165 | 197 | ||
166 | - | func | |
167 | - | let | |
168 | - | if ($isInstanceOf( | |
198 | + | func ac () = { | |
199 | + | let x = getString(Z()) | |
200 | + | if ($isInstanceOf(x, "String")) | |
169 | 201 | then { | |
170 | - | let | |
171 | - | fromBase58String( | |
202 | + | let ab = x | |
203 | + | fromBase58String(ab) | |
172 | 204 | } | |
173 | - | else if ($isInstanceOf( | |
205 | + | else if ($isInstanceOf(x, "Unit")) | |
174 | 206 | then unit | |
175 | 207 | else throw("Match error") | |
176 | 208 | } | |
177 | 209 | ||
178 | 210 | ||
179 | - | func | |
180 | - | let | |
181 | - | let | |
182 | - | if ($isInstanceOf( | |
211 | + | func ad (ae) = { | |
212 | + | let af = throw("Permission denied") | |
213 | + | let x = aa() | |
214 | + | if ($isInstanceOf(x, "ByteVector")) | |
183 | 215 | then { | |
184 | - | let | |
185 | - | if (( | |
216 | + | let ag = x | |
217 | + | if ((ae.callerPublicKey == ag)) | |
186 | 218 | then true | |
187 | - | else | |
219 | + | else af | |
188 | 220 | } | |
189 | - | else if ($isInstanceOf( | |
190 | - | then if (( | |
221 | + | else if ($isInstanceOf(x, "Unit")) | |
222 | + | then if ((ae.caller == this)) | |
191 | 223 | then true | |
192 | - | else | |
224 | + | else af | |
193 | 225 | else throw("Match error") | |
194 | 226 | } | |
195 | 227 | ||
196 | 228 | ||
197 | - | @Callable( | |
198 | - | func setManager ( | |
199 | - | let | |
200 | - | if (( | |
229 | + | @Callable(ae) | |
230 | + | func setManager (ah) = { | |
231 | + | let ai = ad(ae) | |
232 | + | if ((ai == ai)) | |
201 | 233 | then { | |
202 | - | let | |
203 | - | if (( | |
204 | - | then [StringEntry( | |
234 | + | let aj = fromBase58String(ah) | |
235 | + | if ((aj == aj)) | |
236 | + | then [StringEntry(Z(), ah)] | |
205 | 237 | else throw("Strict value is not equal to itself.") | |
206 | 238 | } | |
207 | 239 | else throw("Strict value is not equal to itself.") | |
209 | 241 | ||
210 | 242 | ||
211 | 243 | ||
212 | - | @Callable( | |
244 | + | @Callable(ae) | |
213 | 245 | func confirmManager () = { | |
214 | - | let | |
215 | - | let | |
246 | + | let ak = ac() | |
247 | + | let al = if (isDefined(ak)) | |
216 | 248 | then true | |
217 | 249 | else throw("No pending manager") | |
218 | - | if (( | |
250 | + | if ((al == al)) | |
219 | 251 | then { | |
220 | - | let | |
252 | + | let am = if ((ae.callerPublicKey == value(ak))) | |
221 | 253 | then true | |
222 | 254 | else throw("You are not pending manager") | |
223 | - | if (( | |
224 | - | then [StringEntry( | |
255 | + | if ((am == am)) | |
256 | + | then [StringEntry(Y(), toBase58String(value(ak))), DeleteEntry(Z())] | |
225 | 257 | else throw("Strict value is not equal to itself.") | |
226 | 258 | } | |
227 | 259 | else throw("Strict value is not equal to itself.") | |
229 | 261 | ||
230 | 262 | ||
231 | 263 | ||
232 | - | @Callable( | |
233 | - | func getUserGwxAmountAtHeight ( | |
234 | - | let | |
264 | + | @Callable(ae) | |
265 | + | func getUserGwxAmountAtHeight (an,ao) = { | |
266 | + | let ap = valueOrErrorMessage(addressFromString(A(this, f)), "invalid boosting contract address") | |
235 | 267 | $Tuple2(nil, { | |
236 | - | let | |
237 | - | if ($isInstanceOf( | |
238 | - | then | |
268 | + | let B = invoke(ap, "getUserGwxAmountAtHeightREADONLY", [an, ao], nil) | |
269 | + | if ($isInstanceOf(B, "Int")) | |
270 | + | then B | |
239 | 271 | else throw("Couldn't cast Any to Int") | |
240 | 272 | }) | |
241 | 273 | } | |
242 | 274 | ||
243 | 275 | ||
244 | 276 | ||
245 | - | @Callable( | |
246 | - | func constructor ( | |
247 | - | let | |
277 | + | @Callable(ae) | |
278 | + | func constructor (aq,ar,as) = { | |
279 | + | let at = [ad(ae), if ((addressFromString(aq) != unit)) | |
248 | 280 | then true | |
249 | - | else "invalid voting emission candidate contract address", if ((addressFromString( | |
281 | + | else "invalid voting emission candidate contract address", if ((addressFromString(ar) != unit)) | |
250 | 282 | then true | |
251 | - | else "invalid boosting contract address", if (( | |
283 | + | else "invalid boosting contract address", if ((as > 0)) | |
252 | 284 | then true | |
253 | 285 | else throw("invalid epoch length")] | |
254 | - | if (( | |
255 | - | then $Tuple2([StringEntry( | |
286 | + | if ((at == at)) | |
287 | + | then $Tuple2([StringEntry(e, aq), StringEntry(f, ar), IntegerEntry(b, as)], unit) | |
256 | 288 | else throw("Strict value is not equal to itself.") | |
257 | 289 | } | |
258 | 290 | ||
259 | 291 | ||
260 | 292 | ||
261 | - | @Callable( | |
262 | - | func create (k | |
263 | - | let | |
293 | + | @Callable(ae) | |
294 | + | func create (j,k) = { | |
295 | + | let au = [if ((toBase58String(ae.caller.bytes) == valueOrElse(getString(this, e), ""))) | |
264 | 296 | then true | |
265 | - | else | |
266 | - | if (( | |
297 | + | else ad(ae)] | |
298 | + | if ((au == au)) | |
267 | 299 | then { | |
268 | - | let | |
269 | - | let | |
270 | - | let | |
271 | - | let | |
272 | - | then [IntegerEntry( | |
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)] | |
273 | 305 | else nil | |
274 | - | $Tuple2(( | |
306 | + | $Tuple2((av ++ ax), unit) | |
275 | 307 | } | |
276 | 308 | else throw("Strict value is not equal to itself.") | |
277 | 309 | } | |
278 | 310 | ||
279 | 311 | ||
280 | 312 | ||
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 | |
295 | 328 | else throw("Couldn't cast Any to Int") | |
296 | 329 | } | |
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)) | |
299 | 333 | then true | |
300 | - | else throw("invalid assets"), if (( | |
334 | + | else throw("invalid assets"), if ((aA > height)) | |
301 | 335 | then true | |
302 | - | else throw("invalid height"), if (( | |
336 | + | else throw("invalid height"), if ((aF > 0)) | |
303 | 337 | then true | |
304 | - | else throw("you do not have gWX"), if (if (( | |
305 | - | then ( | |
338 | + | else throw("you do not have gWX"), if (if ((ay > 0)) | |
339 | + | then (aG >= ay) | |
306 | 340 | else false) | |
307 | 341 | 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 | + | } | |
311 | 352 | else throw("Strict value is not equal to itself.") | |
312 | 353 | } | |
313 | 354 | ||
314 | 355 | ||
315 | 356 | ||
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)) | |
325 | 369 | then true | |
326 | - | else throw("invalid assets"), if (( | |
370 | + | else throw("invalid assets"), if ((aA > height)) | |
327 | 371 | then true | |
328 | - | else throw("invalid height"), if (( | |
372 | + | else throw("invalid height"), if ((aC > 0)) | |
329 | 373 | then true | |
330 | 374 | 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 | + | } | |
333 | 381 | else throw("Strict value is not equal to itself.") | |
334 | 382 | } | |
335 | 383 | ||
336 | 384 | ||
337 | 385 | ||
338 | - | @Callable( | |
339 | - | func setEpochLength ( | |
340 | - | let | |
386 | + | @Callable(ae) | |
387 | + | func setEpochLength (aL) = { | |
388 | + | let at = [ad(ae), if ((aL > 0)) | |
341 | 389 | then true | |
342 | 390 | else throw("invalid epoch length")] | |
343 | - | if (( | |
344 | - | then $Tuple2([IntegerEntry( | |
391 | + | if ((at == at)) | |
392 | + | then $Tuple2([IntegerEntry(b, aL)], unit) | |
345 | 393 | else throw("Strict value is not equal to itself.") | |
346 | 394 | } | |
347 | 395 | ||
348 | 396 | ||
349 | 397 | ||
350 | - | @Callable( | |
398 | + | @Callable(ae) | |
351 | 399 | func finalize () = $Tuple2(nil, unit) | |
352 | 400 | ||
353 | 401 | ||
354 | 402 | ||
355 | - | @Callable( | |
356 | - | func onVerificationLoss ( | |
403 | + | @Callable(ae) | |
404 | + | func onVerificationLoss (aM) = $Tuple2(nil, unit) | |
357 | 405 | ||
358 | 406 | ||
359 | - | @Verifier( | |
360 | - | func | |
361 | - | let | |
362 | - | let | |
363 | - | if ($isInstanceOf( | |
407 | + | @Verifier(aN) | |
408 | + | func aO () = { | |
409 | + | let aP = { | |
410 | + | let x = aa() | |
411 | + | if ($isInstanceOf(x, "ByteVector")) | |
364 | 412 | then { | |
365 | - | let | |
366 | - | | |
413 | + | let ag = x | |
414 | + | ag | |
367 | 415 | } | |
368 | - | else if ($isInstanceOf( | |
369 | - | then | |
416 | + | else if ($isInstanceOf(x, "Unit")) | |
417 | + | then aN.senderPublicKey | |
370 | 418 | else throw("Match error") | |
371 | 419 | } | |
372 | - | sigVerify( | |
420 | + | sigVerify(aN.bodyBytes, aN.proofs[0], aP) | |
373 | 421 | } | |
374 | 422 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "__" | |
5 | 5 | ||
6 | - | let b = | |
6 | + | let b = makeString(["%s", "epochLength"], a) | |
7 | 7 | ||
8 | - | let c = makeString(["%s", " | |
8 | + | let c = makeString(["%s", "currentEpoch"], a) | |
9 | 9 | ||
10 | - | let d = makeString(["%s", " | |
10 | + | let d = makeString(["%s", "startHeight"], a) | |
11 | 11 | ||
12 | - | let e = makeString(["%s", " | |
12 | + | let e = makeString(["%s", "votingEmissionCandidateContract"], a) | |
13 | 13 | ||
14 | - | let f = makeString(["%s", " | |
14 | + | let f = makeString(["%s", "boostingContract"], a) | |
15 | 15 | ||
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) | |
23 | 21 | } | |
24 | 22 | ||
25 | 23 | ||
26 | - | func | |
24 | + | func l (m,n) = makeString(["%s%s%d", "used", toString(m), toString(n)], a) | |
27 | 25 | ||
28 | 26 | ||
29 | - | func o (n | |
30 | - | let p = | |
31 | - | let | |
32 | - | let | |
33 | - | makeString(["%s%s%s%s", " | |
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) | |
34 | 32 | } | |
35 | 33 | ||
36 | 34 | ||
37 | - | func q ( | |
38 | - | let r = | |
39 | - | let | |
40 | - | let | |
41 | - | makeString(["%s%s%s", "votingResult", k, | |
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) | |
42 | 40 | } | |
43 | 41 | ||
44 | 42 | ||
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"], "") | |
47 | 48 | valueOrErrorMessage({ | |
48 | - | let | |
49 | - | if ($isInstanceOf( | |
49 | + | let x = v | |
50 | + | if ($isInstanceOf(x, "String")) | |
50 | 51 | then { | |
51 | - | let | |
52 | - | getString( | |
52 | + | let y = x | |
53 | + | getString(m, u) | |
53 | 54 | } | |
54 | - | else if ($isInstanceOf( | |
55 | + | else if ($isInstanceOf(x, "Int")) | |
55 | 56 | then { | |
56 | - | let | |
57 | - | getInteger( | |
57 | + | let z = x | |
58 | + | getInteger(m, u) | |
58 | 59 | } | |
59 | 60 | else throw("invalid entry type") | |
60 | - | }, | |
61 | + | }, w) | |
61 | 62 | } | |
62 | 63 | ||
63 | 64 | ||
64 | - | func | |
65 | - | let | |
66 | - | if ($isInstanceOf( | |
67 | - | then | |
65 | + | func A (m,u) = { | |
66 | + | let B = t(m, u, "") | |
67 | + | if ($isInstanceOf(B, "String")) | |
68 | + | then B | |
68 | 69 | else throw("Couldn't cast Int|String to String") | |
69 | 70 | } | |
70 | 71 | ||
71 | 72 | ||
72 | - | func | |
73 | - | let | |
74 | - | if ($isInstanceOf( | |
75 | - | then | |
73 | + | func C (m,u) = { | |
74 | + | let B = t(m, u, 0) | |
75 | + | if ($isInstanceOf(B, "Int")) | |
76 | + | then B | |
76 | 77 | else throw("Couldn't cast Int|String to Int") | |
77 | 78 | } | |
78 | 79 | ||
79 | 80 | ||
80 | - | ||
81 | + | func D (h) = ((h._1 + a) + h._2) | |
81 | 82 | ||
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") | |
87 | 89 | } | |
88 | 90 | ||
89 | 91 | ||
90 | - | ||
92 | + | let G = "pools" | |
91 | 93 | ||
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) | |
111 | 99 | } | |
112 | 100 | ||
113 | 101 | ||
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))) | |
118 | 150 | then true | |
119 | 151 | else throw("Node exists") | |
120 | - | if (( | |
121 | - | then (([IntegerEntry( | |
122 | - | then [StringEntry(K | |
123 | - | else nil)) ++ [StringEntry( | |
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)]) | |
124 | 156 | else throw("Strict value is not equal to itself.") | |
125 | 157 | } | |
126 | 158 | ||
127 | 159 | ||
128 | - | func | |
129 | - | let | |
130 | - | let | |
131 | - | let | |
132 | - | let | |
133 | - | ([IntegerEntry( | |
134 | - | then | |
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) | |
135 | 167 | else false) | |
136 | - | then [StringEntry(K | |
137 | - | else if ( | |
138 | - | then [StringEntry( | |
139 | - | else if ( | |
140 | - | then [DeleteEntry( | |
141 | - | else if (( | |
142 | - | then [DeleteEntry( | |
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))] | |
143 | 175 | else throw("Invalid node"))) | |
144 | 176 | } | |
145 | 177 | ||
146 | 178 | ||
147 | - | func | |
179 | + | func Y () = "%s__managerPublicKey" | |
148 | 180 | ||
149 | 181 | ||
150 | - | func | |
182 | + | func Z () = "%s__pendingManagerPublicKey" | |
151 | 183 | ||
152 | 184 | ||
153 | - | func | |
154 | - | let | |
155 | - | if ($isInstanceOf( | |
185 | + | func aa () = { | |
186 | + | let x = getString(Y()) | |
187 | + | if ($isInstanceOf(x, "String")) | |
156 | 188 | then { | |
157 | - | let | |
158 | - | fromBase58String( | |
189 | + | let ab = x | |
190 | + | fromBase58String(ab) | |
159 | 191 | } | |
160 | - | else if ($isInstanceOf( | |
192 | + | else if ($isInstanceOf(x, "Unit")) | |
161 | 193 | then unit | |
162 | 194 | else throw("Match error") | |
163 | 195 | } | |
164 | 196 | ||
165 | 197 | ||
166 | - | func | |
167 | - | let | |
168 | - | if ($isInstanceOf( | |
198 | + | func ac () = { | |
199 | + | let x = getString(Z()) | |
200 | + | if ($isInstanceOf(x, "String")) | |
169 | 201 | then { | |
170 | - | let | |
171 | - | fromBase58String( | |
202 | + | let ab = x | |
203 | + | fromBase58String(ab) | |
172 | 204 | } | |
173 | - | else if ($isInstanceOf( | |
205 | + | else if ($isInstanceOf(x, "Unit")) | |
174 | 206 | then unit | |
175 | 207 | else throw("Match error") | |
176 | 208 | } | |
177 | 209 | ||
178 | 210 | ||
179 | - | func | |
180 | - | let | |
181 | - | let | |
182 | - | if ($isInstanceOf( | |
211 | + | func ad (ae) = { | |
212 | + | let af = throw("Permission denied") | |
213 | + | let x = aa() | |
214 | + | if ($isInstanceOf(x, "ByteVector")) | |
183 | 215 | then { | |
184 | - | let | |
185 | - | if (( | |
216 | + | let ag = x | |
217 | + | if ((ae.callerPublicKey == ag)) | |
186 | 218 | then true | |
187 | - | else | |
219 | + | else af | |
188 | 220 | } | |
189 | - | else if ($isInstanceOf( | |
190 | - | then if (( | |
221 | + | else if ($isInstanceOf(x, "Unit")) | |
222 | + | then if ((ae.caller == this)) | |
191 | 223 | then true | |
192 | - | else | |
224 | + | else af | |
193 | 225 | else throw("Match error") | |
194 | 226 | } | |
195 | 227 | ||
196 | 228 | ||
197 | - | @Callable( | |
198 | - | func setManager ( | |
199 | - | let | |
200 | - | if (( | |
229 | + | @Callable(ae) | |
230 | + | func setManager (ah) = { | |
231 | + | let ai = ad(ae) | |
232 | + | if ((ai == ai)) | |
201 | 233 | then { | |
202 | - | let | |
203 | - | if (( | |
204 | - | then [StringEntry( | |
234 | + | let aj = fromBase58String(ah) | |
235 | + | if ((aj == aj)) | |
236 | + | then [StringEntry(Z(), ah)] | |
205 | 237 | else throw("Strict value is not equal to itself.") | |
206 | 238 | } | |
207 | 239 | else throw("Strict value is not equal to itself.") | |
208 | 240 | } | |
209 | 241 | ||
210 | 242 | ||
211 | 243 | ||
212 | - | @Callable( | |
244 | + | @Callable(ae) | |
213 | 245 | func confirmManager () = { | |
214 | - | let | |
215 | - | let | |
246 | + | let ak = ac() | |
247 | + | let al = if (isDefined(ak)) | |
216 | 248 | then true | |
217 | 249 | else throw("No pending manager") | |
218 | - | if (( | |
250 | + | if ((al == al)) | |
219 | 251 | then { | |
220 | - | let | |
252 | + | let am = if ((ae.callerPublicKey == value(ak))) | |
221 | 253 | then true | |
222 | 254 | else throw("You are not pending manager") | |
223 | - | if (( | |
224 | - | then [StringEntry( | |
255 | + | if ((am == am)) | |
256 | + | then [StringEntry(Y(), toBase58String(value(ak))), DeleteEntry(Z())] | |
225 | 257 | else throw("Strict value is not equal to itself.") | |
226 | 258 | } | |
227 | 259 | else throw("Strict value is not equal to itself.") | |
228 | 260 | } | |
229 | 261 | ||
230 | 262 | ||
231 | 263 | ||
232 | - | @Callable( | |
233 | - | func getUserGwxAmountAtHeight ( | |
234 | - | let | |
264 | + | @Callable(ae) | |
265 | + | func getUserGwxAmountAtHeight (an,ao) = { | |
266 | + | let ap = valueOrErrorMessage(addressFromString(A(this, f)), "invalid boosting contract address") | |
235 | 267 | $Tuple2(nil, { | |
236 | - | let | |
237 | - | if ($isInstanceOf( | |
238 | - | then | |
268 | + | let B = invoke(ap, "getUserGwxAmountAtHeightREADONLY", [an, ao], nil) | |
269 | + | if ($isInstanceOf(B, "Int")) | |
270 | + | then B | |
239 | 271 | else throw("Couldn't cast Any to Int") | |
240 | 272 | }) | |
241 | 273 | } | |
242 | 274 | ||
243 | 275 | ||
244 | 276 | ||
245 | - | @Callable( | |
246 | - | func constructor ( | |
247 | - | let | |
277 | + | @Callable(ae) | |
278 | + | func constructor (aq,ar,as) = { | |
279 | + | let at = [ad(ae), if ((addressFromString(aq) != unit)) | |
248 | 280 | then true | |
249 | - | else "invalid voting emission candidate contract address", if ((addressFromString( | |
281 | + | else "invalid voting emission candidate contract address", if ((addressFromString(ar) != unit)) | |
250 | 282 | then true | |
251 | - | else "invalid boosting contract address", if (( | |
283 | + | else "invalid boosting contract address", if ((as > 0)) | |
252 | 284 | then true | |
253 | 285 | else throw("invalid epoch length")] | |
254 | - | if (( | |
255 | - | then $Tuple2([StringEntry( | |
286 | + | if ((at == at)) | |
287 | + | then $Tuple2([StringEntry(e, aq), StringEntry(f, ar), IntegerEntry(b, as)], unit) | |
256 | 288 | else throw("Strict value is not equal to itself.") | |
257 | 289 | } | |
258 | 290 | ||
259 | 291 | ||
260 | 292 | ||
261 | - | @Callable( | |
262 | - | func create (k | |
263 | - | let | |
293 | + | @Callable(ae) | |
294 | + | func create (j,k) = { | |
295 | + | let au = [if ((toBase58String(ae.caller.bytes) == valueOrElse(getString(this, e), ""))) | |
264 | 296 | then true | |
265 | - | else | |
266 | - | if (( | |
297 | + | else ad(ae)] | |
298 | + | if ((au == au)) | |
267 | 299 | then { | |
268 | - | let | |
269 | - | let | |
270 | - | let | |
271 | - | let | |
272 | - | then [IntegerEntry( | |
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)] | |
273 | 305 | else nil | |
274 | - | $Tuple2(( | |
306 | + | $Tuple2((av ++ ax), unit) | |
275 | 307 | } | |
276 | 308 | else throw("Strict value is not equal to itself.") | |
277 | 309 | } | |
278 | 310 | ||
279 | 311 | ||
280 | 312 | ||
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 | |
295 | 328 | else throw("Couldn't cast Any to Int") | |
296 | 329 | } | |
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)) | |
299 | 333 | then true | |
300 | - | else throw("invalid assets"), if (( | |
334 | + | else throw("invalid assets"), if ((aA > height)) | |
301 | 335 | then true | |
302 | - | else throw("invalid height"), if (( | |
336 | + | else throw("invalid height"), if ((aF > 0)) | |
303 | 337 | then true | |
304 | - | else throw("you do not have gWX"), if (if (( | |
305 | - | then ( | |
338 | + | else throw("you do not have gWX"), if (if ((ay > 0)) | |
339 | + | then (aG >= ay) | |
306 | 340 | else false) | |
307 | 341 | 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 | + | } | |
311 | 352 | else throw("Strict value is not equal to itself.") | |
312 | 353 | } | |
313 | 354 | ||
314 | 355 | ||
315 | 356 | ||
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)) | |
325 | 369 | then true | |
326 | - | else throw("invalid assets"), if (( | |
370 | + | else throw("invalid assets"), if ((aA > height)) | |
327 | 371 | then true | |
328 | - | else throw("invalid height"), if (( | |
372 | + | else throw("invalid height"), if ((aC > 0)) | |
329 | 373 | then true | |
330 | 374 | 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 | + | } | |
333 | 381 | else throw("Strict value is not equal to itself.") | |
334 | 382 | } | |
335 | 383 | ||
336 | 384 | ||
337 | 385 | ||
338 | - | @Callable( | |
339 | - | func setEpochLength ( | |
340 | - | let | |
386 | + | @Callable(ae) | |
387 | + | func setEpochLength (aL) = { | |
388 | + | let at = [ad(ae), if ((aL > 0)) | |
341 | 389 | then true | |
342 | 390 | else throw("invalid epoch length")] | |
343 | - | if (( | |
344 | - | then $Tuple2([IntegerEntry( | |
391 | + | if ((at == at)) | |
392 | + | then $Tuple2([IntegerEntry(b, aL)], unit) | |
345 | 393 | else throw("Strict value is not equal to itself.") | |
346 | 394 | } | |
347 | 395 | ||
348 | 396 | ||
349 | 397 | ||
350 | - | @Callable( | |
398 | + | @Callable(ae) | |
351 | 399 | func finalize () = $Tuple2(nil, unit) | |
352 | 400 | ||
353 | 401 | ||
354 | 402 | ||
355 | - | @Callable( | |
356 | - | func onVerificationLoss ( | |
403 | + | @Callable(ae) | |
404 | + | func onVerificationLoss (aM) = $Tuple2(nil, unit) | |
357 | 405 | ||
358 | 406 | ||
359 | - | @Verifier( | |
360 | - | func | |
361 | - | let | |
362 | - | let | |
363 | - | if ($isInstanceOf( | |
407 | + | @Verifier(aN) | |
408 | + | func aO () = { | |
409 | + | let aP = { | |
410 | + | let x = aa() | |
411 | + | if ($isInstanceOf(x, "ByteVector")) | |
364 | 412 | then { | |
365 | - | let | |
366 | - | | |
413 | + | let ag = x | |
414 | + | ag | |
367 | 415 | } | |
368 | - | else if ($isInstanceOf( | |
369 | - | then | |
416 | + | else if ($isInstanceOf(x, "Unit")) | |
417 | + | then aN.senderPublicKey | |
370 | 418 | else throw("Match error") | |
371 | 419 | } | |
372 | - | sigVerify( | |
420 | + | sigVerify(aN.bodyBytes, aN.proofs[0], aP) | |
373 | 421 | } | |
374 | 422 |
github/deemru/w8io/169f3d6 100.08 ms ◑