2022.05.13 02:09 [3114570] smart account 3P5UKXpQbom7GB2WGdPG5yGQPeQQuM3hFmw > SELF 0.00000000 Waves

{ "type": 13, "id": "4SMZb6JX9L4vksojYTVgvyZMna548XanWSuvmYMDUKmD", "fee": 1000000, "feeAssetId": null, "timestamp": 1652396941098, "version": 2, "chainId": 87, "sender": "3P5UKXpQbom7GB2WGdPG5yGQPeQQuM3hFmw", "senderPublicKey": "4MfTwwE7yP4BFGaifQrcc9Nwb5BA9t92WKhVb6Ton65k", "proofs": [ "rfyfXhvS8vB1vuCrX6596JaeYZfRKT6ZbSYZzmWE2xQHPSuT3SeZjhA9UE7NaLeNkMSNEkpR2vV1B66STzwVYDM" ], "script": "base64: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AAADZmVlCQAAawAAAAMFAAAABmFtb3VudAAAAAAAAAAAAQUAAAAHZmVlUmF0ZQkABRQAAAACCQAAZQAAAAIFAAAABmFtb3VudAUAAAADZmVlBQAAAANmZWUBAAAABmRvU3dhcAAAAAUAAAAEcG9vbAAAAAdwYXltZW50AAAADWFzc2V0UmVjZWl2ZWQAAAASZXN0QW1vdW50VG9SZWNlaXZlAAAAEXNsaXBwYWdlVG9sZXJhbmNlBAAAAAtwb29sQWRkcmVzcwkBAAAAE3BhcnNlQWRkcmVzc09yVGhyb3cAAAABBQAAAARwb29sBAAAAAx2ZXJzaW9uTWFqb3IJAQAAAA9wYXJzZUludE9yVGhyb3cAAAABCQABkQAAAAIJAAS1AAAAAgkBAAAAEGdldFN0cmluZ09yVGhyb3cAAAACBQAAAAtwb29sQWRkcmVzcwIAAAAHdmVyc2lvbgIAAAABLgAAAAAAAAAAAAQAAAAPYXNzZXRSZWNlaXZlZElkCQEAAAAKZ2V0QXNzZXRJZAAAAAEFAAAADWFzc2V0UmVjZWl2ZWQDCQAAZgAAAAIAAAAAAAAAAAAFAAAAEmVzdEFtb3VudFRvUmVjZWl2ZQkAAAIAAAABAgAAACNlc3RBbW91bnRUb1JlY2VpdmUgbXVzdCBiZSBwb3NpdGl2ZQMJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAVwb29scwUAAAAEcG9vbAQAAAAKcG9vbEFzc2V0QQkBAAAAEGdldFN0cmluZ09yVGhyb3cAAAACBQAAAAtwb29sQWRkcmVzcwIAAAAKQV9hc3NldF9pZAQAAAAKcG9vbEFzc2V0QgkBAAAAEGdldFN0cmluZ09yVGhyb3cAAAACBQAAAAtwb29sQWRkcmVzcwIAAAAKQl9hc3NldF9pZAQAAAAMcG9vbEFzc2V0SWRBCQEAAAAKZ2V0QXNzZXRJZAAAAAEFAAAACnBvb2xBc3NldEEEAAAADHBvb2xBc3NldElkQgkBAAAACmdldEFzc2V0SWQAAAABBQAAAApwb29sQXNzZXRCBAAAAAskdDAyMzI4MjY3MgMDCQAAAAAAAAIIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQFAAAADHBvb2xBc3NldElkQQkAAAAAAAACBQAAAA9hc3NldFJlY2VpdmVkSWQFAAAADHBvb2xBc3NldElkQgcJAAUUAAAAAgUAAAAMcG9vbEFzc2V0SWRBBQAAAAxwb29sQXNzZXRJZEIDAwkAAAAAAAACBQAAAA9hc3NldFJlY2VpdmVkSWQFAAAADHBvb2xBc3NldElkQQkAAAAAAAACCAUAAAAHcGF5bWVudAAAAAdhc3NldElkBQAAAAxwb29sQXNzZXRJZEIHCQAFFAAAAAIFAAAADHBvb2xBc3NldElkQgUAAAAMcG9vbEFzc2V0SWRBCQAAAgAAAAECAAAAF1Vuc3VwcG9ydGVkIGFzc2V0cyBwYWlyBAAAAAdhc3NldEluCAUAAAALJHQwMjMyODI2NzIAAAACXzEEAAAACGFzc2V0T3V0CAUAAAALJHQwMjMyODI2NzIAAAACXzIEAAAABGFyZ3MDCQAAAAAAAAIFAAAADHZlcnNpb25NYWpvcgAAAAAAAAAAAQkABEwAAAACAAAAAAAAAAABBQAAAANuaWwDCQAAAAAAAAIFAAAADHZlcnNpb25NYWpvcgAAAAAAAAAAAgMJAABnAAAAAgAAAAAAAAAAAAUAAAASZXN0QW1vdW50VG9SZWNlaXZlCQAAAgAAAAECAAAAI2VzdEFtb3VudFRvUmVjZWl2ZSBtdXN0IGJlIHBvc2l0aXZlAwMJAABmAAAAAgAAAAAAAAAAAAUAAAARc2xpcHBhZ2VUb2xlcmFuY2UGCQAAZgAAAAIFAAAAEXNsaXBwYWdlVG9sZXJhbmNlAAAAAAAAAAPoCQAAAgAAAAECAAAARlNsaXBwYWdlIHRvbGVyYW5jZSBtdXN0IGJlIG5vbi1uZWdhdGl2ZSBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDEwMDAEAAAACW1pbkFtb3VudAkAAGUAAAACBQAAABJlc3RBbW91bnRUb1JlY2VpdmUJAABrAAAAAwUAAAASZXN0QW1vdW50VG9SZWNlaXZlBQAAABFzbGlwcGFnZVRvbGVyYW5jZQAAAAAAAAAD6AkABEwAAAACBQAAABJlc3RBbW91bnRUb1JlY2VpdmUJAARMAAAAAgMJAABmAAAAAgUAAAAJbWluQW1vdW50AAAAAAAAAAAABQAAAAltaW5BbW91bnQAAAAAAAAAAAEFAAAAA25pbAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAWVW5rbm93biBwb29sIHZlcnNpb24gJwkAAaQAAAABBQAAAAx2ZXJzaW9uTWFqb3ICAAAAFicsIGJ1dCAxIG9yIDIgZXhwZWN0ZWQEAAAADWJhbGFuY2VCZWZvcmUJAQAAAApnZXRCYWxhbmNlAAAAAQUAAAAPYXNzZXRSZWNlaXZlZElkAwkAAAAAAAACBQAAAA1iYWxhbmNlQmVmb3JlBQAAAA1iYWxhbmNlQmVmb3JlBAAAAAZyZXN1bHQJAAP8AAAABAUAAAALcG9vbEFkZHJlc3MCAAAACGV4Y2hhbmdlBQAAAARhcmdzCQAETAAAAAIFAAAAB3BheW1lbnQFAAAAA25pbAMJAAAAAAAAAgUAAAAGcmVzdWx0BQAAAAZyZXN1bHQEAAAACHJlY2VpdmVkCQAAZQAAAAIJAQAAAApnZXRCYWxhbmNlAAAAAQUAAAAPYXNzZXRSZWNlaXZlZElkBQAAAA1iYWxhbmNlQmVmb3JlAwkAAAAAAAACBQAAAAhyZWNlaXZlZAUAAAAIcmVjZWl2ZWQDCQAAZwAAAAIAAAAAAAAAAAAFAAAACHJlY2VpdmVkCQAAAgAAAAECAAAAKlJlY2VpdmVkIGFtb3VudCBmcm9tIHBvb2wgbXVzdCBiZSBwb3NpdGl2ZQUAAAAIcmVjZWl2ZWQJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAGcFBvb2xzBQAAAARwb29sBAAAAA1iYWxhbmNlQmVmb3JlCQEAAAAKZ2V0QmFsYW5jZQAAAAEFAAAAD2Fzc2V0UmVjZWl2ZWRJZAMJAAAAAAAAAgUAAAANYmFsYW5jZUJlZm9yZQUAAAANYmFsYW5jZUJlZm9yZQQAAAAGcmVzdWx0CQAD/AAAAAQFAAAAC3Bvb2xBZGRyZXNzAgAAAARzd2FwCQAETAAAAAIFAAAADWFzc2V0UmVjZWl2ZWQJAARMAAAAAgAAAAAAAAAAAAUAAAADbmlsCQAE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", "height": 3114570, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Br13GfdXoTV3PEU4TidSB6CqinwYFiAgpjAZxyeRCJwh Next: 4gDfvLrBMCvU1PsJaV5X14hd2zpfk58bWuF432s4TpTx Diff:
OldNewDifferences
44 func a (b,c) = valueOrErrorMessage(getString(b, c), ((("Can't read '" + c) + "' at address ") + toString(b)))
55
66
7-func d (e) = valueOrErrorMessage(addressFromString(e), (("Can't parse address from '" + e) + "'"))
7+func d (b,c) = valueOrErrorMessage(getInteger(b, c), ((("Can't read '" + c) + "' at address ") + toString(b)))
88
99
10-func f (g) = valueOrErrorMessage(parseInt(g), (("Can't parse integer from '" + g) + "'"))
10+func e (f) = valueOrErrorMessage(addressFromString(f), (("Can't parse address from '" + f) + "'"))
1111
1212
13-let h = d(a(this, "collector"))
14-
15-let i = d(a(this, "oracle"))
16-
17-let j = split(a(i, "pools"), ",")
18-
19-let k = split(a(this, "p-pools"), ",")
20-
21-func l (m) = if ((m == "WAVES"))
22- then unit
23- else fromBase58String(m)
13+func g (h) = valueOrErrorMessage(parseInt(h), (("Can't parse integer from '" + h) + "'"))
2414
2515
26-func n (o) = {
27- let p = o
28- if ($isInstanceOf(p, "ByteVector"))
16+let i = e(a(this, "collector"))
17+
18+let j = d(this, "fee-rate")
19+
20+let k = e(a(this, "oracle"))
21+
22+let l = e(a(this, "swopfi-routing"))
23+
24+let m = split(a(k, "pools"), ",")
25+
26+let n = split(a(this, "p-pools"), ",")
27+
28+func o (p) = if ((p == "WAVES"))
29+ then unit
30+ else fromBase58String(p)
31+
32+
33+func q (r) = {
34+ let s = r
35+ if ($isInstanceOf(s, "ByteVector"))
2936 then {
30- let m = p
31- toBase58String(m)
37+ let p = s
38+ toBase58String(p)
3239 }
33- else if ($isInstanceOf(p, "Unit"))
40+ else if ($isInstanceOf(s, "Unit"))
3441 then {
35- let q = p
42+ let t = s
3643 "WAVES"
3744 }
3845 else throw("Match error")
3946 }
4047
4148
42-func r (o) = {
43- let p = o
44- if ($isInstanceOf(p, "ByteVector"))
49+func u (r) = {
50+ let s = r
51+ if ($isInstanceOf(s, "ByteVector"))
4552 then {
46- let m = p
47- assetBalance(this, m)
53+ let p = s
54+ assetBalance(this, p)
4855 }
49- else if ($isInstanceOf(p, "Unit"))
56+ else if ($isInstanceOf(s, "Unit"))
5057 then {
51- let q = p
58+ let t = s
5259 wavesBalance(this).available
5360 }
5461 else throw("Match error")
5562 }
5663
5764
58-func s (t) = {
59- let u = fraction(t, 1, 1000)
60- $Tuple2((t - u), u)
65+func v (w) = {
66+ let x = fraction(w, 1, j)
67+ $Tuple2((w - x), x)
6168 }
6269
6370
64-func v (w,x,y,z,A) = {
65- let B = d(w)
66- let C = f(split(a(B, "version"), ".")[0])
67- let D = l(y)
68- if ((0 > z))
71+func y (z,A,B,C,D) = {
72+ let E = e(z)
73+ let F = g(split(a(E, "version"), ".")[0])
74+ let G = o(B)
75+ if ((0 > C))
6976 then throw("estAmountToReceive must be positive")
70- else if (containsElement(j, w))
77+ else if (containsElement(m, z))
7178 then {
72- let E = a(B, "A_asset_id")
73- let F = a(B, "B_asset_id")
74- let G = l(E)
75- let H = l(F)
76- let I = if (if ((x.assetId == G))
77- then (D == H)
79+ let H = a(E, "A_asset_id")
80+ let I = a(E, "B_asset_id")
81+ let J = o(H)
82+ let K = o(I)
83+ let L = if (if ((A.assetId == J))
84+ then (G == K)
7885 else false)
79- then $Tuple2(G, H)
80- else if (if ((D == G))
81- then (x.assetId == H)
86+ then $Tuple2(J, K)
87+ else if (if ((G == J))
88+ then (A.assetId == K)
8289 else false)
83- then $Tuple2(H, G)
90+ then $Tuple2(K, J)
8491 else throw("Unsupported assets pair")
85- let J = I._1
86- let K = I._2
87- let L = if ((C == 1))
92+ let M = L._1
93+ let N = L._2
94+ let O = if ((F == 1))
8895 then [1]
89- else if ((C == 2))
90- then if ((0 >= z))
96+ else if ((F == 2))
97+ then if ((0 >= C))
9198 then throw("estAmountToReceive must be positive")
92- else if (if ((0 > A))
99+ else if (if ((0 > D))
93100 then true
94- else (A > 1000))
101+ else (D > 1000))
95102 then throw("Slippage tolerance must be non-negative and less than or equal to 1000")
96103 else {
97- let M = (z - fraction(z, A, 1000))
98-[z, if ((M > 0))
99- then M
104+ let P = (C - fraction(C, D, 1000))
105+[C, if ((P > 0))
106+ then P
100107 else 1]
101108 }
102- else throw((("Unknown pool version '" + toString(C)) + "', but 1 or 2 expected"))
103- let N = r(D)
104- if ((N == N))
109+ else throw((("Unknown pool version '" + toString(F)) + "', but 1 or 2 expected"))
110+ let Q = u(G)
111+ if ((Q == Q))
105112 then {
106- let O = invoke(B, "exchange", L, [x])
107- if ((O == O))
113+ let R = invoke(E, "exchange", O, [A])
114+ if ((R == R))
108115 then {
109- let P = (r(D) - N)
110- if ((P == P))
111- then if ((0 >= P))
116+ let S = (u(G) - Q)
117+ if ((S == S))
118+ then if ((0 >= S))
112119 then throw("Received amount from pool must be positive")
113- else P
120+ else S
114121 else throw("Strict value is not equal to itself.")
115122 }
116123 else throw("Strict value is not equal to itself.")
117124 }
118125 else throw("Strict value is not equal to itself.")
119126 }
120- else if (containsElement(k, w))
127+ else if (containsElement(n, z))
121128 then {
122- let N = r(D)
123- if ((N == N))
129+ let Q = u(G)
130+ if ((Q == Q))
124131 then {
125- let O = invoke(B, "swap", [y, 0], [x])
126- if ((O == O))
132+ let R = invoke(E, "swap", [B, 0], [A])
133+ if ((R == R))
127134 then {
128- let P = (r(D) - N)
129- if ((P == P))
130- then if ((0 >= P))
135+ let S = (u(G) - Q)
136+ if ((S == S))
137+ then if ((0 >= S))
131138 then throw("Received amount from pool must be positive")
132- else P
139+ else S
133140 else throw("Strict value is not equal to itself.")
134141 }
135142 else throw("Strict value is not equal to itself.")
136143 }
137144 else throw("Strict value is not equal to itself.")
138145 }
139- else throw((("There is no pool at address '" + w) + "'"))
146+ else throw((("There is no pool at address '" + z) + "'"))
140147 }
141148
142149
143-func Q (R,S,T,U,A,V) = {
144- let W = if ((size(R.payments) > 0))
145- then R.payments[0]
150+@Callable(T)
151+func swap (U,V,W,D,X) = {
152+ let Y = if ((size(T.payments) > 0))
153+ then T.payments[0]
146154 else throw("Payment required")
147- let X = T[(size(T) - 1)]
148- let Y = l(X)
149- let Z = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
150- func aa (ab,ac) = if ((ac >= size(S)))
151- then ab
155+ let Z = V[(size(V) - 1)]
156+ let aa = o(Z)
157+ let ab = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
158+ func ac (ad,ae) = if ((ae >= size(U)))
159+ then ad
152160 else {
153- let y = T[ac]
154- let D = l(y)
155- let p = v(S[ac], ab, y, U[ac], A)
156- if ($isInstanceOf(p, "Int"))
161+ let B = V[ae]
162+ let G = o(B)
163+ let s = y(U[ae], ad, B, W[ae], D)
164+ if ($isInstanceOf(s, "Int"))
157165 then {
158- let ad = p
159- AttachedPayment(D, ad)
166+ let af = s
167+ AttachedPayment(G, af)
160168 }
161169 else throw("Can't handle swap result")
162170 }
163171
164- let ae = if ((size(S) > 0))
172+ let ag = if ((size(U) > 0))
165173 then {
166- let af = Z
167- let ag = size(af)
168- let ah = W
169- func ai (aj,ak) = if ((ak >= ag))
170- then aj
171- else aa(aj, af[ak])
174+ let ah = ab
175+ let ai = size(ah)
176+ let aj = Y
177+ func ak (al,am) = if ((am >= ai))
178+ then al
179+ else ac(al, ah[am])
172180
173- func al (aj,ak) = if ((ak >= ag))
174- then aj
181+ func an (al,am) = if ((am >= ai))
182+ then al
175183 else throw("List size exceeds 10")
176184
177- al(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ah, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
185+ an(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(aj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
178186 }
179187 else throw("Path cannot be empty")
180- let am = s(ae.amount)
181- let an = am._1
182- let u = am._2
183- if ((0 >= ae.amount))
184- then throw((("Swap result " + toString(ae.amount)) + " must be positive"))
185- else if ((V > an))
186- then throw(((("Swap result " + toString(an)) + " is less then expected ") + toString(V)))
187- else [ScriptTransfer(R.caller, an, Y), ScriptTransfer(h, u, Y)]
188+ let ao = v(ag.amount)
189+ let ap = ao._1
190+ let x = ao._2
191+ if ((0 >= ag.amount))
192+ then throw((("Swap result " + toString(ag.amount)) + " must be positive"))
193+ else if ((X > ap))
194+ then throw(((("Swap result " + toString(ap)) + " is less then expected ") + toString(X)))
195+ else [ScriptTransfer(T.caller, ap, aa), ScriptTransfer(i, x, aa)]
188196 }
189197
190198
191-@Callable(R)
192-func swap (S,T,U,A,V) = Q(R, S, T, U, A, V)
199+
200+@Callable(T)
201+func swopfiSwap (aq,ar,as,at,au,av) = {
202+ let Y = if ((size(T.payments) > 0))
203+ then T.payments[0]
204+ else throw("Payment required")
205+ let Z = valueOrErrorMessage(getString(valueOrErrorMessage(addressFromString(aq[(size(aq) - 1)]), ""), au[(size(au) - 1)]), "")
206+ let aa = o(Z)
207+ let Q = u(aa)
208+ if ((Q == Q))
209+ then {
210+ let R = invoke(l, "routingTrade", [aq, ar, as, at, au, av], [Y])
211+ if ((R == R))
212+ then {
213+ let aw = u(aa)
214+ if ((aw == aw))
215+ then {
216+ let ax = (aw - Q)
217+ let ay = v(ax)
218+ let ap = ay._1
219+ let x = ay._2
220+ if ((0 >= ax))
221+ then throw((("Swap result " + toString(ax)) + " must be positive"))
222+ else if ((av > ap))
223+ then throw(((("Swap result " + toString(ap)) + " is less then expected ") + toString(av)))
224+ else [ScriptTransfer(T.caller, ap, aa), ScriptTransfer(i, x, aa)]
225+ }
226+ else throw("Strict value is not equal to itself.")
227+ }
228+ else throw("Strict value is not equal to itself.")
229+ }
230+ else throw("Strict value is not equal to itself.")
231+ }
193232
194233
195234
196-@Callable(R)
197-func testSeq (S,T,U,A,V) = Q(R, S, T, U, A, V)
235+@Callable(T)
236+func addPools (az) = {
237+ func aA (m,z) = if (containsElement(m, z))
238+ then throw((("Pool '" + z) + "' is already added"))
239+ else (m :+ toString(e(z)))
198240
199-
200-
201-@Callable(R)
202-func addPools (ao) = {
203- func ap (j,w) = if (containsElement(j, w))
204- then throw((("Pool '" + w) + "' is already added"))
205- else (j :+ d(w))
206-
207- if (!(containsElement([this, h], R.caller)))
241+ if (!(containsElement([this, i], T.caller)))
208242 then throw("only self calls or by collector are allowed")
209243 else [StringEntry("p-pools", makeString({
210- let af = ao
211- let ag = size(af)
212- let ah = k
213- func ai (aj,ak) = if ((ak >= ag))
214- then aj
215- else ap(aj, af[ak])
244+ let ah = az
245+ let ai = size(ah)
246+ let aj = n
247+ func ak (al,am) = if ((am >= ai))
248+ then al
249+ else aA(al, ah[am])
216250
217- func al (aj,ak) = if ((ak >= ag))
218- then aj
251+ func an (al,am) = if ((am >= ai))
252+ then al
219253 else throw("List size exceeds 10")
220254
221- al(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ah, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
255+ an(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(aj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
222256 }, ","))]
223257 }
224258
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b,c) = valueOrErrorMessage(getString(b, c), ((("Can't read '" + c) + "' at address ") + toString(b)))
55
66
7-func d (e) = valueOrErrorMessage(addressFromString(e), (("Can't parse address from '" + e) + "'"))
7+func d (b,c) = valueOrErrorMessage(getInteger(b, c), ((("Can't read '" + c) + "' at address ") + toString(b)))
88
99
10-func f (g) = valueOrErrorMessage(parseInt(g), (("Can't parse integer from '" + g) + "'"))
10+func e (f) = valueOrErrorMessage(addressFromString(f), (("Can't parse address from '" + f) + "'"))
1111
1212
13-let h = d(a(this, "collector"))
14-
15-let i = d(a(this, "oracle"))
16-
17-let j = split(a(i, "pools"), ",")
18-
19-let k = split(a(this, "p-pools"), ",")
20-
21-func l (m) = if ((m == "WAVES"))
22- then unit
23- else fromBase58String(m)
13+func g (h) = valueOrErrorMessage(parseInt(h), (("Can't parse integer from '" + h) + "'"))
2414
2515
26-func n (o) = {
27- let p = o
28- if ($isInstanceOf(p, "ByteVector"))
16+let i = e(a(this, "collector"))
17+
18+let j = d(this, "fee-rate")
19+
20+let k = e(a(this, "oracle"))
21+
22+let l = e(a(this, "swopfi-routing"))
23+
24+let m = split(a(k, "pools"), ",")
25+
26+let n = split(a(this, "p-pools"), ",")
27+
28+func o (p) = if ((p == "WAVES"))
29+ then unit
30+ else fromBase58String(p)
31+
32+
33+func q (r) = {
34+ let s = r
35+ if ($isInstanceOf(s, "ByteVector"))
2936 then {
30- let m = p
31- toBase58String(m)
37+ let p = s
38+ toBase58String(p)
3239 }
33- else if ($isInstanceOf(p, "Unit"))
40+ else if ($isInstanceOf(s, "Unit"))
3441 then {
35- let q = p
42+ let t = s
3643 "WAVES"
3744 }
3845 else throw("Match error")
3946 }
4047
4148
42-func r (o) = {
43- let p = o
44- if ($isInstanceOf(p, "ByteVector"))
49+func u (r) = {
50+ let s = r
51+ if ($isInstanceOf(s, "ByteVector"))
4552 then {
46- let m = p
47- assetBalance(this, m)
53+ let p = s
54+ assetBalance(this, p)
4855 }
49- else if ($isInstanceOf(p, "Unit"))
56+ else if ($isInstanceOf(s, "Unit"))
5057 then {
51- let q = p
58+ let t = s
5259 wavesBalance(this).available
5360 }
5461 else throw("Match error")
5562 }
5663
5764
58-func s (t) = {
59- let u = fraction(t, 1, 1000)
60- $Tuple2((t - u), u)
65+func v (w) = {
66+ let x = fraction(w, 1, j)
67+ $Tuple2((w - x), x)
6168 }
6269
6370
64-func v (w,x,y,z,A) = {
65- let B = d(w)
66- let C = f(split(a(B, "version"), ".")[0])
67- let D = l(y)
68- if ((0 > z))
71+func y (z,A,B,C,D) = {
72+ let E = e(z)
73+ let F = g(split(a(E, "version"), ".")[0])
74+ let G = o(B)
75+ if ((0 > C))
6976 then throw("estAmountToReceive must be positive")
70- else if (containsElement(j, w))
77+ else if (containsElement(m, z))
7178 then {
72- let E = a(B, "A_asset_id")
73- let F = a(B, "B_asset_id")
74- let G = l(E)
75- let H = l(F)
76- let I = if (if ((x.assetId == G))
77- then (D == H)
79+ let H = a(E, "A_asset_id")
80+ let I = a(E, "B_asset_id")
81+ let J = o(H)
82+ let K = o(I)
83+ let L = if (if ((A.assetId == J))
84+ then (G == K)
7885 else false)
79- then $Tuple2(G, H)
80- else if (if ((D == G))
81- then (x.assetId == H)
86+ then $Tuple2(J, K)
87+ else if (if ((G == J))
88+ then (A.assetId == K)
8289 else false)
83- then $Tuple2(H, G)
90+ then $Tuple2(K, J)
8491 else throw("Unsupported assets pair")
85- let J = I._1
86- let K = I._2
87- let L = if ((C == 1))
92+ let M = L._1
93+ let N = L._2
94+ let O = if ((F == 1))
8895 then [1]
89- else if ((C == 2))
90- then if ((0 >= z))
96+ else if ((F == 2))
97+ then if ((0 >= C))
9198 then throw("estAmountToReceive must be positive")
92- else if (if ((0 > A))
99+ else if (if ((0 > D))
93100 then true
94- else (A > 1000))
101+ else (D > 1000))
95102 then throw("Slippage tolerance must be non-negative and less than or equal to 1000")
96103 else {
97- let M = (z - fraction(z, A, 1000))
98-[z, if ((M > 0))
99- then M
104+ let P = (C - fraction(C, D, 1000))
105+[C, if ((P > 0))
106+ then P
100107 else 1]
101108 }
102- else throw((("Unknown pool version '" + toString(C)) + "', but 1 or 2 expected"))
103- let N = r(D)
104- if ((N == N))
109+ else throw((("Unknown pool version '" + toString(F)) + "', but 1 or 2 expected"))
110+ let Q = u(G)
111+ if ((Q == Q))
105112 then {
106- let O = invoke(B, "exchange", L, [x])
107- if ((O == O))
113+ let R = invoke(E, "exchange", O, [A])
114+ if ((R == R))
108115 then {
109- let P = (r(D) - N)
110- if ((P == P))
111- then if ((0 >= P))
116+ let S = (u(G) - Q)
117+ if ((S == S))
118+ then if ((0 >= S))
112119 then throw("Received amount from pool must be positive")
113- else P
120+ else S
114121 else throw("Strict value is not equal to itself.")
115122 }
116123 else throw("Strict value is not equal to itself.")
117124 }
118125 else throw("Strict value is not equal to itself.")
119126 }
120- else if (containsElement(k, w))
127+ else if (containsElement(n, z))
121128 then {
122- let N = r(D)
123- if ((N == N))
129+ let Q = u(G)
130+ if ((Q == Q))
124131 then {
125- let O = invoke(B, "swap", [y, 0], [x])
126- if ((O == O))
132+ let R = invoke(E, "swap", [B, 0], [A])
133+ if ((R == R))
127134 then {
128- let P = (r(D) - N)
129- if ((P == P))
130- then if ((0 >= P))
135+ let S = (u(G) - Q)
136+ if ((S == S))
137+ then if ((0 >= S))
131138 then throw("Received amount from pool must be positive")
132- else P
139+ else S
133140 else throw("Strict value is not equal to itself.")
134141 }
135142 else throw("Strict value is not equal to itself.")
136143 }
137144 else throw("Strict value is not equal to itself.")
138145 }
139- else throw((("There is no pool at address '" + w) + "'"))
146+ else throw((("There is no pool at address '" + z) + "'"))
140147 }
141148
142149
143-func Q (R,S,T,U,A,V) = {
144- let W = if ((size(R.payments) > 0))
145- then R.payments[0]
150+@Callable(T)
151+func swap (U,V,W,D,X) = {
152+ let Y = if ((size(T.payments) > 0))
153+ then T.payments[0]
146154 else throw("Payment required")
147- let X = T[(size(T) - 1)]
148- let Y = l(X)
149- let Z = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
150- func aa (ab,ac) = if ((ac >= size(S)))
151- then ab
155+ let Z = V[(size(V) - 1)]
156+ let aa = o(Z)
157+ let ab = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
158+ func ac (ad,ae) = if ((ae >= size(U)))
159+ then ad
152160 else {
153- let y = T[ac]
154- let D = l(y)
155- let p = v(S[ac], ab, y, U[ac], A)
156- if ($isInstanceOf(p, "Int"))
161+ let B = V[ae]
162+ let G = o(B)
163+ let s = y(U[ae], ad, B, W[ae], D)
164+ if ($isInstanceOf(s, "Int"))
157165 then {
158- let ad = p
159- AttachedPayment(D, ad)
166+ let af = s
167+ AttachedPayment(G, af)
160168 }
161169 else throw("Can't handle swap result")
162170 }
163171
164- let ae = if ((size(S) > 0))
172+ let ag = if ((size(U) > 0))
165173 then {
166- let af = Z
167- let ag = size(af)
168- let ah = W
169- func ai (aj,ak) = if ((ak >= ag))
170- then aj
171- else aa(aj, af[ak])
174+ let ah = ab
175+ let ai = size(ah)
176+ let aj = Y
177+ func ak (al,am) = if ((am >= ai))
178+ then al
179+ else ac(al, ah[am])
172180
173- func al (aj,ak) = if ((ak >= ag))
174- then aj
181+ func an (al,am) = if ((am >= ai))
182+ then al
175183 else throw("List size exceeds 10")
176184
177- al(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ah, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
185+ an(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(aj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
178186 }
179187 else throw("Path cannot be empty")
180- let am = s(ae.amount)
181- let an = am._1
182- let u = am._2
183- if ((0 >= ae.amount))
184- then throw((("Swap result " + toString(ae.amount)) + " must be positive"))
185- else if ((V > an))
186- then throw(((("Swap result " + toString(an)) + " is less then expected ") + toString(V)))
187- else [ScriptTransfer(R.caller, an, Y), ScriptTransfer(h, u, Y)]
188+ let ao = v(ag.amount)
189+ let ap = ao._1
190+ let x = ao._2
191+ if ((0 >= ag.amount))
192+ then throw((("Swap result " + toString(ag.amount)) + " must be positive"))
193+ else if ((X > ap))
194+ then throw(((("Swap result " + toString(ap)) + " is less then expected ") + toString(X)))
195+ else [ScriptTransfer(T.caller, ap, aa), ScriptTransfer(i, x, aa)]
188196 }
189197
190198
191-@Callable(R)
192-func swap (S,T,U,A,V) = Q(R, S, T, U, A, V)
199+
200+@Callable(T)
201+func swopfiSwap (aq,ar,as,at,au,av) = {
202+ let Y = if ((size(T.payments) > 0))
203+ then T.payments[0]
204+ else throw("Payment required")
205+ let Z = valueOrErrorMessage(getString(valueOrErrorMessage(addressFromString(aq[(size(aq) - 1)]), ""), au[(size(au) - 1)]), "")
206+ let aa = o(Z)
207+ let Q = u(aa)
208+ if ((Q == Q))
209+ then {
210+ let R = invoke(l, "routingTrade", [aq, ar, as, at, au, av], [Y])
211+ if ((R == R))
212+ then {
213+ let aw = u(aa)
214+ if ((aw == aw))
215+ then {
216+ let ax = (aw - Q)
217+ let ay = v(ax)
218+ let ap = ay._1
219+ let x = ay._2
220+ if ((0 >= ax))
221+ then throw((("Swap result " + toString(ax)) + " must be positive"))
222+ else if ((av > ap))
223+ then throw(((("Swap result " + toString(ap)) + " is less then expected ") + toString(av)))
224+ else [ScriptTransfer(T.caller, ap, aa), ScriptTransfer(i, x, aa)]
225+ }
226+ else throw("Strict value is not equal to itself.")
227+ }
228+ else throw("Strict value is not equal to itself.")
229+ }
230+ else throw("Strict value is not equal to itself.")
231+ }
193232
194233
195234
196-@Callable(R)
197-func testSeq (S,T,U,A,V) = Q(R, S, T, U, A, V)
235+@Callable(T)
236+func addPools (az) = {
237+ func aA (m,z) = if (containsElement(m, z))
238+ then throw((("Pool '" + z) + "' is already added"))
239+ else (m :+ toString(e(z)))
198240
199-
200-
201-@Callable(R)
202-func addPools (ao) = {
203- func ap (j,w) = if (containsElement(j, w))
204- then throw((("Pool '" + w) + "' is already added"))
205- else (j :+ d(w))
206-
207- if (!(containsElement([this, h], R.caller)))
241+ if (!(containsElement([this, i], T.caller)))
208242 then throw("only self calls or by collector are allowed")
209243 else [StringEntry("p-pools", makeString({
210- let af = ao
211- let ag = size(af)
212- let ah = k
213- func ai (aj,ak) = if ((ak >= ag))
214- then aj
215- else ap(aj, af[ak])
244+ let ah = az
245+ let ai = size(ah)
246+ let aj = n
247+ func ak (al,am) = if ((am >= ai))
248+ then al
249+ else aA(al, ah[am])
216250
217- func al (aj,ak) = if ((ak >= ag))
218- then aj
251+ func an (al,am) = if ((am >= ai))
252+ then al
219253 else throw("List size exceeds 10")
220254
221- al(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ah, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
255+ an(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(aj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
222256 }, ","))]
223257 }
224258
225259

github/deemru/w8io/786bc32 
94.39 ms