tx · 5q7NqzRNaUknEiir5JFQtCPkKaHdz5q1pHMt8r7bUzVx 3MsmgWBZKrHwbVbSQiqmStRiFyg5hkfxxa2: -0.00300000 Waves 2022.08.16 17:08 [2187131] smart account 3MsmgWBZKrHwbVbSQiqmStRiFyg5hkfxxa2 > SELF 0.00000000 Waves
{ "type": 13, "id": "5q7NqzRNaUknEiir5JFQtCPkKaHdz5q1pHMt8r7bUzVx", "fee": 300000, "feeAssetId": null, "timestamp": 1660658891025, "version": 2, "chainId": 84, "sender": "3MsmgWBZKrHwbVbSQiqmStRiFyg5hkfxxa2", "senderPublicKey": "9TejtrnvgE7MvzMR4DcLbf3dqUzovyt4BKEmCsqha2z", "proofs": [ "5PvBHS9RrqeM2AQR5bxKHWver1qTP1d2ZtLkMEnkbfx6nT5RZhPTtwRShgrj2uy4PakkXzUyMymXGAxKzjmZZa2p" ], "script": "base64:AAIFAAAAAAAAAAcIAhIDCgEIAAAACQAAAAAJaGVpZ2h0RW5kCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwIAAAAKaGVpZ2h0X2VuZAIAAAAkaGVpZ2h0X2VuZCBpcyBub3Qgc3BlY2lmaWVkIGluIHN0YXRlAAAAAAxhc3NldHNTdHJpbmcJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAR0aGlzAgAAABBhdmFpbGFibGVfYXNzZXRzAgAAACVBc3NldHMgbGlzdCBpcyBub3Qgc3BlY2lmaWVkIGluIHN0YXRlAQAAAAlhc0FueUxpc3QAAAABAAAAA3ZhbAQAAAAHJG1hdGNoMAUAAAADdmFsAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAlMaXN0W0FueV0EAAAACnZhbEFueUx5c3QFAAAAByRtYXRjaDAFAAAACnZhbEFueUx5c3QJAAACAAAAAQIAAAAbZmFpbCB0byBjYXN0IGludG8gTGlzdFtBbnldAQAAAAVhc0ludAAAAAEAAAADdmFsBAAAAAckbWF0Y2gwBQAAAAN2YWwDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAAGdmFsSW50BQAAAAckbWF0Y2gwBQAAAAZ2YWxJbnQJAAACAAAAAQIAAAAVZmFpbCB0byBjYXN0IGludG8gSW50AAAAABNuc2J0U3Rha2luZ0NvbnRyYWN0CQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUOrz+4umfUdrssqn6lKJS7u88U0ntbQvvAAAAAA5hdmFpbGFibGVWb3RlcwkABLUAAAACBQAAAAxhc3NldHNTdHJpbmcCAAAAASwBAAAADmtleVVzZXJCYWxhbmNlAAAAAQAAAAh1c2VyQWRkcgkABLkAAAACCQAETAAAAAICAAAAB2JhbGFuY2UJAARMAAAAAgkABCUAAAABBQAAAAh1c2VyQWRkcgUAAAADbmlsAgAAAAFfAQAAAAtrZXlVc2VyVm90ZQAAAAIAAAAIdXNlckFkZHIAAAAEdm90ZQkABLkAAAACCQAETAAAAAICAAAABHZvdGUJAARMAAAAAgUAAAAIdXNlckFkZHIJAARMAAAAAgUAAAAEdm90ZQUAAAADbmlsAgAAAAFfAQAAAA9rZXlVc2VyTGFzdFZvdGUAAAABAAAACHVzZXJBZGRyCQAEuQAAAAIJAARMAAAAAgIAAAAJbGFzdF92b3RlCQAETAAAAAIFAAAACHVzZXJBZGRyBQAAAANuaWwCAAAAAV8AAAABAAAACmNvbnRleHRPYmoBAAAACGNhc3RWb3RlAAAAAQAAAA1uZXdVc2VyQ2hvaWNlBAAAAAt1c2VyQWRkcmVzcwkABCUAAAABCAUAAAAKY29udGV4dE9iagAAAAZjYWxsZXIDCQAAAAAAAAIJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAA5hdmFpbGFibGVWb3RlcwUAAAANbmV3VXNlckNob2ljZQcJAAACAAAAAQIAAAAPSW5jb3JyZWN0IHZvdGUhAwkAAGcAAAACBQAAAAZoZWlnaHQFAAAACWhlaWdodEVuZAkAAAIAAAABAgAAAA12b3RlIGZpbmlzaGVkBAAAAAhuc2J0RGF0YQkBAAAACWFzQW55TGlzdAAAAAEJAAP8AAAABAUAAAATbnNidFN0YWtpbmdDb250cmFjdAIAAAAWbnNidFN0YWtpbmdTWVNSRUFET05MWQkABEwAAAACBQAAAAt1c2VyQWRkcmVzcwUAAAADbmlsBQAAAANuaWwEAAAAEm5ld1VzZXJWb3RpbmdQb3dlcgkBAAAABWFzSW50AAAAAQkAAZEAAAACBQAAAAhuc2J0RGF0YQAAAAAAAAAAAAQAAAATbmV3VG90YWxCeUNob2ljZUtFWQkABLkAAAACCQAETAAAAAICAAAABHZvdGUJAARMAAAAAgUAAAANbmV3VXNlckNob2ljZQUAAAADbmlsAgAAAAFfBAAAABZuZXdUb3RhbEJ5Q2hvaWNlQW1vdW50CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAE25ld1RvdGFsQnlDaG9pY2VLRVkAAAAAAAAAAAAEAAAAFW5ld1VzZXJWb3RpbmdQb3dlcktFWQkBAAAAC2tleVVzZXJWb3RlAAAAAgUAAAALdXNlckFkZHJlc3MFAAAADW5ld1VzZXJDaG9pY2UEAAAAEXByZXZVc2VyQ2hvaWNlS0VZCQEAAAAPa2V5VXNlckxhc3RWb3RlAAAAAQUAAAALdXNlckFkZHJlc3MEAAAADnByZXZVc2VyQ2hvaWNlCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAAEXByZXZVc2VyQ2hvaWNlS0VZBQAAAA1uZXdVc2VyQ2hvaWNlBAAAABZwcmV2VXNlclZvdGluZ1Bvd2VyS0VZCQEAAAALa2V5VXNlclZvdGUAAAACBQAAAAt1c2VyQWRkcmVzcwUAAAAOcHJldlVzZXJDaG9pY2UEAAAAE3ByZXZVc2VyVm90aW5nUG93ZXIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAWcHJldlVzZXJWb3RpbmdQb3dlcktFWQAAAAAAAAAAAAQAAAAUcHJldlRvdGFsQnlDaG9pY2VLRVkJAAS5AAAAAgkABEwAAAACAgAAAAR2b3RlCQAETAAAAAIFAAAADnByZXZVc2VyQ2hvaWNlBQAAAANuaWwCAAAAAV8EAAAAF3ByZXZUb3RhbEJ5Q2hvaWNlQW1vdW50CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAFHByZXZUb3RhbEJ5Q2hvaWNlS0VZAAAAAAAAAAAABAAAAA1yZWZyZXNoVG90YWxzAwkBAAAAAiE9AAAAAgUAAAAOcHJldlVzZXJDaG9pY2UFAAAADW5ld1VzZXJDaG9pY2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAFnByZXZVc2VyVm90aW5nUG93ZXJLRVkAAAAAAAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAFHByZXZUb3RhbEJ5Q2hvaWNlS0VZCQAAZQAAAAIFAAAAF3ByZXZUb3RhbEJ5Q2hvaWNlQW1vdW50BQAAABNwcmV2VXNlclZvdGluZ1Bvd2VyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABNuZXdUb3RhbEJ5Q2hvaWNlS0VZCQAAZAAAAAIFAAAAFm5ld1RvdGFsQnlDaG9pY2VBbW91bnQFAAAAEm5ld1VzZXJWb3RpbmdQb3dlcgUAAAADbmlsCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABNuZXdUb3RhbEJ5Q2hvaWNlS0VZCQAAZQAAAAIJAABkAAAAAgUAAAAWbmV3VG90YWxCeUNob2ljZUFtb3VudAUAAAASbmV3VXNlclZvdGluZ1Bvd2VyBQAAABNwcmV2VXNlclZvdGluZ1Bvd2VyBQAAAANuaWwJAAROAAAAAgUAAAANcmVmcmVzaFRvdGFscwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAVbmV3VXNlclZvdGluZ1Bvd2VyS0VZBQAAABJuZXdVc2VyVm90aW5nUG93ZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAARcHJldlVzZXJDaG9pY2VLRVkFAAAADW5ld1VzZXJDaG9pY2UFAAAAA25pbAAAAACsLJ9i", "height": 2187131, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HaM2bFQuteMT4pz8zqMq3W448jdq8UkiLqNXSj1dmWej Next: HmvHufMZAcVfrfdrQTyhJBEXQRXuSaBsKjYBvFJYxoDC Diff:
Old | New | Differences | |
---|---|---|---|
7 | 7 | ||
8 | 8 | func c (d) = { | |
9 | 9 | let e = d | |
10 | - | if ($isInstanceOf(e, " | |
10 | + | if ($isInstanceOf(e, "List[Any]")) | |
11 | 11 | then { | |
12 | 12 | let f = e | |
13 | 13 | f | |
14 | + | } | |
15 | + | else throw("fail to cast into List[Any]") | |
16 | + | } | |
17 | + | ||
18 | + | ||
19 | + | func g (d) = { | |
20 | + | let e = d | |
21 | + | if ($isInstanceOf(e, "Int")) | |
22 | + | then { | |
23 | + | let h = e | |
24 | + | h | |
14 | 25 | } | |
15 | 26 | else throw("fail to cast into Int") | |
16 | 27 | } | |
17 | 28 | ||
18 | 29 | ||
19 | - | let | |
30 | + | let i = Address(base58'3MuGfNhF98CNBCfthhoJEo6SYUv7zTgkK4J') | |
20 | 31 | ||
21 | - | let | |
32 | + | let j = split(b, ",") | |
22 | 33 | ||
23 | - | func | |
34 | + | func k (l) = makeString(["balance", toString(l)], "_") | |
24 | 35 | ||
25 | 36 | ||
26 | - | func | |
37 | + | func m (l,n) = makeString(["vote", l, n], "_") | |
27 | 38 | ||
28 | 39 | ||
29 | - | @Callable(m) | |
30 | - | func castVote (l) = if ((containsElement(h, l) == false)) | |
31 | - | then throw("Incorrect vote!") | |
32 | - | else { | |
33 | - | let n = makeString(["vote", l], "_") | |
34 | - | let o = k(toString(m.caller), l) | |
35 | - | let p = c(invoke(g, "swapParamsByUserSYSREADONLY", [toString(m.caller), 0], nil)) | |
36 | - | let q = p._1 | |
37 | - | let r = p._2 | |
38 | - | let s = p._3 | |
39 | - | let t = p._4 | |
40 | - | let u = p._5 | |
41 | - | let v = t | |
42 | - | let w = valueOrElse(getInteger(this, n), 0) | |
43 | - | let x = valueOrElse(getInteger(this, o), 0) | |
44 | - | if ((height >= a)) | |
40 | + | func o (l) = makeString(["last_vote", l], "_") | |
41 | + | ||
42 | + | ||
43 | + | @Callable(p) | |
44 | + | func castVote (q) = { | |
45 | + | let r = toString(p.caller) | |
46 | + | if ((containsElement(j, q) == false)) | |
47 | + | then throw("Incorrect vote!") | |
48 | + | else if ((height >= a)) | |
45 | 49 | then throw("vote finished") | |
46 | - | else [IntegerEntry(n, ((w + v) - x)), IntegerEntry(o, v)] | |
47 | - | } | |
50 | + | else { | |
51 | + | let s = c(invoke(i, "nsbtStakingSYSREADONLY", [r], nil)) | |
52 | + | let t = g(s[0]) | |
53 | + | let u = makeString(["vote", q], "_") | |
54 | + | let v = valueOrElse(getInteger(this, u), 0) | |
55 | + | let w = m(r, q) | |
56 | + | let x = o(r) | |
57 | + | let y = valueOrElse(getString(this, x), q) | |
58 | + | let z = m(r, y) | |
59 | + | let A = valueOrElse(getInteger(this, z), 0) | |
60 | + | let B = makeString(["vote", y], "_") | |
61 | + | let C = valueOrElse(getInteger(this, B), 0) | |
62 | + | let D = if ((y != q)) | |
63 | + | then [IntegerEntry(z, 0), IntegerEntry(B, (C - A)), IntegerEntry(u, (v + t))] | |
64 | + | else [IntegerEntry(u, ((v + t) - A))] | |
65 | + | (D ++ [IntegerEntry(w, t), StringEntry(x, q)]) | |
66 | + | } | |
67 | + | } | |
48 | 68 | ||
49 | 69 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = valueOrErrorMessage(getInteger(this, "height_end"), "height_end is not specified in state") | |
5 | 5 | ||
6 | 6 | let b = valueOrErrorMessage(getString(this, "available_assets"), "Assets list is not specified in state") | |
7 | 7 | ||
8 | 8 | func c (d) = { | |
9 | 9 | let e = d | |
10 | - | if ($isInstanceOf(e, " | |
10 | + | if ($isInstanceOf(e, "List[Any]")) | |
11 | 11 | then { | |
12 | 12 | let f = e | |
13 | 13 | f | |
14 | + | } | |
15 | + | else throw("fail to cast into List[Any]") | |
16 | + | } | |
17 | + | ||
18 | + | ||
19 | + | func g (d) = { | |
20 | + | let e = d | |
21 | + | if ($isInstanceOf(e, "Int")) | |
22 | + | then { | |
23 | + | let h = e | |
24 | + | h | |
14 | 25 | } | |
15 | 26 | else throw("fail to cast into Int") | |
16 | 27 | } | |
17 | 28 | ||
18 | 29 | ||
19 | - | let | |
30 | + | let i = Address(base58'3MuGfNhF98CNBCfthhoJEo6SYUv7zTgkK4J') | |
20 | 31 | ||
21 | - | let | |
32 | + | let j = split(b, ",") | |
22 | 33 | ||
23 | - | func | |
34 | + | func k (l) = makeString(["balance", toString(l)], "_") | |
24 | 35 | ||
25 | 36 | ||
26 | - | func | |
37 | + | func m (l,n) = makeString(["vote", l, n], "_") | |
27 | 38 | ||
28 | 39 | ||
29 | - | @Callable(m) | |
30 | - | func castVote (l) = if ((containsElement(h, l) == false)) | |
31 | - | then throw("Incorrect vote!") | |
32 | - | else { | |
33 | - | let n = makeString(["vote", l], "_") | |
34 | - | let o = k(toString(m.caller), l) | |
35 | - | let p = c(invoke(g, "swapParamsByUserSYSREADONLY", [toString(m.caller), 0], nil)) | |
36 | - | let q = p._1 | |
37 | - | let r = p._2 | |
38 | - | let s = p._3 | |
39 | - | let t = p._4 | |
40 | - | let u = p._5 | |
41 | - | let v = t | |
42 | - | let w = valueOrElse(getInteger(this, n), 0) | |
43 | - | let x = valueOrElse(getInteger(this, o), 0) | |
44 | - | if ((height >= a)) | |
40 | + | func o (l) = makeString(["last_vote", l], "_") | |
41 | + | ||
42 | + | ||
43 | + | @Callable(p) | |
44 | + | func castVote (q) = { | |
45 | + | let r = toString(p.caller) | |
46 | + | if ((containsElement(j, q) == false)) | |
47 | + | then throw("Incorrect vote!") | |
48 | + | else if ((height >= a)) | |
45 | 49 | then throw("vote finished") | |
46 | - | else [IntegerEntry(n, ((w + v) - x)), IntegerEntry(o, v)] | |
47 | - | } | |
50 | + | else { | |
51 | + | let s = c(invoke(i, "nsbtStakingSYSREADONLY", [r], nil)) | |
52 | + | let t = g(s[0]) | |
53 | + | let u = makeString(["vote", q], "_") | |
54 | + | let v = valueOrElse(getInteger(this, u), 0) | |
55 | + | let w = m(r, q) | |
56 | + | let x = o(r) | |
57 | + | let y = valueOrElse(getString(this, x), q) | |
58 | + | let z = m(r, y) | |
59 | + | let A = valueOrElse(getInteger(this, z), 0) | |
60 | + | let B = makeString(["vote", y], "_") | |
61 | + | let C = valueOrElse(getInteger(this, B), 0) | |
62 | + | let D = if ((y != q)) | |
63 | + | then [IntegerEntry(z, 0), IntegerEntry(B, (C - A)), IntegerEntry(u, (v + t))] | |
64 | + | else [IntegerEntry(u, ((v + t) - A))] | |
65 | + | (D ++ [IntegerEntry(w, t), StringEntry(x, q)]) | |
66 | + | } | |
67 | + | } | |
48 | 68 | ||
49 | 69 |
github/deemru/w8io/169f3d6 31.57 ms ◑