tx · Do9boHeu51KxmWGzdqvKSVHdSNrJ6c1EKyFaKrHexBmN 3Mu7bwtYrymjrXt1ttcqaQbFc1PqGhZndhv: -0.01400000 Waves 2019.09.30 12:44 [699007] smart account 3Mu7bwtYrymjrXt1ttcqaQbFc1PqGhZndhv > SELF 0.00000000 Waves
{ "type": 13, "id": "Do9boHeu51KxmWGzdqvKSVHdSNrJ6c1EKyFaKrHexBmN", "fee": 1400000, "feeAssetId": null, "timestamp": 1569836658094, "version": 1, "sender": "3Mu7bwtYrymjrXt1ttcqaQbFc1PqGhZndhv", "senderPublicKey": "BxHnTcjvN9ZtnKfdKYp6aKRdkMB4ZHxHnTDr5dWx5Vz2", "proofs": [ "5wsBJaBXaZZib8cv6ZFLZWmLJ1BaBjm18wpG19MQiQHYh4FRfoC7DM9LBk8fcA9cbeDm4s7QsfwcdmoPocsVze8U" ], "script": "base64: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", "chainId": 84, "height": 699007, "spentComplexity": 0 } View: original | compacted Prev: BG3hvuFjaWQ5f1hffcaoqPjZuecSwt589Kg1yCs8Q6ko Next: GhN8QV1Z67tpAc8Ng12Di2WdpUhPLRf5mMCMLNBhioLq Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 3 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let a = base58'9qh2MiJhfqNS1o3R5wcUrAAWpeqZs9R8SLwQvCx88Vaf' | |
5 | + | ||
6 | + | func b (c) = { | |
7 | + | let d = { | |
8 | + | let e = getBoolean(this, (c + "_unlimited")) | |
9 | + | if ($isInstanceOf(e, "Boolean")) | |
10 | + | then { | |
11 | + | let f = e | |
12 | + | f | |
13 | + | } | |
14 | + | else if ($isInstanceOf(e, "Unit")) | |
15 | + | then false | |
16 | + | else throw() | |
17 | + | } | |
18 | + | let g = { | |
19 | + | let e = getInteger(this, (c + "_time")) | |
20 | + | if ($isInstanceOf(e, "Int")) | |
21 | + | then { | |
22 | + | let h = e | |
23 | + | h | |
24 | + | } | |
25 | + | else if ($isInstanceOf(e, "Unit")) | |
26 | + | then 0 | |
27 | + | else throw() | |
28 | + | } | |
29 | + | if (d) | |
30 | + | then true | |
31 | + | else (g > lastBlock.timestamp) | |
32 | + | } | |
4 | 33 | ||
5 | 34 | ||
6 | - | @Callable(a) | |
7 | - | func makeSell (b,c) = if (if ((b != "WAVES")) | |
8 | - | then !(isDefined(assetInfo(fromBase58String(b)))) | |
35 | + | @Callable(i) | |
36 | + | func addAsset (j) = { | |
37 | + | let k = (100 * 100000000) | |
38 | + | let l = "100" | |
39 | + | let m = valueOrErrorMessage(i.payment, "Where is payment?") | |
40 | + | if (if (isDefined(m.assetId)) | |
41 | + | then (m.assetId != a) | |
42 | + | else false) | |
43 | + | then throw("OTCu or WAVES only") | |
44 | + | else if ((m.amount != k)) | |
45 | + | then throw((("You have to pay " + l) + " OTCu or WAVES")) | |
46 | + | else if (!(isDefined(assetInfo(fromBase58String(j))))) | |
47 | + | then throw("There is no asset with specified id") | |
48 | + | else { | |
49 | + | let n = { | |
50 | + | let e = getString(this, "assets") | |
51 | + | if ($isInstanceOf(e, "String")) | |
52 | + | then { | |
53 | + | let o = e | |
54 | + | o | |
55 | + | } | |
56 | + | else if ($isInstanceOf(e, "Unit")) | |
57 | + | then "" | |
58 | + | else throw() | |
59 | + | } | |
60 | + | if (isDefined(indexOf(n, j))) | |
61 | + | then throw("Asset is already available") | |
62 | + | else WriteSet([DataEntry("assets", (n + j))]) | |
63 | + | } | |
64 | + | } | |
65 | + | ||
66 | + | ||
67 | + | ||
68 | + | @Callable(i) | |
69 | + | func pro (p) = { | |
70 | + | let c = toBase58String(i.caller.bytes) | |
71 | + | let q = (50 * 100000000) | |
72 | + | let r = "50" | |
73 | + | let s = (10 * 100000000) | |
74 | + | let t = "10" | |
75 | + | let m = valueOrErrorMessage(i.payment, "Where is payment?") | |
76 | + | if (if (isDefined(m.assetId)) | |
77 | + | then (m.assetId != a) | |
78 | + | else false) | |
79 | + | then throw("OTCu or WAVES only") | |
80 | + | else if (if (p) | |
81 | + | then (m.amount != q) | |
82 | + | else false) | |
83 | + | then throw((("You have to pay " + r) + " OTCu or WAVES")) | |
84 | + | else if (if (!(p)) | |
85 | + | then (m.amount != s) | |
86 | + | else false) | |
87 | + | then throw((("You have to pay " + t) + " OTCu or WAVES")) | |
88 | + | else { | |
89 | + | let u = { | |
90 | + | let e = getBoolean(this, (c + "_unlimited")) | |
91 | + | if ($isInstanceOf(e, "Boolean")) | |
92 | + | then { | |
93 | + | let f = e | |
94 | + | f | |
95 | + | } | |
96 | + | else if ($isInstanceOf(e, "Unit")) | |
97 | + | then false | |
98 | + | else throw() | |
99 | + | } | |
100 | + | let v = { | |
101 | + | let e = getInteger(this, (c + "_time")) | |
102 | + | if ($isInstanceOf(e, "Int")) | |
103 | + | then { | |
104 | + | let h = e | |
105 | + | h | |
106 | + | } | |
107 | + | else if ($isInstanceOf(e, "Unit")) | |
108 | + | then 0 | |
109 | + | else throw() | |
110 | + | } | |
111 | + | if (u) | |
112 | + | then throw("You have unlimited PRO status already. What do you want?") | |
113 | + | else { | |
114 | + | let w = 2629743000 | |
115 | + | WriteSet([DataEntry((c + "_unlimited"), p), DataEntry((c + "_time"), if (p) | |
116 | + | then 0 | |
117 | + | else (v + w))]) | |
118 | + | } | |
119 | + | } | |
120 | + | } | |
121 | + | ||
122 | + | ||
123 | + | ||
124 | + | @Callable(i) | |
125 | + | func makeSell (x,y,z,A) = if (if ((x != "WAVES")) | |
126 | + | then !(isDefined(assetInfo(fromBase58String(x)))) | |
9 | 127 | else false) | |
10 | 128 | then throw("There is no asset with specified id") | |
11 | - | else if ((0 >= | |
129 | + | else if ((0 >= y)) | |
12 | 130 | then throw("price must be positive") | |
13 | 131 | else { | |
14 | - | let | |
15 | - | if ((0 >= | |
132 | + | let m = valueOrErrorMessage(i.payment, "where is payment?") | |
133 | + | if ((0 >= m.amount)) | |
16 | 134 | then throw("amount must be positive") | |
17 | 135 | else { | |
18 | - | let e = ("sell_" + toBase58String(a.transactionId)) | |
19 | - | let f = { | |
20 | - | let g = d.assetId | |
21 | - | if ($isInstanceOf(g, "ByteVector")) | |
136 | + | let B = { | |
137 | + | let e = m.assetId | |
138 | + | if ($isInstanceOf(e, "ByteVector")) | |
22 | 139 | then { | |
23 | - | let | |
24 | - | toBase58String( | |
140 | + | let C = e | |
141 | + | toBase58String(C) | |
25 | 142 | } | |
26 | 143 | else "WAVES" | |
27 | 144 | } | |
28 | - | WriteSet([DataEntry((e + "_amount"), d.amount), DataEntry((e + "_amount_asset"), f), DataEntry((e + "_price"), c), DataEntry((e + "_price_asset"), b), DataEntry((e + "_owner"), toBase58String(a.caller.bytes)), DataEntry((e + "_spent"), 0)]) | |
145 | + | let n = valueOrErrorMessage(getString(this, "assets"), "There are not available assets") | |
146 | + | if (if (!(isDefined(indexOf(n, x)))) | |
147 | + | then true | |
148 | + | else !(isDefined(indexOf(n, B)))) | |
149 | + | then throw("Asset are not available for trading") | |
150 | + | else { | |
151 | + | let c = toBase58String(i.caller.bytes) | |
152 | + | if (if (!(b(c))) | |
153 | + | then if (z) | |
154 | + | then true | |
155 | + | else (A != "") | |
156 | + | else false) | |
157 | + | then throw("You must have pro status to use these features") | |
158 | + | else { | |
159 | + | let D = toBase58String(i.transactionId) | |
160 | + | let E = { | |
161 | + | let e = getString(this, "orders") | |
162 | + | if ($isInstanceOf(e, "String")) | |
163 | + | then { | |
164 | + | let F = e | |
165 | + | F | |
166 | + | } | |
167 | + | else if ($isInstanceOf(e, "Unit")) | |
168 | + | then "" | |
169 | + | else throw() | |
170 | + | } | |
171 | + | let G = fromBase58String(A) | |
172 | + | let H = ((((((((((((((toString(m.amount) + "_") + B) + "_") + toString(y)) + "_") + x) + "_") + c) + "_") + toString(z)) + "_") + A) + "_") + toString(0)) | |
173 | + | WriteSet([DataEntry("orders", (E + D)), DataEntry(D, H)]) | |
174 | + | } | |
175 | + | } | |
29 | 176 | } | |
30 | 177 | } | |
31 | 178 | ||
32 | 179 | ||
33 | 180 | ||
34 | - | @Callable( | |
35 | - | func makeBuy ( | |
36 | - | then !(isDefined(assetInfo(fromBase58String( | |
181 | + | @Callable(i) | |
182 | + | func makeBuy (B,y,z,A) = if (if ((B != "WAVES")) | |
183 | + | then !(isDefined(assetInfo(fromBase58String(B)))) | |
37 | 184 | else false) | |
38 | 185 | then throw("There is no asset with specified id") | |
39 | - | else if ((0 >= | |
186 | + | else if ((0 >= y)) | |
40 | 187 | then throw("price must be positive") | |
41 | 188 | else { | |
42 | - | let | |
43 | - | if ((0 >= | |
189 | + | let m = valueOrErrorMessage(i.payment, "where is payment?") | |
190 | + | if ((0 >= m.amount)) | |
44 | 191 | then throw("amount must be positive") | |
45 | 192 | else { | |
46 | - | let e = ("buy_" + toBase58String(a.transactionId)) | |
47 | - | let b = { | |
48 | - | let g = d.assetId | |
49 | - | if ($isInstanceOf(g, "ByteVector")) | |
193 | + | let x = { | |
194 | + | let e = m.assetId | |
195 | + | if ($isInstanceOf(e, "ByteVector")) | |
50 | 196 | then { | |
51 | - | let | |
52 | - | toBase58String( | |
197 | + | let C = e | |
198 | + | toBase58String(C) | |
53 | 199 | } | |
54 | 200 | else "WAVES" | |
55 | 201 | } | |
56 | - | let i = if ((f == "WAVES")) | |
57 | - | then 8 | |
58 | - | else value(assetInfo(fromBase58String(f))).decimals | |
59 | - | let j = ((d.amount * pow(10, 0, i, 0, 0, CEILING)) / c) | |
60 | - | if ((j == 0)) | |
61 | - | then throw("invalid buy amount") | |
62 | - | else WriteSet([DataEntry((e + "_amount"), j), DataEntry((e + "_amount_asset"), f), DataEntry((e + "_price"), c), DataEntry((e + "_price_asset"), b), DataEntry((e + "_owner"), toBase58String(a.caller.bytes)), DataEntry((e + "_spent"), 0)]) | |
202 | + | let n = valueOrErrorMessage(getString(this, "assets"), "There are not available assets") | |
203 | + | if (if (!(isDefined(indexOf(n, x)))) | |
204 | + | then true | |
205 | + | else !(isDefined(indexOf(n, B)))) | |
206 | + | then throw("Asset are not available for trading") | |
207 | + | else { | |
208 | + | let c = toBase58String(i.caller.bytes) | |
209 | + | if (if (!(b(c))) | |
210 | + | then if (z) | |
211 | + | then true | |
212 | + | else (A != "") | |
213 | + | else false) | |
214 | + | then throw("You must have pro status to use these features") | |
215 | + | else { | |
216 | + | let D = toBase58String(i.transactionId) | |
217 | + | let E = { | |
218 | + | let e = getString(this, "orders") | |
219 | + | if ($isInstanceOf(e, "String")) | |
220 | + | then { | |
221 | + | let F = e | |
222 | + | F | |
223 | + | } | |
224 | + | else if ($isInstanceOf(e, "Unit")) | |
225 | + | then "" | |
226 | + | else throw() | |
227 | + | } | |
228 | + | let I = if ((B == "WAVES")) | |
229 | + | then 8 | |
230 | + | else value(assetInfo(fromBase58String(B))).decimals | |
231 | + | let J = ((m.amount * pow(10, 0, I, 0, 0, CEILING)) / y) | |
232 | + | if ((J == 0)) | |
233 | + | then throw("invalid buy amount") | |
234 | + | else { | |
235 | + | let H = ((((((((((((((toString(J) + "_") + B) + "_") + toString(y)) + "_") + x) + "_") + c) + "_") + toString(z)) + "_") + A) + "_") + toString(0)) | |
236 | + | WriteSet([DataEntry("orders", (E + D)), DataEntry(D, H)]) | |
237 | + | } | |
238 | + | } | |
239 | + | } | |
63 | 240 | } | |
64 | 241 | } | |
65 | 242 | ||
66 | 243 | ||
67 | 244 | ||
68 | - | @Callable( | |
69 | - | func takeSell ( | |
70 | - | let | |
71 | - | if ((0 >= | |
245 | + | @Callable(i) | |
246 | + | func takeSell (D,K) = { | |
247 | + | let m = valueOrErrorMessage(i.payment, "where is payment?") | |
248 | + | if ((0 >= m.amount)) | |
72 | 249 | then throw("amount must be positive") | |
73 | 250 | else { | |
74 | - | let e = ("sell_" + k) | |
75 | - | let l = { | |
76 | - | let g = d.assetId | |
77 | - | if ($isInstanceOf(g, "ByteVector")) | |
251 | + | let L = { | |
252 | + | let e = m.assetId | |
253 | + | if ($isInstanceOf(e, "ByteVector")) | |
78 | 254 | then { | |
79 | - | let | |
80 | - | toBase58String( | |
255 | + | let C = e | |
256 | + | toBase58String(C) | |
81 | 257 | } | |
82 | 258 | else "WAVES" | |
83 | 259 | } | |
84 | - | let b = valueOrErrorMessage(getString(this, (e + "_price_asset")), "there is no order with specified id") | |
85 | - | if ((b != l)) | |
86 | - | then throw(("payment asset must be " + b)) | |
260 | + | let H = valueOrErrorMessage(getString(this, D), "Invalid order id") | |
261 | + | let M = parseIntValue(split(H, "_")[0]) | |
262 | + | let B = split(H, "_")[1] | |
263 | + | let y = parseIntValue(split(H, "_")[2]) | |
264 | + | let x = split(H, "_")[3] | |
265 | + | let N = value(addressFromString(split(H, "_")[4])) | |
266 | + | let z = if ((split(H, "_")[5] == "true")) | |
267 | + | then true | |
268 | + | else false | |
269 | + | let A = split(H, "_")[6] | |
270 | + | let O = parseIntValue(split(H, "_")[7]) | |
271 | + | if ((x != L)) | |
272 | + | then throw(("Payment asset must be " + x)) | |
87 | 273 | else { | |
88 | - | let c = getIntegerValue(this, (e + "_price")) | |
89 | - | let m = getIntegerValue(this, (e + "_amount")) | |
90 | - | let f = getStringValue(this, (e + "_amount_asset")) | |
91 | - | let i = if ((f == "WAVES")) | |
92 | - | then 8 | |
93 | - | else value(assetInfo(fromBase58String(f))).decimals | |
94 | - | let j = ((d.amount * pow(10, 0, i, 0, 0, CEILING)) / c) | |
95 | - | if ((j == 0)) | |
96 | - | then throw("invalid amount") | |
274 | + | let P = if ((A != "")) | |
275 | + | then sigVerify(i.callerPublicKey, fromBase58String(K), fromBase58String(A)) | |
276 | + | else true | |
277 | + | if (!(P)) | |
278 | + | then throw("The order is private") | |
97 | 279 | else { | |
98 | - | let n = value(addressFromString(getStringValue(this, (e + "_owner")))) | |
99 | - | let o = getIntegerValue(this, (e + "_spent")) | |
100 | - | if ((j > (m - o))) | |
101 | - | then throw("not enougth asset in order") | |
102 | - | else ScriptResult(WriteSet([DataEntry((e + "_spent"), (o + j))]), TransferSet([ScriptTransfer(a.caller, j, if ((f == "WAVES")) | |
103 | - | then unit | |
104 | - | else fromBase58String(f)), ScriptTransfer(n, d.amount, if ((b == "WAVES")) | |
105 | - | then unit | |
106 | - | else fromBase58String(b))])) | |
280 | + | let I = if ((B == "WAVES")) | |
281 | + | then 8 | |
282 | + | else value(assetInfo(fromBase58String(B))).decimals | |
283 | + | let J = ((m.amount * pow(10, 0, I, 0, 0, CEILING)) / y) | |
284 | + | if ((J == 0)) | |
285 | + | then throw("Invalid amount") | |
286 | + | else if (if (z) | |
287 | + | then (M > J) | |
288 | + | else false) | |
289 | + | then throw("You must take all or none") | |
290 | + | else if ((J > (M - O))) | |
291 | + | then throw("Not enougth asset in order") | |
292 | + | else { | |
293 | + | let E = { | |
294 | + | let e = getString(this, "orders") | |
295 | + | if ($isInstanceOf(e, "String")) | |
296 | + | then { | |
297 | + | let F = e | |
298 | + | F | |
299 | + | } | |
300 | + | else if ($isInstanceOf(e, "Unit")) | |
301 | + | then "" | |
302 | + | else throw() | |
303 | + | } | |
304 | + | let Q = (dropRight(H, size(split(H, "_")[7])) + toString((O + J))) | |
305 | + | let R = value(indexOf(E, D)) | |
306 | + | let S = if ((M == (J + O))) | |
307 | + | then (take(E, R) + drop(E, (R + size(D)))) | |
308 | + | else E | |
309 | + | ScriptResult(WriteSet([DataEntry("orders", S), DataEntry(D, Q)]), TransferSet([ScriptTransfer(i.caller, J, if ((B == "WAVES")) | |
310 | + | then unit | |
311 | + | else fromBase58String(B)), ScriptTransfer(N, m.amount, if ((x == "WAVES")) | |
312 | + | then unit | |
313 | + | else fromBase58String(x))])) | |
314 | + | } | |
107 | 315 | } | |
108 | 316 | } | |
109 | 317 | } | |
111 | 319 | ||
112 | 320 | ||
113 | 321 | ||
114 | - | @Callable( | |
115 | - | func takeBuy ( | |
116 | - | let | |
117 | - | if ((0 >= | |
322 | + | @Callable(i) | |
323 | + | func takeBuy (D,K) = { | |
324 | + | let m = valueOrErrorMessage(i.payment, "where is payment?") | |
325 | + | if ((0 >= m.amount)) | |
118 | 326 | then throw("amount must be positive") | |
119 | 327 | else { | |
120 | - | let e = ("buy_" + k) | |
121 | - | let l = { | |
122 | - | let g = d.assetId | |
123 | - | if ($isInstanceOf(g, "ByteVector")) | |
328 | + | let L = { | |
329 | + | let e = m.assetId | |
330 | + | if ($isInstanceOf(e, "ByteVector")) | |
124 | 331 | then { | |
125 | - | let | |
126 | - | toBase58String( | |
332 | + | let C = e | |
333 | + | toBase58String(C) | |
127 | 334 | } | |
128 | 335 | else "WAVES" | |
129 | 336 | } | |
130 | - | let f = valueOrErrorMessage(getString(this, (e + "_amount_asset")), "there is no order with specified id") | |
131 | - | if ((f != l)) | |
132 | - | then throw(("payment asset must be " + f)) | |
337 | + | let H = valueOrErrorMessage(getString(this, D), "Invalid order id") | |
338 | + | let M = parseIntValue(split(H, "_")[0]) | |
339 | + | let B = split(H, "_")[1] | |
340 | + | let y = parseIntValue(split(H, "_")[2]) | |
341 | + | let x = split(H, "_")[3] | |
342 | + | let N = value(addressFromString(split(H, "_")[4])) | |
343 | + | let z = if ((split(H, "_")[5] == "true")) | |
344 | + | then true | |
345 | + | else false | |
346 | + | let A = split(H, "_")[6] | |
347 | + | let O = parseIntValue(split(H, "_")[7]) | |
348 | + | if ((B != L)) | |
349 | + | then throw(("payment asset must be " + B)) | |
133 | 350 | else { | |
134 | - | let c = getIntegerValue(this, (e + "_price")) | |
135 | - | let m = getIntegerValue(this, (e + "_amount")) | |
136 | - | let b = getStringValue(this, (e + "_price_asset")) | |
137 | - | let i = if ((f == "WAVES")) | |
138 | - | then 8 | |
139 | - | else value(assetInfo(fromBase58String(f))).decimals | |
140 | - | let p = ((d.amount * c) / pow(10, 0, i, 0, 0, CEILING)) | |
141 | - | if ((p == 0)) | |
142 | - | then throw("invalid amount") | |
351 | + | let P = if ((A != "")) | |
352 | + | then sigVerify(i.callerPublicKey, fromBase58String(K), fromBase58String(A)) | |
353 | + | else true | |
354 | + | if (!(P)) | |
355 | + | then throw("The order is private") | |
143 | 356 | else { | |
144 | - | let n = value(addressFromString(getStringValue(this, (e + "_owner")))) | |
145 | - | let o = getIntegerValue(this, (e + "_spent")) | |
146 | - | if ((d.amount > (m - o))) | |
147 | - | then throw("not enougth asset in order") | |
148 | - | else ScriptResult(WriteSet([DataEntry((e + "_spent"), (o + d.amount))]), TransferSet([ScriptTransfer(a.caller, p, if ((b == "WAVES")) | |
149 | - | then unit | |
150 | - | else fromBase58String(b)), ScriptTransfer(n, d.amount, if ((f == "WAVES")) | |
151 | - | then unit | |
152 | - | else fromBase58String(f))])) | |
357 | + | let I = if ((B == "WAVES")) | |
358 | + | then 8 | |
359 | + | else value(assetInfo(fromBase58String(B))).decimals | |
360 | + | let T = ((m.amount * y) / pow(10, 0, I, 0, 0, CEILING)) | |
361 | + | if ((T == 0)) | |
362 | + | then throw("invalid amount") | |
363 | + | else if (if (z) | |
364 | + | then (M > T) | |
365 | + | else false) | |
366 | + | then throw("You must take all or none") | |
367 | + | else if ((m.amount > (M - O))) | |
368 | + | then throw("not enougth asset in order") | |
369 | + | else { | |
370 | + | let E = { | |
371 | + | let e = getString(this, "orders") | |
372 | + | if ($isInstanceOf(e, "String")) | |
373 | + | then { | |
374 | + | let F = e | |
375 | + | F | |
376 | + | } | |
377 | + | else if ($isInstanceOf(e, "Unit")) | |
378 | + | then "" | |
379 | + | else throw() | |
380 | + | } | |
381 | + | let Q = (dropRight(H, size(split(H, "_")[7])) + toString((O + m.amount))) | |
382 | + | let R = value(indexOf(E, D)) | |
383 | + | let S = if ((M == (m.amount + O))) | |
384 | + | then (take(E, R) + drop(E, (R + size(D)))) | |
385 | + | else E | |
386 | + | ScriptResult(WriteSet([DataEntry("orders", S), DataEntry(D, Q)]), TransferSet([ScriptTransfer(i.caller, T, if ((x == "WAVES")) | |
387 | + | then unit | |
388 | + | else fromBase58String(x)), ScriptTransfer(N, m.amount, if ((B == "WAVES")) | |
389 | + | then unit | |
390 | + | else fromBase58String(B))])) | |
391 | + | } | |
153 | 392 | } | |
393 | + | } | |
394 | + | } | |
395 | + | } | |
396 | + | ||
397 | + | ||
398 | + | ||
399 | + | @Callable(i) | |
400 | + | func returnBuy (D) = { | |
401 | + | let H = valueOrErrorMessage(getString(this, D), "Invalid order id") | |
402 | + | let M = parseIntValue(split(H, "_")[0]) | |
403 | + | let B = split(H, "_")[1] | |
404 | + | let y = parseIntValue(split(H, "_")[2]) | |
405 | + | let x = split(H, "_")[3] | |
406 | + | let N = value(addressFromString(split(H, "_")[4])) | |
407 | + | let z = if ((split(H, "_")[5] == "true")) | |
408 | + | then true | |
409 | + | else false | |
410 | + | let A = split(H, "_")[6] | |
411 | + | let O = parseIntValue(split(H, "_")[7]) | |
412 | + | if ((N != i.caller)) | |
413 | + | then throw("Return should be called by order owner") | |
414 | + | else { | |
415 | + | let I = if ((B == "WAVES")) | |
416 | + | then 8 | |
417 | + | else value(assetInfo(fromBase58String(B))).decimals | |
418 | + | let U = (((M - O) * y) / pow(10, 0, I, 0, 0, CEILING)) | |
419 | + | if ((0 >= U)) | |
420 | + | then throw("nothing to return") | |
421 | + | else { | |
422 | + | let E = { | |
423 | + | let e = getString(this, "orders") | |
424 | + | if ($isInstanceOf(e, "String")) | |
425 | + | then { | |
426 | + | let F = e | |
427 | + | F | |
428 | + | } | |
429 | + | else if ($isInstanceOf(e, "Unit")) | |
430 | + | then "" | |
431 | + | else throw() | |
432 | + | } | |
433 | + | let Q = (dropRight(H, size(split(H, "_")[7])) + toString(M)) | |
434 | + | let R = value(indexOf(E, D)) | |
435 | + | let S = (take(E, R) + drop(E, (R + size(D)))) | |
436 | + | ScriptResult(WriteSet([DataEntry("orders", S), DataEntry(D, Q)]), TransferSet([ScriptTransfer(i.caller, U, if ((x == "WAVES")) | |
437 | + | then unit | |
438 | + | else fromBase58String(x))])) | |
439 | + | } | |
440 | + | } | |
441 | + | } | |
442 | + | ||
443 | + | ||
444 | + | ||
445 | + | @Callable(i) | |
446 | + | func returnSell (D) = { | |
447 | + | let H = valueOrErrorMessage(getString(this, D), "Invalid order id") | |
448 | + | let M = parseIntValue(split(H, "_")[0]) | |
449 | + | let B = split(H, "_")[1] | |
450 | + | let y = parseIntValue(split(H, "_")[2]) | |
451 | + | let x = split(H, "_")[3] | |
452 | + | let N = value(addressFromString(split(H, "_")[4])) | |
453 | + | let z = if ((split(H, "_")[5] == "true")) | |
454 | + | then true | |
455 | + | else false | |
456 | + | let A = split(H, "_")[6] | |
457 | + | let O = parseIntValue(split(H, "_")[7]) | |
458 | + | if ((N != i.caller)) | |
459 | + | then throw("return should be called by order owner") | |
460 | + | else { | |
461 | + | let U = (M - O) | |
462 | + | if ((0 >= U)) | |
463 | + | then throw("nothing to return") | |
464 | + | else { | |
465 | + | let E = { | |
466 | + | let e = getString(this, "orders") | |
467 | + | if ($isInstanceOf(e, "String")) | |
468 | + | then { | |
469 | + | let F = e | |
470 | + | F | |
471 | + | } | |
472 | + | else if ($isInstanceOf(e, "Unit")) | |
473 | + | then "" | |
474 | + | else throw() | |
475 | + | } | |
476 | + | let Q = (dropRight(H, size(split(H, "_")[7])) + toString(M)) | |
477 | + | let R = value(indexOf(E, D)) | |
478 | + | let S = (take(E, R) + drop(E, (R + size(D)))) | |
479 | + | ScriptResult(WriteSet([DataEntry("orders", S), DataEntry(D, Q)]), TransferSet([ScriptTransfer(i.caller, U, if ((B == "WAVES")) | |
480 | + | then unit | |
481 | + | else fromBase58String(B))])) | |
154 | 482 | } | |
155 | 483 | } | |
156 | 484 | } |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 3 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let a = base58'9qh2MiJhfqNS1o3R5wcUrAAWpeqZs9R8SLwQvCx88Vaf' | |
5 | + | ||
6 | + | func b (c) = { | |
7 | + | let d = { | |
8 | + | let e = getBoolean(this, (c + "_unlimited")) | |
9 | + | if ($isInstanceOf(e, "Boolean")) | |
10 | + | then { | |
11 | + | let f = e | |
12 | + | f | |
13 | + | } | |
14 | + | else if ($isInstanceOf(e, "Unit")) | |
15 | + | then false | |
16 | + | else throw() | |
17 | + | } | |
18 | + | let g = { | |
19 | + | let e = getInteger(this, (c + "_time")) | |
20 | + | if ($isInstanceOf(e, "Int")) | |
21 | + | then { | |
22 | + | let h = e | |
23 | + | h | |
24 | + | } | |
25 | + | else if ($isInstanceOf(e, "Unit")) | |
26 | + | then 0 | |
27 | + | else throw() | |
28 | + | } | |
29 | + | if (d) | |
30 | + | then true | |
31 | + | else (g > lastBlock.timestamp) | |
32 | + | } | |
4 | 33 | ||
5 | 34 | ||
6 | - | @Callable(a) | |
7 | - | func makeSell (b,c) = if (if ((b != "WAVES")) | |
8 | - | then !(isDefined(assetInfo(fromBase58String(b)))) | |
35 | + | @Callable(i) | |
36 | + | func addAsset (j) = { | |
37 | + | let k = (100 * 100000000) | |
38 | + | let l = "100" | |
39 | + | let m = valueOrErrorMessage(i.payment, "Where is payment?") | |
40 | + | if (if (isDefined(m.assetId)) | |
41 | + | then (m.assetId != a) | |
42 | + | else false) | |
43 | + | then throw("OTCu or WAVES only") | |
44 | + | else if ((m.amount != k)) | |
45 | + | then throw((("You have to pay " + l) + " OTCu or WAVES")) | |
46 | + | else if (!(isDefined(assetInfo(fromBase58String(j))))) | |
47 | + | then throw("There is no asset with specified id") | |
48 | + | else { | |
49 | + | let n = { | |
50 | + | let e = getString(this, "assets") | |
51 | + | if ($isInstanceOf(e, "String")) | |
52 | + | then { | |
53 | + | let o = e | |
54 | + | o | |
55 | + | } | |
56 | + | else if ($isInstanceOf(e, "Unit")) | |
57 | + | then "" | |
58 | + | else throw() | |
59 | + | } | |
60 | + | if (isDefined(indexOf(n, j))) | |
61 | + | then throw("Asset is already available") | |
62 | + | else WriteSet([DataEntry("assets", (n + j))]) | |
63 | + | } | |
64 | + | } | |
65 | + | ||
66 | + | ||
67 | + | ||
68 | + | @Callable(i) | |
69 | + | func pro (p) = { | |
70 | + | let c = toBase58String(i.caller.bytes) | |
71 | + | let q = (50 * 100000000) | |
72 | + | let r = "50" | |
73 | + | let s = (10 * 100000000) | |
74 | + | let t = "10" | |
75 | + | let m = valueOrErrorMessage(i.payment, "Where is payment?") | |
76 | + | if (if (isDefined(m.assetId)) | |
77 | + | then (m.assetId != a) | |
78 | + | else false) | |
79 | + | then throw("OTCu or WAVES only") | |
80 | + | else if (if (p) | |
81 | + | then (m.amount != q) | |
82 | + | else false) | |
83 | + | then throw((("You have to pay " + r) + " OTCu or WAVES")) | |
84 | + | else if (if (!(p)) | |
85 | + | then (m.amount != s) | |
86 | + | else false) | |
87 | + | then throw((("You have to pay " + t) + " OTCu or WAVES")) | |
88 | + | else { | |
89 | + | let u = { | |
90 | + | let e = getBoolean(this, (c + "_unlimited")) | |
91 | + | if ($isInstanceOf(e, "Boolean")) | |
92 | + | then { | |
93 | + | let f = e | |
94 | + | f | |
95 | + | } | |
96 | + | else if ($isInstanceOf(e, "Unit")) | |
97 | + | then false | |
98 | + | else throw() | |
99 | + | } | |
100 | + | let v = { | |
101 | + | let e = getInteger(this, (c + "_time")) | |
102 | + | if ($isInstanceOf(e, "Int")) | |
103 | + | then { | |
104 | + | let h = e | |
105 | + | h | |
106 | + | } | |
107 | + | else if ($isInstanceOf(e, "Unit")) | |
108 | + | then 0 | |
109 | + | else throw() | |
110 | + | } | |
111 | + | if (u) | |
112 | + | then throw("You have unlimited PRO status already. What do you want?") | |
113 | + | else { | |
114 | + | let w = 2629743000 | |
115 | + | WriteSet([DataEntry((c + "_unlimited"), p), DataEntry((c + "_time"), if (p) | |
116 | + | then 0 | |
117 | + | else (v + w))]) | |
118 | + | } | |
119 | + | } | |
120 | + | } | |
121 | + | ||
122 | + | ||
123 | + | ||
124 | + | @Callable(i) | |
125 | + | func makeSell (x,y,z,A) = if (if ((x != "WAVES")) | |
126 | + | then !(isDefined(assetInfo(fromBase58String(x)))) | |
9 | 127 | else false) | |
10 | 128 | then throw("There is no asset with specified id") | |
11 | - | else if ((0 >= | |
129 | + | else if ((0 >= y)) | |
12 | 130 | then throw("price must be positive") | |
13 | 131 | else { | |
14 | - | let | |
15 | - | if ((0 >= | |
132 | + | let m = valueOrErrorMessage(i.payment, "where is payment?") | |
133 | + | if ((0 >= m.amount)) | |
16 | 134 | then throw("amount must be positive") | |
17 | 135 | else { | |
18 | - | let e = ("sell_" + toBase58String(a.transactionId)) | |
19 | - | let f = { | |
20 | - | let g = d.assetId | |
21 | - | if ($isInstanceOf(g, "ByteVector")) | |
136 | + | let B = { | |
137 | + | let e = m.assetId | |
138 | + | if ($isInstanceOf(e, "ByteVector")) | |
22 | 139 | then { | |
23 | - | let | |
24 | - | toBase58String( | |
140 | + | let C = e | |
141 | + | toBase58String(C) | |
25 | 142 | } | |
26 | 143 | else "WAVES" | |
27 | 144 | } | |
28 | - | WriteSet([DataEntry((e + "_amount"), d.amount), DataEntry((e + "_amount_asset"), f), DataEntry((e + "_price"), c), DataEntry((e + "_price_asset"), b), DataEntry((e + "_owner"), toBase58String(a.caller.bytes)), DataEntry((e + "_spent"), 0)]) | |
145 | + | let n = valueOrErrorMessage(getString(this, "assets"), "There are not available assets") | |
146 | + | if (if (!(isDefined(indexOf(n, x)))) | |
147 | + | then true | |
148 | + | else !(isDefined(indexOf(n, B)))) | |
149 | + | then throw("Asset are not available for trading") | |
150 | + | else { | |
151 | + | let c = toBase58String(i.caller.bytes) | |
152 | + | if (if (!(b(c))) | |
153 | + | then if (z) | |
154 | + | then true | |
155 | + | else (A != "") | |
156 | + | else false) | |
157 | + | then throw("You must have pro status to use these features") | |
158 | + | else { | |
159 | + | let D = toBase58String(i.transactionId) | |
160 | + | let E = { | |
161 | + | let e = getString(this, "orders") | |
162 | + | if ($isInstanceOf(e, "String")) | |
163 | + | then { | |
164 | + | let F = e | |
165 | + | F | |
166 | + | } | |
167 | + | else if ($isInstanceOf(e, "Unit")) | |
168 | + | then "" | |
169 | + | else throw() | |
170 | + | } | |
171 | + | let G = fromBase58String(A) | |
172 | + | let H = ((((((((((((((toString(m.amount) + "_") + B) + "_") + toString(y)) + "_") + x) + "_") + c) + "_") + toString(z)) + "_") + A) + "_") + toString(0)) | |
173 | + | WriteSet([DataEntry("orders", (E + D)), DataEntry(D, H)]) | |
174 | + | } | |
175 | + | } | |
29 | 176 | } | |
30 | 177 | } | |
31 | 178 | ||
32 | 179 | ||
33 | 180 | ||
34 | - | @Callable( | |
35 | - | func makeBuy ( | |
36 | - | then !(isDefined(assetInfo(fromBase58String( | |
181 | + | @Callable(i) | |
182 | + | func makeBuy (B,y,z,A) = if (if ((B != "WAVES")) | |
183 | + | then !(isDefined(assetInfo(fromBase58String(B)))) | |
37 | 184 | else false) | |
38 | 185 | then throw("There is no asset with specified id") | |
39 | - | else if ((0 >= | |
186 | + | else if ((0 >= y)) | |
40 | 187 | then throw("price must be positive") | |
41 | 188 | else { | |
42 | - | let | |
43 | - | if ((0 >= | |
189 | + | let m = valueOrErrorMessage(i.payment, "where is payment?") | |
190 | + | if ((0 >= m.amount)) | |
44 | 191 | then throw("amount must be positive") | |
45 | 192 | else { | |
46 | - | let e = ("buy_" + toBase58String(a.transactionId)) | |
47 | - | let b = { | |
48 | - | let g = d.assetId | |
49 | - | if ($isInstanceOf(g, "ByteVector")) | |
193 | + | let x = { | |
194 | + | let e = m.assetId | |
195 | + | if ($isInstanceOf(e, "ByteVector")) | |
50 | 196 | then { | |
51 | - | let | |
52 | - | toBase58String( | |
197 | + | let C = e | |
198 | + | toBase58String(C) | |
53 | 199 | } | |
54 | 200 | else "WAVES" | |
55 | 201 | } | |
56 | - | let i = if ((f == "WAVES")) | |
57 | - | then 8 | |
58 | - | else value(assetInfo(fromBase58String(f))).decimals | |
59 | - | let j = ((d.amount * pow(10, 0, i, 0, 0, CEILING)) / c) | |
60 | - | if ((j == 0)) | |
61 | - | then throw("invalid buy amount") | |
62 | - | else WriteSet([DataEntry((e + "_amount"), j), DataEntry((e + "_amount_asset"), f), DataEntry((e + "_price"), c), DataEntry((e + "_price_asset"), b), DataEntry((e + "_owner"), toBase58String(a.caller.bytes)), DataEntry((e + "_spent"), 0)]) | |
202 | + | let n = valueOrErrorMessage(getString(this, "assets"), "There are not available assets") | |
203 | + | if (if (!(isDefined(indexOf(n, x)))) | |
204 | + | then true | |
205 | + | else !(isDefined(indexOf(n, B)))) | |
206 | + | then throw("Asset are not available for trading") | |
207 | + | else { | |
208 | + | let c = toBase58String(i.caller.bytes) | |
209 | + | if (if (!(b(c))) | |
210 | + | then if (z) | |
211 | + | then true | |
212 | + | else (A != "") | |
213 | + | else false) | |
214 | + | then throw("You must have pro status to use these features") | |
215 | + | else { | |
216 | + | let D = toBase58String(i.transactionId) | |
217 | + | let E = { | |
218 | + | let e = getString(this, "orders") | |
219 | + | if ($isInstanceOf(e, "String")) | |
220 | + | then { | |
221 | + | let F = e | |
222 | + | F | |
223 | + | } | |
224 | + | else if ($isInstanceOf(e, "Unit")) | |
225 | + | then "" | |
226 | + | else throw() | |
227 | + | } | |
228 | + | let I = if ((B == "WAVES")) | |
229 | + | then 8 | |
230 | + | else value(assetInfo(fromBase58String(B))).decimals | |
231 | + | let J = ((m.amount * pow(10, 0, I, 0, 0, CEILING)) / y) | |
232 | + | if ((J == 0)) | |
233 | + | then throw("invalid buy amount") | |
234 | + | else { | |
235 | + | let H = ((((((((((((((toString(J) + "_") + B) + "_") + toString(y)) + "_") + x) + "_") + c) + "_") + toString(z)) + "_") + A) + "_") + toString(0)) | |
236 | + | WriteSet([DataEntry("orders", (E + D)), DataEntry(D, H)]) | |
237 | + | } | |
238 | + | } | |
239 | + | } | |
63 | 240 | } | |
64 | 241 | } | |
65 | 242 | ||
66 | 243 | ||
67 | 244 | ||
68 | - | @Callable( | |
69 | - | func takeSell ( | |
70 | - | let | |
71 | - | if ((0 >= | |
245 | + | @Callable(i) | |
246 | + | func takeSell (D,K) = { | |
247 | + | let m = valueOrErrorMessage(i.payment, "where is payment?") | |
248 | + | if ((0 >= m.amount)) | |
72 | 249 | then throw("amount must be positive") | |
73 | 250 | else { | |
74 | - | let e = ("sell_" + k) | |
75 | - | let l = { | |
76 | - | let g = d.assetId | |
77 | - | if ($isInstanceOf(g, "ByteVector")) | |
251 | + | let L = { | |
252 | + | let e = m.assetId | |
253 | + | if ($isInstanceOf(e, "ByteVector")) | |
78 | 254 | then { | |
79 | - | let | |
80 | - | toBase58String( | |
255 | + | let C = e | |
256 | + | toBase58String(C) | |
81 | 257 | } | |
82 | 258 | else "WAVES" | |
83 | 259 | } | |
84 | - | let b = valueOrErrorMessage(getString(this, (e + "_price_asset")), "there is no order with specified id") | |
85 | - | if ((b != l)) | |
86 | - | then throw(("payment asset must be " + b)) | |
260 | + | let H = valueOrErrorMessage(getString(this, D), "Invalid order id") | |
261 | + | let M = parseIntValue(split(H, "_")[0]) | |
262 | + | let B = split(H, "_")[1] | |
263 | + | let y = parseIntValue(split(H, "_")[2]) | |
264 | + | let x = split(H, "_")[3] | |
265 | + | let N = value(addressFromString(split(H, "_")[4])) | |
266 | + | let z = if ((split(H, "_")[5] == "true")) | |
267 | + | then true | |
268 | + | else false | |
269 | + | let A = split(H, "_")[6] | |
270 | + | let O = parseIntValue(split(H, "_")[7]) | |
271 | + | if ((x != L)) | |
272 | + | then throw(("Payment asset must be " + x)) | |
87 | 273 | else { | |
88 | - | let c = getIntegerValue(this, (e + "_price")) | |
89 | - | let m = getIntegerValue(this, (e + "_amount")) | |
90 | - | let f = getStringValue(this, (e + "_amount_asset")) | |
91 | - | let i = if ((f == "WAVES")) | |
92 | - | then 8 | |
93 | - | else value(assetInfo(fromBase58String(f))).decimals | |
94 | - | let j = ((d.amount * pow(10, 0, i, 0, 0, CEILING)) / c) | |
95 | - | if ((j == 0)) | |
96 | - | then throw("invalid amount") | |
274 | + | let P = if ((A != "")) | |
275 | + | then sigVerify(i.callerPublicKey, fromBase58String(K), fromBase58String(A)) | |
276 | + | else true | |
277 | + | if (!(P)) | |
278 | + | then throw("The order is private") | |
97 | 279 | else { | |
98 | - | let n = value(addressFromString(getStringValue(this, (e + "_owner")))) | |
99 | - | let o = getIntegerValue(this, (e + "_spent")) | |
100 | - | if ((j > (m - o))) | |
101 | - | then throw("not enougth asset in order") | |
102 | - | else ScriptResult(WriteSet([DataEntry((e + "_spent"), (o + j))]), TransferSet([ScriptTransfer(a.caller, j, if ((f == "WAVES")) | |
103 | - | then unit | |
104 | - | else fromBase58String(f)), ScriptTransfer(n, d.amount, if ((b == "WAVES")) | |
105 | - | then unit | |
106 | - | else fromBase58String(b))])) | |
280 | + | let I = if ((B == "WAVES")) | |
281 | + | then 8 | |
282 | + | else value(assetInfo(fromBase58String(B))).decimals | |
283 | + | let J = ((m.amount * pow(10, 0, I, 0, 0, CEILING)) / y) | |
284 | + | if ((J == 0)) | |
285 | + | then throw("Invalid amount") | |
286 | + | else if (if (z) | |
287 | + | then (M > J) | |
288 | + | else false) | |
289 | + | then throw("You must take all or none") | |
290 | + | else if ((J > (M - O))) | |
291 | + | then throw("Not enougth asset in order") | |
292 | + | else { | |
293 | + | let E = { | |
294 | + | let e = getString(this, "orders") | |
295 | + | if ($isInstanceOf(e, "String")) | |
296 | + | then { | |
297 | + | let F = e | |
298 | + | F | |
299 | + | } | |
300 | + | else if ($isInstanceOf(e, "Unit")) | |
301 | + | then "" | |
302 | + | else throw() | |
303 | + | } | |
304 | + | let Q = (dropRight(H, size(split(H, "_")[7])) + toString((O + J))) | |
305 | + | let R = value(indexOf(E, D)) | |
306 | + | let S = if ((M == (J + O))) | |
307 | + | then (take(E, R) + drop(E, (R + size(D)))) | |
308 | + | else E | |
309 | + | ScriptResult(WriteSet([DataEntry("orders", S), DataEntry(D, Q)]), TransferSet([ScriptTransfer(i.caller, J, if ((B == "WAVES")) | |
310 | + | then unit | |
311 | + | else fromBase58String(B)), ScriptTransfer(N, m.amount, if ((x == "WAVES")) | |
312 | + | then unit | |
313 | + | else fromBase58String(x))])) | |
314 | + | } | |
107 | 315 | } | |
108 | 316 | } | |
109 | 317 | } | |
110 | 318 | } | |
111 | 319 | ||
112 | 320 | ||
113 | 321 | ||
114 | - | @Callable( | |
115 | - | func takeBuy ( | |
116 | - | let | |
117 | - | if ((0 >= | |
322 | + | @Callable(i) | |
323 | + | func takeBuy (D,K) = { | |
324 | + | let m = valueOrErrorMessage(i.payment, "where is payment?") | |
325 | + | if ((0 >= m.amount)) | |
118 | 326 | then throw("amount must be positive") | |
119 | 327 | else { | |
120 | - | let e = ("buy_" + k) | |
121 | - | let l = { | |
122 | - | let g = d.assetId | |
123 | - | if ($isInstanceOf(g, "ByteVector")) | |
328 | + | let L = { | |
329 | + | let e = m.assetId | |
330 | + | if ($isInstanceOf(e, "ByteVector")) | |
124 | 331 | then { | |
125 | - | let | |
126 | - | toBase58String( | |
332 | + | let C = e | |
333 | + | toBase58String(C) | |
127 | 334 | } | |
128 | 335 | else "WAVES" | |
129 | 336 | } | |
130 | - | let f = valueOrErrorMessage(getString(this, (e + "_amount_asset")), "there is no order with specified id") | |
131 | - | if ((f != l)) | |
132 | - | then throw(("payment asset must be " + f)) | |
337 | + | let H = valueOrErrorMessage(getString(this, D), "Invalid order id") | |
338 | + | let M = parseIntValue(split(H, "_")[0]) | |
339 | + | let B = split(H, "_")[1] | |
340 | + | let y = parseIntValue(split(H, "_")[2]) | |
341 | + | let x = split(H, "_")[3] | |
342 | + | let N = value(addressFromString(split(H, "_")[4])) | |
343 | + | let z = if ((split(H, "_")[5] == "true")) | |
344 | + | then true | |
345 | + | else false | |
346 | + | let A = split(H, "_")[6] | |
347 | + | let O = parseIntValue(split(H, "_")[7]) | |
348 | + | if ((B != L)) | |
349 | + | then throw(("payment asset must be " + B)) | |
133 | 350 | else { | |
134 | - | let c = getIntegerValue(this, (e + "_price")) | |
135 | - | let m = getIntegerValue(this, (e + "_amount")) | |
136 | - | let b = getStringValue(this, (e + "_price_asset")) | |
137 | - | let i = if ((f == "WAVES")) | |
138 | - | then 8 | |
139 | - | else value(assetInfo(fromBase58String(f))).decimals | |
140 | - | let p = ((d.amount * c) / pow(10, 0, i, 0, 0, CEILING)) | |
141 | - | if ((p == 0)) | |
142 | - | then throw("invalid amount") | |
351 | + | let P = if ((A != "")) | |
352 | + | then sigVerify(i.callerPublicKey, fromBase58String(K), fromBase58String(A)) | |
353 | + | else true | |
354 | + | if (!(P)) | |
355 | + | then throw("The order is private") | |
143 | 356 | else { | |
144 | - | let n = value(addressFromString(getStringValue(this, (e + "_owner")))) | |
145 | - | let o = getIntegerValue(this, (e + "_spent")) | |
146 | - | if ((d.amount > (m - o))) | |
147 | - | then throw("not enougth asset in order") | |
148 | - | else ScriptResult(WriteSet([DataEntry((e + "_spent"), (o + d.amount))]), TransferSet([ScriptTransfer(a.caller, p, if ((b == "WAVES")) | |
149 | - | then unit | |
150 | - | else fromBase58String(b)), ScriptTransfer(n, d.amount, if ((f == "WAVES")) | |
151 | - | then unit | |
152 | - | else fromBase58String(f))])) | |
357 | + | let I = if ((B == "WAVES")) | |
358 | + | then 8 | |
359 | + | else value(assetInfo(fromBase58String(B))).decimals | |
360 | + | let T = ((m.amount * y) / pow(10, 0, I, 0, 0, CEILING)) | |
361 | + | if ((T == 0)) | |
362 | + | then throw("invalid amount") | |
363 | + | else if (if (z) | |
364 | + | then (M > T) | |
365 | + | else false) | |
366 | + | then throw("You must take all or none") | |
367 | + | else if ((m.amount > (M - O))) | |
368 | + | then throw("not enougth asset in order") | |
369 | + | else { | |
370 | + | let E = { | |
371 | + | let e = getString(this, "orders") | |
372 | + | if ($isInstanceOf(e, "String")) | |
373 | + | then { | |
374 | + | let F = e | |
375 | + | F | |
376 | + | } | |
377 | + | else if ($isInstanceOf(e, "Unit")) | |
378 | + | then "" | |
379 | + | else throw() | |
380 | + | } | |
381 | + | let Q = (dropRight(H, size(split(H, "_")[7])) + toString((O + m.amount))) | |
382 | + | let R = value(indexOf(E, D)) | |
383 | + | let S = if ((M == (m.amount + O))) | |
384 | + | then (take(E, R) + drop(E, (R + size(D)))) | |
385 | + | else E | |
386 | + | ScriptResult(WriteSet([DataEntry("orders", S), DataEntry(D, Q)]), TransferSet([ScriptTransfer(i.caller, T, if ((x == "WAVES")) | |
387 | + | then unit | |
388 | + | else fromBase58String(x)), ScriptTransfer(N, m.amount, if ((B == "WAVES")) | |
389 | + | then unit | |
390 | + | else fromBase58String(B))])) | |
391 | + | } | |
153 | 392 | } | |
393 | + | } | |
394 | + | } | |
395 | + | } | |
396 | + | ||
397 | + | ||
398 | + | ||
399 | + | @Callable(i) | |
400 | + | func returnBuy (D) = { | |
401 | + | let H = valueOrErrorMessage(getString(this, D), "Invalid order id") | |
402 | + | let M = parseIntValue(split(H, "_")[0]) | |
403 | + | let B = split(H, "_")[1] | |
404 | + | let y = parseIntValue(split(H, "_")[2]) | |
405 | + | let x = split(H, "_")[3] | |
406 | + | let N = value(addressFromString(split(H, "_")[4])) | |
407 | + | let z = if ((split(H, "_")[5] == "true")) | |
408 | + | then true | |
409 | + | else false | |
410 | + | let A = split(H, "_")[6] | |
411 | + | let O = parseIntValue(split(H, "_")[7]) | |
412 | + | if ((N != i.caller)) | |
413 | + | then throw("Return should be called by order owner") | |
414 | + | else { | |
415 | + | let I = if ((B == "WAVES")) | |
416 | + | then 8 | |
417 | + | else value(assetInfo(fromBase58String(B))).decimals | |
418 | + | let U = (((M - O) * y) / pow(10, 0, I, 0, 0, CEILING)) | |
419 | + | if ((0 >= U)) | |
420 | + | then throw("nothing to return") | |
421 | + | else { | |
422 | + | let E = { | |
423 | + | let e = getString(this, "orders") | |
424 | + | if ($isInstanceOf(e, "String")) | |
425 | + | then { | |
426 | + | let F = e | |
427 | + | F | |
428 | + | } | |
429 | + | else if ($isInstanceOf(e, "Unit")) | |
430 | + | then "" | |
431 | + | else throw() | |
432 | + | } | |
433 | + | let Q = (dropRight(H, size(split(H, "_")[7])) + toString(M)) | |
434 | + | let R = value(indexOf(E, D)) | |
435 | + | let S = (take(E, R) + drop(E, (R + size(D)))) | |
436 | + | ScriptResult(WriteSet([DataEntry("orders", S), DataEntry(D, Q)]), TransferSet([ScriptTransfer(i.caller, U, if ((x == "WAVES")) | |
437 | + | then unit | |
438 | + | else fromBase58String(x))])) | |
439 | + | } | |
440 | + | } | |
441 | + | } | |
442 | + | ||
443 | + | ||
444 | + | ||
445 | + | @Callable(i) | |
446 | + | func returnSell (D) = { | |
447 | + | let H = valueOrErrorMessage(getString(this, D), "Invalid order id") | |
448 | + | let M = parseIntValue(split(H, "_")[0]) | |
449 | + | let B = split(H, "_")[1] | |
450 | + | let y = parseIntValue(split(H, "_")[2]) | |
451 | + | let x = split(H, "_")[3] | |
452 | + | let N = value(addressFromString(split(H, "_")[4])) | |
453 | + | let z = if ((split(H, "_")[5] == "true")) | |
454 | + | then true | |
455 | + | else false | |
456 | + | let A = split(H, "_")[6] | |
457 | + | let O = parseIntValue(split(H, "_")[7]) | |
458 | + | if ((N != i.caller)) | |
459 | + | then throw("return should be called by order owner") | |
460 | + | else { | |
461 | + | let U = (M - O) | |
462 | + | if ((0 >= U)) | |
463 | + | then throw("nothing to return") | |
464 | + | else { | |
465 | + | let E = { | |
466 | + | let e = getString(this, "orders") | |
467 | + | if ($isInstanceOf(e, "String")) | |
468 | + | then { | |
469 | + | let F = e | |
470 | + | F | |
471 | + | } | |
472 | + | else if ($isInstanceOf(e, "Unit")) | |
473 | + | then "" | |
474 | + | else throw() | |
475 | + | } | |
476 | + | let Q = (dropRight(H, size(split(H, "_")[7])) + toString(M)) | |
477 | + | let R = value(indexOf(E, D)) | |
478 | + | let S = (take(E, R) + drop(E, (R + size(D)))) | |
479 | + | ScriptResult(WriteSet([DataEntry("orders", S), DataEntry(D, Q)]), TransferSet([ScriptTransfer(i.caller, U, if ((B == "WAVES")) | |
480 | + | then unit | |
481 | + | else fromBase58String(B))])) | |
154 | 482 | } | |
155 | 483 | } | |
156 | 484 | } | |
157 | 485 | ||
158 | 486 |
github/deemru/w8io/026f985 61.98 ms ◑