4 | | - | let a = Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV') |
---|
5 | | - | |
---|
6 | | - | let b = base58'Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on' |
---|
7 | | - | |
---|
8 | | - | let c = base58'BbP9tmd5Zxk345y9zipXkYaqDfxDG1suTj64eJmy1BAT' |
---|
9 | | - | |
---|
10 | | - | let d = base58'Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on' |
---|
11 | | - | |
---|
12 | | - | let e = Address(base58'3PJL8Hn8LACaSBWLQ3UVhctA5cTQLBFwBAP') |
---|
13 | | - | |
---|
14 | | - | let f = base58'8CPfYYUFZvLwMYqdhtwKnrQMAAnWiVakm3mf8MRGKtzN' |
---|
15 | | - | |
---|
16 | | - | let g = base58'Aa5tsh5uzQYAYpDYswmQko1c79PSYLrGbwRZ5sBViNx5' |
---|
17 | | - | |
---|
18 | | - | let h = base58'mTQL3HhYMeLQCe34H45YtLjbQeg5QyZJ5EPyU8An8jj' |
---|
19 | | - | |
---|
20 | | - | let i = base58'HrzjFpn3V1Y5bB8r3JKGgR6qWUixJxuvToFXGJ4WDQu9' |
---|
21 | | - | |
---|
22 | | - | @Callable(j) |
---|
23 | | - | func stakeLP () = { |
---|
24 | | - | let k = toString(j.caller) |
---|
25 | | - | let l = valueOrElse(getBoolean((k + "_whitelisted")), false) |
---|
26 | | - | let m = valueOrElse(getString((k + "_assetId")), "") |
---|
27 | | - | if (if (if (if (l) |
---|
28 | | - | then (size(j.payments) == 1) |
---|
29 | | - | else false) |
---|
30 | | - | then (j.payments[0].amount > 0) |
---|
31 | | - | else false) |
---|
32 | | - | then (j.payments[0].assetId == fromBase58String(m)) |
---|
33 | | - | else false) |
---|
34 | | - | then { |
---|
35 | | - | let n = invoke(a, "stake", nil, [AttachedPayment(j.payments[0].assetId, j.payments[0].amount)]) |
---|
36 | | - | if ((n == n)) |
---|
37 | | - | then { |
---|
38 | | - | let o = (valueOrElse(getInteger((((k + "_") + m) + "_balance")), 0) + j.payments[0].amount) |
---|
39 | | - | $Tuple2([IntegerEntry((((k + "_") + m) + "_balance"), o)], unit) |
---|
40 | | - | } |
---|
41 | | - | else throw("Strict value is not equal to itself.") |
---|
42 | | - | } |
---|
43 | | - | else throw("") |
---|
44 | | - | } |
---|
47 | | - | |
---|
48 | | - | @Callable(j) |
---|
49 | | - | func unstakeLP (p) = { |
---|
50 | | - | let k = toString(j.caller) |
---|
51 | | - | let l = valueOrElse(getBoolean((k + "_whitelisted")), false) |
---|
52 | | - | if (l) |
---|
53 | | - | then { |
---|
54 | | - | let m = valueOrElse(getString((k + "_assetId")), "") |
---|
55 | | - | let q = invoke(a, "unstake", [m, p], nil) |
---|
56 | | - | if ((q == q)) |
---|
57 | | - | then { |
---|
58 | | - | let o = (valueOrElse(getInteger((((k + "_") + m) + "_balance")), 0) - p) |
---|
59 | | - | $Tuple2([ScriptTransfer(j.caller, p, fromBase58String(m)), IntegerEntry((((k + "_") + m) + "_balance"), o)], unit) |
---|
60 | | - | } |
---|
61 | | - | else throw("Strict value is not equal to itself.") |
---|
62 | | - | } |
---|
63 | | - | else throw("") |
---|
64 | | - | } |
---|
| 6 | + | @Callable(a) |
---|
| 7 | + | func call () = [DeleteEntry("3P81DBRyX9g5Yvp5JwbFUCifCEaCJKNYwH3_7KZbJrVopwJhkdwbe1eFDBbex4dkY63MxjTNjqXtrzj1_wxb_allocation"), DeleteEntry("3P81DBRyX9g5Yvp5JwbFUCifCEaCJKNYwH3_assetId"), DeleteEntry("3P81DBRyX9g5Yvp5JwbFUCifCEaCJKNYwH3_whitelisted"), DeleteEntry("3P8Cp9QZBModLq5tpXBufZNTN8XKetdhwUr_8WhH5CCJ6NakPvEvAJcizqqD7H6axhupdYHDFumSDwsy_wxb_allocation"), DeleteEntry("3P8Cp9QZBModLq5tpXBufZNTN8XKetdhwUr_assetId"), DeleteEntry("3P8Cp9QZBModLq5tpXBufZNTN8XKetdhwUr_whitelisted"), DeleteEntry("3P8hDZEPEmiZg6uSzTJEyFtH1CrSdfZZDFf_6gtgBD12xZkUTnzGofoFJpMg5gYG1FP6PaGyLviVQjbh_wxb_allocation"), DeleteEntry("3P8hDZEPEmiZg6uSzTJEyFtH1CrSdfZZDFf_assetId"), DeleteEntry("3P8hDZEPEmiZg6uSzTJEyFtH1CrSdfZZDFf_whitelisted"), DeleteEntry("3PHZCqvP4Has7egYebykZMtGUsrEyMYbMac_F2AKkA513k5yHEJkLsU6vWxCYYk811GpjLhwEv2WGwZ9_wxb_allocation"), DeleteEntry("3PHZCqvP4Has7egYebykZMtGUsrEyMYbMac_assetId"), DeleteEntry("3PHZCqvP4Has7egYebykZMtGUsrEyMYbMac_whitelisted"), DeleteEntry("3PQ2FqHk4fPfpcoF2qfQATGVPsgxwgPTsqo_97zHFp1C3cB7qfvx8Xv5f2rWp9nUSG5UnAamfPcW6txf_balance"), DeleteEntry("3PQ2FqHk4fPfpcoF2qfQATGVPsgxwgPTsqo_97zHFp1C3cB7qfvx8Xv5f2rWp9nUSG5UnAamfPcW6txf_wxb_allocation"), DeleteEntry("3PQ2FqHk4fPfpcoF2qfQATGVPsgxwgPTsqo_assetId"), DeleteEntry("3PQ2FqHk4fPfpcoF2qfQATGVPsgxwgPTsqo_whitelisted"), DeleteEntry("fee"), DeleteEntry("initialized"), DeleteEntry("it_all_started_in_this_block"), DeleteEntry("lock_duration"), DeleteEntry("total_locked_wx")] |
---|
67 | | - | |
---|
68 | | - | @Callable(j) |
---|
69 | | - | func claim () = { |
---|
70 | | - | let k = toString(j.caller) |
---|
71 | | - | let l = valueOrElse(getBoolean((k + "_whitelisted")), false) |
---|
72 | | - | if (l) |
---|
73 | | - | then { |
---|
74 | | - | let m = valueOrElse(getString((k + "_assetId")), "") |
---|
75 | | - | let r = assetBalance(this, b) |
---|
76 | | - | if ((r == r)) |
---|
77 | | - | then { |
---|
78 | | - | let s = invoke(a, "claimWx", [m], nil) |
---|
79 | | - | if ((s == s)) |
---|
80 | | - | then { |
---|
81 | | - | let t = (assetBalance(this, b) - r) |
---|
82 | | - | if ((t == t)) |
---|
83 | | - | then { |
---|
84 | | - | let u = (valueOrElse(getInteger((((k + "_") + m) + "_total_claimed_wx")), 0) + t) |
---|
85 | | - | let v = (valueOrElse(getInteger(this, "total_claimed_wx"), 0) + t) |
---|
86 | | - | let w = getIntegerValue(this, "fee") |
---|
87 | | - | let x = fraction(t, w, 100) |
---|
88 | | - | let y = (valueOrElse(getInteger((((k + "_") + m) + "_total_collected_fee")), 0) + x) |
---|
89 | | - | let z = (valueOrElse(getInteger("total_collected_fee"), 0) + x) |
---|
90 | | - | let A = invoke(e, "increaseLock", [0], [AttachedPayment(b, x)]) |
---|
91 | | - | if ((A == A)) |
---|
92 | | - | then { |
---|
93 | | - | let B = (valueOrElse(getInteger("total_locked_wx"), 0) + x) |
---|
94 | | - | let C = valueOrElse(getInteger((((k + "_") + m) + "_wxb_allocation")), 0) |
---|
95 | | - | let D = (valueOrElse(getInteger((((k + "_") + m) + "_total_claimed_wxb")), 0) + C) |
---|
96 | | - | let E = (valueOrElse(getInteger("total_claimed_wxb"), 0) + C) |
---|
97 | | - | $Tuple2([ScriptTransfer(j.caller, (t - x), b), ScriptTransfer(j.caller, C, c), IntegerEntry("total_locked_wx", B), IntegerEntry((((k + "_") + m) + "_total_claimed_wx"), u), IntegerEntry("total_claimed_wx", v), IntegerEntry((((k + "_") + m) + "_total_claimed_wxb"), u), IntegerEntry("total_claimed_wxb", E), IntegerEntry((((k + "_") + m) + "_total_collected_fee"), y), IntegerEntry("total_collected_fee", z)], unit) |
---|
98 | | - | } |
---|
99 | | - | else throw("Strict value is not equal to itself.") |
---|
100 | | - | } |
---|
101 | | - | else throw("Strict value is not equal to itself.") |
---|
102 | | - | } |
---|
103 | | - | else throw("Strict value is not equal to itself.") |
---|
104 | | - | } |
---|
105 | | - | else throw("Strict value is not equal to itself.") |
---|
106 | | - | } |
---|
107 | | - | else throw("") |
---|
108 | | - | } |
---|
109 | | - | |
---|
110 | | - | |
---|
111 | | - | |
---|
112 | | - | @Callable(j) |
---|
113 | | - | func init () = { |
---|
114 | | - | let F = valueOrElse(getBoolean("initialized"), false) |
---|
115 | | - | if (!(F)) |
---|
116 | | - | then { |
---|
117 | | - | let G = invoke(e, "lock", [2102400], [AttachedPayment(j.payments[0].assetId, j.payments[0].amount)]) |
---|
118 | | - | if ((G == G)) |
---|
119 | | - | then $Tuple2([BooleanEntry("initialized", true), IntegerEntry("it_all_started_in_this_block", height), IntegerEntry("total_locked_wx", j.payments[0].amount), IntegerEntry("lock_duration", (2102400 + height)), IntegerEntry("fee", 10)], unit) |
---|
120 | | - | else throw("Strict value is not equal to itself.") |
---|
121 | | - | } |
---|
122 | | - | else throw("") |
---|
123 | | - | } |
---|
124 | | - | |
---|
125 | | - | |
---|
126 | | - | |
---|
127 | | - | @Callable(j) |
---|
128 | | - | func setFee (x) = if ((j.caller == this)) |
---|
129 | | - | then $Tuple2([IntegerEntry("fee", x)], unit) |
---|
130 | | - | else throw("") |
---|
131 | | - | |
---|
132 | | - | |
---|
133 | | - | |
---|
134 | | - | @Callable(j) |
---|
135 | | - | func whitelist (H,I,J) = if ((j.caller == this)) |
---|
136 | | - | then $Tuple2([BooleanEntry((H + "_whitelisted"), true), StringEntry((H + "_assetId"), I), IntegerEntry((((H + "_") + I) + "_wxb_allocation"), J)], unit) |
---|
137 | | - | else throw("") |
---|
138 | | - | |
---|
139 | | - | |
---|
140 | | - | |
---|
141 | | - | @Callable(j) |
---|
142 | | - | func setAllocation (p,H,I) = if (containsElement([f, g, h, i], j.callerPublicKey)) |
---|
143 | | - | then [IntegerEntry((((H + "_") + I) + "_wxb_allocation"), p)] |
---|
144 | | - | else throw("") |
---|
145 | | - | |
---|
146 | | - | |
---|
147 | | - | |
---|
148 | | - | @Callable(j) |
---|
149 | | - | func giveaway () = { |
---|
150 | | - | let k = toString(j.caller) |
---|
151 | | - | let l = valueOrElse(getBoolean((k + "_whitelisted")), false) |
---|
152 | | - | if (if (if (if (l) |
---|
153 | | - | then (size(j.payments) == 1) |
---|
154 | | - | else false) |
---|
155 | | - | then (j.payments[0].assetId == d) |
---|
156 | | - | else false) |
---|
157 | | - | then (j.payments[0].amount > 0) |
---|
158 | | - | else false) |
---|
159 | | - | then { |
---|
160 | | - | let A = invoke(e, "increaseLock", [0], [AttachedPayment(d, j.payments[0].amount)]) |
---|
161 | | - | if ((A == A)) |
---|
162 | | - | then { |
---|
163 | | - | let B = (valueOrElse(getInteger("total_locked_wx"), 0) + j.payments[0].amount) |
---|
164 | | - | let K = (valueOrElse(getInteger("total_giveaway_wx"), 0) + j.payments[0].amount) |
---|
165 | | - | $Tuple2([IntegerEntry("total_locked_wx", B), IntegerEntry("total_giveaway_wx", K)], unit) |
---|
166 | | - | } |
---|
167 | | - | else throw("Strict value is not equal to itself.") |
---|
168 | | - | } |
---|
169 | | - | else throw("") |
---|
170 | | - | } |
---|
171 | | - | |
---|
172 | | - | |
---|
173 | | - | |
---|
174 | | - | @Callable(j) |
---|
175 | | - | func increaseLockDuration (L) = if (containsElement([f, g, h, i], j.callerPublicKey)) |
---|
176 | | - | then { |
---|
177 | | - | let M = invoke(e, "increaseLock", [L], nil) |
---|
178 | | - | if ((M == M)) |
---|
179 | | - | then { |
---|
180 | | - | let N = (getIntegerValue("lock_duration") + L) |
---|
181 | | - | $Tuple2([IntegerEntry("lock_duration", N)], unit) |
---|
182 | | - | } |
---|
183 | | - | else throw("Strict value is not equal to itself.") |
---|
184 | | - | } |
---|
185 | | - | else throw("") |
---|
186 | | - | |
---|
187 | | - | |
---|
188 | | - | @Verifier(O) |
---|
189 | | - | func P () = { |
---|
190 | | - | let Q = if (sigVerify(O.bodyBytes, O.proofs[0], f)) |
---|
191 | | - | then 1 |
---|
192 | | - | else 0 |
---|
193 | | - | let R = if (sigVerify(O.bodyBytes, O.proofs[1], g)) |
---|
194 | | - | then 1 |
---|
195 | | - | else 0 |
---|
196 | | - | let S = if (sigVerify(O.bodyBytes, O.proofs[2], h)) |
---|
197 | | - | then 1 |
---|
198 | | - | else 0 |
---|
199 | | - | let T = if (sigVerify(O.bodyBytes, O.proofs[3], i)) |
---|
200 | | - | then 1 |
---|
201 | | - | else 0 |
---|
202 | | - | ((((Q + R) + S) + T) >= 3) |
---|
203 | | - | } |
---|
| 10 | + | @Verifier(b) |
---|
| 11 | + | func c () = sigVerify(b.bodyBytes, b.proofs[0], b.senderPublicKey) |
---|