tx · 3EkWVLxCyv7nZ5cY3GPJsqTUodzdYsD61AY3FN76aeZc
3N61RYWc9QuqKUwLvowpZZLpgUnqpQSFwLq: -0.01200000 Waves
2024.03.09 14:25 [3010438] smart account 3N61RYWc9QuqKUwLvowpZZLpgUnqpQSFwLq > SELF 0.00000000 Waves
{
"type": 13,
"id": "3EkWVLxCyv7nZ5cY3GPJsqTUodzdYsD61AY3FN76aeZc",
"fee": 1200000,
"feeAssetId": null,
"timestamp": 1709983548705,
"version": 2,
"chainId": 84,
"sender": "3N61RYWc9QuqKUwLvowpZZLpgUnqpQSFwLq",
"senderPublicKey": "HdwFH8HPYu3HG27yK6bszu1CdR4uik4HgzyTimeSfcYf",
"proofs": [
"5t7ni53pLRAwmmuJ3QyEva3A8qVQyZicQvdDJjycADLxAcb9NjtC5yBf9EPiLVfvuvDUhhBHDfMS3m9N46ExXNA7"
],
"script": "base64:BgITCAISABIDCgEBEgMKAQgSAwoBBBIAEGFtb3VudEFzc2V0SWRLZXkCDWFtb3VudEFzc2V0SWQAD3ByaWNlQXNzZXRJZEtleQIMcHJpY2VBc3NldElkAApmZWVSYXRlS2V5AgdmZWVSYXRlAAxmb3JjZVN0b3BLZXkCCWZvcmNlU3RvcAEKZ2V0QXNzZXRJZAENYXNzZXRJZFN0cmluZwMJAAACBQ1hc3NldElkU3RyaW5nAgVXQVZFUwUEdW5pdAkA2QQBBQ1hc3NldElkU3RyaW5nAQ9nZXRBc3NldEJhbGFuY2UBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCaWQFByRtYXRjaDAJAPAHAgUEdGhpcwUCaWQICQDvBwEFBHRoaXMJYXZhaWxhYmxlABNhbW91bnRBc3NldElkU3RyaW5nCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBRBhbW91bnRBc3NldElkS2V5AA1hbW91bnRBc3NldElkCQEKZ2V0QXNzZXRJZAEFE2Ftb3VudEFzc2V0SWRTdHJpbmcAEnByaWNlQXNzZXRJZFN0cmluZwkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUPcHJpY2VBc3NldElkS2V5AAxwcmljZUFzc2V0SWQJAQpnZXRBc3NldElkAQUScHJpY2VBc3NldElkU3RyaW5nAAZTQ0FMRTgAgMLXLwAHZmVlUmF0ZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQpmZWVSYXRlS2V5AMCaDAAOaXNGb3JjZVN0b3BwZWQJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUMZm9yY2VTdG9wS2V5BwEJY2FsY1ByaWNlAAkAawMJAQ9nZXRBc3NldEJhbGFuY2UBBQxwcmljZUFzc2V0SWQFBlNDQUxFOAkBD2dldEFzc2V0QmFsYW5jZQEFDWFtb3VudEFzc2V0SWQBEWNhbGNSYXdTZW5kQW1vdW50AxFhc3NldDFJbml0QmFsYW5jZRFhc3NldDJJbml0QmFsYW5jZRNhc3NldDJQYXltZW50QW1vdW50BBBuZXdBc3NldDJCYWxhbmNlCQBkAgURYXNzZXQySW5pdEJhbGFuY2UFE2Fzc2V0MlBheW1lbnRBbW91bnQEEG5ld0Fzc2V0MUJhbGFuY2UJAGsDBRFhc3NldDFJbml0QmFsYW5jZQURYXNzZXQySW5pdEJhbGFuY2UFEG5ld0Fzc2V0MkJhbGFuY2UECnNlbmRBbW91bnQJAGUCBRFhc3NldDFJbml0QmFsYW5jZQUQbmV3QXNzZXQxQmFsYW5jZQUKc2VuZEFtb3VudAEOY2FsY1NlbmRBbW91bnQDDnBheW1lbnRBc3NldElkDXBheW1lbnRBbW91bnQIcmVhZG9ubHkECyR0MDE1NTUxNzE1AwkAAAIFDnBheW1lbnRBc3NldElkBQ1hbW91bnRBc3NldElkCQCUCgIFDHByaWNlQXNzZXRJZAUNYW1vdW50QXNzZXRJZAkAlAoCBQ1hbW91bnRBc3NldElkBQxwcmljZUFzc2V0SWQEDWFzc2V0MUFzc2V0SWQIBQskdDAxNTU1MTcxNQJfMQQNYXNzZXQyQXNzZXRJZAgFCyR0MDE1NTUxNzE1Al8yBBFhc3NldDFJbml0QmFsYW5jZQkBD2dldEFzc2V0QmFsYW5jZQEFDWFzc2V0MUFzc2V0SWQEEWFzc2V0MkluaXRCYWxhbmNlCQBlAgkBD2dldEFzc2V0QmFsYW5jZQEFDWFzc2V0MkFzc2V0SWQDBQhyZWFkb25seQAABQ1wYXltZW50QW1vdW50BA1yYXdTZW5kQW1vdW50CQERY2FsY1Jhd1NlbmRBbW91bnQDBRFhc3NldDFJbml0QmFsYW5jZQURYXNzZXQySW5pdEJhbGFuY2UFDXBheW1lbnRBbW91bnQECWZlZUFtb3VudAkAawMFDXJhd1NlbmRBbW91bnQFB2ZlZVJhdGUFBlNDQUxFOAQKc2VuZEFtb3VudAkAZQIFDXJhd1NlbmRBbW91bnQFCWZlZUFtb3VudAQNdXNlclJlYWxQcmljZQMJAAACBQ5wYXltZW50QXNzZXRJZAUNYW1vdW50QXNzZXRJZAkAawMFCnNlbmRBbW91bnQFBlNDQUxFOAUNcGF5bWVudEFtb3VudAkAawMFDXBheW1lbnRBbW91bnQFBlNDQUxFOAUKc2VuZEFtb3VudAkAlgoEBQpzZW5kQW1vdW50BQlmZWVBbW91bnQFDWFzc2V0MUFzc2V0SWQFDXVzZXJSZWFsUHJpY2UBDHN3YXBJbnRlcm5hbAIHYWRkcmVzcwFpBAZjaGVja3MJAMwIAgMJAQEhAQUOaXNGb3JjZVN0b3BwZWQGCQACAQIdY29udHJhY3QgaXMgdGVtcG9yYXJ5IHN0b3BwZWQJAMwIAgMJAGYCCQCQAwEIBQFpCHBheW1lbnRzAAAGCQACAQIYc2hvdWxkIGJlIHdpdGggMSBwYXltZW50CQDMCAIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQ1hbW91bnRBc3NldElkCQDMCAIFDHByaWNlQXNzZXRJZAUDbmlsCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQGCQACAQkAuQkCCQDMCAICGXBheW1lbnQgYXNzZXRJZCBzaG91bGQgYmUJAMwIAgUTYW1vdW50QXNzZXRJZFN0cmluZwkAzAgCAgJvcgkAzAgCBRJwcmljZUFzc2V0SWRTdHJpbmcFA25pbAIBIAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBA5wYXltZW50QXNzZXRJZAgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBA1wYXltZW50QW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQLJHQwMjgzMjI5NDIJAQ5jYWxjU2VuZEFtb3VudAMFDnBheW1lbnRBc3NldElkBQ1wYXltZW50QW1vdW50BwQKc2VuZEFtb3VudAgFCyR0MDI4MzIyOTQyAl8xBAlmZWVBbW91bnQIBQskdDAyODMyMjk0MgJfMgQLc2VuZEFzc2V0SWQIBQskdDAyODMyMjk0MgJfMwQNdXNlclJlYWxQcmljZQgFCyR0MDI4MzIyOTQyAl80BAtzZW5kQWN0aW9ucwMJAGYCBQlmZWVBbW91bnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQdhZGRyZXNzBQpzZW5kQW1vdW50BQtzZW5kQXNzZXRJZAUDbmlsCQACAQIRYW1vdW50IGlzIHRvbyBsb3cJAJQKAgULc2VuZEFjdGlvbnMJAJYKBAUKc2VuZEFtb3VudAUJZmVlQW1vdW50BQtzZW5kQXNzZXRJZAUNdXNlclJlYWxQcmljZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEWY2FsY1NlbmRBbW91bnRSRUFET05MWQIScGF5bWVudEFzc2V0U3RyaW5nDXBheW1lbnRBbW91bnQECyR0MDMyNzQzMzk4CQEOY2FsY1NlbmRBbW91bnQDCQEKZ2V0QXNzZXRJZAEFEnBheW1lbnRBc3NldFN0cmluZwUNcGF5bWVudEFtb3VudAYECnNlbmRBbW91bnQIBQskdDAzMjc0MzM5OAJfMQQJZmVlQW1vdW50CAULJHQwMzI3NDMzOTgCXzIECWFtQXNzZXRJZAgFCyR0MDMyNzQzMzk4Al8zBA11c2VyUmVhbFByaWNlCAULJHQwMzI3NDMzOTgCXzQJAJUKAwUKc2VuZEFtb3VudAUNdXNlclJlYWxQcmljZQUJYW1Bc3NldElkBAFpAQRzd2FwAAkBDHN3YXBJbnRlcm5hbAIIBQFpBmNhbGxlcgUBaQFpAQpzd2FwTm9MZXNzAQltaW5BbW91bnQECyR0MDM1ODAzNjMyCQEMc3dhcEludGVybmFsAggFAWkGY2FsbGVyBQFpBAtzZW5kQWN0aW9ucwgFCyR0MDM1ODAzNjMyAl8xBAV0dXBsZQgFCyR0MDM1ODAzNjMyAl8yBAskdDAzNjM3MzcwMAUFdHVwbGUECnNlbmRBbW91bnQIBQskdDAzNjM3MzcwMAJfMQQJZmVlQW1vdW50CAULJHQwMzYzNzM3MDACXzIEC3NlbmRBc3NldElkCAULJHQwMzYzNzM3MDACXzMEDXVzZXJSZWFsUHJpY2UIBQskdDAzNjM3MzcwMAJfNAMJAGYCBQltaW5BbW91bnQFCnNlbmRBbW91bnQJAAIBCQC5CQIJAMwIAgIaUHJpY2Ugc2xpcHBlZC4gbWluQW1vdW50OiAJAMwIAgkApAMBBQltaW5BbW91bnQJAMwIAgINIHN3YXBBbW91bnQ6IAkAzAgCCQCkAwEFCnNlbmRBbW91bnQFA25pbAIACQCUCgIFC3NlbmRBY3Rpb25zBQV0dXBsZQFpAQdzd2FwRm9yAQdhZGRyZXNzCQEMc3dhcEludGVybmFsAgkBEUBleHRyTmF0aXZlKDEwNjIpAQUHYWRkcmVzcwUBaQFpAQlmb3JjZVN0b3ABCHN0b3BGbGFnBAZjaGVja3MJAMwIAgMJAAACCAUBaQZjYWxsZXIFBHRoaXMGCQACAQIRcGVybWlzc2lvbiBkZW5pZWQFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwkAzAgCCQEMQm9vbGVhbkVudHJ5AgUMZm9yY2VTdG9wS2V5BQhzdG9wRmxhZwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAEsw0ho=",
"height": 3010438,
"applicationStatus": "succeeded",
"spentComplexity": 0
}
View: original | compacted
Prev: HhD2BVD5Nrzp9NkMnioivX7qSq4THeTBajYR1mXwDVQZ
Next: none
Diff:
Old | New | | Differences |
---|
7 | 7 | | |
---|
8 | 8 | | let c = "feeRate" |
---|
9 | 9 | | |
---|
10 | | - | func d (e) = if ((e == "WAVES")) |
---|
| 10 | + | let d = "forceStop" |
---|
| 11 | + | |
---|
| 12 | + | func e (f) = if ((f == "WAVES")) |
---|
11 | 13 | | then unit |
---|
12 | | - | else fromBase58String(e) |
---|
| 14 | + | else fromBase58String(f) |
---|
13 | 15 | | |
---|
14 | 16 | | |
---|
15 | | - | func f (g) = { |
---|
16 | | - | let h = g |
---|
17 | | - | if ($isInstanceOf(h, "ByteVector")) |
---|
| 17 | + | func g (h) = { |
---|
| 18 | + | let i = h |
---|
| 19 | + | if ($isInstanceOf(i, "ByteVector")) |
---|
18 | 20 | | then { |
---|
19 | | - | let i = h |
---|
20 | | - | assetBalance(this, i) |
---|
| 21 | + | let j = i |
---|
| 22 | + | assetBalance(this, j) |
---|
21 | 23 | | } |
---|
22 | 24 | | else wavesBalance(this).available |
---|
23 | 25 | | } |
---|
24 | 26 | | |
---|
25 | 27 | | |
---|
26 | | - | let j = getStringValue(this, a) |
---|
| 28 | + | let k = getStringValue(this, a) |
---|
27 | 29 | | |
---|
28 | | - | let k = d(j) |
---|
| 30 | + | let l = e(k) |
---|
29 | 31 | | |
---|
30 | | - | let l = getStringValue(this, b) |
---|
| 32 | + | let m = getStringValue(this, b) |
---|
31 | 33 | | |
---|
32 | | - | let m = d(l) |
---|
| 34 | + | let n = e(m) |
---|
33 | 35 | | |
---|
34 | | - | let n = 100000000 |
---|
| 36 | + | let o = 100000000 |
---|
35 | 37 | | |
---|
36 | | - | let o = valueOrElse(getInteger(this, c), 200000) |
---|
| 38 | + | let p = valueOrElse(getInteger(this, c), 200000) |
---|
37 | 39 | | |
---|
38 | | - | func p () = fraction(f(m), n, f(k)) |
---|
| 40 | + | let q = valueOrElse(getBoolean(this, d), false) |
---|
| 41 | + | |
---|
| 42 | + | func r () = fraction(g(n), o, g(l)) |
---|
39 | 43 | | |
---|
40 | 44 | | |
---|
41 | | - | func q (r,s,t) = { |
---|
42 | | - | let u = (s + t) |
---|
43 | | - | let v = fraction(r, s, u) |
---|
44 | | - | let w = (r - v) |
---|
45 | | - | w |
---|
| 45 | + | func s (t,u,v) = { |
---|
| 46 | + | let w = (u + v) |
---|
| 47 | + | let x = fraction(t, u, w) |
---|
| 48 | + | let y = (t - x) |
---|
| 49 | + | y |
---|
46 | 50 | | } |
---|
47 | 51 | | |
---|
48 | 52 | | |
---|
49 | | - | func x (y,t,z) = { |
---|
50 | | - | let A = if ((y == k)) |
---|
51 | | - | then $Tuple2(m, k) |
---|
52 | | - | else $Tuple2(k, m) |
---|
53 | | - | let B = A._1 |
---|
54 | | - | let C = A._2 |
---|
55 | | - | let r = f(B) |
---|
56 | | - | let s = (f(C) - (if (z) |
---|
| 53 | + | func z (A,B,C) = { |
---|
| 54 | + | let D = if ((A == l)) |
---|
| 55 | + | then $Tuple2(n, l) |
---|
| 56 | + | else $Tuple2(l, n) |
---|
| 57 | + | let E = D._1 |
---|
| 58 | + | let F = D._2 |
---|
| 59 | + | let t = g(E) |
---|
| 60 | + | let u = (g(F) - (if (C) |
---|
57 | 61 | | then 0 |
---|
58 | | - | else t)) |
---|
59 | | - | let D = q(r, s, t) |
---|
60 | | - | let E = fraction(D, o, n) |
---|
61 | | - | let w = (D - E) |
---|
62 | | - | let F = if ((y == k)) |
---|
63 | | - | then fraction(w, n, t) |
---|
64 | | - | else fraction(t, n, w) |
---|
65 | | - | $Tuple4(w, E, B, F) |
---|
| 62 | + | else B)) |
---|
| 63 | + | let G = s(t, u, B) |
---|
| 64 | + | let H = fraction(G, p, o) |
---|
| 65 | + | let y = (G - H) |
---|
| 66 | + | let I = if ((A == l)) |
---|
| 67 | + | then fraction(y, o, B) |
---|
| 68 | + | else fraction(B, o, y) |
---|
| 69 | + | $Tuple4(y, H, E, I) |
---|
66 | 70 | | } |
---|
67 | 71 | | |
---|
68 | 72 | | |
---|
69 | | - | func G (H,I) = { |
---|
70 | | - | let J = [if ((size(I.payments) > 0)) |
---|
| 73 | + | func J (K,L) = { |
---|
| 74 | + | let M = [if (!(q)) |
---|
71 | 75 | | then true |
---|
72 | | - | else throw("should be with 1 payment"), if (containsElement([k, m], I.payments[0].assetId)) |
---|
| 76 | + | else throw("contract is temporary stopped"), if ((size(L.payments) > 0)) |
---|
73 | 77 | | then true |
---|
74 | | - | else throw(makeString(["payment assetId should be", j, "or", l], " "))] |
---|
75 | | - | if ((J == J)) |
---|
| 78 | + | else throw("should be with 1 payment"), if (containsElement([l, n], L.payments[0].assetId)) |
---|
| 79 | + | then true |
---|
| 80 | + | else throw(makeString(["payment assetId should be", k, "or", m], " "))] |
---|
| 81 | + | if ((M == M)) |
---|
76 | 82 | | then { |
---|
77 | | - | let y = I.payments[0].assetId |
---|
78 | | - | let t = I.payments[0].amount |
---|
79 | | - | let K = x(y, t, false) |
---|
80 | | - | let w = K._1 |
---|
81 | | - | let E = K._2 |
---|
82 | | - | let L = K._3 |
---|
83 | | - | let F = K._4 |
---|
84 | | - | let M = if ((E > 0)) |
---|
85 | | - | then [ScriptTransfer(H, w, L)] |
---|
| 83 | + | let A = L.payments[0].assetId |
---|
| 84 | + | let B = L.payments[0].amount |
---|
| 85 | + | let N = z(A, B, false) |
---|
| 86 | + | let y = N._1 |
---|
| 87 | + | let H = N._2 |
---|
| 88 | + | let O = N._3 |
---|
| 89 | + | let I = N._4 |
---|
| 90 | + | let P = if ((H > 0)) |
---|
| 91 | + | then [ScriptTransfer(K, y, O)] |
---|
86 | 92 | | else throw("amount is too low") |
---|
87 | | - | $Tuple2(M, $Tuple4(w, E, L, F)) |
---|
| 93 | + | $Tuple2(P, $Tuple4(y, H, O, I)) |
---|
88 | 94 | | } |
---|
89 | 95 | | else throw("Strict value is not equal to itself.") |
---|
90 | 96 | | } |
---|
91 | 97 | | |
---|
92 | 98 | | |
---|
93 | | - | func N (O,t) = { |
---|
94 | | - | let P = x(d(O), t, true) |
---|
95 | | - | let w = P._1 |
---|
96 | | - | let E = P._2 |
---|
97 | | - | let B = P._3 |
---|
98 | | - | let F = P._4 |
---|
99 | | - | $Tuple3(w, F, B) |
---|
| 99 | + | func Q (R,B) = { |
---|
| 100 | + | let S = z(e(R), B, true) |
---|
| 101 | + | let y = S._1 |
---|
| 102 | + | let H = S._2 |
---|
| 103 | + | let T = S._3 |
---|
| 104 | + | let I = S._4 |
---|
| 105 | + | $Tuple3(y, I, T) |
---|
100 | 106 | | } |
---|
101 | 107 | | |
---|
102 | 108 | | |
---|
103 | | - | @Callable(I) |
---|
104 | | - | func swap () = G(I.caller, I) |
---|
| 109 | + | @Callable(L) |
---|
| 110 | + | func swap () = J(L.caller, L) |
---|
105 | 111 | | |
---|
106 | 112 | | |
---|
107 | 113 | | |
---|
108 | | - | @Callable(I) |
---|
109 | | - | func swapNoLess (Q) = { |
---|
110 | | - | let R = G(I.caller, I) |
---|
111 | | - | let M = R._1 |
---|
112 | | - | let S = R._2 |
---|
113 | | - | let T = S |
---|
114 | | - | let w = T._1 |
---|
115 | | - | let E = T._2 |
---|
116 | | - | let L = T._3 |
---|
117 | | - | let F = T._4 |
---|
118 | | - | if ((Q > w)) |
---|
119 | | - | then throw(makeString(["Price slipped. minAmount: ", toString(Q), " swapAmount: ", toString(w)], "")) |
---|
120 | | - | else $Tuple2(M, S) |
---|
| 114 | + | @Callable(L) |
---|
| 115 | + | func swapNoLess (U) = { |
---|
| 116 | + | let V = J(L.caller, L) |
---|
| 117 | + | let P = V._1 |
---|
| 118 | + | let W = V._2 |
---|
| 119 | + | let X = W |
---|
| 120 | + | let y = X._1 |
---|
| 121 | + | let H = X._2 |
---|
| 122 | + | let O = X._3 |
---|
| 123 | + | let I = X._4 |
---|
| 124 | + | if ((U > y)) |
---|
| 125 | + | then throw(makeString(["Price slipped. minAmount: ", toString(U), " swapAmount: ", toString(y)], "")) |
---|
| 126 | + | else $Tuple2(P, W) |
---|
121 | 127 | | } |
---|
122 | 128 | | |
---|
123 | 129 | | |
---|
124 | 130 | | |
---|
125 | | - | @Callable(I) |
---|
126 | | - | func swapFor (H) = G(addressFromStringValue(H), I) |
---|
| 131 | + | @Callable(L) |
---|
| 132 | + | func swapFor (K) = J(addressFromStringValue(K), L) |
---|
| 133 | + | |
---|
| 134 | + | |
---|
| 135 | + | |
---|
| 136 | + | @Callable(L) |
---|
| 137 | + | func forceStop (Y) = { |
---|
| 138 | + | let M = [if ((L.caller == this)) |
---|
| 139 | + | then true |
---|
| 140 | + | else throw("permission denied")] |
---|
| 141 | + | if ((M == M)) |
---|
| 142 | + | then [BooleanEntry(d, Y)] |
---|
| 143 | + | else throw("Strict value is not equal to itself.") |
---|
| 144 | + | } |
---|
127 | 145 | | |
---|
128 | 146 | | |
---|
Full:
Old | New | | Differences |
---|
1 | 1 | | {-# STDLIB_VERSION 6 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | 4 | | let a = "amountAssetId" |
---|
5 | 5 | | |
---|
6 | 6 | | let b = "priceAssetId" |
---|
7 | 7 | | |
---|
8 | 8 | | let c = "feeRate" |
---|
9 | 9 | | |
---|
10 | | - | func d (e) = if ((e == "WAVES")) |
---|
| 10 | + | let d = "forceStop" |
---|
| 11 | + | |
---|
| 12 | + | func e (f) = if ((f == "WAVES")) |
---|
11 | 13 | | then unit |
---|
12 | | - | else fromBase58String(e) |
---|
| 14 | + | else fromBase58String(f) |
---|
13 | 15 | | |
---|
14 | 16 | | |
---|
15 | | - | func f (g) = { |
---|
16 | | - | let h = g |
---|
17 | | - | if ($isInstanceOf(h, "ByteVector")) |
---|
| 17 | + | func g (h) = { |
---|
| 18 | + | let i = h |
---|
| 19 | + | if ($isInstanceOf(i, "ByteVector")) |
---|
18 | 20 | | then { |
---|
19 | | - | let i = h |
---|
20 | | - | assetBalance(this, i) |
---|
| 21 | + | let j = i |
---|
| 22 | + | assetBalance(this, j) |
---|
21 | 23 | | } |
---|
22 | 24 | | else wavesBalance(this).available |
---|
23 | 25 | | } |
---|
24 | 26 | | |
---|
25 | 27 | | |
---|
26 | | - | let j = getStringValue(this, a) |
---|
| 28 | + | let k = getStringValue(this, a) |
---|
27 | 29 | | |
---|
28 | | - | let k = d(j) |
---|
| 30 | + | let l = e(k) |
---|
29 | 31 | | |
---|
30 | | - | let l = getStringValue(this, b) |
---|
| 32 | + | let m = getStringValue(this, b) |
---|
31 | 33 | | |
---|
32 | | - | let m = d(l) |
---|
| 34 | + | let n = e(m) |
---|
33 | 35 | | |
---|
34 | | - | let n = 100000000 |
---|
| 36 | + | let o = 100000000 |
---|
35 | 37 | | |
---|
36 | | - | let o = valueOrElse(getInteger(this, c), 200000) |
---|
| 38 | + | let p = valueOrElse(getInteger(this, c), 200000) |
---|
37 | 39 | | |
---|
38 | | - | func p () = fraction(f(m), n, f(k)) |
---|
| 40 | + | let q = valueOrElse(getBoolean(this, d), false) |
---|
| 41 | + | |
---|
| 42 | + | func r () = fraction(g(n), o, g(l)) |
---|
39 | 43 | | |
---|
40 | 44 | | |
---|
41 | | - | func q (r,s,t) = { |
---|
42 | | - | let u = (s + t) |
---|
43 | | - | let v = fraction(r, s, u) |
---|
44 | | - | let w = (r - v) |
---|
45 | | - | w |
---|
| 45 | + | func s (t,u,v) = { |
---|
| 46 | + | let w = (u + v) |
---|
| 47 | + | let x = fraction(t, u, w) |
---|
| 48 | + | let y = (t - x) |
---|
| 49 | + | y |
---|
46 | 50 | | } |
---|
47 | 51 | | |
---|
48 | 52 | | |
---|
49 | | - | func x (y,t,z) = { |
---|
50 | | - | let A = if ((y == k)) |
---|
51 | | - | then $Tuple2(m, k) |
---|
52 | | - | else $Tuple2(k, m) |
---|
53 | | - | let B = A._1 |
---|
54 | | - | let C = A._2 |
---|
55 | | - | let r = f(B) |
---|
56 | | - | let s = (f(C) - (if (z) |
---|
| 53 | + | func z (A,B,C) = { |
---|
| 54 | + | let D = if ((A == l)) |
---|
| 55 | + | then $Tuple2(n, l) |
---|
| 56 | + | else $Tuple2(l, n) |
---|
| 57 | + | let E = D._1 |
---|
| 58 | + | let F = D._2 |
---|
| 59 | + | let t = g(E) |
---|
| 60 | + | let u = (g(F) - (if (C) |
---|
57 | 61 | | then 0 |
---|
58 | | - | else t)) |
---|
59 | | - | let D = q(r, s, t) |
---|
60 | | - | let E = fraction(D, o, n) |
---|
61 | | - | let w = (D - E) |
---|
62 | | - | let F = if ((y == k)) |
---|
63 | | - | then fraction(w, n, t) |
---|
64 | | - | else fraction(t, n, w) |
---|
65 | | - | $Tuple4(w, E, B, F) |
---|
| 62 | + | else B)) |
---|
| 63 | + | let G = s(t, u, B) |
---|
| 64 | + | let H = fraction(G, p, o) |
---|
| 65 | + | let y = (G - H) |
---|
| 66 | + | let I = if ((A == l)) |
---|
| 67 | + | then fraction(y, o, B) |
---|
| 68 | + | else fraction(B, o, y) |
---|
| 69 | + | $Tuple4(y, H, E, I) |
---|
66 | 70 | | } |
---|
67 | 71 | | |
---|
68 | 72 | | |
---|
69 | | - | func G (H,I) = { |
---|
70 | | - | let J = [if ((size(I.payments) > 0)) |
---|
| 73 | + | func J (K,L) = { |
---|
| 74 | + | let M = [if (!(q)) |
---|
71 | 75 | | then true |
---|
72 | | - | else throw("should be with 1 payment"), if (containsElement([k, m], I.payments[0].assetId)) |
---|
| 76 | + | else throw("contract is temporary stopped"), if ((size(L.payments) > 0)) |
---|
73 | 77 | | then true |
---|
74 | | - | else throw(makeString(["payment assetId should be", j, "or", l], " "))] |
---|
75 | | - | if ((J == J)) |
---|
| 78 | + | else throw("should be with 1 payment"), if (containsElement([l, n], L.payments[0].assetId)) |
---|
| 79 | + | then true |
---|
| 80 | + | else throw(makeString(["payment assetId should be", k, "or", m], " "))] |
---|
| 81 | + | if ((M == M)) |
---|
76 | 82 | | then { |
---|
77 | | - | let y = I.payments[0].assetId |
---|
78 | | - | let t = I.payments[0].amount |
---|
79 | | - | let K = x(y, t, false) |
---|
80 | | - | let w = K._1 |
---|
81 | | - | let E = K._2 |
---|
82 | | - | let L = K._3 |
---|
83 | | - | let F = K._4 |
---|
84 | | - | let M = if ((E > 0)) |
---|
85 | | - | then [ScriptTransfer(H, w, L)] |
---|
| 83 | + | let A = L.payments[0].assetId |
---|
| 84 | + | let B = L.payments[0].amount |
---|
| 85 | + | let N = z(A, B, false) |
---|
| 86 | + | let y = N._1 |
---|
| 87 | + | let H = N._2 |
---|
| 88 | + | let O = N._3 |
---|
| 89 | + | let I = N._4 |
---|
| 90 | + | let P = if ((H > 0)) |
---|
| 91 | + | then [ScriptTransfer(K, y, O)] |
---|
86 | 92 | | else throw("amount is too low") |
---|
87 | | - | $Tuple2(M, $Tuple4(w, E, L, F)) |
---|
| 93 | + | $Tuple2(P, $Tuple4(y, H, O, I)) |
---|
88 | 94 | | } |
---|
89 | 95 | | else throw("Strict value is not equal to itself.") |
---|
90 | 96 | | } |
---|
91 | 97 | | |
---|
92 | 98 | | |
---|
93 | | - | func N (O,t) = { |
---|
94 | | - | let P = x(d(O), t, true) |
---|
95 | | - | let w = P._1 |
---|
96 | | - | let E = P._2 |
---|
97 | | - | let B = P._3 |
---|
98 | | - | let F = P._4 |
---|
99 | | - | $Tuple3(w, F, B) |
---|
| 99 | + | func Q (R,B) = { |
---|
| 100 | + | let S = z(e(R), B, true) |
---|
| 101 | + | let y = S._1 |
---|
| 102 | + | let H = S._2 |
---|
| 103 | + | let T = S._3 |
---|
| 104 | + | let I = S._4 |
---|
| 105 | + | $Tuple3(y, I, T) |
---|
100 | 106 | | } |
---|
101 | 107 | | |
---|
102 | 108 | | |
---|
103 | | - | @Callable(I) |
---|
104 | | - | func swap () = G(I.caller, I) |
---|
| 109 | + | @Callable(L) |
---|
| 110 | + | func swap () = J(L.caller, L) |
---|
105 | 111 | | |
---|
106 | 112 | | |
---|
107 | 113 | | |
---|
108 | | - | @Callable(I) |
---|
109 | | - | func swapNoLess (Q) = { |
---|
110 | | - | let R = G(I.caller, I) |
---|
111 | | - | let M = R._1 |
---|
112 | | - | let S = R._2 |
---|
113 | | - | let T = S |
---|
114 | | - | let w = T._1 |
---|
115 | | - | let E = T._2 |
---|
116 | | - | let L = T._3 |
---|
117 | | - | let F = T._4 |
---|
118 | | - | if ((Q > w)) |
---|
119 | | - | then throw(makeString(["Price slipped. minAmount: ", toString(Q), " swapAmount: ", toString(w)], "")) |
---|
120 | | - | else $Tuple2(M, S) |
---|
| 114 | + | @Callable(L) |
---|
| 115 | + | func swapNoLess (U) = { |
---|
| 116 | + | let V = J(L.caller, L) |
---|
| 117 | + | let P = V._1 |
---|
| 118 | + | let W = V._2 |
---|
| 119 | + | let X = W |
---|
| 120 | + | let y = X._1 |
---|
| 121 | + | let H = X._2 |
---|
| 122 | + | let O = X._3 |
---|
| 123 | + | let I = X._4 |
---|
| 124 | + | if ((U > y)) |
---|
| 125 | + | then throw(makeString(["Price slipped. minAmount: ", toString(U), " swapAmount: ", toString(y)], "")) |
---|
| 126 | + | else $Tuple2(P, W) |
---|
121 | 127 | | } |
---|
122 | 128 | | |
---|
123 | 129 | | |
---|
124 | 130 | | |
---|
125 | | - | @Callable(I) |
---|
126 | | - | func swapFor (H) = G(addressFromStringValue(H), I) |
---|
| 131 | + | @Callable(L) |
---|
| 132 | + | func swapFor (K) = J(addressFromStringValue(K), L) |
---|
| 133 | + | |
---|
| 134 | + | |
---|
| 135 | + | |
---|
| 136 | + | @Callable(L) |
---|
| 137 | + | func forceStop (Y) = { |
---|
| 138 | + | let M = [if ((L.caller == this)) |
---|
| 139 | + | then true |
---|
| 140 | + | else throw("permission denied")] |
---|
| 141 | + | if ((M == M)) |
---|
| 142 | + | then [BooleanEntry(d, Y)] |
---|
| 143 | + | else throw("Strict value is not equal to itself.") |
---|
| 144 | + | } |
---|
127 | 145 | | |
---|
128 | 146 | | |
---|