tx · BkfyGK3pZkEeWk3LYDiZeTbQtcZqCtekwit6mzWuE4WK 3MyBtJnMg6n7m1sDczbrijVyosLnRh4FFbc: -0.01000000 Waves 2022.05.25 13:47 [2067116] smart account 3MyBtJnMg6n7m1sDczbrijVyosLnRh4FFbc > SELF 0.00000000 Waves
{ "type": 13, "id": "BkfyGK3pZkEeWk3LYDiZeTbQtcZqCtekwit6mzWuE4WK", "fee": 1000000, "feeAssetId": null, "timestamp": 1653475679383, "version": 2, "chainId": 84, "sender": "3MyBtJnMg6n7m1sDczbrijVyosLnRh4FFbc", "senderPublicKey": "H3EzJ6fSm7jHKo92xYdNTXaaQYKj9z5q2DJFovRDLJpf", "proofs": [ "ubEjJCsJRCU93V5E8U6bn2ofXr1GphjB2cBucX9UjveaveJ4ZB3fGCCvn1kzr4P92tCGXSSZJUmhpVf42AQzjDo" ], "script": "base64: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", "height": 2067116, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6RABzX8ZBZnt2GEAkhKeJyjr5xuoutocqmmVhA3a5VSz Next: D1sBqEz4jSZqNar2sbrEN6Q5orehz8TFVYsYP9nHYJjt Diff:
Old | New | Differences | |
---|---|---|---|
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "__" | |
5 | 5 | ||
6 | - | let b = 1000000 | |
7 | - | ||
8 | - | let c = 100000000 | |
9 | - | ||
10 | - | let d = "WAVES" | |
11 | - | ||
12 | - | let e = fromBase58String(d) | |
13 | - | ||
14 | - | func f (g) = valueOrErrorMessage(getInteger(this, g), (("Mandatory this." + g) + " is not defined")) | |
6 | + | func b () = "%s%s__config__controlAddress" | |
15 | 7 | ||
16 | 8 | ||
17 | - | func | |
9 | + | func c () = "%s%s__config__restAddress" | |
18 | 10 | ||
19 | 11 | ||
20 | - | func | |
12 | + | func d (e) = valueOrErrorMessage(getString(this, e), (("Mandatory this." + e) + " is not defined")) | |
21 | 13 | ||
22 | 14 | ||
23 | - | func | |
15 | + | func f (e) = valueOrErrorMessage(addressFromString(d(e)), ("fail to parse address for this." + e)) | |
24 | 16 | ||
25 | 17 | ||
26 | - | func l (m) = { | |
27 | - | let n = valueOrErrorMessage(addressFromString(m), ("fail to convert into address " + m)) | |
28 | - | if ((0 > wavesBalance(n).available)) | |
29 | - | then throw() | |
30 | - | else m | |
18 | + | func g (h) = { | |
19 | + | let i = h | |
20 | + | if ($isInstanceOf(i, "String")) | |
21 | + | then { | |
22 | + | let j = i | |
23 | + | j | |
24 | + | } | |
25 | + | else throw("fail to cast into String") | |
31 | 26 | } | |
32 | 27 | ||
33 | 28 | ||
34 | - | func o (n) = ("%s__" + n) | |
29 | + | func k (l) = { | |
30 | + | let m = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] | |
31 | + | let n = size(l) | |
32 | + | if (((n % 2) != 0)) | |
33 | + | then throw("only even args size is accepeted") | |
34 | + | else if ((n > size(m))) | |
35 | + | then throw(("strMap length is greater then " + toString(size(m)))) | |
36 | + | else { | |
37 | + | func k (o,p) = if (if (((p % 2) == 0)) | |
38 | + | then (n >= (p + 1)) | |
39 | + | else false) | |
40 | + | then (((((o + " | |
41 | + | \"") + l[p]) + "\": \"") + l[(p + 1)]) + "\",") | |
42 | + | else o | |
35 | 43 | ||
44 | + | let q = { | |
45 | + | let r = m | |
46 | + | let s = size(r) | |
47 | + | let t = "" | |
48 | + | func u (v,w) = if ((w >= s)) | |
49 | + | then v | |
50 | + | else k(v, r[w]) | |
36 | 51 | ||
37 | - | func p (n) = ("%s%s__totals__" + n) | |
52 | + | func x (v,w) = if ((w >= s)) | |
53 | + | then v | |
54 | + | else throw("List size exceeds 20") | |
38 | 55 | ||
39 | - | ||
40 | - | func q () = "%s%s__cfg__depositAmount" | |
41 | - | ||
42 | - | ||
43 | - | func r () = "%s%s__cfg__neutrinoAddress" | |
44 | - | ||
45 | - | ||
46 | - | func s () = "%s%s__cfg__mainNeutrinoNodeAddress" | |
47 | - | ||
48 | - | ||
49 | - | func t () = "%s%s__cfg__protocolPartX6" | |
50 | - | ||
51 | - | ||
52 | - | func u () = "%s%s__cfg__benificaryPartX6" | |
53 | - | ||
54 | - | ||
55 | - | func v (w,x,y) = makeString(["%s%d%d%d%d", w, toString(lastBlock.height), toString(lastBlock.timestamp), toString(x), toString(y)], a) | |
56 | - | ||
57 | - | ||
58 | - | func z (A,B) = makeString(["%s%s%s", "history", toString(A), toBase58String(B)], a) | |
59 | - | ||
60 | - | ||
61 | - | func C (D,E,F,G,H) = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(D), toString(E), toString(F), toString(G), toString(H)], a) | |
62 | - | ||
63 | - | ||
64 | - | func I (A,B,J,E,F,K,L) = StringEntry(z(A, B), C(J, E, F, K, L)) | |
65 | - | ||
66 | - | ||
67 | - | func M (J,E,F,G,H) = makeString(["%d%d%d%d%d", toString(J), toString(E), toString(F), toString(G), toString(H)], a) | |
68 | - | ||
69 | - | ||
70 | - | func N (O,J,E,F,G,H) = { | |
71 | - | let P = p(toString(O)) | |
72 | - | let Q = split(h(P, M(0, 0, 0, 0, 0)), a) | |
73 | - | let R = (parseIntValue(Q[1]) + J) | |
74 | - | let S = (parseIntValue(Q[2]) + E) | |
75 | - | let T = (parseIntValue(Q[3]) + F) | |
76 | - | let U = (parseIntValue(Q[4]) + G) | |
77 | - | let V = (parseIntValue(Q[5]) + H) | |
78 | - | StringEntry(P, M(R, S, T, U, V)) | |
56 | + | x(u(u(u(u(u(u(u(u(u(u(u(u(u(u(u(u(u(u(u(u(t, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20) | |
57 | + | } | |
58 | + | (("{" + dropRight(q, 1)) + "}") | |
59 | + | } | |
79 | 60 | } | |
80 | 61 | ||
81 | 62 | ||
82 | - | @Callable(W) | |
83 | - | func constructor (x,X,Y,Z,aa) = if ((W.caller != this)) | |
84 | - | then throw("permissions denied") | |
85 | - | else if ((0 > x)) | |
86 | - | then throw("depositAmount less then zero") | |
87 | - | else if ((0 > Z)) | |
88 | - | then throw("protocolPartX6 less then zero") | |
89 | - | else if ((0 > aa)) | |
90 | - | then throw("benificaryPartX6 less then zero") | |
91 | - | else if (((Z + aa) != b)) | |
92 | - | then throw("parts sum must be 1") | |
93 | - | else [IntegerEntry(q(), x), StringEntry(r(), l(X)), StringEntry(s(), l(Y)), IntegerEntry(t(), Z), IntegerEntry(u(), aa)] | |
63 | + | let y = f(b()) | |
64 | + | ||
65 | + | let z = f(c()) | |
66 | + | ||
67 | + | @Callable(A) | |
68 | + | func constructor (B,C) = if ((A.caller != this)) | |
69 | + | then throw("not authorized") | |
70 | + | else [StringEntry(b(), B), StringEntry(c(), C)] | |
94 | 71 | ||
95 | 72 | ||
96 | 73 | ||
97 | - | @Callable(W) | |
98 | - | func wouldLikeToBeNeutrinoNode () = if ((size(W.payments) != 1)) | |
99 | - | then throw("exact 1 payment must be attached") | |
100 | - | else if ((W.caller != W.originCaller)) | |
101 | - | then throw("dapp to dapp calls are not allowed") | |
102 | - | else { | |
103 | - | let ab = W.payments[0] | |
104 | - | let ac = ab.amount | |
105 | - | let ad = valueOrElse(ab.assetId, e) | |
106 | - | let ae = f(q()) | |
107 | - | let B = toBase58String(W.transactionId) | |
108 | - | let A = toString(W.caller) | |
109 | - | let af = o(A) | |
110 | - | if ((ad != e)) | |
111 | - | then throw("only Waves can be used for deposit") | |
112 | - | else if ((ac != ae)) | |
113 | - | then throw((("exactly " + toString(ae)) + " Wavelets are expected")) | |
114 | - | else if ((h(af, "") != "")) | |
115 | - | then throw("your node already registered") | |
116 | - | else [StringEntry(af, v(B, ac, ac))] | |
117 | - | } | |
74 | + | @Callable(A) | |
75 | + | func stakeNsbtPageREADONLY (D,E) = { | |
76 | + | let F = g(invoke(z, "gnsbtInfoREADONLY", [D, E], nil)) | |
77 | + | let G = g(invoke(z, "swapInfoREADONLY", [D], nil)) | |
78 | + | $Tuple2(nil, k(["gnsbtInfoREADONLY", F, "swapInfoREADONLY", G])) | |
79 | + | } | |
118 | 80 | ||
119 | 81 | ||
120 | 82 | ||
121 | - | @Callable(W) | |
122 | - | func distibuteMinerReward (ag) = if ((size(W.payments) != 1)) | |
123 | - | then throw("exact 1 payment must be attached") | |
124 | - | else if ((W.caller != W.originCaller)) | |
125 | - | then throw("dapp to dapp calls are not allowed") | |
126 | - | else { | |
127 | - | let ab = W.payments[0] | |
128 | - | let J = ab.amount | |
129 | - | let ad = valueOrElse(ab.assetId, e) | |
130 | - | if ((ad != e)) | |
131 | - | then throw("only Waves can be used") | |
132 | - | else { | |
133 | - | let ah = k(r()) | |
134 | - | let ai = k(s()) | |
135 | - | let aj = W.caller | |
136 | - | let ak = addressFromStringValue(ag) | |
137 | - | let al = f(t()) | |
138 | - | let am = f(u()) | |
139 | - | if ((wavesBalance(aj).available != 0)) | |
140 | - | then throw("all Waves must be sent from Node") | |
141 | - | else { | |
142 | - | let an = fraction(J, am, b) | |
143 | - | let F = (J - an) | |
144 | - | let K = (F / 2) | |
145 | - | let L = (F - K) | |
146 | - | [ScriptTransfer(ak, an, unit), ScriptTransfer(ah, K, unit), ScriptTransfer(ai, L, unit), I(aj, W.transactionId, J, an, F, K, L), N(aj, J, an, F, K, L)] | |
147 | - | } | |
148 | - | } | |
149 | - | } | |
83 | + | @Callable(A) | |
84 | + | func buyNsbtPageREADONLY (D) = { | |
85 | + | let F = g(invoke(z, "gnsbtInfoREADONLY", [D, 0], nil)) | |
86 | + | let H = g(invoke(z, "neutrinoStatsREADONLY", nil, nil)) | |
87 | + | $Tuple2(nil, k(["gnsbtInfoREADONLY", F, "neutrinoStatsREADONLY", H])) | |
88 | + | } | |
150 | 89 | ||
151 | 90 |
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 = 1000000 | |
7 | - | ||
8 | - | let c = 100000000 | |
9 | - | ||
10 | - | let d = "WAVES" | |
11 | - | ||
12 | - | let e = fromBase58String(d) | |
13 | - | ||
14 | - | func f (g) = valueOrErrorMessage(getInteger(this, g), (("Mandatory this." + g) + " is not defined")) | |
6 | + | func b () = "%s%s__config__controlAddress" | |
15 | 7 | ||
16 | 8 | ||
17 | - | func | |
9 | + | func c () = "%s%s__config__restAddress" | |
18 | 10 | ||
19 | 11 | ||
20 | - | func | |
12 | + | func d (e) = valueOrErrorMessage(getString(this, e), (("Mandatory this." + e) + " is not defined")) | |
21 | 13 | ||
22 | 14 | ||
23 | - | func | |
15 | + | func f (e) = valueOrErrorMessage(addressFromString(d(e)), ("fail to parse address for this." + e)) | |
24 | 16 | ||
25 | 17 | ||
26 | - | func l (m) = { | |
27 | - | let n = valueOrErrorMessage(addressFromString(m), ("fail to convert into address " + m)) | |
28 | - | if ((0 > wavesBalance(n).available)) | |
29 | - | then throw() | |
30 | - | else m | |
18 | + | func g (h) = { | |
19 | + | let i = h | |
20 | + | if ($isInstanceOf(i, "String")) | |
21 | + | then { | |
22 | + | let j = i | |
23 | + | j | |
24 | + | } | |
25 | + | else throw("fail to cast into String") | |
31 | 26 | } | |
32 | 27 | ||
33 | 28 | ||
34 | - | func o (n) = ("%s__" + n) | |
29 | + | func k (l) = { | |
30 | + | let m = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] | |
31 | + | let n = size(l) | |
32 | + | if (((n % 2) != 0)) | |
33 | + | then throw("only even args size is accepeted") | |
34 | + | else if ((n > size(m))) | |
35 | + | then throw(("strMap length is greater then " + toString(size(m)))) | |
36 | + | else { | |
37 | + | func k (o,p) = if (if (((p % 2) == 0)) | |
38 | + | then (n >= (p + 1)) | |
39 | + | else false) | |
40 | + | then (((((o + " | |
41 | + | \"") + l[p]) + "\": \"") + l[(p + 1)]) + "\",") | |
42 | + | else o | |
35 | 43 | ||
44 | + | let q = { | |
45 | + | let r = m | |
46 | + | let s = size(r) | |
47 | + | let t = "" | |
48 | + | func u (v,w) = if ((w >= s)) | |
49 | + | then v | |
50 | + | else k(v, r[w]) | |
36 | 51 | ||
37 | - | func p (n) = ("%s%s__totals__" + n) | |
52 | + | func x (v,w) = if ((w >= s)) | |
53 | + | then v | |
54 | + | else throw("List size exceeds 20") | |
38 | 55 | ||
39 | - | ||
40 | - | func q () = "%s%s__cfg__depositAmount" | |
41 | - | ||
42 | - | ||
43 | - | func r () = "%s%s__cfg__neutrinoAddress" | |
44 | - | ||
45 | - | ||
46 | - | func s () = "%s%s__cfg__mainNeutrinoNodeAddress" | |
47 | - | ||
48 | - | ||
49 | - | func t () = "%s%s__cfg__protocolPartX6" | |
50 | - | ||
51 | - | ||
52 | - | func u () = "%s%s__cfg__benificaryPartX6" | |
53 | - | ||
54 | - | ||
55 | - | func v (w,x,y) = makeString(["%s%d%d%d%d", w, toString(lastBlock.height), toString(lastBlock.timestamp), toString(x), toString(y)], a) | |
56 | - | ||
57 | - | ||
58 | - | func z (A,B) = makeString(["%s%s%s", "history", toString(A), toBase58String(B)], a) | |
59 | - | ||
60 | - | ||
61 | - | func C (D,E,F,G,H) = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(D), toString(E), toString(F), toString(G), toString(H)], a) | |
62 | - | ||
63 | - | ||
64 | - | func I (A,B,J,E,F,K,L) = StringEntry(z(A, B), C(J, E, F, K, L)) | |
65 | - | ||
66 | - | ||
67 | - | func M (J,E,F,G,H) = makeString(["%d%d%d%d%d", toString(J), toString(E), toString(F), toString(G), toString(H)], a) | |
68 | - | ||
69 | - | ||
70 | - | func N (O,J,E,F,G,H) = { | |
71 | - | let P = p(toString(O)) | |
72 | - | let Q = split(h(P, M(0, 0, 0, 0, 0)), a) | |
73 | - | let R = (parseIntValue(Q[1]) + J) | |
74 | - | let S = (parseIntValue(Q[2]) + E) | |
75 | - | let T = (parseIntValue(Q[3]) + F) | |
76 | - | let U = (parseIntValue(Q[4]) + G) | |
77 | - | let V = (parseIntValue(Q[5]) + H) | |
78 | - | StringEntry(P, M(R, S, T, U, V)) | |
56 | + | x(u(u(u(u(u(u(u(u(u(u(u(u(u(u(u(u(u(u(u(u(t, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20) | |
57 | + | } | |
58 | + | (("{" + dropRight(q, 1)) + "}") | |
59 | + | } | |
79 | 60 | } | |
80 | 61 | ||
81 | 62 | ||
82 | - | @Callable(W) | |
83 | - | func constructor (x,X,Y,Z,aa) = if ((W.caller != this)) | |
84 | - | then throw("permissions denied") | |
85 | - | else if ((0 > x)) | |
86 | - | then throw("depositAmount less then zero") | |
87 | - | else if ((0 > Z)) | |
88 | - | then throw("protocolPartX6 less then zero") | |
89 | - | else if ((0 > aa)) | |
90 | - | then throw("benificaryPartX6 less then zero") | |
91 | - | else if (((Z + aa) != b)) | |
92 | - | then throw("parts sum must be 1") | |
93 | - | else [IntegerEntry(q(), x), StringEntry(r(), l(X)), StringEntry(s(), l(Y)), IntegerEntry(t(), Z), IntegerEntry(u(), aa)] | |
63 | + | let y = f(b()) | |
64 | + | ||
65 | + | let z = f(c()) | |
66 | + | ||
67 | + | @Callable(A) | |
68 | + | func constructor (B,C) = if ((A.caller != this)) | |
69 | + | then throw("not authorized") | |
70 | + | else [StringEntry(b(), B), StringEntry(c(), C)] | |
94 | 71 | ||
95 | 72 | ||
96 | 73 | ||
97 | - | @Callable(W) | |
98 | - | func wouldLikeToBeNeutrinoNode () = if ((size(W.payments) != 1)) | |
99 | - | then throw("exact 1 payment must be attached") | |
100 | - | else if ((W.caller != W.originCaller)) | |
101 | - | then throw("dapp to dapp calls are not allowed") | |
102 | - | else { | |
103 | - | let ab = W.payments[0] | |
104 | - | let ac = ab.amount | |
105 | - | let ad = valueOrElse(ab.assetId, e) | |
106 | - | let ae = f(q()) | |
107 | - | let B = toBase58String(W.transactionId) | |
108 | - | let A = toString(W.caller) | |
109 | - | let af = o(A) | |
110 | - | if ((ad != e)) | |
111 | - | then throw("only Waves can be used for deposit") | |
112 | - | else if ((ac != ae)) | |
113 | - | then throw((("exactly " + toString(ae)) + " Wavelets are expected")) | |
114 | - | else if ((h(af, "") != "")) | |
115 | - | then throw("your node already registered") | |
116 | - | else [StringEntry(af, v(B, ac, ac))] | |
117 | - | } | |
74 | + | @Callable(A) | |
75 | + | func stakeNsbtPageREADONLY (D,E) = { | |
76 | + | let F = g(invoke(z, "gnsbtInfoREADONLY", [D, E], nil)) | |
77 | + | let G = g(invoke(z, "swapInfoREADONLY", [D], nil)) | |
78 | + | $Tuple2(nil, k(["gnsbtInfoREADONLY", F, "swapInfoREADONLY", G])) | |
79 | + | } | |
118 | 80 | ||
119 | 81 | ||
120 | 82 | ||
121 | - | @Callable(W) | |
122 | - | func distibuteMinerReward (ag) = if ((size(W.payments) != 1)) | |
123 | - | then throw("exact 1 payment must be attached") | |
124 | - | else if ((W.caller != W.originCaller)) | |
125 | - | then throw("dapp to dapp calls are not allowed") | |
126 | - | else { | |
127 | - | let ab = W.payments[0] | |
128 | - | let J = ab.amount | |
129 | - | let ad = valueOrElse(ab.assetId, e) | |
130 | - | if ((ad != e)) | |
131 | - | then throw("only Waves can be used") | |
132 | - | else { | |
133 | - | let ah = k(r()) | |
134 | - | let ai = k(s()) | |
135 | - | let aj = W.caller | |
136 | - | let ak = addressFromStringValue(ag) | |
137 | - | let al = f(t()) | |
138 | - | let am = f(u()) | |
139 | - | if ((wavesBalance(aj).available != 0)) | |
140 | - | then throw("all Waves must be sent from Node") | |
141 | - | else { | |
142 | - | let an = fraction(J, am, b) | |
143 | - | let F = (J - an) | |
144 | - | let K = (F / 2) | |
145 | - | let L = (F - K) | |
146 | - | [ScriptTransfer(ak, an, unit), ScriptTransfer(ah, K, unit), ScriptTransfer(ai, L, unit), I(aj, W.transactionId, J, an, F, K, L), N(aj, J, an, F, K, L)] | |
147 | - | } | |
148 | - | } | |
149 | - | } | |
83 | + | @Callable(A) | |
84 | + | func buyNsbtPageREADONLY (D) = { | |
85 | + | let F = g(invoke(z, "gnsbtInfoREADONLY", [D, 0], nil)) | |
86 | + | let H = g(invoke(z, "neutrinoStatsREADONLY", nil, nil)) | |
87 | + | $Tuple2(nil, k(["gnsbtInfoREADONLY", F, "neutrinoStatsREADONLY", H])) | |
88 | + | } | |
150 | 89 | ||
151 | 90 |
github/deemru/w8io/169f3d6 38.06 ms ◑![]()