tx · FJ4Stj6Ubm3XjLi9o2o4Ge2Qg6dYMjvT9HkmSduEruYt
3N4gGXLoQLDL8J6rHho3CK714TWiAw3ahi4: -0.01400000 Waves
2020.09.10 22:34 [1171650] smart account 3N4gGXLoQLDL8J6rHho3CK714TWiAw3ahi4 > SELF 0.00000000 Waves
{
"type": 13,
"id": "FJ4Stj6Ubm3XjLi9o2o4Ge2Qg6dYMjvT9HkmSduEruYt",
"fee": 1400000,
"feeAssetId": null,
"timestamp": 1599766535089,
"version": 1,
"sender": "3N4gGXLoQLDL8J6rHho3CK714TWiAw3ahi4",
"senderPublicKey": "2G2SB6hLj6PxUgshtzMt5QLV3XzLbQNhvXk5f6QTkTZy",
"proofs": [
"4DaV5Ur5wZHR3iTFADiPg3fqSxxvv9wo7qpyoEBGgNXBgQA66wb7w3F5gFXUDwZxQYDB4xdEEcQL6p8jKFFAsfqh"
],
"script": "base64:AAIDAAAAAAAAAA8IARIECgICCBIFCgMICAEAAAAfAAAAAAVXQVZFUwIAAAAFV0FWRVMAAAAAB0ludFR5cGUAAAAAAAAAAAAAAAAAClN0cmluZ1R5cGUAAAAAAAAAAAEAAAAACUJ5dGVzVHlwZQAAAAAAAAAAAgEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABdgUAAAAHJG1hdGNoMAUAAAABdgAAAAAAAAAAAAEAAAANZ2V0Qnl0ZXNCeUtleQAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEHAAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAABdgUAAAAHJG1hdGNoMAUAAAABdgEAAAAD0AAAAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAF2BQAAAAckbWF0Y2gwBQAAAAF2AgAAAAABAAAAGGdldFN0cmluZ0J5QWRkcmVzc0FuZEtleQAAAAIAAAAHYWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXYFAAAAByRtYXRjaDAFAAAAAXYCAAAAAAEAAAAYZ2V0TnVtYmVyQnlBZGRyZXNzQW5kS2V5AAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAdhZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABdgUAAAAHJG1hdGNoMAUAAAABdgAAAAAAAAAAAAAAAAAKT3JhY2xlc0tleQIAAAAHb3JhY2xlcwAAAAAUU3Vic2NyaWJlckFkZHJlc3NLZXkCAAAAEnN1YnNjcmliZXJfYWRkcmVzcwAAAAAHVHlwZUtleQIAAAAEdHlwZQAAAAASR3Jhdml0eUNvbnRyYWN0S2V5AgAAABBncmF2aXR5X2NvbnRyYWN0AAAAABFCZnRDb2VmZmljaWVudEtleQIAAAAPYmZ0X2NvZWZmaWNpZW50AAAAAA1MYXN0SGVpZ2h0S2V5AgAAAAtsYXN0X2hlaWdodAAAAAAMTGFzdFJvdW5kS2V5AgAAAApsYXN0X3JvdW5kAAAAAA5MYXN0UHVsc2VJZEtleQIAAAANbGFzdF9wdWxzZV9pZAEAAAAOZ2V0SGFzaERhdGFLZXkAAAABAAAAB3B1bHNlSWQJAAEsAAAAAgIAAAAKZGF0YV9oYXNoXwkAAaQAAAABBQAAAAdwdWxzZUlkAQAAABNnZXRIZWlnaHRCeVB1bHNlS2V5AAAAAQAAAAdwdWxzZUlkCQABLAAAAAICAAAAB2hlaWdodF8JAAGkAAAAAQUAAAAHcHVsc2VJZAEAAAAKQ29uc3Vsc0tleQAAAAEAAAAFcm91bmQJAAEsAAAAAgIAAAAIY29uc3Vsc18JAAGkAAAAAQUAAAAFcm91bmQAAAAAB29yYWNsZXMJAAS1AAAAAgkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQUAAAAKT3JhY2xlc0tleQIAAAABLAAAAAAOYmZ0Q29lZmZpY2llbnQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEFAAAAEUJmdENvZWZmaWNpZW50S2V5AAAAAA9ncmFjaXR5Q29udHJhY3QJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQUAAAASR3Jhdml0eUNvbnRyYWN0S2V5AAAAABBsYXN0R3Jhdml0eVJvdW5kCQEAAAAYZ2V0TnVtYmVyQnlBZGRyZXNzQW5kS2V5AAAAAgUAAAAPZ3JhY2l0eUNvbnRyYWN0BQAAAAxMYXN0Um91bmRLZXkAAAAAB2NvbnN1bHMJAAS1AAAAAgkBAAAAGGdldFN0cmluZ0J5QWRkcmVzc0FuZEtleQAAAAIFAAAAD2dyYWNpdHlDb250cmFjdAkBAAAACkNvbnN1bHNLZXkAAAABBQAAABBsYXN0R3Jhdml0eVJvdW5kAgAAAAEsAAAAABFzdWJzY3JpYmVyQWRkcmVzcwkBAAAADmdl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",
"chainId": 84,
"height": 1171650,
"applicationStatus": "succeeded",
"spentComplexity": 0
}
View: original | compacted
Prev: DReK56wQPwCXxJgaiy7bB9jPUL5R5YHYZP4QDAQK1eFo
Next: FwkgAqTcGuJuEiLXG2r9rG3zV8cDryidaFZLHxxp9Ux7
Diff:
Old | New | | Differences |
---|
53 | 53 | | } |
---|
54 | 54 | | |
---|
55 | 55 | | |
---|
56 | | - | let m = "oracles" |
---|
| 56 | + | func m (l,f) = { |
---|
| 57 | + | let g = getInteger(l, f) |
---|
| 58 | + | if ($isInstanceOf(g, "Int")) |
---|
| 59 | + | then { |
---|
| 60 | + | let h = g |
---|
| 61 | + | h |
---|
| 62 | + | } |
---|
| 63 | + | else 0 |
---|
| 64 | + | } |
---|
57 | 65 | | |
---|
58 | | - | let n = "consuls" |
---|
| 66 | + | |
---|
| 67 | + | let n = "oracles" |
---|
59 | 68 | | |
---|
60 | 69 | | let o = "subscriber_address" |
---|
61 | 70 | | |
---|
|
77 | 86 | | func x (w) = ("height_" + toString(w)) |
---|
78 | 87 | | |
---|
79 | 88 | | |
---|
80 | | - | let y = split(j(m), ",") |
---|
81 | | - | |
---|
82 | | - | let z = e(r) |
---|
83 | | - | |
---|
84 | | - | let A = addressFromStringValue(j(q)) |
---|
85 | | - | |
---|
86 | | - | let B = split(k(A, n), ",") |
---|
87 | | - | |
---|
88 | | - | let C = j(o) |
---|
89 | | - | |
---|
90 | | - | let D = e(p) |
---|
91 | | - | |
---|
92 | | - | let E = e(u) |
---|
93 | | - | |
---|
94 | | - | func F (w) = i(v(w)) |
---|
| 89 | + | func y (z) = ("consuls_" + toString(z)) |
---|
95 | 90 | | |
---|
96 | 91 | | |
---|
97 | | - | func G (w) = e(x(w)) |
---|
| 92 | + | let A = split(j(n), ",") |
---|
| 93 | + | |
---|
| 94 | + | let B = e(r) |
---|
| 95 | + | |
---|
| 96 | + | let C = addressFromStringValue(j(q)) |
---|
| 97 | + | |
---|
| 98 | + | let D = m(C, t) |
---|
| 99 | + | |
---|
| 100 | + | let E = split(k(C, y(D)), ",") |
---|
| 101 | + | |
---|
| 102 | + | let F = j(o) |
---|
| 103 | + | |
---|
| 104 | + | let G = e(p) |
---|
| 105 | + | |
---|
| 106 | + | let H = e(u) |
---|
| 107 | + | |
---|
| 108 | + | func I (w) = i(v(w)) |
---|
98 | 109 | | |
---|
99 | 110 | | |
---|
100 | | - | func H (I,J,K) = if ((J != "nil")) |
---|
101 | | - | then if (sigVerify(I, fromBase58String(J), fromBase58String(K))) |
---|
| 111 | + | func J (w) = e(x(w)) |
---|
| 112 | + | |
---|
| 113 | + | |
---|
| 114 | + | func K (L,M,N) = if ((M != "nil")) |
---|
| 115 | + | then if (sigVerify(L, fromBase58String(M), fromBase58String(N))) |
---|
102 | 116 | | then 1 |
---|
103 | 117 | | else 0 |
---|
104 | 118 | | else 0 |
---|
105 | 119 | | |
---|
106 | 120 | | |
---|
107 | | - | @Callable(L) |
---|
108 | | - | func sendHashValue (I,M) = { |
---|
109 | | - | let N = split(M, ",") |
---|
110 | | - | let O = ((((H(I, N[0], y[0]) + H(I, N[1], y[1])) + H(I, N[2], y[2])) + H(I, N[3], y[3])) + H(I, N[4], y[4])) |
---|
111 | | - | if ((z > O)) |
---|
| 121 | + | @Callable(O) |
---|
| 122 | + | func sendHashValue (L,P) = { |
---|
| 123 | + | let Q = split(P, ",") |
---|
| 124 | + | let R = ((((K(L, Q[0], A[0]) + K(L, Q[1], A[1])) + K(L, Q[2], A[2])) + K(L, Q[3], A[3])) + K(L, Q[4], A[4])) |
---|
| 125 | + | if ((B > R)) |
---|
112 | 126 | | then throw("invalid bft count") |
---|
113 | 127 | | else if ((i(toString(height)) != base58'2CsAf')) |
---|
114 | 128 | | then throw("data is exist") |
---|
115 | 129 | | else { |
---|
116 | | - | let w = (E + 1) |
---|
117 | | - | WriteSet([DataEntry(v(w), I), DataEntry(x(w), height), DataEntry(s, height), DataEntry(u, w)]) |
---|
| 130 | + | let w = (H + 1) |
---|
| 131 | + | WriteSet([DataEntry(v(w), L), DataEntry(x(w), height), DataEntry(s, height), DataEntry(u, w)]) |
---|
118 | 132 | | } |
---|
119 | 133 | | } |
---|
120 | 134 | | |
---|
121 | 135 | | |
---|
122 | 136 | | |
---|
123 | | - | @Callable(L) |
---|
124 | | - | func updateOracles (P,Q,R) = { |
---|
125 | | - | let M = split(Q, ",") |
---|
126 | | - | let O = ((((H(toBytes(P), M[0], B[0]) + H(toBytes(P), M[1], B[1])) + H(toBytes(P), M[2], B[2])) + H(toBytes(P), M[3], B[3])) + H(toBytes(P), M[4], B[4])) |
---|
127 | | - | if ((O > z)) |
---|
| 137 | + | @Callable(O) |
---|
| 138 | + | func updateOracles (S,T,z) = { |
---|
| 139 | + | let P = split(T, ",") |
---|
| 140 | + | let R = ((((K(toBytes(S), P[0], E[0]) + K(toBytes(S), P[1], E[1])) + K(toBytes(S), P[2], E[2])) + K(toBytes(S), P[3], E[3])) + K(toBytes(S), P[4], E[4])) |
---|
| 141 | + | if ((R > B)) |
---|
128 | 142 | | then throw("invalid bft count") |
---|
129 | | - | else WriteSet([DataEntry(m, P), DataEntry(((t + "_") + toString(R)), R)]) |
---|
| 143 | + | else WriteSet([DataEntry(n, S), DataEntry(((t + "_") + toString(z)), z)]) |
---|
130 | 144 | | } |
---|
131 | 145 | | |
---|
132 | 146 | | |
---|
133 | | - | @Verifier(L) |
---|
134 | | - | func S () = { |
---|
135 | | - | let g = L |
---|
| 147 | + | @Verifier(O) |
---|
| 148 | + | func U () = { |
---|
| 149 | + | let g = O |
---|
136 | 150 | | if ($isInstanceOf(g, "InvokeScriptTransaction")) |
---|
137 | 151 | | then { |
---|
138 | | - | let T = g |
---|
139 | | - | let U = if ((D == b)) |
---|
| 152 | + | let V = g |
---|
| 153 | + | let W = if ((G == b)) |
---|
140 | 154 | | then { |
---|
141 | 155 | | let h = { |
---|
142 | | - | let V = T.args[0] |
---|
143 | | - | if ($isInstanceOf(V, "Int")) |
---|
| 156 | + | let X = V.args[0] |
---|
| 157 | + | if ($isInstanceOf(X, "Int")) |
---|
144 | 158 | | then { |
---|
145 | | - | let h = V |
---|
| 159 | + | let h = X |
---|
146 | 160 | | h |
---|
147 | 161 | | } |
---|
148 | 162 | | else throw("invalid value type") |
---|
149 | 163 | | } |
---|
150 | 164 | | toBytes(h) |
---|
151 | 165 | | } |
---|
152 | | - | else if ((D == c)) |
---|
| 166 | + | else if ((G == c)) |
---|
153 | 167 | | then { |
---|
154 | 168 | | let h = { |
---|
155 | | - | let V = T.args[0] |
---|
156 | | - | if ($isInstanceOf(V, "String")) |
---|
| 169 | + | let X = V.args[0] |
---|
| 170 | + | if ($isInstanceOf(X, "String")) |
---|
157 | 171 | | then { |
---|
158 | | - | let h = V |
---|
| 172 | + | let h = X |
---|
159 | 173 | | h |
---|
160 | 174 | | } |
---|
161 | 175 | | else throw("invalid value type") |
---|
162 | 176 | | } |
---|
163 | 177 | | toBytes(h) |
---|
164 | 178 | | } |
---|
165 | | - | else if ((D == d)) |
---|
| 179 | + | else if ((G == d)) |
---|
166 | 180 | | then { |
---|
167 | 181 | | let h = { |
---|
168 | | - | let V = T.args[0] |
---|
169 | | - | if ($isInstanceOf(V, "ByteVector")) |
---|
| 182 | + | let X = V.args[0] |
---|
| 183 | + | if ($isInstanceOf(X, "ByteVector")) |
---|
170 | 184 | | then { |
---|
171 | | - | let h = V |
---|
| 185 | + | let h = X |
---|
172 | 186 | | h |
---|
173 | 187 | | } |
---|
174 | 188 | | else throw("invalid value type") |
---|
|
176 | 190 | | h |
---|
177 | 191 | | } |
---|
178 | 192 | | else throw("invalid value type") |
---|
179 | | - | let W = { |
---|
180 | | - | let V = T.args[1] |
---|
181 | | - | if ($isInstanceOf(V, "Int")) |
---|
| 193 | + | let Y = { |
---|
| 194 | + | let X = V.args[1] |
---|
| 195 | + | if ($isInstanceOf(X, "Int")) |
---|
182 | 196 | | then { |
---|
183 | | - | let W = V |
---|
184 | | - | W |
---|
| 197 | + | let Y = X |
---|
| 198 | + | Y |
---|
185 | 199 | | } |
---|
186 | 200 | | else throw("invalid height type") |
---|
187 | 201 | | } |
---|
188 | | - | if ((T.function != "attachValue")) |
---|
| 202 | + | if ((V.function != "attachValue")) |
---|
189 | 203 | | then throw("invalid function name") |
---|
190 | | - | else if ((size(T.args) != 2)) |
---|
| 204 | + | else if ((size(V.args) != 2)) |
---|
191 | 205 | | then throw("invalid args size") |
---|
192 | | - | else if ((T.dApp != addressFromStringValue(C))) |
---|
| 206 | + | else if ((V.dApp != addressFromStringValue(F))) |
---|
193 | 207 | | then throw("invalid dapp address") |
---|
194 | | - | else if ((G(W) != height)) |
---|
| 208 | + | else if ((J(Y) != height)) |
---|
195 | 209 | | then throw("invalid height") |
---|
196 | | - | else if ((F(W) == base58'2CsAf')) |
---|
| 210 | + | else if ((I(Y) == base58'2CsAf')) |
---|
197 | 211 | | then throw("invalid pulse id") |
---|
198 | | - | else if ((keccak256(U) != F(W))) |
---|
| 212 | + | else if ((keccak256(W) != I(Y))) |
---|
199 | 213 | | then throw("invalid keccak256(value)") |
---|
200 | 214 | | else true |
---|
201 | 215 | | } |
---|
202 | | - | else sigVerify(L.bodyBytes, L.proofs[0], L.senderPublicKey) |
---|
| 216 | + | else sigVerify(O.bodyBytes, O.proofs[0], O.senderPublicKey) |
---|
203 | 217 | | } |
---|
204 | 218 | | |
---|
Full:
Old | New | | Differences |
---|
1 | 1 | | {-# STDLIB_VERSION 3 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | 4 | | let a = "WAVES" |
---|
5 | 5 | | |
---|
6 | 6 | | let b = 0 |
---|
7 | 7 | | |
---|
8 | 8 | | let c = 1 |
---|
9 | 9 | | |
---|
10 | 10 | | let d = 2 |
---|
11 | 11 | | |
---|
12 | 12 | | func e (f) = { |
---|
13 | 13 | | let g = getInteger(this, f) |
---|
14 | 14 | | if ($isInstanceOf(g, "Int")) |
---|
15 | 15 | | then { |
---|
16 | 16 | | let h = g |
---|
17 | 17 | | h |
---|
18 | 18 | | } |
---|
19 | 19 | | else 0 |
---|
20 | 20 | | } |
---|
21 | 21 | | |
---|
22 | 22 | | |
---|
23 | 23 | | func i (f) = { |
---|
24 | 24 | | let g = getBinary(this, f) |
---|
25 | 25 | | if ($isInstanceOf(g, "ByteVector")) |
---|
26 | 26 | | then { |
---|
27 | 27 | | let h = g |
---|
28 | 28 | | h |
---|
29 | 29 | | } |
---|
30 | 30 | | else base58'2CsAf' |
---|
31 | 31 | | } |
---|
32 | 32 | | |
---|
33 | 33 | | |
---|
34 | 34 | | func j (f) = { |
---|
35 | 35 | | let g = getString(this, f) |
---|
36 | 36 | | if ($isInstanceOf(g, "String")) |
---|
37 | 37 | | then { |
---|
38 | 38 | | let h = g |
---|
39 | 39 | | h |
---|
40 | 40 | | } |
---|
41 | 41 | | else "" |
---|
42 | 42 | | } |
---|
43 | 43 | | |
---|
44 | 44 | | |
---|
45 | 45 | | func k (l,f) = { |
---|
46 | 46 | | let g = getString(l, f) |
---|
47 | 47 | | if ($isInstanceOf(g, "String")) |
---|
48 | 48 | | then { |
---|
49 | 49 | | let h = g |
---|
50 | 50 | | h |
---|
51 | 51 | | } |
---|
52 | 52 | | else "" |
---|
53 | 53 | | } |
---|
54 | 54 | | |
---|
55 | 55 | | |
---|
56 | | - | let m = "oracles" |
---|
| 56 | + | func m (l,f) = { |
---|
| 57 | + | let g = getInteger(l, f) |
---|
| 58 | + | if ($isInstanceOf(g, "Int")) |
---|
| 59 | + | then { |
---|
| 60 | + | let h = g |
---|
| 61 | + | h |
---|
| 62 | + | } |
---|
| 63 | + | else 0 |
---|
| 64 | + | } |
---|
57 | 65 | | |
---|
58 | | - | let n = "consuls" |
---|
| 66 | + | |
---|
| 67 | + | let n = "oracles" |
---|
59 | 68 | | |
---|
60 | 69 | | let o = "subscriber_address" |
---|
61 | 70 | | |
---|
62 | 71 | | let p = "type" |
---|
63 | 72 | | |
---|
64 | 73 | | let q = "gravity_contract" |
---|
65 | 74 | | |
---|
66 | 75 | | let r = "bft_coefficient" |
---|
67 | 76 | | |
---|
68 | 77 | | let s = "last_height" |
---|
69 | 78 | | |
---|
70 | 79 | | let t = "last_round" |
---|
71 | 80 | | |
---|
72 | 81 | | let u = "last_pulse_id" |
---|
73 | 82 | | |
---|
74 | 83 | | func v (w) = ("data_hash_" + toString(w)) |
---|
75 | 84 | | |
---|
76 | 85 | | |
---|
77 | 86 | | func x (w) = ("height_" + toString(w)) |
---|
78 | 87 | | |
---|
79 | 88 | | |
---|
80 | | - | let y = split(j(m), ",") |
---|
81 | | - | |
---|
82 | | - | let z = e(r) |
---|
83 | | - | |
---|
84 | | - | let A = addressFromStringValue(j(q)) |
---|
85 | | - | |
---|
86 | | - | let B = split(k(A, n), ",") |
---|
87 | | - | |
---|
88 | | - | let C = j(o) |
---|
89 | | - | |
---|
90 | | - | let D = e(p) |
---|
91 | | - | |
---|
92 | | - | let E = e(u) |
---|
93 | | - | |
---|
94 | | - | func F (w) = i(v(w)) |
---|
| 89 | + | func y (z) = ("consuls_" + toString(z)) |
---|
95 | 90 | | |
---|
96 | 91 | | |
---|
97 | | - | func G (w) = e(x(w)) |
---|
| 92 | + | let A = split(j(n), ",") |
---|
| 93 | + | |
---|
| 94 | + | let B = e(r) |
---|
| 95 | + | |
---|
| 96 | + | let C = addressFromStringValue(j(q)) |
---|
| 97 | + | |
---|
| 98 | + | let D = m(C, t) |
---|
| 99 | + | |
---|
| 100 | + | let E = split(k(C, y(D)), ",") |
---|
| 101 | + | |
---|
| 102 | + | let F = j(o) |
---|
| 103 | + | |
---|
| 104 | + | let G = e(p) |
---|
| 105 | + | |
---|
| 106 | + | let H = e(u) |
---|
| 107 | + | |
---|
| 108 | + | func I (w) = i(v(w)) |
---|
98 | 109 | | |
---|
99 | 110 | | |
---|
100 | | - | func H (I,J,K) = if ((J != "nil")) |
---|
101 | | - | then if (sigVerify(I, fromBase58String(J), fromBase58String(K))) |
---|
| 111 | + | func J (w) = e(x(w)) |
---|
| 112 | + | |
---|
| 113 | + | |
---|
| 114 | + | func K (L,M,N) = if ((M != "nil")) |
---|
| 115 | + | then if (sigVerify(L, fromBase58String(M), fromBase58String(N))) |
---|
102 | 116 | | then 1 |
---|
103 | 117 | | else 0 |
---|
104 | 118 | | else 0 |
---|
105 | 119 | | |
---|
106 | 120 | | |
---|
107 | | - | @Callable(L) |
---|
108 | | - | func sendHashValue (I,M) = { |
---|
109 | | - | let N = split(M, ",") |
---|
110 | | - | let O = ((((H(I, N[0], y[0]) + H(I, N[1], y[1])) + H(I, N[2], y[2])) + H(I, N[3], y[3])) + H(I, N[4], y[4])) |
---|
111 | | - | if ((z > O)) |
---|
| 121 | + | @Callable(O) |
---|
| 122 | + | func sendHashValue (L,P) = { |
---|
| 123 | + | let Q = split(P, ",") |
---|
| 124 | + | let R = ((((K(L, Q[0], A[0]) + K(L, Q[1], A[1])) + K(L, Q[2], A[2])) + K(L, Q[3], A[3])) + K(L, Q[4], A[4])) |
---|
| 125 | + | if ((B > R)) |
---|
112 | 126 | | then throw("invalid bft count") |
---|
113 | 127 | | else if ((i(toString(height)) != base58'2CsAf')) |
---|
114 | 128 | | then throw("data is exist") |
---|
115 | 129 | | else { |
---|
116 | | - | let w = (E + 1) |
---|
117 | | - | WriteSet([DataEntry(v(w), I), DataEntry(x(w), height), DataEntry(s, height), DataEntry(u, w)]) |
---|
| 130 | + | let w = (H + 1) |
---|
| 131 | + | WriteSet([DataEntry(v(w), L), DataEntry(x(w), height), DataEntry(s, height), DataEntry(u, w)]) |
---|
118 | 132 | | } |
---|
119 | 133 | | } |
---|
120 | 134 | | |
---|
121 | 135 | | |
---|
122 | 136 | | |
---|
123 | | - | @Callable(L) |
---|
124 | | - | func updateOracles (P,Q,R) = { |
---|
125 | | - | let M = split(Q, ",") |
---|
126 | | - | let O = ((((H(toBytes(P), M[0], B[0]) + H(toBytes(P), M[1], B[1])) + H(toBytes(P), M[2], B[2])) + H(toBytes(P), M[3], B[3])) + H(toBytes(P), M[4], B[4])) |
---|
127 | | - | if ((O > z)) |
---|
| 137 | + | @Callable(O) |
---|
| 138 | + | func updateOracles (S,T,z) = { |
---|
| 139 | + | let P = split(T, ",") |
---|
| 140 | + | let R = ((((K(toBytes(S), P[0], E[0]) + K(toBytes(S), P[1], E[1])) + K(toBytes(S), P[2], E[2])) + K(toBytes(S), P[3], E[3])) + K(toBytes(S), P[4], E[4])) |
---|
| 141 | + | if ((R > B)) |
---|
128 | 142 | | then throw("invalid bft count") |
---|
129 | | - | else WriteSet([DataEntry(m, P), DataEntry(((t + "_") + toString(R)), R)]) |
---|
| 143 | + | else WriteSet([DataEntry(n, S), DataEntry(((t + "_") + toString(z)), z)]) |
---|
130 | 144 | | } |
---|
131 | 145 | | |
---|
132 | 146 | | |
---|
133 | | - | @Verifier(L) |
---|
134 | | - | func S () = { |
---|
135 | | - | let g = L |
---|
| 147 | + | @Verifier(O) |
---|
| 148 | + | func U () = { |
---|
| 149 | + | let g = O |
---|
136 | 150 | | if ($isInstanceOf(g, "InvokeScriptTransaction")) |
---|
137 | 151 | | then { |
---|
138 | | - | let T = g |
---|
139 | | - | let U = if ((D == b)) |
---|
| 152 | + | let V = g |
---|
| 153 | + | let W = if ((G == b)) |
---|
140 | 154 | | then { |
---|
141 | 155 | | let h = { |
---|
142 | | - | let V = T.args[0] |
---|
143 | | - | if ($isInstanceOf(V, "Int")) |
---|
| 156 | + | let X = V.args[0] |
---|
| 157 | + | if ($isInstanceOf(X, "Int")) |
---|
144 | 158 | | then { |
---|
145 | | - | let h = V |
---|
| 159 | + | let h = X |
---|
146 | 160 | | h |
---|
147 | 161 | | } |
---|
148 | 162 | | else throw("invalid value type") |
---|
149 | 163 | | } |
---|
150 | 164 | | toBytes(h) |
---|
151 | 165 | | } |
---|
152 | | - | else if ((D == c)) |
---|
| 166 | + | else if ((G == c)) |
---|
153 | 167 | | then { |
---|
154 | 168 | | let h = { |
---|
155 | | - | let V = T.args[0] |
---|
156 | | - | if ($isInstanceOf(V, "String")) |
---|
| 169 | + | let X = V.args[0] |
---|
| 170 | + | if ($isInstanceOf(X, "String")) |
---|
157 | 171 | | then { |
---|
158 | | - | let h = V |
---|
| 172 | + | let h = X |
---|
159 | 173 | | h |
---|
160 | 174 | | } |
---|
161 | 175 | | else throw("invalid value type") |
---|
162 | 176 | | } |
---|
163 | 177 | | toBytes(h) |
---|
164 | 178 | | } |
---|
165 | | - | else if ((D == d)) |
---|
| 179 | + | else if ((G == d)) |
---|
166 | 180 | | then { |
---|
167 | 181 | | let h = { |
---|
168 | | - | let V = T.args[0] |
---|
169 | | - | if ($isInstanceOf(V, "ByteVector")) |
---|
| 182 | + | let X = V.args[0] |
---|
| 183 | + | if ($isInstanceOf(X, "ByteVector")) |
---|
170 | 184 | | then { |
---|
171 | | - | let h = V |
---|
| 185 | + | let h = X |
---|
172 | 186 | | h |
---|
173 | 187 | | } |
---|
174 | 188 | | else throw("invalid value type") |
---|
175 | 189 | | } |
---|
176 | 190 | | h |
---|
177 | 191 | | } |
---|
178 | 192 | | else throw("invalid value type") |
---|
179 | | - | let W = { |
---|
180 | | - | let V = T.args[1] |
---|
181 | | - | if ($isInstanceOf(V, "Int")) |
---|
| 193 | + | let Y = { |
---|
| 194 | + | let X = V.args[1] |
---|
| 195 | + | if ($isInstanceOf(X, "Int")) |
---|
182 | 196 | | then { |
---|
183 | | - | let W = V |
---|
184 | | - | W |
---|
| 197 | + | let Y = X |
---|
| 198 | + | Y |
---|
185 | 199 | | } |
---|
186 | 200 | | else throw("invalid height type") |
---|
187 | 201 | | } |
---|
188 | | - | if ((T.function != "attachValue")) |
---|
| 202 | + | if ((V.function != "attachValue")) |
---|
189 | 203 | | then throw("invalid function name") |
---|
190 | | - | else if ((size(T.args) != 2)) |
---|
| 204 | + | else if ((size(V.args) != 2)) |
---|
191 | 205 | | then throw("invalid args size") |
---|
192 | | - | else if ((T.dApp != addressFromStringValue(C))) |
---|
| 206 | + | else if ((V.dApp != addressFromStringValue(F))) |
---|
193 | 207 | | then throw("invalid dapp address") |
---|
194 | | - | else if ((G(W) != height)) |
---|
| 208 | + | else if ((J(Y) != height)) |
---|
195 | 209 | | then throw("invalid height") |
---|
196 | | - | else if ((F(W) == base58'2CsAf')) |
---|
| 210 | + | else if ((I(Y) == base58'2CsAf')) |
---|
197 | 211 | | then throw("invalid pulse id") |
---|
198 | | - | else if ((keccak256(U) != F(W))) |
---|
| 212 | + | else if ((keccak256(W) != I(Y))) |
---|
199 | 213 | | then throw("invalid keccak256(value)") |
---|
200 | 214 | | else true |
---|
201 | 215 | | } |
---|
202 | | - | else sigVerify(L.bodyBytes, L.proofs[0], L.senderPublicKey) |
---|
| 216 | + | else sigVerify(O.bodyBytes, O.proofs[0], O.senderPublicKey) |
---|
203 | 217 | | } |
---|
204 | 218 | | |
---|