tx · 71Ud8HWFhSJpMryN2zzM7x5MpCJM3L1n2uBZFScoB3wA 3N1Epwa6GQuTQr2K9WzeUcqSFCdERwuvL5T: -0.01900000 Waves 2023.01.10 13:43 [2398741] smart account 3N1Epwa6GQuTQr2K9WzeUcqSFCdERwuvL5T > SELF 0.00000000 Waves
{ "type": 13, "id": "71Ud8HWFhSJpMryN2zzM7x5MpCJM3L1n2uBZFScoB3wA", "fee": 1900000, "feeAssetId": null, "timestamp": 1673347394571, "version": 1, "sender": "3N1Epwa6GQuTQr2K9WzeUcqSFCdERwuvL5T", "senderPublicKey": "7iXEgsFNsnbLZ3ca4tmz8jffnyxMu9keuBV6CuQPJLuA", "proofs": [ "2MDRXntpCfhFi5EgBheN2ghWZ6n5LHDheeYqG5g916P2Z3VwFsBS7nk5wECLisDnDCsd4WC18d42pe5HHEHjsVwd" ], "script": "base64:AAIFAAAAAAAABlcIAhINCgsICAgICAgBCAEIARIDCgEBEgQKAggIEgUKAwgIBBIECgIICBIDCgEBEgMKAQESBAoCCAgSAwoBCBIAIglzZXBhcmF0b3IiDGtleUZlZUFtb3VudCIOa2V5VXNkbkFzc2V0SWQiDmtleUVwb2NoTGVuZ3RoIhFrZXlGaW5hbGl6ZVJld2FyZCIMa2V5V3hBc3NldElkIhZrZXlBc3NldHNTdG9yZUNvbnRyYWN0IhNrZXlVc2VyUG9vbENvbnRyYWN0IhNrZXlFbWlzc2lvbkNvbnRyYWN0IhNrZXlCb29zdGluZ0NvbnRyYWN0IhJrZXlGYWN0b3J5Q29udHJhY3QiGWtleVZvdGluZ0VtaXNzaW9uQ29udHJhY3QiDGtleVRocmVzaG9sZCIPZ2V0U3RyaW5nT3JGYWlsIgNrZXkiDGdldEludE9yRmFpbCIQa2V5SW5MaXN0QXNzZXRJZCINYW1vdW50QXNzZXRJZCIMcHJpY2VBc3NldElkIg9rZXlTdWdnZXN0SW5kZXgiDmtleVN0YXJ0SGVpZ2h0IgxzdWdnZXN0SW5kZXgiD2tleVZvdGluZ1Jlc3VsdCIKdG90YWxWb3RlcyIIdG90YWxZZXMiB3RvdGFsTm8iB2tleVZvdGUiDHZvdGVyQWRkcmVzcyIMa2V5Vm90ZVZhbHVlIglnd3hBbW91bnQiBHZvdGUiCWtleUluTGlzdCIEcG9vbCILJHQwMjQ2MzI1MDMiE2tleU1hbmFnZXJQdWJsaWNLZXkiGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5IhNhc3NldHNTdG9yZUNvbnRyYWN0IhBib29zdGluZ0NvbnRyYWN0IhBlbWlzc2lvbkNvbnRyYWN0Ig9mYWN0b3J5Q29udHJhY3QiEHVzZXJQb29sQ29udHJhY3QiFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiByRtYXRjaDAiAXMiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0Iglpc01hbmFnZXIiAWkiAnBrIgttdXN0TWFuYWdlciIFYXNJbnQiA3ZhbCIGdmFsSW50IhZhc3NldHNTdG9yZUNvbnRyYWN0UHJtIhNib29zdGluZ0NvbnRyYWN0UHJtIhNlbWlzc2lvbkNvbnRyYWN0UHJtIhJmYWN0b3J5Q29udHJhY3RQcm0iE3VzZXJQb29sQ29udHJhY3RQcm0iGXZvdGluZ0VtaXNzaW9uQ29udHJhY3RQcm0iDGZlZUFtb3VudFBybSIMd3hBc3NldElkUHJtIhF2b3RpbmdEdXJhdGlvblBybSIOdXNkbkFzc2V0SWRQcm0iEWZpbmFsaXplUmV3YXJkUHJtIgZjaGVja3MiCXRocmVzaG9sZCIHcGF5bWVudCIQY2hlY2tBbW91bnRBc3NldCIEaW5mbyIMZW5zdXJlQWN0aXZlIhllbnN1cmVBbW91bnRBc3NldFZlcmlmaWVkIgNpbnYiAWIiCmJ1cm5GZWVJbnYiD25ld1N1Z2dlc3RJbmRleCIDaW50IgdpbkZhdm9yIhJ2b3RpbmdGaW5pc2hIZWlnaHQiB25vdFplcm8iCXZvdGVWYWx1ZSIIdm90ZVR5cGUiEWlzVm90ZVR5cGVTaW1pbGFyIhJpc1ZvdGVWYWx1ZVNpbWlsYXIiEGlzTmV3Vm90ZVNpbWlsYXIiAXUiDHZvdGluZ1Jlc3VsdCINcG9zaXRpdmVWb3RlcyINbmVnYXRpdmVWb3RlcyIbbmV3UG9zaXRpdmVBbmROZWdhdGl2ZVZvdGVzIhBuZXdQb3NpdGl2ZVZvdGVzIhBuZXdOZWdhdGl2ZVZvdGVzIgd2b3RlS2V5Igt1c2VyQWRkcmVzcyIHYWN0aW9ucyIGbmV3RmVlIgxuZXdUaHJlc2hvbGQiCGFsbFZvdGVzIgNyZXMiEXZvdGluZ0VtaXNzaW9uSW52IhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSILY2hlY2tDYWxsZXIiFWNoZWNrTWFuYWdlclB1YmxpY0tleSICcG0iBWhhc1BNIgdjaGVja1BNIgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkAAAAkAAAAAAFhAgAAAAJfXwAAAAABYgkABLkAAAACCQAETAAAAAICAAAAAiVzCQAETAAAAAICAAAAA2ZlZQUAAAADbmlsBQAAAAFhAAAAAAFjCQAEuQAAAAIJAARMAAAAAgIAAAACJXMJAARMAAAAAgIAAAALdXNkbkFzc2V0SWQFAAAAA25pbAUAAAABYQAAAAABZAkABLkAAAACCQAETAAAAAIC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", "chainId": 84, "height": 2398741, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HSSgoJad1EMVsHSohxX4DnygKLKyTtTbDVE7L62fGfXh Next: 6mJoi84NMtLPsVKujuiyDpB2TUDHx7qcAZE9KoSqQSZj Diff:
Old | New | Differences | |
---|---|---|---|
186 | 186 | func suggest (r,s) = { | |
187 | 187 | let G = $Tuple2(r, s) | |
188 | 188 | let ao = value(V.payments[0]) | |
189 | - | let ap = valueOrErrorMessage(assetInfo(fromBase58String(r)), "invalid amountAssetId ID") | |
190 | - | let am = [if ((ap.scripted == false)) | |
191 | - | then true | |
192 | - | else throw("asset is smart"), if ((toBase58String(value(ao.assetId)) == value(getString(f)))) | |
193 | - | then true | |
194 | - | else throw("invalid fee asset"), if ((ao.amount == value(getInteger(b)))) | |
195 | - | then true | |
196 | - | else throw("invalid fee amount"), if ((getInteger(q(r, s)) == unit)) | |
197 | - | then true | |
198 | - | else throw("already in voting list"), if (!(valueOrElse(getBoolean(P, F(G)), false))) | |
199 | - | then true | |
200 | - | else throw("pool is in emission voting list")] | |
201 | - | if ((am == am)) | |
189 | + | let ap = if ((r == "WAVES")) | |
190 | + | then unit | |
191 | + | else { | |
192 | + | let aq = valueOrErrorMessage(assetInfo(fromBase58String(r)), "invalid amountAssetId ID") | |
193 | + | if ((aq.scripted == false)) | |
194 | + | then true | |
195 | + | else throw("asset is smart") | |
196 | + | } | |
197 | + | if ((ap == ap)) | |
202 | 198 | then { | |
203 | - | let aq = { | |
204 | - | let R = invoke(O, "statusREADONLY", [r, s], nil) | |
205 | - | if ($isInstanceOf(R, "String")) | |
206 | - | then { | |
207 | - | let S = R | |
208 | - | if ((S == "active")) | |
209 | - | then true | |
199 | + | let am = [if ((toBase58String(value(ao.assetId)) == value(getString(f)))) | |
200 | + | then true | |
201 | + | else throw("invalid fee asset"), if ((ao.amount == value(getInteger(b)))) | |
202 | + | then true | |
203 | + | else throw("invalid fee amount"), if ((getInteger(q(r, s)) == unit)) | |
204 | + | then true | |
205 | + | else throw("already in voting list"), if (!(valueOrElse(getBoolean(P, F(G)), false))) | |
206 | + | then true | |
207 | + | else throw("pool is in emission voting list")] | |
208 | + | if ((am == am)) | |
209 | + | then { | |
210 | + | let ar = { | |
211 | + | let R = invoke(O, "statusREADONLY", [r, s], nil) | |
212 | + | if ($isInstanceOf(R, "String")) | |
213 | + | then { | |
214 | + | let S = R | |
215 | + | if ((S == "active")) | |
216 | + | then true | |
217 | + | else throw("user pool is not active") | |
218 | + | } | |
210 | 219 | else throw("user pool is not active") | |
211 | 220 | } | |
212 | - | | |
213 | - | | |
214 | - | if (( | |
215 | - | then | |
216 | - | | |
217 | - | | |
218 | - | | |
219 | - | | |
220 | - | | |
221 | - | | |
222 | - | | |
223 | - | | |
224 | - | | |
225 | - | | |
221 | + | if ((ar == ar)) | |
222 | + | then { | |
223 | + | let as = if (U(V)) | |
224 | + | then unit | |
225 | + | else { | |
226 | + | let at = { | |
227 | + | let R = invoke(K, "isVerifiedREADONLY", [r], nil) | |
228 | + | if ($isInstanceOf(R, "Boolean")) | |
229 | + | then { | |
230 | + | let au = R | |
231 | + | if (au) | |
232 | + | then true | |
233 | + | else throw("asset is not verified") | |
234 | + | } | |
226 | 235 | else throw("asset is not verified") | |
227 | 236 | } | |
228 | - | else throw("asset is not verified") | |
229 | - | } | |
237 | + | if ((at == at)) | |
238 | + | then unit | |
239 | + | else throw("Strict value is not equal to itself.") | |
240 | + | } | |
230 | 241 | if ((as == as)) | |
231 | - | then unit | |
232 | - | else throw("Strict value is not equal to itself.") | |
233 | - | } | |
234 | - | if ((ar == ar)) | |
235 | - | then { | |
236 | - | let au = invoke(M, "burn", nil, [AttachedPayment(ao.assetId, ao.amount)]) | |
237 | - | if ((au == au)) | |
238 | 242 | then { | |
239 | - | let av = { | |
240 | - | let R = getInteger(t(r, s)) | |
241 | - | if ($isInstanceOf(R, "Int")) | |
242 | - | then { | |
243 | - | let aw = R | |
244 | - | (aw + 1) | |
243 | + | let av = invoke(M, "burn", nil, [AttachedPayment(ao.assetId, ao.amount)]) | |
244 | + | if ((av == av)) | |
245 | + | then { | |
246 | + | let aw = { | |
247 | + | let R = getInteger(t(r, s)) | |
248 | + | if ($isInstanceOf(R, "Int")) | |
249 | + | then { | |
250 | + | let ax = R | |
251 | + | (ax + 1) | |
252 | + | } | |
253 | + | else 0 | |
245 | 254 | } | |
246 | - | | |
247 | - | } | |
248 | - | | |
255 | + | $Tuple2([IntegerEntry(q(r, s), aw), IntegerEntry(u(r, s, aw), height), StringEntry(w(r, s, aw), x("0", "0")), IntegerEntry(t(r, s), aw)], unit) | |
256 | + | } | |
257 | + | else throw("Strict value is not equal to itself.") | |
249 | 258 | } | |
250 | 259 | else throw("Strict value is not equal to itself.") | |
251 | 260 | } | |
259 | 268 | ||
260 | 269 | ||
261 | 270 | @Callable(V) | |
262 | - | func vote (r,s, | |
271 | + | func vote (r,s,ay) = { | |
263 | 272 | let v = value(getInteger(q(r, s))) | |
264 | - | let | |
273 | + | let az = (value(getInteger(u(r, s, v))) + value(getInteger(d))) | |
265 | 274 | let am = [if (isDefined(getInteger(q(r, s)))) | |
266 | 275 | then true | |
267 | - | else throw("the token isn't on the voting list"), if (( | |
276 | + | else throw("the token isn't on the voting list"), if ((az > height)) | |
268 | 277 | then true | |
269 | 278 | else throw("too late to vote")] | |
270 | 279 | if ((am == am)) | |
271 | 280 | then { | |
272 | - | let D = invoke(L, "getUserGwxAmountAtHeightREADONLY", [toString(V.caller), | |
273 | - | let | |
281 | + | let D = invoke(L, "getUserGwxAmountAtHeightREADONLY", [toString(V.caller), az], nil) | |
282 | + | let aA = if ((Y(D) > 0)) | |
274 | 283 | then true | |
275 | 284 | else throw("you don't have gwx") | |
276 | - | if (( | |
285 | + | if ((aA == aA)) | |
277 | 286 | then { | |
278 | 287 | let E = { | |
279 | 288 | let R = getString(A(r, s, v, toString(V.caller))) | |
281 | 290 | then { | |
282 | 291 | let S = R | |
283 | 292 | let E = split(S, a) | |
284 | - | let | |
285 | - | let | |
286 | - | let | |
287 | - | then ( | |
293 | + | let aB = E[1] | |
294 | + | let aC = E[2] | |
295 | + | let aD = if (if ((aC == "yes")) | |
296 | + | then (ay == true) | |
288 | 297 | else false) | |
289 | 298 | then true | |
290 | - | else if (( | |
291 | - | then ( | |
299 | + | else if ((aC == "no")) | |
300 | + | then (ay == false) | |
292 | 301 | else false | |
293 | - | let | |
294 | - | then (Y(D) == parseIntValue( | |
302 | + | let aE = if (aD) | |
303 | + | then (Y(D) == parseIntValue(aB)) | |
295 | 304 | else false | |
296 | - | let | |
297 | - | then | |
305 | + | let aF = if (if (aD) | |
306 | + | then aE | |
298 | 307 | else false) | |
299 | 308 | then throw("you already voted") | |
300 | 309 | else invoke(this, "cancelVote", [r, s], nil) | |
301 | - | | |
310 | + | aF | |
302 | 311 | } | |
303 | 312 | else if ($isInstanceOf(R, "Unit")) | |
304 | 313 | then { | |
305 | - | let | |
306 | - | | |
314 | + | let aG = R | |
315 | + | aG | |
307 | 316 | } | |
308 | 317 | else throw("Match error") | |
309 | 318 | } | |
310 | 319 | if ((E == E)) | |
311 | 320 | then { | |
312 | - | let | |
313 | - | let | |
314 | - | let | |
315 | - | let | |
321 | + | let aH = split(value(getString(w(r, s, v))), a) | |
322 | + | let aI = aH[1] | |
323 | + | let aJ = aH[2] | |
324 | + | let aK = if (ay) | |
316 | 325 | then { | |
317 | - | let | |
318 | - | [toString( | |
326 | + | let aL = (parseIntValue(aI) + Y(D)) | |
327 | + | [toString(aL), aJ] | |
319 | 328 | } | |
320 | 329 | else { | |
321 | - | let | |
322 | - | [ | |
330 | + | let aM = (parseIntValue(aJ) + Y(D)) | |
331 | + | [aI, toString(aM)] | |
323 | 332 | } | |
324 | - | let | |
325 | - | let | |
326 | - | $Tuple2([StringEntry(w(r, s, v), x( | |
333 | + | let aN = A(r, s, v, toString(V.caller)) | |
334 | + | let aB = C(toString(Y(D)), ay) | |
335 | + | $Tuple2([StringEntry(w(r, s, v), x(aK[0], aK[1])), StringEntry(aN, aB)], unit) | |
327 | 336 | } | |
328 | 337 | else throw("Strict value is not equal to itself.") | |
329 | 338 | } | |
336 | 345 | ||
337 | 346 | @Callable(V) | |
338 | 347 | func cancelVote (r,s) = { | |
339 | - | let | |
348 | + | let aO = if ((V.caller == this)) | |
340 | 349 | then toString(V.originCaller) | |
341 | 350 | else toString(V.caller) | |
342 | 351 | let v = value(getInteger(q(r, s))) | |
345 | 354 | else throw("no vote for assets pair")] | |
346 | 355 | if ((am == am)) | |
347 | 356 | then { | |
348 | - | let E = split(value(getString(A(r, s, v, | |
349 | - | let | |
350 | - | let | |
351 | - | let | |
352 | - | let | |
353 | - | let | |
354 | - | let | |
357 | + | let E = split(value(getString(A(r, s, v, aO))), a) | |
358 | + | let aB = E[1] | |
359 | + | let aC = E[2] | |
360 | + | let aH = split(value(getString(w(r, s, v))), a) | |
361 | + | let aI = aH[1] | |
362 | + | let aJ = aH[2] | |
363 | + | let aP = if ((aC == "yes")) | |
355 | 364 | then { | |
356 | - | let | |
357 | - | $Tuple2([StringEntry(w(r, s, v), x(toString( | |
365 | + | let aL = (parseIntValue(aI) - parseIntValue(aB)) | |
366 | + | $Tuple2([StringEntry(w(r, s, v), x(toString(aL), aJ)), DeleteEntry(A(r, s, v, aO))], unit) | |
358 | 367 | } | |
359 | 368 | else { | |
360 | - | let | |
361 | - | $Tuple2([StringEntry(w(r, s, v), x( | |
369 | + | let aM = (parseIntValue(aJ) - parseIntValue(aB)) | |
370 | + | $Tuple2([StringEntry(w(r, s, v), x(aI, toString(aM))), DeleteEntry(A(r, s, v, aO))], unit) | |
362 | 371 | } | |
363 | - | | |
372 | + | aP | |
364 | 373 | } | |
365 | 374 | else throw("Strict value is not equal to itself.") | |
366 | 375 | } | |
368 | 377 | ||
369 | 378 | ||
370 | 379 | @Callable(V) | |
371 | - | func setFee ( | |
380 | + | func setFee (aQ) = { | |
372 | 381 | let am = [X(V)] | |
373 | 382 | if ((am == am)) | |
374 | - | then [IntegerEntry(b, | |
383 | + | then [IntegerEntry(b, aQ)] | |
375 | 384 | else throw("Strict value is not equal to itself.") | |
376 | 385 | } | |
377 | 386 | ||
378 | 387 | ||
379 | 388 | ||
380 | 389 | @Callable(V) | |
381 | - | func setThreshold ( | |
382 | - | let am = [X(V), if (( | |
390 | + | func setThreshold (aR) = { | |
391 | + | let am = [X(V), if ((aR > 0)) | |
383 | 392 | then true | |
384 | 393 | else throw("invalid threshold")] | |
385 | 394 | if ((am == am)) | |
386 | - | then $Tuple2([IntegerEntry(m, | |
395 | + | then $Tuple2([IntegerEntry(m, aR)], unit) | |
387 | 396 | else throw("Strict value is not equal to itself.") | |
388 | 397 | } | |
389 | 398 | ||
392 | 401 | @Callable(V) | |
393 | 402 | func finalize (r,s) = { | |
394 | 403 | let v = value(getInteger(q(r, s))) | |
395 | - | let | |
404 | + | let az = (value(getInteger(u(r, s, v))) + value(getInteger(d))) | |
396 | 405 | let am = [if (isDefined(getInteger(q(r, s)))) | |
397 | 406 | then true | |
398 | - | else throw("no assets pair"), if ((height >= | |
407 | + | else throw("no assets pair"), if ((height >= az)) | |
399 | 408 | then true | |
400 | 409 | else throw("insufficient height for completion")] | |
401 | 410 | if ((am == am)) | |
402 | 411 | then { | |
403 | - | let | |
404 | - | let | |
405 | - | let | |
406 | - | let | |
412 | + | let aH = split(value(getString(w(r, s, v))), a) | |
413 | + | let aI = parseIntValue(aH[1]) | |
414 | + | let aJ = parseIntValue(aH[2]) | |
415 | + | let aS = (aI + aJ) | |
407 | 416 | let an = p(m) | |
408 | - | let | |
409 | - | then ( | |
417 | + | let aP = if (if ((aS >= an)) | |
418 | + | then (aI > aJ) | |
410 | 419 | else false) | |
411 | 420 | then { | |
412 | - | let | |
413 | - | if (( | |
421 | + | let aT = invoke(N, "setWxEmissionPoolLabel", [r, s], nil) | |
422 | + | if ((aT == aT)) | |
414 | 423 | then { | |
415 | - | let | |
416 | - | if (( | |
424 | + | let aU = invoke(P, "create", [r, s], nil) | |
425 | + | if ((aU == aU)) | |
417 | 426 | then $Tuple2([DeleteEntry(q(r, s))], unit) | |
418 | 427 | else throw("Strict value is not equal to itself.") | |
419 | 428 | } | |
420 | 429 | else throw("Strict value is not equal to itself.") | |
421 | 430 | } | |
422 | 431 | else $Tuple2([DeleteEntry(q(r, s))], unit) | |
423 | - | | |
432 | + | aP | |
424 | 433 | } | |
425 | 434 | else throw("Strict value is not equal to itself.") | |
426 | 435 | } | |
428 | 437 | ||
429 | 438 | ||
430 | 439 | @Callable(V) | |
431 | - | func setManager ( | |
432 | - | let | |
433 | - | if (( | |
440 | + | func setManager (aV) = { | |
441 | + | let aW = X(V) | |
442 | + | if ((aW == aW)) | |
434 | 443 | then { | |
435 | - | let | |
436 | - | if (( | |
437 | - | then [StringEntry(J(), | |
444 | + | let aX = fromBase58String(aV) | |
445 | + | if ((aX == aX)) | |
446 | + | then [StringEntry(J(), aV)] | |
438 | 447 | else throw("Strict value is not equal to itself.") | |
439 | 448 | } | |
440 | 449 | else throw("Strict value is not equal to itself.") | |
444 | 453 | ||
445 | 454 | @Callable(V) | |
446 | 455 | func confirmManager () = { | |
447 | - | let | |
448 | - | let | |
456 | + | let aY = T() | |
457 | + | let aZ = if (isDefined(aY)) | |
449 | 458 | then true | |
450 | 459 | else throw("no pending manager") | |
451 | - | if (( | |
460 | + | if ((aZ == aZ)) | |
452 | 461 | then { | |
453 | - | let | |
462 | + | let ba = if ((V.callerPublicKey == value(aY))) | |
454 | 463 | then true | |
455 | 464 | else throw("you are not pending manager") | |
456 | - | if (( | |
457 | - | then [StringEntry(I(), toBase58String(value( | |
465 | + | if ((ba == ba)) | |
466 | + | then [StringEntry(I(), toBase58String(value(aY))), DeleteEntry(J())] | |
458 | 467 | else throw("Strict value is not equal to itself.") | |
459 | 468 | } | |
460 | 469 | else throw("Strict value is not equal to itself.") | |
461 | 470 | } | |
462 | 471 | ||
463 | 472 | ||
464 | - | @Verifier( | |
465 | - | func | |
466 | - | let | |
473 | + | @Verifier(bb) | |
474 | + | func bc () = { | |
475 | + | let bd = { | |
467 | 476 | let R = Q() | |
468 | 477 | if ($isInstanceOf(R, "ByteVector")) | |
469 | 478 | then { | |
471 | 480 | W | |
472 | 481 | } | |
473 | 482 | else if ($isInstanceOf(R, "Unit")) | |
474 | - | then | |
483 | + | then bb.senderPublicKey | |
475 | 484 | else throw("Match error") | |
476 | 485 | } | |
477 | - | sigVerify( | |
486 | + | sigVerify(bb.bodyBytes, bb.proofs[0], bd) | |
478 | 487 | } | |
479 | 488 |
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 | 6 | let b = makeString(["%s", "fee"], a) | |
7 | 7 | ||
8 | 8 | let c = makeString(["%s", "usdnAssetId"], a) | |
9 | 9 | ||
10 | 10 | let d = makeString(["%s", "epochLength"], a) | |
11 | 11 | ||
12 | 12 | let e = makeString(["%s", "finalizeReward"], a) | |
13 | 13 | ||
14 | 14 | let f = makeString(["%s", "wxAssetId"], a) | |
15 | 15 | ||
16 | 16 | let g = makeString(["%s", "assetsStoreContract"], a) | |
17 | 17 | ||
18 | 18 | let h = makeString(["%s", "userPoolContract"], a) | |
19 | 19 | ||
20 | 20 | let i = makeString(["%s", "emissionContract"], a) | |
21 | 21 | ||
22 | 22 | let j = makeString(["%s", "boostingContract"], a) | |
23 | 23 | ||
24 | 24 | let k = makeString(["%s", "factoryContract"], a) | |
25 | 25 | ||
26 | 26 | let l = makeString(["%s", "votingEmissionContract"], a) | |
27 | 27 | ||
28 | 28 | let m = makeString(["%s", "votingThreshold"], a) | |
29 | 29 | ||
30 | 30 | func n (o) = valueOrErrorMessage(getString(this, o), (o + " is not defined")) | |
31 | 31 | ||
32 | 32 | ||
33 | 33 | func p (o) = valueOrErrorMessage(getInteger(this, o), (o + " is not defined")) | |
34 | 34 | ||
35 | 35 | ||
36 | 36 | func q (r,s) = makeString(["%s%s%s", "inList", r, s], a) | |
37 | 37 | ||
38 | 38 | ||
39 | 39 | func t (r,s) = makeString(["%s%s%s", "suggestIndex", r, s], a) | |
40 | 40 | ||
41 | 41 | ||
42 | 42 | func u (r,s,v) = makeString(["%s%s%s%d", "startHeight", r, s, toString(v)], a) | |
43 | 43 | ||
44 | 44 | ||
45 | 45 | func w (r,s,v) = makeString(["%s%s%s%d", "votingResult", r, s, toString(v)], a) | |
46 | 46 | ||
47 | 47 | ||
48 | 48 | func x (y,z) = makeString(["%d%d", y, z], a) | |
49 | 49 | ||
50 | 50 | ||
51 | 51 | func A (r,s,v,B) = makeString(["%s%s%s%d%s", "vote", r, s, toString(v), B], a) | |
52 | 52 | ||
53 | 53 | ||
54 | 54 | func C (D,E) = { | |
55 | 55 | let o = if (E) | |
56 | 56 | then makeString(["%d%s", D, "yes"], a) | |
57 | 57 | else makeString(["%d%s", D, "no"], a) | |
58 | 58 | o | |
59 | 59 | } | |
60 | 60 | ||
61 | 61 | ||
62 | 62 | func F (G) = { | |
63 | 63 | let H = G | |
64 | 64 | let r = H._1 | |
65 | 65 | let s = H._2 | |
66 | 66 | makeString(["%s%s%s", "inList", r, s], a) | |
67 | 67 | } | |
68 | 68 | ||
69 | 69 | ||
70 | 70 | func I () = "%s__managerPublicKey" | |
71 | 71 | ||
72 | 72 | ||
73 | 73 | func J () = "%s__pendingManagerPublicKey" | |
74 | 74 | ||
75 | 75 | ||
76 | 76 | let K = addressFromStringValue(n(g)) | |
77 | 77 | ||
78 | 78 | let L = addressFromStringValue(n(j)) | |
79 | 79 | ||
80 | 80 | let M = addressFromStringValue(n(i)) | |
81 | 81 | ||
82 | 82 | let N = addressFromStringValue(n(k)) | |
83 | 83 | ||
84 | 84 | let O = addressFromStringValue(n(h)) | |
85 | 85 | ||
86 | 86 | let P = addressFromStringValue(n(l)) | |
87 | 87 | ||
88 | 88 | func Q () = { | |
89 | 89 | let R = getString(I()) | |
90 | 90 | if ($isInstanceOf(R, "String")) | |
91 | 91 | then { | |
92 | 92 | let S = R | |
93 | 93 | fromBase58String(S) | |
94 | 94 | } | |
95 | 95 | else if ($isInstanceOf(R, "Unit")) | |
96 | 96 | then unit | |
97 | 97 | else throw("Match error") | |
98 | 98 | } | |
99 | 99 | ||
100 | 100 | ||
101 | 101 | func T () = { | |
102 | 102 | let R = getString(J()) | |
103 | 103 | if ($isInstanceOf(R, "String")) | |
104 | 104 | then { | |
105 | 105 | let S = R | |
106 | 106 | fromBase58String(S) | |
107 | 107 | } | |
108 | 108 | else if ($isInstanceOf(R, "Unit")) | |
109 | 109 | then unit | |
110 | 110 | else throw("Match error") | |
111 | 111 | } | |
112 | 112 | ||
113 | 113 | ||
114 | 114 | func U (V) = { | |
115 | 115 | let R = Q() | |
116 | 116 | if ($isInstanceOf(R, "ByteVector")) | |
117 | 117 | then { | |
118 | 118 | let W = R | |
119 | 119 | (V.callerPublicKey == W) | |
120 | 120 | } | |
121 | 121 | else if ($isInstanceOf(R, "Unit")) | |
122 | 122 | then (V.caller == this) | |
123 | 123 | else throw("Match error") | |
124 | 124 | } | |
125 | 125 | ||
126 | 126 | ||
127 | 127 | func X (V) = if (U(V)) | |
128 | 128 | then true | |
129 | 129 | else throw("permission denied") | |
130 | 130 | ||
131 | 131 | ||
132 | 132 | func Y (Z) = { | |
133 | 133 | let R = Z | |
134 | 134 | if ($isInstanceOf(R, "Int")) | |
135 | 135 | then { | |
136 | 136 | let aa = R | |
137 | 137 | aa | |
138 | 138 | } | |
139 | 139 | else throw("failed to cast into Integer") | |
140 | 140 | } | |
141 | 141 | ||
142 | 142 | ||
143 | 143 | @Callable(V) | |
144 | 144 | func constructor (ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al) = { | |
145 | 145 | let am = [X(V), if (isDefined(addressFromString(ab))) | |
146 | 146 | then true | |
147 | 147 | else throw("Invalid asset_store contract address"), if (isDefined(addressFromString(ac))) | |
148 | 148 | then true | |
149 | 149 | else throw("Invalid boosting contract address"), if (isDefined(addressFromString(af))) | |
150 | 150 | then true | |
151 | 151 | else throw("Invalid user_pools contract address"), if (isDefined(addressFromString(ad))) | |
152 | 152 | then true | |
153 | 153 | else throw("Invalid emission contract address"), if (isDefined(addressFromString(ae))) | |
154 | 154 | then true | |
155 | 155 | else throw("Invalid factory contract address"), if ((ah >= 0)) | |
156 | 156 | then true | |
157 | 157 | else throw("Invalid fee amount"), if ((aj > 0)) | |
158 | 158 | then true | |
159 | 159 | else throw("Invalid voting duration"), if ((al >= 0)) | |
160 | 160 | then true | |
161 | 161 | else throw("Invalid finalize reward"), if (isDefined(assetInfo(fromBase58String(ai)))) | |
162 | 162 | then true | |
163 | 163 | else throw("Invalid WX asset ID"), if (isDefined(assetInfo(fromBase58String(ak)))) | |
164 | 164 | then true | |
165 | 165 | else throw("Invalid USDN asset ID")] | |
166 | 166 | if ((am == am)) | |
167 | 167 | then $Tuple2([StringEntry(g, ab), StringEntry(j, ac), StringEntry(i, ad), StringEntry(k, ae), StringEntry(h, af), StringEntry(l, ag), IntegerEntry(b, ah), IntegerEntry(d, aj), IntegerEntry(e, al), StringEntry(f, ai), StringEntry(c, ak)], unit) | |
168 | 168 | else throw("Strict value is not equal to itself.") | |
169 | 169 | } | |
170 | 170 | ||
171 | 171 | ||
172 | 172 | ||
173 | 173 | @Callable(V) | |
174 | 174 | func constructorV2 (an) = { | |
175 | 175 | let am = [X(V), if ((an > 0)) | |
176 | 176 | then true | |
177 | 177 | else throw("invalid threshold")] | |
178 | 178 | if ((am == am)) | |
179 | 179 | then $Tuple2([IntegerEntry(m, an)], unit) | |
180 | 180 | else throw("Strict value is not equal to itself.") | |
181 | 181 | } | |
182 | 182 | ||
183 | 183 | ||
184 | 184 | ||
185 | 185 | @Callable(V) | |
186 | 186 | func suggest (r,s) = { | |
187 | 187 | let G = $Tuple2(r, s) | |
188 | 188 | let ao = value(V.payments[0]) | |
189 | - | let ap = valueOrErrorMessage(assetInfo(fromBase58String(r)), "invalid amountAssetId ID") | |
190 | - | let am = [if ((ap.scripted == false)) | |
191 | - | then true | |
192 | - | else throw("asset is smart"), if ((toBase58String(value(ao.assetId)) == value(getString(f)))) | |
193 | - | then true | |
194 | - | else throw("invalid fee asset"), if ((ao.amount == value(getInteger(b)))) | |
195 | - | then true | |
196 | - | else throw("invalid fee amount"), if ((getInteger(q(r, s)) == unit)) | |
197 | - | then true | |
198 | - | else throw("already in voting list"), if (!(valueOrElse(getBoolean(P, F(G)), false))) | |
199 | - | then true | |
200 | - | else throw("pool is in emission voting list")] | |
201 | - | if ((am == am)) | |
189 | + | let ap = if ((r == "WAVES")) | |
190 | + | then unit | |
191 | + | else { | |
192 | + | let aq = valueOrErrorMessage(assetInfo(fromBase58String(r)), "invalid amountAssetId ID") | |
193 | + | if ((aq.scripted == false)) | |
194 | + | then true | |
195 | + | else throw("asset is smart") | |
196 | + | } | |
197 | + | if ((ap == ap)) | |
202 | 198 | then { | |
203 | - | let aq = { | |
204 | - | let R = invoke(O, "statusREADONLY", [r, s], nil) | |
205 | - | if ($isInstanceOf(R, "String")) | |
206 | - | then { | |
207 | - | let S = R | |
208 | - | if ((S == "active")) | |
209 | - | then true | |
199 | + | let am = [if ((toBase58String(value(ao.assetId)) == value(getString(f)))) | |
200 | + | then true | |
201 | + | else throw("invalid fee asset"), if ((ao.amount == value(getInteger(b)))) | |
202 | + | then true | |
203 | + | else throw("invalid fee amount"), if ((getInteger(q(r, s)) == unit)) | |
204 | + | then true | |
205 | + | else throw("already in voting list"), if (!(valueOrElse(getBoolean(P, F(G)), false))) | |
206 | + | then true | |
207 | + | else throw("pool is in emission voting list")] | |
208 | + | if ((am == am)) | |
209 | + | then { | |
210 | + | let ar = { | |
211 | + | let R = invoke(O, "statusREADONLY", [r, s], nil) | |
212 | + | if ($isInstanceOf(R, "String")) | |
213 | + | then { | |
214 | + | let S = R | |
215 | + | if ((S == "active")) | |
216 | + | then true | |
217 | + | else throw("user pool is not active") | |
218 | + | } | |
210 | 219 | else throw("user pool is not active") | |
211 | 220 | } | |
212 | - | | |
213 | - | | |
214 | - | if (( | |
215 | - | then | |
216 | - | | |
217 | - | | |
218 | - | | |
219 | - | | |
220 | - | | |
221 | - | | |
222 | - | | |
223 | - | | |
224 | - | | |
225 | - | | |
221 | + | if ((ar == ar)) | |
222 | + | then { | |
223 | + | let as = if (U(V)) | |
224 | + | then unit | |
225 | + | else { | |
226 | + | let at = { | |
227 | + | let R = invoke(K, "isVerifiedREADONLY", [r], nil) | |
228 | + | if ($isInstanceOf(R, "Boolean")) | |
229 | + | then { | |
230 | + | let au = R | |
231 | + | if (au) | |
232 | + | then true | |
233 | + | else throw("asset is not verified") | |
234 | + | } | |
226 | 235 | else throw("asset is not verified") | |
227 | 236 | } | |
228 | - | else throw("asset is not verified") | |
229 | - | } | |
237 | + | if ((at == at)) | |
238 | + | then unit | |
239 | + | else throw("Strict value is not equal to itself.") | |
240 | + | } | |
230 | 241 | if ((as == as)) | |
231 | - | then unit | |
232 | - | else throw("Strict value is not equal to itself.") | |
233 | - | } | |
234 | - | if ((ar == ar)) | |
235 | - | then { | |
236 | - | let au = invoke(M, "burn", nil, [AttachedPayment(ao.assetId, ao.amount)]) | |
237 | - | if ((au == au)) | |
238 | 242 | then { | |
239 | - | let av = { | |
240 | - | let R = getInteger(t(r, s)) | |
241 | - | if ($isInstanceOf(R, "Int")) | |
242 | - | then { | |
243 | - | let aw = R | |
244 | - | (aw + 1) | |
243 | + | let av = invoke(M, "burn", nil, [AttachedPayment(ao.assetId, ao.amount)]) | |
244 | + | if ((av == av)) | |
245 | + | then { | |
246 | + | let aw = { | |
247 | + | let R = getInteger(t(r, s)) | |
248 | + | if ($isInstanceOf(R, "Int")) | |
249 | + | then { | |
250 | + | let ax = R | |
251 | + | (ax + 1) | |
252 | + | } | |
253 | + | else 0 | |
245 | 254 | } | |
246 | - | | |
247 | - | } | |
248 | - | | |
255 | + | $Tuple2([IntegerEntry(q(r, s), aw), IntegerEntry(u(r, s, aw), height), StringEntry(w(r, s, aw), x("0", "0")), IntegerEntry(t(r, s), aw)], unit) | |
256 | + | } | |
257 | + | else throw("Strict value is not equal to itself.") | |
249 | 258 | } | |
250 | 259 | else throw("Strict value is not equal to itself.") | |
251 | 260 | } | |
252 | 261 | else throw("Strict value is not equal to itself.") | |
253 | 262 | } | |
254 | 263 | else throw("Strict value is not equal to itself.") | |
255 | 264 | } | |
256 | 265 | else throw("Strict value is not equal to itself.") | |
257 | 266 | } | |
258 | 267 | ||
259 | 268 | ||
260 | 269 | ||
261 | 270 | @Callable(V) | |
262 | - | func vote (r,s, | |
271 | + | func vote (r,s,ay) = { | |
263 | 272 | let v = value(getInteger(q(r, s))) | |
264 | - | let | |
273 | + | let az = (value(getInteger(u(r, s, v))) + value(getInteger(d))) | |
265 | 274 | let am = [if (isDefined(getInteger(q(r, s)))) | |
266 | 275 | then true | |
267 | - | else throw("the token isn't on the voting list"), if (( | |
276 | + | else throw("the token isn't on the voting list"), if ((az > height)) | |
268 | 277 | then true | |
269 | 278 | else throw("too late to vote")] | |
270 | 279 | if ((am == am)) | |
271 | 280 | then { | |
272 | - | let D = invoke(L, "getUserGwxAmountAtHeightREADONLY", [toString(V.caller), | |
273 | - | let | |
281 | + | let D = invoke(L, "getUserGwxAmountAtHeightREADONLY", [toString(V.caller), az], nil) | |
282 | + | let aA = if ((Y(D) > 0)) | |
274 | 283 | then true | |
275 | 284 | else throw("you don't have gwx") | |
276 | - | if (( | |
285 | + | if ((aA == aA)) | |
277 | 286 | then { | |
278 | 287 | let E = { | |
279 | 288 | let R = getString(A(r, s, v, toString(V.caller))) | |
280 | 289 | if ($isInstanceOf(R, "String")) | |
281 | 290 | then { | |
282 | 291 | let S = R | |
283 | 292 | let E = split(S, a) | |
284 | - | let | |
285 | - | let | |
286 | - | let | |
287 | - | then ( | |
293 | + | let aB = E[1] | |
294 | + | let aC = E[2] | |
295 | + | let aD = if (if ((aC == "yes")) | |
296 | + | then (ay == true) | |
288 | 297 | else false) | |
289 | 298 | then true | |
290 | - | else if (( | |
291 | - | then ( | |
299 | + | else if ((aC == "no")) | |
300 | + | then (ay == false) | |
292 | 301 | else false | |
293 | - | let | |
294 | - | then (Y(D) == parseIntValue( | |
302 | + | let aE = if (aD) | |
303 | + | then (Y(D) == parseIntValue(aB)) | |
295 | 304 | else false | |
296 | - | let | |
297 | - | then | |
305 | + | let aF = if (if (aD) | |
306 | + | then aE | |
298 | 307 | else false) | |
299 | 308 | then throw("you already voted") | |
300 | 309 | else invoke(this, "cancelVote", [r, s], nil) | |
301 | - | | |
310 | + | aF | |
302 | 311 | } | |
303 | 312 | else if ($isInstanceOf(R, "Unit")) | |
304 | 313 | then { | |
305 | - | let | |
306 | - | | |
314 | + | let aG = R | |
315 | + | aG | |
307 | 316 | } | |
308 | 317 | else throw("Match error") | |
309 | 318 | } | |
310 | 319 | if ((E == E)) | |
311 | 320 | then { | |
312 | - | let | |
313 | - | let | |
314 | - | let | |
315 | - | let | |
321 | + | let aH = split(value(getString(w(r, s, v))), a) | |
322 | + | let aI = aH[1] | |
323 | + | let aJ = aH[2] | |
324 | + | let aK = if (ay) | |
316 | 325 | then { | |
317 | - | let | |
318 | - | [toString( | |
326 | + | let aL = (parseIntValue(aI) + Y(D)) | |
327 | + | [toString(aL), aJ] | |
319 | 328 | } | |
320 | 329 | else { | |
321 | - | let | |
322 | - | [ | |
330 | + | let aM = (parseIntValue(aJ) + Y(D)) | |
331 | + | [aI, toString(aM)] | |
323 | 332 | } | |
324 | - | let | |
325 | - | let | |
326 | - | $Tuple2([StringEntry(w(r, s, v), x( | |
333 | + | let aN = A(r, s, v, toString(V.caller)) | |
334 | + | let aB = C(toString(Y(D)), ay) | |
335 | + | $Tuple2([StringEntry(w(r, s, v), x(aK[0], aK[1])), StringEntry(aN, aB)], unit) | |
327 | 336 | } | |
328 | 337 | else throw("Strict value is not equal to itself.") | |
329 | 338 | } | |
330 | 339 | else throw("Strict value is not equal to itself.") | |
331 | 340 | } | |
332 | 341 | else throw("Strict value is not equal to itself.") | |
333 | 342 | } | |
334 | 343 | ||
335 | 344 | ||
336 | 345 | ||
337 | 346 | @Callable(V) | |
338 | 347 | func cancelVote (r,s) = { | |
339 | - | let | |
348 | + | let aO = if ((V.caller == this)) | |
340 | 349 | then toString(V.originCaller) | |
341 | 350 | else toString(V.caller) | |
342 | 351 | let v = value(getInteger(q(r, s))) | |
343 | 352 | let am = [if (isDefined(getString(w(r, s, v)))) | |
344 | 353 | then true | |
345 | 354 | else throw("no vote for assets pair")] | |
346 | 355 | if ((am == am)) | |
347 | 356 | then { | |
348 | - | let E = split(value(getString(A(r, s, v, | |
349 | - | let | |
350 | - | let | |
351 | - | let | |
352 | - | let | |
353 | - | let | |
354 | - | let | |
357 | + | let E = split(value(getString(A(r, s, v, aO))), a) | |
358 | + | let aB = E[1] | |
359 | + | let aC = E[2] | |
360 | + | let aH = split(value(getString(w(r, s, v))), a) | |
361 | + | let aI = aH[1] | |
362 | + | let aJ = aH[2] | |
363 | + | let aP = if ((aC == "yes")) | |
355 | 364 | then { | |
356 | - | let | |
357 | - | $Tuple2([StringEntry(w(r, s, v), x(toString( | |
365 | + | let aL = (parseIntValue(aI) - parseIntValue(aB)) | |
366 | + | $Tuple2([StringEntry(w(r, s, v), x(toString(aL), aJ)), DeleteEntry(A(r, s, v, aO))], unit) | |
358 | 367 | } | |
359 | 368 | else { | |
360 | - | let | |
361 | - | $Tuple2([StringEntry(w(r, s, v), x( | |
369 | + | let aM = (parseIntValue(aJ) - parseIntValue(aB)) | |
370 | + | $Tuple2([StringEntry(w(r, s, v), x(aI, toString(aM))), DeleteEntry(A(r, s, v, aO))], unit) | |
362 | 371 | } | |
363 | - | | |
372 | + | aP | |
364 | 373 | } | |
365 | 374 | else throw("Strict value is not equal to itself.") | |
366 | 375 | } | |
367 | 376 | ||
368 | 377 | ||
369 | 378 | ||
370 | 379 | @Callable(V) | |
371 | - | func setFee ( | |
380 | + | func setFee (aQ) = { | |
372 | 381 | let am = [X(V)] | |
373 | 382 | if ((am == am)) | |
374 | - | then [IntegerEntry(b, | |
383 | + | then [IntegerEntry(b, aQ)] | |
375 | 384 | else throw("Strict value is not equal to itself.") | |
376 | 385 | } | |
377 | 386 | ||
378 | 387 | ||
379 | 388 | ||
380 | 389 | @Callable(V) | |
381 | - | func setThreshold ( | |
382 | - | let am = [X(V), if (( | |
390 | + | func setThreshold (aR) = { | |
391 | + | let am = [X(V), if ((aR > 0)) | |
383 | 392 | then true | |
384 | 393 | else throw("invalid threshold")] | |
385 | 394 | if ((am == am)) | |
386 | - | then $Tuple2([IntegerEntry(m, | |
395 | + | then $Tuple2([IntegerEntry(m, aR)], unit) | |
387 | 396 | else throw("Strict value is not equal to itself.") | |
388 | 397 | } | |
389 | 398 | ||
390 | 399 | ||
391 | 400 | ||
392 | 401 | @Callable(V) | |
393 | 402 | func finalize (r,s) = { | |
394 | 403 | let v = value(getInteger(q(r, s))) | |
395 | - | let | |
404 | + | let az = (value(getInteger(u(r, s, v))) + value(getInteger(d))) | |
396 | 405 | let am = [if (isDefined(getInteger(q(r, s)))) | |
397 | 406 | then true | |
398 | - | else throw("no assets pair"), if ((height >= | |
407 | + | else throw("no assets pair"), if ((height >= az)) | |
399 | 408 | then true | |
400 | 409 | else throw("insufficient height for completion")] | |
401 | 410 | if ((am == am)) | |
402 | 411 | then { | |
403 | - | let | |
404 | - | let | |
405 | - | let | |
406 | - | let | |
412 | + | let aH = split(value(getString(w(r, s, v))), a) | |
413 | + | let aI = parseIntValue(aH[1]) | |
414 | + | let aJ = parseIntValue(aH[2]) | |
415 | + | let aS = (aI + aJ) | |
407 | 416 | let an = p(m) | |
408 | - | let | |
409 | - | then ( | |
417 | + | let aP = if (if ((aS >= an)) | |
418 | + | then (aI > aJ) | |
410 | 419 | else false) | |
411 | 420 | then { | |
412 | - | let | |
413 | - | if (( | |
421 | + | let aT = invoke(N, "setWxEmissionPoolLabel", [r, s], nil) | |
422 | + | if ((aT == aT)) | |
414 | 423 | then { | |
415 | - | let | |
416 | - | if (( | |
424 | + | let aU = invoke(P, "create", [r, s], nil) | |
425 | + | if ((aU == aU)) | |
417 | 426 | then $Tuple2([DeleteEntry(q(r, s))], unit) | |
418 | 427 | else throw("Strict value is not equal to itself.") | |
419 | 428 | } | |
420 | 429 | else throw("Strict value is not equal to itself.") | |
421 | 430 | } | |
422 | 431 | else $Tuple2([DeleteEntry(q(r, s))], unit) | |
423 | - | | |
432 | + | aP | |
424 | 433 | } | |
425 | 434 | else throw("Strict value is not equal to itself.") | |
426 | 435 | } | |
427 | 436 | ||
428 | 437 | ||
429 | 438 | ||
430 | 439 | @Callable(V) | |
431 | - | func setManager ( | |
432 | - | let | |
433 | - | if (( | |
440 | + | func setManager (aV) = { | |
441 | + | let aW = X(V) | |
442 | + | if ((aW == aW)) | |
434 | 443 | then { | |
435 | - | let | |
436 | - | if (( | |
437 | - | then [StringEntry(J(), | |
444 | + | let aX = fromBase58String(aV) | |
445 | + | if ((aX == aX)) | |
446 | + | then [StringEntry(J(), aV)] | |
438 | 447 | else throw("Strict value is not equal to itself.") | |
439 | 448 | } | |
440 | 449 | else throw("Strict value is not equal to itself.") | |
441 | 450 | } | |
442 | 451 | ||
443 | 452 | ||
444 | 453 | ||
445 | 454 | @Callable(V) | |
446 | 455 | func confirmManager () = { | |
447 | - | let | |
448 | - | let | |
456 | + | let aY = T() | |
457 | + | let aZ = if (isDefined(aY)) | |
449 | 458 | then true | |
450 | 459 | else throw("no pending manager") | |
451 | - | if (( | |
460 | + | if ((aZ == aZ)) | |
452 | 461 | then { | |
453 | - | let | |
462 | + | let ba = if ((V.callerPublicKey == value(aY))) | |
454 | 463 | then true | |
455 | 464 | else throw("you are not pending manager") | |
456 | - | if (( | |
457 | - | then [StringEntry(I(), toBase58String(value( | |
465 | + | if ((ba == ba)) | |
466 | + | then [StringEntry(I(), toBase58String(value(aY))), DeleteEntry(J())] | |
458 | 467 | else throw("Strict value is not equal to itself.") | |
459 | 468 | } | |
460 | 469 | else throw("Strict value is not equal to itself.") | |
461 | 470 | } | |
462 | 471 | ||
463 | 472 | ||
464 | - | @Verifier( | |
465 | - | func | |
466 | - | let | |
473 | + | @Verifier(bb) | |
474 | + | func bc () = { | |
475 | + | let bd = { | |
467 | 476 | let R = Q() | |
468 | 477 | if ($isInstanceOf(R, "ByteVector")) | |
469 | 478 | then { | |
470 | 479 | let W = R | |
471 | 480 | W | |
472 | 481 | } | |
473 | 482 | else if ($isInstanceOf(R, "Unit")) | |
474 | - | then | |
483 | + | then bb.senderPublicKey | |
475 | 484 | else throw("Match error") | |
476 | 485 | } | |
477 | - | sigVerify( | |
486 | + | sigVerify(bb.bodyBytes, bb.proofs[0], bd) | |
478 | 487 | } | |
479 | 488 |
github/deemru/w8io/169f3d6 117.36 ms ◑