tx · 8m31RKwyQyohCMcWVDjTC3zf8WvTkCGzprbY1nTJKE1P 3NAm3p62bo4q3yMzWjJ6M4eEDBRYXxqkXLQ: -0.05000000 Waves 2022.09.08 15:17 [2220118] smart account 3NAm3p62bo4q3yMzWjJ6M4eEDBRYXxqkXLQ > SELF 0.00000000 Waves
{ "type": 13, "id": "8m31RKwyQyohCMcWVDjTC3zf8WvTkCGzprbY1nTJKE1P", "fee": 5000000, "feeAssetId": null, "timestamp": 1662639585738, "version": 2, "chainId": 84, "sender": "3NAm3p62bo4q3yMzWjJ6M4eEDBRYXxqkXLQ", "senderPublicKey": "6ftcjfxzkWUUwSQuuRg45YwriXgjJ5RMUoG9etzbvvs3", "proofs": [ "4F1TKczNhofBQjCtJBHUJZATdu3uNN1UpUxzgmxdA2G8gWdiYuSAgi9EtuzTDDbuNbFmRzABKnLt8ZQXnz3hkKfh" ], "script": "base64:AAIFAAAAAAAAAAkIAhIFCgMICAgAAAAAAAAAAQAAAAFpAQAAAAdleGVjdXRlAAAAAwAAAARkQXBwAAAACGZ1bmN0aW9uAAAACmFyZ3NTdHJpbmcEAAAABGFyZ3MJAAS1AAAAAgUAAAAKYXJnc1N0cmluZwIAAAABLAoBAAAAAmRvAAAAAgAAAANhY2MAAAADYXJnBAAAAANpbnYJAAP8AAAABAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAABGRBcHAFAAAACGZ1bmN0aW9uCQAETAAAAAIFAAAAA2FyZwUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAA2ludgUAAAADaW52BQAAAANhY2MJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAAAAAdpbnZva2VzCgAAAAACJGwFAAAABGFyZ3MKAAAAAAIkcwkAAZAAAAABBQAAAAIkbAoAAAAABSRhY2MwAAAAAAAAAAAACgEAAAAFJGYwXzEAAAACAAAAAiRhAAAAAiRpAwkAAGcAAAACBQAAAAIkaQUAAAACJHMFAAAAAiRhCQEAAAACZG8AAAACBQAAAAIkYQkAAZEAAAACBQAAAAIkbAUAAAACJGkKAQAAAAUkZjBfMgAAAAIAAAACJGEAAAACJGkDCQAAZwAAAAIFAAAAAiRpBQAAAAIkcwUAAAACJGEJAAACAAAAAQIAAAAVTGlzdCBzaXplIGV4Y2VlZHMgMTAwCQEAAAAFJGYwXzIAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACBQAAAAUkYWNjMAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAgAAAAAAAAAAAwAAAAAAAAAABAAAAAAAAAAABQAAAAAAAAAABgAAAAAAAAAABwAAAAAAAAAACAAAAAAAAAAACQAAAAAAAAAACgAAAAAAAAAACwAAAAAAAAAADAAAAAAAAAAADQAAAAAAAAAADgAAAAAAAAAADwAAAAAAAAAAEAAAAAAAAAAAEQAAAAAAAAAAEgAAAAAAAAAAEwAAAAAAAAAAFAAAAAAAAAAAFQAAAAAAAAAAFgAAAAAAAAAAFwAAAAAAAAAAGAAAAAAAAAAAGQAAAAAAAAAAGgAAAAAAAAAAGwAAAAAAAAAAHAAAAAAAAAAAHQAAAAAAAAAAHgAAAAAAAAAAHwAAAAAAAAAAIAAAAAAAAAAAIQAAAAAAAAAAIgAAAAAAAAAAIwAAAAAAAAAAJAAAAAAAAAAAJQAAAAAAAAAAJgAAAAAAAAAAJwAAAAAAAAAAKAAAAAAAAAAAKQAAAAAAAAAAKgAAAAAAAAAAKwAAAAAAAAAALAAAAAAAAAAALQAAAAAAAAAALgAAAAAAAAAALwAAAAAAAAAAMAAAAAAAAAAAMQAAAAAAAAAAMgAAAAAAAAAAMwAAAAAAAAAANAAAAAAAAAAANQAAAAAAAAAANgAAAAAAAAAANwAAAAAAAAAAOAAAAAAAAAAAOQAAAAAAAAAAOgAAAAAAAAAAOwAAAAAAAAAAPAAAAAAAAAAAPQAAAAAAAAAAPgAAAAAAAAAAPwAAAAAAAAAAQAAAAAAAAAAAQQAAAAAAAAAAQgAAAAAAAAAAQwAAAAAAAAAARAAAAAAAAAAARQAAAAAAAAAARgAAAAAAAAAARwAAAAAAAAAASAAAAAAAAAAASQAAAAAAAAAASgAAAAAAAAAASwAAAAAAAAAATAAAAAAAAAAATQAAAAAAAAAATgAAAAAAAAAATwAAAAAAAAAAUAAAAAAAAAAAUQAAAAAAAAAAUgAAAAAAAAAAUwAAAAAAAAAAVAAAAAAAAAAAVQAAAAAAAAAAVgAAAAAAAAAAVwAAAAAAAAAAWAAAAAAAAAAAWQAAAAAAAAAAWgAAAAAAAAAAWwAAAAAAAAAAXAAAAAAAAAAAXQAAAAAAAAAAXgAAAAAAAAAAXwAAAAAAAAAAYAAAAAAAAAAAYQAAAAAAAAAAYgAAAAAAAAAAYwAAAAAAAAAAZAMJAAAAAAAAAgUAAAAHaW52b2tlcwUAAAAHaW52b2tlcwUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5+g9CUw==", "height": 2220118, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6qGpGLMFLYXF99uFEHToFi6dzNppP4gap4De5frZV5tu Next: Gdwe3WHq8qBiuRMMuJCPBqMxfRPsUxz1HB8dWuaT5wGC Full:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | func a (b) = { | |
5 | - | let c = getString(this, b) | |
6 | - | if ($isInstanceOf(c, "String")) | |
7 | - | then { | |
8 | - | let d = c | |
9 | - | d | |
10 | - | } | |
11 | - | else "" | |
4 | + | ||
5 | + | ||
6 | + | @Callable(a) | |
7 | + | func execute (b,c,d) = { | |
8 | + | let e = split(d, ",") | |
9 | + | func f (g,h) = { | |
10 | + | let i = invoke(Address(fromBase58String(b)), c, [h], nil) | |
11 | + | if ((i == i)) | |
12 | + | then g | |
13 | + | else throw("Strict value is not equal to itself.") | |
14 | + | } | |
15 | + | ||
16 | + | let j = { | |
17 | + | let k = e | |
18 | + | let l = size(k) | |
19 | + | let m = 0 | |
20 | + | func n (o,p) = if ((p >= l)) | |
21 | + | then o | |
22 | + | else f(o, k[p]) | |
23 | + | ||
24 | + | func q (o,p) = if ((p >= l)) | |
25 | + | then o | |
26 | + | else throw("List size exceeds 100") | |
27 | + | ||
28 | + | q(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(m, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100) | |
29 | + | } | |
30 | + | if ((j == j)) | |
31 | + | then nil | |
32 | + | else throw("Strict value is not equal to itself.") | |
12 | 33 | } | |
13 | 34 | ||
14 | 35 | ||
15 | - | func e (b) = { | |
16 | - | let c = getInteger(this, b) | |
17 | - | if ($isInstanceOf(c, "Int")) | |
18 | - | then { | |
19 | - | let d = c | |
20 | - | d | |
21 | - | } | |
22 | - | else 0 | |
23 | - | } | |
24 | - | ||
25 | - | ||
26 | - | func f (g) = { | |
27 | - | let c = g | |
28 | - | if ($isInstanceOf(c, "ByteVector")) | |
29 | - | then { | |
30 | - | let d = c | |
31 | - | toBase58String(d) | |
32 | - | } | |
33 | - | else "WAVES" | |
34 | - | } | |
35 | - | ||
36 | - | ||
37 | - | func h (i) = if ((i == "WAVES")) | |
38 | - | then unit | |
39 | - | else fromBase58String(i) | |
40 | - | ||
41 | - | ||
42 | - | @Callable(j) | |
43 | - | func createOrder (k,l) = { | |
44 | - | let m = (e("global_ordersAmount") + 1) | |
45 | - | let n = toString(m) | |
46 | - | if ((size(j.payments) != 1)) | |
47 | - | then throw("You should to provide payment") | |
48 | - | else if ((0 >= l)) | |
49 | - | then throw("Amount1 cannot be less or equals 0") | |
50 | - | else { | |
51 | - | let o = f(j.payments[0].assetId) | |
52 | - | let p = j.payments[0].amount | |
53 | - | let q = a((("user_" + toString(j.caller)) + "_activeOrders")) | |
54 | - | let r = { | |
55 | - | let c = q | |
56 | - | if (("" == c)) | |
57 | - | then n | |
58 | - | else ((q + ",") + n) | |
59 | - | } | |
60 | - | [IntegerEntry("global_ordersAmount", m), StringEntry((("order_" + n) + "_token0"), o), IntegerEntry((("order_" + n) + "_amount0"), p), IntegerEntry((("order_" + n) + "_amount1"), l), StringEntry((("order_" + n) + "_token1"), k), IntegerEntry((("order_" + n) + "_fulfilled0"), 0), IntegerEntry((("order_" + n) + "_fulfilled1"), 0), StringEntry((("order_" + n) + "_owner"), toString(j.caller)), StringEntry((("order_" + n) + "_status"), "active"), StringEntry((("user_" + toString(j.caller)) + "_activeOrders"), r)] | |
61 | - | } | |
62 | - | } | |
63 | - | ||
64 | - | ||
65 | - | ||
66 | - | @Callable(j) | |
67 | - | func fulfillOrder (n) = { | |
68 | - | let s = valueOrErrorMessage(getString((("order_" + n) + "_owner")), "Cannot find order owner") | |
69 | - | let t = getString((("order_" + n) + "_status")) | |
70 | - | let u = valueOrErrorMessage(getString((("order_" + n) + "_token0")), "Cannot find token0") | |
71 | - | let v = valueOrErrorMessage(getInteger((("order_" + n) + "_amount0")), "Cannot find amount0") | |
72 | - | let w = valueOrErrorMessage(getInteger((("order_" + n) + "_fulfilled0")), "Cannot find fulfilled0") | |
73 | - | let x = (v - w) | |
74 | - | let y = valueOrErrorMessage(getString((("order_" + n) + "_token1")), "Cannot find token1") | |
75 | - | let z = valueOrErrorMessage(getInteger((("order_" + n) + "_amount1")), "Cannot find amount1") | |
76 | - | let A = valueOrErrorMessage(getInteger((("order_" + n) + "_fulfilled1")), "Cannot find fulfilled1") | |
77 | - | let B = (z - A) | |
78 | - | if ((t != "active")) | |
79 | - | then throw("Order already closed or canceled") | |
80 | - | else if ((size(j.payments) != 1)) | |
81 | - | then throw("You should to provide payment") | |
82 | - | else { | |
83 | - | let C = j.caller | |
84 | - | let D = addressFromStringValue(s) | |
85 | - | let E = f(j.payments[0].assetId) | |
86 | - | let F = j.payments[0].amount | |
87 | - | if ((E != y)) | |
88 | - | then throw("Wrong payment asset") | |
89 | - | else if ((F >= B)) | |
90 | - | then [ScriptTransfer(C, (F - B), h(y)), ScriptTransfer(C, x, h(u)), ScriptTransfer(D, B, h(E)), IntegerEntry((("order_" + n) + "_fulfilled0"), (w + x)), IntegerEntry((("order_" + n) + "_fulfilled1"), (A + B)), StringEntry((("order_" + n) + "_status"), "closed")] | |
91 | - | else { | |
92 | - | let p = fraction(v, F, z, FLOOR) | |
93 | - | [ScriptTransfer(D, F, h(E)), ScriptTransfer(C, p, h(u)), IntegerEntry((("order_" + n) + "_fulfilled0"), (w + p)), IntegerEntry((("order_" + n) + "_fulfilled1"), (A + F))] | |
94 | - | } | |
95 | - | } | |
96 | - | } | |
97 | - | ||
98 | - | ||
99 | - | ||
100 | - | @Callable(j) | |
101 | - | func cancelOrder (n) = { | |
102 | - | let s = valueOrErrorMessage(getString((("order_" + n) + "_owner")), "Cannot find order owner") | |
103 | - | let t = getString((("order_" + n) + "_status")) | |
104 | - | let u = valueOrErrorMessage(getString((("order_" + n) + "_token0")), "Cannot find token0") | |
105 | - | let v = valueOrErrorMessage(getInteger((("order_" + n) + "_amount0")), "Cannot find amount0") | |
106 | - | let w = valueOrErrorMessage(getInteger((("order_" + n) + "_fulfilled0")), "Cannot find fulfilled0") | |
107 | - | let x = (v - w) | |
108 | - | if ((toBase58String(j.caller.bytes) != s)) | |
109 | - | then throw("You cannot cancel order") | |
110 | - | else if ((t != "active")) | |
111 | - | then throw("order is closed or canceled") | |
112 | - | else [ScriptTransfer(addressFromStringValue(s), x, h(u)), StringEntry((("order_" + n) + "_status"), "canceled")] | |
113 | - | } | |
114 | - | ||
115 | - | ||
116 | - | @Verifier(G) | |
117 | - | func H () = sigVerify(G.bodyBytes, G.proofs[0], G.senderPublicKey) | |
36 | + | @Verifier(r) | |
37 | + | func s () = sigVerify(r.bodyBytes, r.proofs[0], r.senderPublicKey) | |
118 | 38 |
github/deemru/w8io/169f3d6 203.40 ms ◑![]()