tx · 3ft8CfRSD4WVmKQ5zMUNZwjzzHBgLsZwrmTyLb8tWqF5
3N9ZoipEVJyQhhijNYxkcomvgGrrEeDhPvN: -0.01000000 Waves
2023.02.25 18:43 [2465400] smart account 3N9ZoipEVJyQhhijNYxkcomvgGrrEeDhPvN > SELF 0.00000000 Waves
{
"type": 13,
"id": "3ft8CfRSD4WVmKQ5zMUNZwjzzHBgLsZwrmTyLb8tWqF5",
"fee": 1000000,
"feeAssetId": null,
"timestamp": 1677339809818,
"version": 2,
"chainId": 84,
"sender": "3N9ZoipEVJyQhhijNYxkcomvgGrrEeDhPvN",
"senderPublicKey": "2Gtgx295VLiew3CzXqh9eXfFZBTEpDW2nLsrJZ1C4i9J",
"proofs": [
"4Eh14z91xyzn971wv64xuSkXoBVa6WH4im2ThR77Ry2ztTCnYhZVSvbJuxzwkvqDg7GhrypcjUrXP99nkp4MoTu8"
],
"script": "base64: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AAARb3RoZXJDaGFpbkFzc2V0VE4DCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAAuT25seSB0aGUgb3duZXIgZGFwcCBjYW4gYWRkIGFkZGl0aW9uYWwgYXNzZXRzIQMJAQAAAAIhPQAAAAIJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQEAAAAObmF0aXZlQXNzZXRLZXkAAAABBQAAAAtuYXRpdmVBc3NldAIAAAAACQAAAgAAAAECAAAAHE5hdGl2ZSBBc3NldCBhbHJlYWR5IGxpc3RlZCEDCQEAAAACIT0AAAACCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkBAAAAEm90aGVyQ2hhaW5Bc3NldEtleQAAAAEFAAAAD290aGVyQ2hhaW5Bc3NldAIAAAAACQAAAgAAAAECAAAAG090aGVyIEFzc2V0IGFscmVhZHkgbGlzdGVkIQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAObmF0aXZlQXNzZXRLZXkAAAABBQAAAAtuYXRpdmVBc3NldAUAAAAPb3RoZXJDaGFpbkFzc2V0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJvdGhlckNoYWluQXNzZXRLZXkAAAABBQAAAA9vdGhlckNoYWluQXNzZXQFAAAAC25hdGl2ZUFzc2V0CQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACCQEAAAALcmVpc3N1ZWFibGUAAAABBQAAAAtuYXRpdmVBc3NldAUAAAAWbmF0aXZlQXNzZXRSZWlzc3VlYWJsZQkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkBAAAAC3JlaXNzdWVhYmxlAAAAAQUAAAAPb3RoZXJDaGFpbkFzc2V0BQAAABpvdGhlckNoYWluQXNzZXRSZWlzc3VlYWJsZQkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkBAAAAB3RuQXNzZXQAAAABBQAAAAtuYXRpdmVBc3NldAUAAAANbmF0aXZlQXNzZXRUTgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkBAAAAB3RuQXNzZXQAAAABBQAAAA9vdGhlckNoYWluQXNzZXQFAAAAEW90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",
"height": 2465400,
"applicationStatus": "succeeded",
"spentComplexity": 0
}
View: original | compacted
Prev: 4qVhh5TQteQcmy1BaQQZ6zJ5i7KbEgfKAkMVGDNNvT93
Next: none
Diff:
Old | New | | Differences |
---|
1 | 1 | | {-# STDLIB_VERSION 5 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | | - | let a = ["3N9QZnXfu8oGhsvZ9BdizNuVJP7trXyMUp5", "3ND6eWcMiGMX15X4H4WmGTTdNwLhtWhQ2DR"] |
---|
| 4 | + | func a () = "oraclesList" |
---|
5 | 5 | | |
---|
6 | | - | let b = 1 |
---|
7 | 6 | | |
---|
8 | | - | let c = 1000 |
---|
| 7 | + | func b () = split(getStringValue(this, a()), ",") |
---|
9 | 8 | | |
---|
10 | | - | func d (e,f) = { |
---|
11 | | - | let g = getString(e, f) |
---|
12 | | - | if ($isInstanceOf(g, "String")) |
---|
| 9 | + | |
---|
| 10 | + | let c = 2 |
---|
| 11 | + | |
---|
| 12 | + | let d = 1000 |
---|
| 13 | + | |
---|
| 14 | + | func e (f,g) = { |
---|
| 15 | + | let h = getString(f, g) |
---|
| 16 | + | if ($isInstanceOf(h, "String")) |
---|
13 | 17 | | then { |
---|
14 | | - | let h = g |
---|
15 | | - | h |
---|
| 18 | + | let i = h |
---|
| 19 | + | i |
---|
16 | 20 | | } |
---|
17 | 21 | | else "" |
---|
18 | 22 | | } |
---|
19 | 23 | | |
---|
20 | 24 | | |
---|
21 | | - | func i (e,f) = { |
---|
22 | | - | let g = getInteger(e, f) |
---|
23 | | - | if ($isInstanceOf(g, "Int")) |
---|
| 25 | + | func j (f,g) = { |
---|
| 26 | + | let h = getInteger(f, g) |
---|
| 27 | + | if ($isInstanceOf(h, "Int")) |
---|
24 | 28 | | then { |
---|
25 | | - | let j = g |
---|
26 | | - | j |
---|
| 29 | + | let k = h |
---|
| 30 | + | k |
---|
27 | 31 | | } |
---|
28 | 32 | | else 0 |
---|
29 | 33 | | } |
---|
30 | 34 | | |
---|
31 | 35 | | |
---|
32 | | - | func k (f) = d(this, f) |
---|
| 36 | + | func l (g) = e(this, g) |
---|
33 | 37 | | |
---|
34 | 38 | | |
---|
35 | | - | func l (f) = i(this, f) |
---|
| 39 | + | func m (g) = j(this, g) |
---|
36 | 40 | | |
---|
37 | 41 | | |
---|
38 | | - | func m (f) = { |
---|
39 | | - | let g = getBoolean(this, f) |
---|
40 | | - | if ($isInstanceOf(g, "Boolean")) |
---|
| 42 | + | func n (g) = { |
---|
| 43 | + | let h = getBoolean(this, g) |
---|
| 44 | + | if ($isInstanceOf(h, "Boolean")) |
---|
41 | 45 | | then { |
---|
42 | | - | let j = g |
---|
43 | | - | j |
---|
| 46 | + | let k = h |
---|
| 47 | + | k |
---|
44 | 48 | | } |
---|
45 | 49 | | else false |
---|
46 | 50 | | } |
---|
47 | 51 | | |
---|
48 | 52 | | |
---|
49 | | - | func n (o) = toBase58String(value(o)) |
---|
| 53 | + | func o (p) = toBase58String(value(p)) |
---|
50 | 54 | | |
---|
51 | 55 | | |
---|
52 | | - | func p (q) = ("nativeAsset_" + q) |
---|
| 56 | + | func q (r) = ("nativeAsset_" + r) |
---|
53 | 57 | | |
---|
54 | 58 | | |
---|
55 | | - | func r (s) = ("otherChainAsset_" + s) |
---|
| 59 | + | func s (t) = ("otherChainAsset_" + t) |
---|
56 | 60 | | |
---|
57 | 61 | | |
---|
58 | | - | func t (u) = ("reissueable_" + u) |
---|
| 62 | + | func u (p) = ("tn_asset_" + p) |
---|
59 | 63 | | |
---|
60 | 64 | | |
---|
61 | | - | func v (w) = { |
---|
62 | | - | let x = value(w) |
---|
63 | | - | if (!(isDefined(x.assetId))) |
---|
| 65 | + | func v (w) = ("reissueable_" + w) |
---|
| 66 | + | |
---|
| 67 | + | |
---|
| 68 | + | func x (y) = { |
---|
| 69 | + | let z = value(y) |
---|
| 70 | + | if (!(isDefined(z.assetId))) |
---|
64 | 71 | | then throw("It needs to be an asset") |
---|
65 | 72 | | else { |
---|
66 | | - | let y = value(assetInfo(value(x.assetId))) |
---|
67 | | - | if ((1 > x.amount)) |
---|
| 73 | + | let A = value(assetInfo(value(z.assetId))) |
---|
| 74 | + | if ((1 > z.amount)) |
---|
68 | 75 | | then throw("You didnt attached a payment!") |
---|
69 | | - | else n(x.assetId) |
---|
| 76 | + | else o(z.assetId) |
---|
70 | 77 | | } |
---|
71 | 78 | | } |
---|
72 | 79 | | |
---|
73 | 80 | | |
---|
74 | | - | func z (o,A) = { |
---|
75 | | - | let B = fraction(A, b, c, DOWN) |
---|
76 | | - | let C = fraction(B, 1, size(a), DOWN) |
---|
77 | | - | func D (E,F) = (E ++ [ScriptTransfer(addressFromStringValue(F), C, fromBase58String(o))]) |
---|
| 81 | + | func B (p,C) = { |
---|
| 82 | + | let D = fraction(C, c, d, DOWN) |
---|
| 83 | + | let E = fraction(D, 1, size(b()), DOWN) |
---|
| 84 | + | func F (G,H) = (G ++ [ScriptTransfer(addressFromStringValue(H), E, fromBase58String(p))]) |
---|
78 | 85 | | |
---|
79 | | - | let G = { |
---|
80 | | - | let H = a |
---|
81 | | - | let I = size(H) |
---|
82 | | - | let J = nil |
---|
83 | | - | func K (L,M) = if ((M >= I)) |
---|
84 | | - | then L |
---|
85 | | - | else D(L, H[M]) |
---|
| 86 | + | let I = { |
---|
| 87 | + | let J = b() |
---|
| 88 | + | let K = size(J) |
---|
| 89 | + | let L = nil |
---|
| 90 | + | func M (N,O) = if ((O >= K)) |
---|
| 91 | + | then N |
---|
| 92 | + | else F(N, J[O]) |
---|
86 | 93 | | |
---|
87 | | - | func N (L,M) = if ((M >= I)) |
---|
88 | | - | then L |
---|
| 94 | + | func P (N,O) = if ((O >= K)) |
---|
| 95 | + | then N |
---|
89 | 96 | | else throw("List size exceeds 5") |
---|
90 | 97 | | |
---|
91 | | - | N(K(K(K(K(K(J, 0), 1), 2), 3), 4), 5) |
---|
| 98 | + | P(M(M(M(M(M(L, 0), 1), 2), 3), 4), 5) |
---|
92 | 99 | | } |
---|
93 | | - | $Tuple2(G, B) |
---|
| 100 | + | $Tuple2(I, D) |
---|
94 | 101 | | } |
---|
95 | 102 | | |
---|
96 | 103 | | |
---|
97 | | - | func O (f,P) = { |
---|
98 | | - | func Q (E,F) = { |
---|
99 | | - | let g = P |
---|
100 | | - | if ($isInstanceOf(g, "String")) |
---|
| 104 | + | func Q (g,R) = { |
---|
| 105 | + | func S (G,H) = { |
---|
| 106 | + | let h = R |
---|
| 107 | + | if ($isInstanceOf(h, "String")) |
---|
101 | 108 | | then { |
---|
102 | | - | let j = g |
---|
103 | | - | let G = d(addressFromStringValue(F), f) |
---|
104 | | - | if ((G != P)) |
---|
105 | | - | then throw(("String Key not matching in " + F)) |
---|
| 109 | + | let k = h |
---|
| 110 | + | let I = e(addressFromStringValue(H), g) |
---|
| 111 | + | if ((I != R)) |
---|
| 112 | + | then throw(("String Key not matching in " + H)) |
---|
106 | 113 | | else true |
---|
107 | 114 | | } |
---|
108 | | - | else if ($isInstanceOf(g, "Int")) |
---|
| 115 | + | else if ($isInstanceOf(h, "Int")) |
---|
109 | 116 | | then { |
---|
110 | | - | let j = g |
---|
111 | | - | let G = i(addressFromStringValue(F), f) |
---|
112 | | - | if ((G != P)) |
---|
113 | | - | then throw(("Integer Key not matching in " + F)) |
---|
| 117 | + | let k = h |
---|
| 118 | + | let I = j(addressFromStringValue(H), g) |
---|
| 119 | + | if ((I != R)) |
---|
| 120 | + | then throw(("Integer Key not matching in " + H)) |
---|
114 | 121 | | else true |
---|
115 | 122 | | } |
---|
116 | 123 | | else throw("Invalid Value!") |
---|
117 | 124 | | } |
---|
118 | 125 | | |
---|
119 | | - | let H = a |
---|
120 | | - | let I = size(H) |
---|
121 | | - | let J = true |
---|
122 | | - | func K (L,M) = if ((M >= I)) |
---|
123 | | - | then L |
---|
124 | | - | else Q(L, H[M]) |
---|
| 126 | + | let J = b() |
---|
| 127 | + | let K = size(J) |
---|
| 128 | + | let L = true |
---|
| 129 | + | func M (N,O) = if ((O >= K)) |
---|
| 130 | + | then N |
---|
| 131 | + | else S(N, J[O]) |
---|
125 | 132 | | |
---|
126 | | - | func N (L,M) = if ((M >= I)) |
---|
127 | | - | then L |
---|
| 133 | + | func P (N,O) = if ((O >= K)) |
---|
| 134 | + | then N |
---|
128 | 135 | | else throw("List size exceeds 5") |
---|
129 | 136 | | |
---|
130 | | - | N(K(K(K(K(K(J, 0), 1), 2), 3), 4), 5) |
---|
| 137 | + | P(M(M(M(M(M(L, 0), 1), 2), 3), 4), 5) |
---|
131 | 138 | | } |
---|
132 | 139 | | |
---|
133 | 140 | | |
---|
134 | | - | @Callable(R) |
---|
135 | | - | func initiateAssets (q,S,s,T) = if ((R.caller != this)) |
---|
| 141 | + | @Callable(T) |
---|
| 142 | + | func initiateAssets (r,U,V,t,W,X) = if ((T.caller != this)) |
---|
136 | 143 | | then throw("Only the owner dapp can add additional assets!") |
---|
137 | | - | else if ((k(p(q)) != "")) |
---|
| 144 | + | else if ((l(q(r)) != "")) |
---|
138 | 145 | | then throw("Native Asset already listed!") |
---|
139 | | - | else if ((k(r(s)) != "")) |
---|
| 146 | + | else if ((l(s(t)) != "")) |
---|
140 | 147 | | then throw("Other Asset already listed!") |
---|
141 | | - | else [StringEntry(p(q), s), StringEntry(r(s), q), BooleanEntry(t(q), S), BooleanEntry(t(s), T)] |
---|
| 148 | + | else [StringEntry(q(r), t), StringEntry(s(t), r), BooleanEntry(v(r), U), BooleanEntry(v(t), W), BooleanEntry(u(r), V), BooleanEntry(u(t), X)] |
---|
142 | 149 | | |
---|
143 | 150 | | |
---|
144 | 151 | | |
---|
145 | | - | @Callable(R) |
---|
146 | | - | func initiateOutGoingTx (U) = { |
---|
147 | | - | let w = R.payments |
---|
148 | | - | if ((size(w) != 1)) |
---|
| 152 | + | @Callable(T) |
---|
| 153 | + | func initiateOutGoingTx (Y) = { |
---|
| 154 | + | let y = T.payments |
---|
| 155 | + | if ((size(y) != 1)) |
---|
149 | 156 | | then throw("Invalid payment added!") |
---|
150 | | - | else if ((1 > w[0].amount)) |
---|
| 157 | + | else if ((1 > y[0].amount)) |
---|
151 | 158 | | then throw("Invalid amount added!") |
---|
152 | | - | else if (!(contains(U, "3"))) |
---|
| 159 | + | else if (!(contains(Y, "3"))) |
---|
153 | 160 | | then throw("Please make sure your destination is correctly") |
---|
154 | 161 | | else { |
---|
155 | | - | let o = v(w[0]) |
---|
156 | | - | let V = if (m(t(o))) |
---|
157 | | - | then [Burn(fromBase58String(o), w[0].amount), StringEntry((("tx_" + toBase58String(R.transactionId)) + "_asset_to_receive"), k(r(o)))] |
---|
158 | | - | else [StringEntry((("tx_" + toBase58String(R.transactionId)) + "_asset_to_receive"), k(p(o)))] |
---|
159 | | - | ([StringEntry((("tx_" + toBase58String(R.transactionId)) + "_dest"), U), StringEntry((("tx_" + toBase58String(R.transactionId)) + "_status"), "UNPROCESSED")] ++ V) |
---|
| 162 | + | let p = x(y[0]) |
---|
| 163 | + | let Z = if (n(v(p))) |
---|
| 164 | + | then [Burn(fromBase58String(p), y[0].amount), StringEntry((("tx_" + toBase58String(T.transactionId)) + "_asset_to_receive"), l(s(p)))] |
---|
| 165 | + | else [StringEntry((("tx_" + toBase58String(T.transactionId)) + "_asset_to_receive"), l(q(p)))] |
---|
| 166 | + | ([StringEntry((("tx_" + toBase58String(T.transactionId)) + "_dest"), Y), StringEntry((("tx_" + toBase58String(T.transactionId)) + "_status"), "UNPROCESSED")] ++ Z) |
---|
160 | 167 | | } |
---|
161 | 168 | | } |
---|
162 | 169 | | |
---|
163 | 170 | | |
---|
164 | 171 | | |
---|
165 | | - | @Callable(R) |
---|
166 | | - | func storeDataIncomingTx (W,U,o,X,Y) = if (if (if (if (if ((W == "")) |
---|
| 172 | + | @Callable(T) |
---|
| 173 | + | func storeDataIncomingTx (aa,Y,p,ab,ac) = if (if ((l((("tx_" + aa) + "_status")) != "")) |
---|
167 | 174 | | then true |
---|
168 | | - | else !(contains(U, "3"))) |
---|
169 | | - | then true |
---|
170 | | - | else (o == "")) |
---|
171 | | - | then true |
---|
172 | | - | else (X == 0)) |
---|
173 | | - | then true |
---|
174 | | - | else (Y == "")) |
---|
175 | | - | then throw("Parameters seem wrong!") |
---|
176 | | - | else if (if ((k((("tx_" + W) + "_status")) != "")) |
---|
| 175 | + | else (l((("tx_" + aa) + "_dest")) != "")) |
---|
| 176 | + | then throw((aa + " is already stored!")) |
---|
| 177 | + | else if (if (if (if (if ((aa == "")) |
---|
177 | 178 | | then true |
---|
178 | | - | else (k((("tx_" + W) + "_dest")) != "")) |
---|
179 | | - | then throw((W + " is already stored!")) |
---|
| 179 | + | else !(contains(Y, "3"))) |
---|
| 180 | + | then true |
---|
| 181 | + | else (p == "")) |
---|
| 182 | + | then true |
---|
| 183 | + | else (ab == 0)) |
---|
| 184 | + | then true |
---|
| 185 | + | else (ac == "")) |
---|
| 186 | + | then throw("Parameters seem wrong!") |
---|
180 | 187 | | else { |
---|
181 | | - | let Z = O((("tx_" + W) + "_dest"), U) |
---|
182 | | - | let aa = O((("tx_" + W) + "_status"), "UNPROCESSED") |
---|
183 | | - | let ab = O((("tx_" + W) + "_assetId"), o) |
---|
184 | | - | let ac = O((("tx_" + W) + "_assetId_to_receive"), Y) |
---|
185 | | - | let ad = O((("tx_" + W) + "_amount"), X) |
---|
186 | | - | if (!(if (if (if (if (Z) |
---|
187 | | - | then aa |
---|
| 188 | + | let ad = Q((("tx_" + aa) + "_dest"), Y) |
---|
| 189 | + | let ae = Q((("tx_" + aa) + "_status"), "UNPROCESSED") |
---|
| 190 | + | let af = Q((("tx_" + aa) + "_assetId"), p) |
---|
| 191 | + | let ag = Q((("tx_" + aa) + "_assetId_to_receive"), ac) |
---|
| 192 | + | let ah = Q((("tx_" + aa) + "_amount"), ab) |
---|
| 193 | + | if (!(if (if (if (if (ad) |
---|
| 194 | + | then ae |
---|
188 | 195 | | else false) |
---|
189 | | - | then ab |
---|
| 196 | + | then af |
---|
190 | 197 | | else false) |
---|
191 | | - | then ac |
---|
| 198 | + | then ag |
---|
192 | 199 | | else false) |
---|
193 | | - | then ad |
---|
| 200 | + | then ah |
---|
194 | 201 | | else false)) |
---|
195 | 202 | | then throw("Dirty hacker!") |
---|
196 | | - | else [StringEntry((("tx_" + W) + "_dest"), U), StringEntry((("tx_" + W) + "_status"), "UNPROCESSED"), StringEntry((("tx_" + W) + "_assetId"), o), StringEntry((("tx_" + W) + "_assetId_to_receive"), Y), IntegerEntry((("tx_" + W) + "_amount"), X)] |
---|
| 203 | + | else [StringEntry((("tx_" + aa) + "_dest"), Y), StringEntry((("tx_" + aa) + "_status"), "UNPROCESSED"), StringEntry((("tx_" + aa) + "_assetId"), p), StringEntry((("tx_" + aa) + "_assetId_to_receive"), ac), IntegerEntry((("tx_" + aa) + "_amount"), ab)] |
---|
197 | 204 | | } |
---|
198 | 205 | | |
---|
199 | 206 | | |
---|
200 | 207 | | |
---|
201 | | - | @Callable(R) |
---|
202 | | - | func releaseIncomingTx (W) = if ((W == "")) |
---|
| 208 | + | @Callable(T) |
---|
| 209 | + | func releaseIncomingTx (aa) = if ((aa == "")) |
---|
203 | 210 | | then throw("Invalid data!") |
---|
204 | 211 | | else { |
---|
205 | | - | let ae = k((("tx_" + W) + "_status")) |
---|
206 | | - | if ((ae == "")) |
---|
| 212 | + | let ai = l((("tx_" + aa) + "_status")) |
---|
| 213 | + | if ((ai == "")) |
---|
207 | 214 | | then throw("No such txid found!") |
---|
208 | | - | else if ((ae == "PROCESSED")) |
---|
| 215 | + | else if ((ai == "PROCESSED")) |
---|
209 | 216 | | then throw("Already processed!") |
---|
210 | 217 | | else { |
---|
211 | | - | let Y = k((("tx_" + W) + "_assetId_to_receive")) |
---|
212 | | - | let U = k((("tx_" + W) + "_dest")) |
---|
213 | | - | let X = l((("tx_" + W) + "_amount")) |
---|
214 | | - | let o = k((("tx_" + W) + "_assetId")) |
---|
215 | | - | let V = if (m(t(Y))) |
---|
216 | | - | then if ((k(p(o)) != Y)) |
---|
| 218 | + | let ac = l((("tx_" + aa) + "_assetId_to_receive")) |
---|
| 219 | + | let Y = l((("tx_" + aa) + "_dest")) |
---|
| 220 | + | let ab = m((("tx_" + aa) + "_amount")) |
---|
| 221 | + | let p = l((("tx_" + aa) + "_assetId")) |
---|
| 222 | + | let Z = if (n(v(ac))) |
---|
| 223 | + | then if ((l(q(p)) != ac)) |
---|
217 | 224 | | then throw("RE: Skipping tx, corrupt data!") |
---|
218 | | - | else [Reissue(fromBase58String(Y), X, true)] |
---|
219 | | - | else if ((k(r(o)) != Y)) |
---|
| 225 | + | else [Reissue(fromBase58String(ac), ab, true)] |
---|
| 226 | + | else if ((l(s(p)) != ac)) |
---|
220 | 227 | | then throw("URE: Skipping tx, corrupt data!") |
---|
221 | 228 | | else nil |
---|
222 | | - | ((V ++ [ScriptTransfer(addressFromStringValue(U), (X - z(Y, X)._2), fromBase58String(Y)), StringEntry((("tx_" + W) + "_status"), "PROCESSED"), StringEntry((("tx_" + W) + "_otherId"), toBase58String(R.transactionId))]) ++ z(Y, X)._1) |
---|
| 229 | + | ((Z ++ [ScriptTransfer(addressFromStringValue(Y), (ab - B(ac, ab)._2), fromBase58String(ac)), StringEntry((("tx_" + aa) + "_status"), "PROCESSED"), StringEntry((("tx_" + aa) + "_otherId"), toBase58String(T.transactionId))]) ++ B(ac, ab)._1) |
---|
223 | 230 | | } |
---|
224 | 231 | | } |
---|
225 | 232 | | |
---|
226 | 233 | | |
---|
227 | 234 | | |
---|
228 | | - | @Callable(R) |
---|
229 | | - | func finalizeOutgoingTx (W,af) = if (if ((W == "")) |
---|
| 235 | + | @Callable(T) |
---|
| 236 | + | func finalizeOutgoingTx (aa,aj) = if (if ((aa == "")) |
---|
230 | 237 | | then true |
---|
231 | | - | else (af == "")) |
---|
| 238 | + | else (aj == "")) |
---|
232 | 239 | | then throw("Broken data!") |
---|
233 | 240 | | else { |
---|
234 | | - | let Z = O((("tx_" + W) + "_otherId"), af) |
---|
235 | | - | let aa = O((("tx_" + W) + "_status"), "PROCESSED") |
---|
236 | | - | if ((k((("tx_" + W) + "_otherId")) != "")) |
---|
237 | | - | then throw((W + " is already fully processed!")) |
---|
238 | | - | else if (!(if (Z) |
---|
239 | | - | then aa |
---|
| 241 | + | let ad = Q((("tx_" + aa) + "_otherId"), aj) |
---|
| 242 | + | let ae = Q((("tx_" + aa) + "_status"), "PROCESSED") |
---|
| 243 | + | if ((l((("tx_" + aa) + "_otherId")) != "")) |
---|
| 244 | + | then throw((aa + " is already fully processed!")) |
---|
| 245 | + | else if (!(if (ad) |
---|
| 246 | + | then ae |
---|
240 | 247 | | else false)) |
---|
241 | 248 | | then throw("Dirty hacker!") |
---|
242 | 249 | | else { |
---|
243 | | - | let o = k((("tx_" + W) + "_assetId")) |
---|
244 | | - | let X = l((("tx_" + W) + "_amount")) |
---|
245 | | - | (z(o, X)._1 ++ [StringEntry((("tx_" + W) + "_status"), "PROCESSED"), StringEntry((("tx_" + W) + "_otherId"), af)]) |
---|
| 250 | + | let p = l((("tx_" + aa) + "_assetId")) |
---|
| 251 | + | let ab = m((("tx_" + aa) + "_amount")) |
---|
| 252 | + | (B(p, ab)._1 ++ [StringEntry((("tx_" + aa) + "_status"), "PROCESSED"), StringEntry((("tx_" + aa) + "_otherId"), aj)]) |
---|
246 | 253 | | } |
---|
247 | 254 | | } |
---|
248 | 255 | | |
---|
Full:
Old | New | | Differences |
---|
1 | 1 | | {-# STDLIB_VERSION 5 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | | - | let a = ["3N9QZnXfu8oGhsvZ9BdizNuVJP7trXyMUp5", "3ND6eWcMiGMX15X4H4WmGTTdNwLhtWhQ2DR"] |
---|
| 4 | + | func a () = "oraclesList" |
---|
5 | 5 | | |
---|
6 | | - | let b = 1 |
---|
7 | 6 | | |
---|
8 | | - | let c = 1000 |
---|
| 7 | + | func b () = split(getStringValue(this, a()), ",") |
---|
9 | 8 | | |
---|
10 | | - | func d (e,f) = { |
---|
11 | | - | let g = getString(e, f) |
---|
12 | | - | if ($isInstanceOf(g, "String")) |
---|
| 9 | + | |
---|
| 10 | + | let c = 2 |
---|
| 11 | + | |
---|
| 12 | + | let d = 1000 |
---|
| 13 | + | |
---|
| 14 | + | func e (f,g) = { |
---|
| 15 | + | let h = getString(f, g) |
---|
| 16 | + | if ($isInstanceOf(h, "String")) |
---|
13 | 17 | | then { |
---|
14 | | - | let h = g |
---|
15 | | - | h |
---|
| 18 | + | let i = h |
---|
| 19 | + | i |
---|
16 | 20 | | } |
---|
17 | 21 | | else "" |
---|
18 | 22 | | } |
---|
19 | 23 | | |
---|
20 | 24 | | |
---|
21 | | - | func i (e,f) = { |
---|
22 | | - | let g = getInteger(e, f) |
---|
23 | | - | if ($isInstanceOf(g, "Int")) |
---|
| 25 | + | func j (f,g) = { |
---|
| 26 | + | let h = getInteger(f, g) |
---|
| 27 | + | if ($isInstanceOf(h, "Int")) |
---|
24 | 28 | | then { |
---|
25 | | - | let j = g |
---|
26 | | - | j |
---|
| 29 | + | let k = h |
---|
| 30 | + | k |
---|
27 | 31 | | } |
---|
28 | 32 | | else 0 |
---|
29 | 33 | | } |
---|
30 | 34 | | |
---|
31 | 35 | | |
---|
32 | | - | func k (f) = d(this, f) |
---|
| 36 | + | func l (g) = e(this, g) |
---|
33 | 37 | | |
---|
34 | 38 | | |
---|
35 | | - | func l (f) = i(this, f) |
---|
| 39 | + | func m (g) = j(this, g) |
---|
36 | 40 | | |
---|
37 | 41 | | |
---|
38 | | - | func m (f) = { |
---|
39 | | - | let g = getBoolean(this, f) |
---|
40 | | - | if ($isInstanceOf(g, "Boolean")) |
---|
| 42 | + | func n (g) = { |
---|
| 43 | + | let h = getBoolean(this, g) |
---|
| 44 | + | if ($isInstanceOf(h, "Boolean")) |
---|
41 | 45 | | then { |
---|
42 | | - | let j = g |
---|
43 | | - | j |
---|
| 46 | + | let k = h |
---|
| 47 | + | k |
---|
44 | 48 | | } |
---|
45 | 49 | | else false |
---|
46 | 50 | | } |
---|
47 | 51 | | |
---|
48 | 52 | | |
---|
49 | | - | func n (o) = toBase58String(value(o)) |
---|
| 53 | + | func o (p) = toBase58String(value(p)) |
---|
50 | 54 | | |
---|
51 | 55 | | |
---|
52 | | - | func p (q) = ("nativeAsset_" + q) |
---|
| 56 | + | func q (r) = ("nativeAsset_" + r) |
---|
53 | 57 | | |
---|
54 | 58 | | |
---|
55 | | - | func r (s) = ("otherChainAsset_" + s) |
---|
| 59 | + | func s (t) = ("otherChainAsset_" + t) |
---|
56 | 60 | | |
---|
57 | 61 | | |
---|
58 | | - | func t (u) = ("reissueable_" + u) |
---|
| 62 | + | func u (p) = ("tn_asset_" + p) |
---|
59 | 63 | | |
---|
60 | 64 | | |
---|
61 | | - | func v (w) = { |
---|
62 | | - | let x = value(w) |
---|
63 | | - | if (!(isDefined(x.assetId))) |
---|
| 65 | + | func v (w) = ("reissueable_" + w) |
---|
| 66 | + | |
---|
| 67 | + | |
---|
| 68 | + | func x (y) = { |
---|
| 69 | + | let z = value(y) |
---|
| 70 | + | if (!(isDefined(z.assetId))) |
---|
64 | 71 | | then throw("It needs to be an asset") |
---|
65 | 72 | | else { |
---|
66 | | - | let y = value(assetInfo(value(x.assetId))) |
---|
67 | | - | if ((1 > x.amount)) |
---|
| 73 | + | let A = value(assetInfo(value(z.assetId))) |
---|
| 74 | + | if ((1 > z.amount)) |
---|
68 | 75 | | then throw("You didnt attached a payment!") |
---|
69 | | - | else n(x.assetId) |
---|
| 76 | + | else o(z.assetId) |
---|
70 | 77 | | } |
---|
71 | 78 | | } |
---|
72 | 79 | | |
---|
73 | 80 | | |
---|
74 | | - | func z (o,A) = { |
---|
75 | | - | let B = fraction(A, b, c, DOWN) |
---|
76 | | - | let C = fraction(B, 1, size(a), DOWN) |
---|
77 | | - | func D (E,F) = (E ++ [ScriptTransfer(addressFromStringValue(F), C, fromBase58String(o))]) |
---|
| 81 | + | func B (p,C) = { |
---|
| 82 | + | let D = fraction(C, c, d, DOWN) |
---|
| 83 | + | let E = fraction(D, 1, size(b()), DOWN) |
---|
| 84 | + | func F (G,H) = (G ++ [ScriptTransfer(addressFromStringValue(H), E, fromBase58String(p))]) |
---|
78 | 85 | | |
---|
79 | | - | let G = { |
---|
80 | | - | let H = a |
---|
81 | | - | let I = size(H) |
---|
82 | | - | let J = nil |
---|
83 | | - | func K (L,M) = if ((M >= I)) |
---|
84 | | - | then L |
---|
85 | | - | else D(L, H[M]) |
---|
| 86 | + | let I = { |
---|
| 87 | + | let J = b() |
---|
| 88 | + | let K = size(J) |
---|
| 89 | + | let L = nil |
---|
| 90 | + | func M (N,O) = if ((O >= K)) |
---|
| 91 | + | then N |
---|
| 92 | + | else F(N, J[O]) |
---|
86 | 93 | | |
---|
87 | | - | func N (L,M) = if ((M >= I)) |
---|
88 | | - | then L |
---|
| 94 | + | func P (N,O) = if ((O >= K)) |
---|
| 95 | + | then N |
---|
89 | 96 | | else throw("List size exceeds 5") |
---|
90 | 97 | | |
---|
91 | | - | N(K(K(K(K(K(J, 0), 1), 2), 3), 4), 5) |
---|
| 98 | + | P(M(M(M(M(M(L, 0), 1), 2), 3), 4), 5) |
---|
92 | 99 | | } |
---|
93 | | - | $Tuple2(G, B) |
---|
| 100 | + | $Tuple2(I, D) |
---|
94 | 101 | | } |
---|
95 | 102 | | |
---|
96 | 103 | | |
---|
97 | | - | func O (f,P) = { |
---|
98 | | - | func Q (E,F) = { |
---|
99 | | - | let g = P |
---|
100 | | - | if ($isInstanceOf(g, "String")) |
---|
| 104 | + | func Q (g,R) = { |
---|
| 105 | + | func S (G,H) = { |
---|
| 106 | + | let h = R |
---|
| 107 | + | if ($isInstanceOf(h, "String")) |
---|
101 | 108 | | then { |
---|
102 | | - | let j = g |
---|
103 | | - | let G = d(addressFromStringValue(F), f) |
---|
104 | | - | if ((G != P)) |
---|
105 | | - | then throw(("String Key not matching in " + F)) |
---|
| 109 | + | let k = h |
---|
| 110 | + | let I = e(addressFromStringValue(H), g) |
---|
| 111 | + | if ((I != R)) |
---|
| 112 | + | then throw(("String Key not matching in " + H)) |
---|
106 | 113 | | else true |
---|
107 | 114 | | } |
---|
108 | | - | else if ($isInstanceOf(g, "Int")) |
---|
| 115 | + | else if ($isInstanceOf(h, "Int")) |
---|
109 | 116 | | then { |
---|
110 | | - | let j = g |
---|
111 | | - | let G = i(addressFromStringValue(F), f) |
---|
112 | | - | if ((G != P)) |
---|
113 | | - | then throw(("Integer Key not matching in " + F)) |
---|
| 117 | + | let k = h |
---|
| 118 | + | let I = j(addressFromStringValue(H), g) |
---|
| 119 | + | if ((I != R)) |
---|
| 120 | + | then throw(("Integer Key not matching in " + H)) |
---|
114 | 121 | | else true |
---|
115 | 122 | | } |
---|
116 | 123 | | else throw("Invalid Value!") |
---|
117 | 124 | | } |
---|
118 | 125 | | |
---|
119 | | - | let H = a |
---|
120 | | - | let I = size(H) |
---|
121 | | - | let J = true |
---|
122 | | - | func K (L,M) = if ((M >= I)) |
---|
123 | | - | then L |
---|
124 | | - | else Q(L, H[M]) |
---|
| 126 | + | let J = b() |
---|
| 127 | + | let K = size(J) |
---|
| 128 | + | let L = true |
---|
| 129 | + | func M (N,O) = if ((O >= K)) |
---|
| 130 | + | then N |
---|
| 131 | + | else S(N, J[O]) |
---|
125 | 132 | | |
---|
126 | | - | func N (L,M) = if ((M >= I)) |
---|
127 | | - | then L |
---|
| 133 | + | func P (N,O) = if ((O >= K)) |
---|
| 134 | + | then N |
---|
128 | 135 | | else throw("List size exceeds 5") |
---|
129 | 136 | | |
---|
130 | | - | N(K(K(K(K(K(J, 0), 1), 2), 3), 4), 5) |
---|
| 137 | + | P(M(M(M(M(M(L, 0), 1), 2), 3), 4), 5) |
---|
131 | 138 | | } |
---|
132 | 139 | | |
---|
133 | 140 | | |
---|
134 | | - | @Callable(R) |
---|
135 | | - | func initiateAssets (q,S,s,T) = if ((R.caller != this)) |
---|
| 141 | + | @Callable(T) |
---|
| 142 | + | func initiateAssets (r,U,V,t,W,X) = if ((T.caller != this)) |
---|
136 | 143 | | then throw("Only the owner dapp can add additional assets!") |
---|
137 | | - | else if ((k(p(q)) != "")) |
---|
| 144 | + | else if ((l(q(r)) != "")) |
---|
138 | 145 | | then throw("Native Asset already listed!") |
---|
139 | | - | else if ((k(r(s)) != "")) |
---|
| 146 | + | else if ((l(s(t)) != "")) |
---|
140 | 147 | | then throw("Other Asset already listed!") |
---|
141 | | - | else [StringEntry(p(q), s), StringEntry(r(s), q), BooleanEntry(t(q), S), BooleanEntry(t(s), T)] |
---|
| 148 | + | else [StringEntry(q(r), t), StringEntry(s(t), r), BooleanEntry(v(r), U), BooleanEntry(v(t), W), BooleanEntry(u(r), V), BooleanEntry(u(t), X)] |
---|
142 | 149 | | |
---|
143 | 150 | | |
---|
144 | 151 | | |
---|
145 | | - | @Callable(R) |
---|
146 | | - | func initiateOutGoingTx (U) = { |
---|
147 | | - | let w = R.payments |
---|
148 | | - | if ((size(w) != 1)) |
---|
| 152 | + | @Callable(T) |
---|
| 153 | + | func initiateOutGoingTx (Y) = { |
---|
| 154 | + | let y = T.payments |
---|
| 155 | + | if ((size(y) != 1)) |
---|
149 | 156 | | then throw("Invalid payment added!") |
---|
150 | | - | else if ((1 > w[0].amount)) |
---|
| 157 | + | else if ((1 > y[0].amount)) |
---|
151 | 158 | | then throw("Invalid amount added!") |
---|
152 | | - | else if (!(contains(U, "3"))) |
---|
| 159 | + | else if (!(contains(Y, "3"))) |
---|
153 | 160 | | then throw("Please make sure your destination is correctly") |
---|
154 | 161 | | else { |
---|
155 | | - | let o = v(w[0]) |
---|
156 | | - | let V = if (m(t(o))) |
---|
157 | | - | then [Burn(fromBase58String(o), w[0].amount), StringEntry((("tx_" + toBase58String(R.transactionId)) + "_asset_to_receive"), k(r(o)))] |
---|
158 | | - | else [StringEntry((("tx_" + toBase58String(R.transactionId)) + "_asset_to_receive"), k(p(o)))] |
---|
159 | | - | ([StringEntry((("tx_" + toBase58String(R.transactionId)) + "_dest"), U), StringEntry((("tx_" + toBase58String(R.transactionId)) + "_status"), "UNPROCESSED")] ++ V) |
---|
| 162 | + | let p = x(y[0]) |
---|
| 163 | + | let Z = if (n(v(p))) |
---|
| 164 | + | then [Burn(fromBase58String(p), y[0].amount), StringEntry((("tx_" + toBase58String(T.transactionId)) + "_asset_to_receive"), l(s(p)))] |
---|
| 165 | + | else [StringEntry((("tx_" + toBase58String(T.transactionId)) + "_asset_to_receive"), l(q(p)))] |
---|
| 166 | + | ([StringEntry((("tx_" + toBase58String(T.transactionId)) + "_dest"), Y), StringEntry((("tx_" + toBase58String(T.transactionId)) + "_status"), "UNPROCESSED")] ++ Z) |
---|
160 | 167 | | } |
---|
161 | 168 | | } |
---|
162 | 169 | | |
---|
163 | 170 | | |
---|
164 | 171 | | |
---|
165 | | - | @Callable(R) |
---|
166 | | - | func storeDataIncomingTx (W,U,o,X,Y) = if (if (if (if (if ((W == "")) |
---|
| 172 | + | @Callable(T) |
---|
| 173 | + | func storeDataIncomingTx (aa,Y,p,ab,ac) = if (if ((l((("tx_" + aa) + "_status")) != "")) |
---|
167 | 174 | | then true |
---|
168 | | - | else !(contains(U, "3"))) |
---|
169 | | - | then true |
---|
170 | | - | else (o == "")) |
---|
171 | | - | then true |
---|
172 | | - | else (X == 0)) |
---|
173 | | - | then true |
---|
174 | | - | else (Y == "")) |
---|
175 | | - | then throw("Parameters seem wrong!") |
---|
176 | | - | else if (if ((k((("tx_" + W) + "_status")) != "")) |
---|
| 175 | + | else (l((("tx_" + aa) + "_dest")) != "")) |
---|
| 176 | + | then throw((aa + " is already stored!")) |
---|
| 177 | + | else if (if (if (if (if ((aa == "")) |
---|
177 | 178 | | then true |
---|
178 | | - | else (k((("tx_" + W) + "_dest")) != "")) |
---|
179 | | - | then throw((W + " is already stored!")) |
---|
| 179 | + | else !(contains(Y, "3"))) |
---|
| 180 | + | then true |
---|
| 181 | + | else (p == "")) |
---|
| 182 | + | then true |
---|
| 183 | + | else (ab == 0)) |
---|
| 184 | + | then true |
---|
| 185 | + | else (ac == "")) |
---|
| 186 | + | then throw("Parameters seem wrong!") |
---|
180 | 187 | | else { |
---|
181 | | - | let Z = O((("tx_" + W) + "_dest"), U) |
---|
182 | | - | let aa = O((("tx_" + W) + "_status"), "UNPROCESSED") |
---|
183 | | - | let ab = O((("tx_" + W) + "_assetId"), o) |
---|
184 | | - | let ac = O((("tx_" + W) + "_assetId_to_receive"), Y) |
---|
185 | | - | let ad = O((("tx_" + W) + "_amount"), X) |
---|
186 | | - | if (!(if (if (if (if (Z) |
---|
187 | | - | then aa |
---|
| 188 | + | let ad = Q((("tx_" + aa) + "_dest"), Y) |
---|
| 189 | + | let ae = Q((("tx_" + aa) + "_status"), "UNPROCESSED") |
---|
| 190 | + | let af = Q((("tx_" + aa) + "_assetId"), p) |
---|
| 191 | + | let ag = Q((("tx_" + aa) + "_assetId_to_receive"), ac) |
---|
| 192 | + | let ah = Q((("tx_" + aa) + "_amount"), ab) |
---|
| 193 | + | if (!(if (if (if (if (ad) |
---|
| 194 | + | then ae |
---|
188 | 195 | | else false) |
---|
189 | | - | then ab |
---|
| 196 | + | then af |
---|
190 | 197 | | else false) |
---|
191 | | - | then ac |
---|
| 198 | + | then ag |
---|
192 | 199 | | else false) |
---|
193 | | - | then ad |
---|
| 200 | + | then ah |
---|
194 | 201 | | else false)) |
---|
195 | 202 | | then throw("Dirty hacker!") |
---|
196 | | - | else [StringEntry((("tx_" + W) + "_dest"), U), StringEntry((("tx_" + W) + "_status"), "UNPROCESSED"), StringEntry((("tx_" + W) + "_assetId"), o), StringEntry((("tx_" + W) + "_assetId_to_receive"), Y), IntegerEntry((("tx_" + W) + "_amount"), X)] |
---|
| 203 | + | else [StringEntry((("tx_" + aa) + "_dest"), Y), StringEntry((("tx_" + aa) + "_status"), "UNPROCESSED"), StringEntry((("tx_" + aa) + "_assetId"), p), StringEntry((("tx_" + aa) + "_assetId_to_receive"), ac), IntegerEntry((("tx_" + aa) + "_amount"), ab)] |
---|
197 | 204 | | } |
---|
198 | 205 | | |
---|
199 | 206 | | |
---|
200 | 207 | | |
---|
201 | | - | @Callable(R) |
---|
202 | | - | func releaseIncomingTx (W) = if ((W == "")) |
---|
| 208 | + | @Callable(T) |
---|
| 209 | + | func releaseIncomingTx (aa) = if ((aa == "")) |
---|
203 | 210 | | then throw("Invalid data!") |
---|
204 | 211 | | else { |
---|
205 | | - | let ae = k((("tx_" + W) + "_status")) |
---|
206 | | - | if ((ae == "")) |
---|
| 212 | + | let ai = l((("tx_" + aa) + "_status")) |
---|
| 213 | + | if ((ai == "")) |
---|
207 | 214 | | then throw("No such txid found!") |
---|
208 | | - | else if ((ae == "PROCESSED")) |
---|
| 215 | + | else if ((ai == "PROCESSED")) |
---|
209 | 216 | | then throw("Already processed!") |
---|
210 | 217 | | else { |
---|
211 | | - | let Y = k((("tx_" + W) + "_assetId_to_receive")) |
---|
212 | | - | let U = k((("tx_" + W) + "_dest")) |
---|
213 | | - | let X = l((("tx_" + W) + "_amount")) |
---|
214 | | - | let o = k((("tx_" + W) + "_assetId")) |
---|
215 | | - | let V = if (m(t(Y))) |
---|
216 | | - | then if ((k(p(o)) != Y)) |
---|
| 218 | + | let ac = l((("tx_" + aa) + "_assetId_to_receive")) |
---|
| 219 | + | let Y = l((("tx_" + aa) + "_dest")) |
---|
| 220 | + | let ab = m((("tx_" + aa) + "_amount")) |
---|
| 221 | + | let p = l((("tx_" + aa) + "_assetId")) |
---|
| 222 | + | let Z = if (n(v(ac))) |
---|
| 223 | + | then if ((l(q(p)) != ac)) |
---|
217 | 224 | | then throw("RE: Skipping tx, corrupt data!") |
---|
218 | | - | else [Reissue(fromBase58String(Y), X, true)] |
---|
219 | | - | else if ((k(r(o)) != Y)) |
---|
| 225 | + | else [Reissue(fromBase58String(ac), ab, true)] |
---|
| 226 | + | else if ((l(s(p)) != ac)) |
---|
220 | 227 | | then throw("URE: Skipping tx, corrupt data!") |
---|
221 | 228 | | else nil |
---|
222 | | - | ((V ++ [ScriptTransfer(addressFromStringValue(U), (X - z(Y, X)._2), fromBase58String(Y)), StringEntry((("tx_" + W) + "_status"), "PROCESSED"), StringEntry((("tx_" + W) + "_otherId"), toBase58String(R.transactionId))]) ++ z(Y, X)._1) |
---|
| 229 | + | ((Z ++ [ScriptTransfer(addressFromStringValue(Y), (ab - B(ac, ab)._2), fromBase58String(ac)), StringEntry((("tx_" + aa) + "_status"), "PROCESSED"), StringEntry((("tx_" + aa) + "_otherId"), toBase58String(T.transactionId))]) ++ B(ac, ab)._1) |
---|
223 | 230 | | } |
---|
224 | 231 | | } |
---|
225 | 232 | | |
---|
226 | 233 | | |
---|
227 | 234 | | |
---|
228 | | - | @Callable(R) |
---|
229 | | - | func finalizeOutgoingTx (W,af) = if (if ((W == "")) |
---|
| 235 | + | @Callable(T) |
---|
| 236 | + | func finalizeOutgoingTx (aa,aj) = if (if ((aa == "")) |
---|
230 | 237 | | then true |
---|
231 | | - | else (af == "")) |
---|
| 238 | + | else (aj == "")) |
---|
232 | 239 | | then throw("Broken data!") |
---|
233 | 240 | | else { |
---|
234 | | - | let Z = O((("tx_" + W) + "_otherId"), af) |
---|
235 | | - | let aa = O((("tx_" + W) + "_status"), "PROCESSED") |
---|
236 | | - | if ((k((("tx_" + W) + "_otherId")) != "")) |
---|
237 | | - | then throw((W + " is already fully processed!")) |
---|
238 | | - | else if (!(if (Z) |
---|
239 | | - | then aa |
---|
| 241 | + | let ad = Q((("tx_" + aa) + "_otherId"), aj) |
---|
| 242 | + | let ae = Q((("tx_" + aa) + "_status"), "PROCESSED") |
---|
| 243 | + | if ((l((("tx_" + aa) + "_otherId")) != "")) |
---|
| 244 | + | then throw((aa + " is already fully processed!")) |
---|
| 245 | + | else if (!(if (ad) |
---|
| 246 | + | then ae |
---|
240 | 247 | | else false)) |
---|
241 | 248 | | then throw("Dirty hacker!") |
---|
242 | 249 | | else { |
---|
243 | | - | let o = k((("tx_" + W) + "_assetId")) |
---|
244 | | - | let X = l((("tx_" + W) + "_amount")) |
---|
245 | | - | (z(o, X)._1 ++ [StringEntry((("tx_" + W) + "_status"), "PROCESSED"), StringEntry((("tx_" + W) + "_otherId"), af)]) |
---|
| 250 | + | let p = l((("tx_" + aa) + "_assetId")) |
---|
| 251 | + | let ab = m((("tx_" + aa) + "_amount")) |
---|
| 252 | + | (B(p, ab)._1 ++ [StringEntry((("tx_" + aa) + "_status"), "PROCESSED"), StringEntry((("tx_" + aa) + "_otherId"), aj)]) |
---|
246 | 253 | | } |
---|
247 | 254 | | } |
---|
248 | 255 | | |
---|
249 | 256 | | |
---|