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:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# 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+ }
433
534
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))))
9127 else false)
10128 then throw("There is no asset with specified id")
11- else if ((0 >= c))
129+ else if ((0 >= y))
12130 then throw("price must be positive")
13131 else {
14- let d = valueOrErrorMessage(a.payment, "where is payment?")
15- if ((0 >= d.amount))
132+ let m = valueOrErrorMessage(i.payment, "where is payment?")
133+ if ((0 >= m.amount))
16134 then throw("amount must be positive")
17135 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"))
22139 then {
23- let h = g
24- toBase58String(h)
140+ let C = e
141+ toBase58String(C)
25142 }
26143 else "WAVES"
27144 }
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+ }
29176 }
30177 }
31178
32179
33180
34-@Callable(a)
35-func makeBuy (f,c) = if (if ((f != "WAVES"))
36- then !(isDefined(assetInfo(fromBase58String(f))))
181+@Callable(i)
182+func makeBuy (B,y,z,A) = if (if ((B != "WAVES"))
183+ then !(isDefined(assetInfo(fromBase58String(B))))
37184 else false)
38185 then throw("There is no asset with specified id")
39- else if ((0 >= c))
186+ else if ((0 >= y))
40187 then throw("price must be positive")
41188 else {
42- let d = valueOrErrorMessage(a.payment, "where is payment?")
43- if ((0 >= d.amount))
189+ let m = valueOrErrorMessage(i.payment, "where is payment?")
190+ if ((0 >= m.amount))
44191 then throw("amount must be positive")
45192 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"))
50196 then {
51- let h = g
52- toBase58String(h)
197+ let C = e
198+ toBase58String(C)
53199 }
54200 else "WAVES"
55201 }
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+ }
63240 }
64241 }
65242
66243
67244
68-@Callable(a)
69-func takeSell (k) = {
70- let d = valueOrErrorMessage(a.payment, "where is payment?")
71- if ((0 >= d.amount))
245+@Callable(i)
246+func takeSell (D,K) = {
247+ let m = valueOrErrorMessage(i.payment, "where is payment?")
248+ if ((0 >= m.amount))
72249 then throw("amount must be positive")
73250 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"))
78254 then {
79- let h = g
80- toBase58String(h)
255+ let C = e
256+ toBase58String(C)
81257 }
82258 else "WAVES"
83259 }
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))
87273 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")
97279 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+ }
107315 }
108316 }
109317 }
111319
112320
113321
114-@Callable(a)
115-func takeBuy (k) = {
116- let d = valueOrErrorMessage(a.payment, "where is payment?")
117- if ((0 >= d.amount))
322+@Callable(i)
323+func takeBuy (D,K) = {
324+ let m = valueOrErrorMessage(i.payment, "where is payment?")
325+ if ((0 >= m.amount))
118326 then throw("amount must be positive")
119327 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"))
124331 then {
125- let h = g
126- toBase58String(h)
332+ let C = e
333+ toBase58String(C)
127334 }
128335 else "WAVES"
129336 }
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))
133350 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")
143356 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+ }
153392 }
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))]))
154482 }
155483 }
156484 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# 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+ }
433
534
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))))
9127 else false)
10128 then throw("There is no asset with specified id")
11- else if ((0 >= c))
129+ else if ((0 >= y))
12130 then throw("price must be positive")
13131 else {
14- let d = valueOrErrorMessage(a.payment, "where is payment?")
15- if ((0 >= d.amount))
132+ let m = valueOrErrorMessage(i.payment, "where is payment?")
133+ if ((0 >= m.amount))
16134 then throw("amount must be positive")
17135 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"))
22139 then {
23- let h = g
24- toBase58String(h)
140+ let C = e
141+ toBase58String(C)
25142 }
26143 else "WAVES"
27144 }
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+ }
29176 }
30177 }
31178
32179
33180
34-@Callable(a)
35-func makeBuy (f,c) = if (if ((f != "WAVES"))
36- then !(isDefined(assetInfo(fromBase58String(f))))
181+@Callable(i)
182+func makeBuy (B,y,z,A) = if (if ((B != "WAVES"))
183+ then !(isDefined(assetInfo(fromBase58String(B))))
37184 else false)
38185 then throw("There is no asset with specified id")
39- else if ((0 >= c))
186+ else if ((0 >= y))
40187 then throw("price must be positive")
41188 else {
42- let d = valueOrErrorMessage(a.payment, "where is payment?")
43- if ((0 >= d.amount))
189+ let m = valueOrErrorMessage(i.payment, "where is payment?")
190+ if ((0 >= m.amount))
44191 then throw("amount must be positive")
45192 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"))
50196 then {
51- let h = g
52- toBase58String(h)
197+ let C = e
198+ toBase58String(C)
53199 }
54200 else "WAVES"
55201 }
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+ }
63240 }
64241 }
65242
66243
67244
68-@Callable(a)
69-func takeSell (k) = {
70- let d = valueOrErrorMessage(a.payment, "where is payment?")
71- if ((0 >= d.amount))
245+@Callable(i)
246+func takeSell (D,K) = {
247+ let m = valueOrErrorMessage(i.payment, "where is payment?")
248+ if ((0 >= m.amount))
72249 then throw("amount must be positive")
73250 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"))
78254 then {
79- let h = g
80- toBase58String(h)
255+ let C = e
256+ toBase58String(C)
81257 }
82258 else "WAVES"
83259 }
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))
87273 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")
97279 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+ }
107315 }
108316 }
109317 }
110318 }
111319
112320
113321
114-@Callable(a)
115-func takeBuy (k) = {
116- let d = valueOrErrorMessage(a.payment, "where is payment?")
117- if ((0 >= d.amount))
322+@Callable(i)
323+func takeBuy (D,K) = {
324+ let m = valueOrErrorMessage(i.payment, "where is payment?")
325+ if ((0 >= m.amount))
118326 then throw("amount must be positive")
119327 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"))
124331 then {
125- let h = g
126- toBase58String(h)
332+ let C = e
333+ toBase58String(C)
127334 }
128335 else "WAVES"
129336 }
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))
133350 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")
143356 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+ }
153392 }
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))]))
154482 }
155483 }
156484 }
157485
158486

github/deemru/w8io/03bedc9 
52.87 ms