tx · CdZYon4JJbf1r9uhhso9PRSwSiUCNPGZ4aFQtib4u91i

3N6qtbZbSPVcvJ1pk87e9ahdsZTjHN8e5mL:  -0.01000000 Waves

2021.09.12 17:58 [1699982] smart account 3N6qtbZbSPVcvJ1pk87e9ahdsZTjHN8e5mL > SELF 0.00000000 Waves

{ "type": 13, "id": "CdZYon4JJbf1r9uhhso9PRSwSiUCNPGZ4aFQtib4u91i", "fee": 1000000, "feeAssetId": null, "timestamp": 1631458766571, "version": 2, "chainId": 84, "sender": "3N6qtbZbSPVcvJ1pk87e9ahdsZTjHN8e5mL", "senderPublicKey": "EYAKsFBespqQveBrfmX29rsehBJrSwQ3B6yN4ADyw8Kx", "proofs": [ "5w9p4XXj9qiCknGQEWGUdjVRYRnkqtL2c1MLbiPnAdxUDLmGRuvsDgrV9d1rgmoduajpsnU5K8qTpjDbWosXRFjt" ], "script": "base64:AAIFAAAAAAAAAA0IAhIJCgcYGBERGAIBAAAAAQEAAAAPY2hlY2tQb3NzaWJpbHR5AAAABQAAAAlwbXRBbW91bnQAAAASbWluQW1vdW50VG9SZWNlaXZlAAAACmV4Y2hhbmdlcnMAAAAOZXhjaGFuZ2Vyc1R5cGUAAAARcm91dGluZ0Fzc2V0c0tleXMEAAAACmNvbW1pc3Npb24AAAAAAAAAC7gEAAAAGGNvbW1pc3Npb25TY2FsZURlbGltaXRlcgAAAAAAAA9CQAQAAAANZEFwcDFUb2tlblBheQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkAAZEAAAACBQAAAApleGNoYW5nZXJzAAAAAAAAAAAACQABkQAAAAIFAAAAEXJvdXRpbmdBc3NldHNLZXlzAAAAAAAAAAAABAAAAA1kQXBwMVRva2VuR2V0CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQABkQAAAAIFAAAACmV4Y2hhbmdlcnMAAAAAAAAAAAAJAAGRAAAAAgUAAAARcm91dGluZ0Fzc2V0c0tleXMAAAAAAAAAAAEEAAAADWRBcHAyVG9rZW5QYXkJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAAGRAAAAAgUAAAAKZXhjaGFuZ2VycwAAAAAAAAAAAQkAAZEAAAACBQAAABFyb3V0aW5nQXNzZXRzS2V5cwAAAAAAAAAAAgQAAAANZEFwcDJUb2tlbkdldAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkAAZEAAAACBQAAAApleGNoYW5nZXJzAAAAAAAAAAABCQABkQAAAAIFAAAAEXJvdXRpbmdBc3NldHNLZXlzAAAAAAAAAAADBAAAAA1nZXRGcm9tMVRyYWRlCQAAawAAAAMFAAAADWRBcHAxVG9rZW5HZXQFAAAACXBtdEFtb3VudAkAAGQAAAACBQAAAAlwbXRBbW91bnQFAAAADWRBcHAxVG9rZW5QYXkEAAAAFGdldEZyb20xVHJhZGVXaXRoRmVlCQAAawAAAAMFAAAADWdldEZyb20xVHJhZGUJAABlAAAAAgUAAAAYY29tbWlzc2lvblNjYWxlRGVsaW1pdGVyBQAAAApjb21taXNzaW9uBQAAABhjb21taXNzaW9uU2NhbGVEZWxpbWl0ZXIEAAAADWdldEZyb20yVHJhZGUJAABrAAAAAwUAAAANZEFwcDJUb2tlbkdldAUAAAAUZ2V0RnJvbTFUcmFkZVdpdGhGZWUJAABkAAAAAgUAAAAUZ2V0RnJvbTFUcmFkZVdpdGhGZWUFAAAADWRBcHAyVG9rZW5QYXkEAAAAFGdldEZyb20yVHJhZGVXaXRoRmVlCQAAawAAAAMFAAAADWdldEZyb20yVHJhZGUJAABlAAAAAgUAAAAYY29tbWlzc2lvblNjYWxlRGVsaW1pdGVyBQAAAApjb21taXNzaW9uBQAAABhjb21taXNzaW9uU2NhbGVEZWxpbWl0ZXIDCQAAZwAAAAIFAAAAFGdldEZyb20yVHJhZGVXaXRoRmVlBQAAABJtaW5BbW91bnRUb1JlY2VpdmUGBwAAAAEAAAABaQEAAAAMcm91dGluZ1RyYWRlAAAABwAAAApleGNoYW5nZXJzAAAADmV4Y2hhbmdlcnNUeXBlAAAABWFyZ3MxAAAABWFyZ3MyAAAAEXJvdXRpbmdBc3NldHNLZXlzAAAADnJlY2VpdmVBc3NldElkAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQQAAAALJHQwMjA2NzIzMDAJAAUUAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAlwbXRBbW91bnQIBQAAAAskdDAyMDY3MjMwMAAAAAJfMQQAAAAKcG10QXNzZXRJZAgFAAAACyR0MDIwNjcyMzAwAAAAAl8yBAAAAAtyb3V0aW5nU2l6ZQkAAZAAAAABBQAAAApleGNoYW5nZXJzCgEAAAAMZXhjaGFuZ2VGb2xkAAAAAgAAAAthY2N1bXVsYXRlZAAAAAlleGNoYW5nZXIEAAAACyR0MDI0MzQyNDk3BQAAAAthY2N1bXVsYXRlZAQAAAAPZXhjaGFuZ2VDb3VudGVyCAUAAAALJHQwMjQzNDI0OTcAAAACXzEEAAAADmFtb3VudHNXaXRoRmVlCAUAAAALJHQwMjQzNDI0OTcAAAACXzIEAAAADGFzc2V0c0lkU2VuZAgFAAAACyR0MDI0MzQyNDk3AAAAAl8zAwkAAAAAAAACBQAAAA9leGNoYW5nZUNvdW50ZXIAAAAAAAAAAAAEAAAAEGV4Y2hhbmdlckFkZHJlc3MJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAACWV4Y2hhbmdlcgQAAAADaW52AwkAAAAAAAACCQABkQAAAAIFAAAADmV4Y2hhbmdlcnNUeXBlBQAAAA9leGNoYW5nZUNvdW50ZXICAAAABGNwbW0JAAP8AAAABAUAAAAQZXhjaGFuZ2VyQWRkcmVzcwIAAAAIZXhjaGFuZ2UJAARMAAAAAgkAAZEAAAACBQAAAAVhcmdzMQUAAAAPZXhjaGFuZ2VDb3VudGVyBQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIFAAAACnBtdEFzc2V0SWQFAAAACXBtdEFtb3VudAUAAAADbmlsAwkAAAAAAAACCQABkQAAAAIFAAAADmV4Y2hhbmdlcnNUeXBlBQAAAA9leGNoYW5nZUNvdW50ZXICAAAABGZsYXQJAAP8AAAABAUAAAAQZXhjaGFuZ2VyQWRkcmVzcwIAAAAIZXhjaGFuZ2UJAARMAAAAAgkAAZEAAAACBQAAAAVhcmdzMQUAAAAPZXhjaGFuZ2VDb3VudGVyCQAETAAAAAIJAAGRAAAAAgUAAAAFYXJnczIFAAAAD2V4Y2hhbmdlQ291bnRlcgUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAApwbXRBc3NldElkBQAAAAlwbXRBbW91bnQFAAAAA25pbAkAAAIAAAABAgAAABdJbmNvcnJlY3QgZXhjaGFuZ2UgdHlwZQMJAAAAAAAAAgUAAAADaW52BQAAAANpbnYEAAAAByRtYXRjaDAFAAAAA2ludgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAARKEludCwgQnl0ZVZlY3RvcikEAAAAA2ludgUAAAAHJG1hdGNoMAQAAAALJHQwMzE5MzMyMzEFAAAAA2ludgQAAAANYW1vdW50V2l0aEZlZQgFAAAACyR0MDMxOTMzMjMxAAAAAl8xBAAAAAthc3NldElkU2VuZAgFAAAACyR0MDMxOTMzMjMxAAAAAl8yCQAFFQAAAAMJAABkAAAAAgUAAAAPZXhjaGFuZ2VDb3VudGVyAAAAAAAAAAABBQAAAA1hbW91bnRXaXRoRmVlBQAAAAthc3NldElkU2VuZAkAAAIAAAABAgAAAEBJbmNvcnJlY3QgaW52b2tlIHJlc3VsdDogZXhwZWN0ZWQgYW1vdW50V2l0aEZlZSBhbmQgYXNzZXRzSWRTZW5kCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMDCQAAZgAAAAIFAAAAD2V4Y2hhbmdlQ291bnRlcgAAAAAAAAAAAAkAAGYAAAACBQAAAAtyb3V0aW5nU2l6ZQUAAAAPZXhjaGFuZ2VDb3VudGVyBwQAAAAQZXhjaGFuZ2VyQWRkcmVzcwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAJZXhjaGFuZ2VyBAAAAAskdDAzNTc3MzY0MwkABRQAAAACBQAAAAxhc3NldHNJZFNlbmQFAAAADmFtb3VudHNXaXRoRmVlBAAAAA5wbXRBc3NldElkUm91dAgFAAAACyR0MDM1NzczNjQzAAAAAl8xBAAAAA1wbXRBbW91bnRSb3V0CAUAAAALJHQwMzU3NzM2NDMAAAACXzIEAAAAA2ludgMJAAAAAAAAAgkAAZEAAAACBQAAAA5leGNoYW5nZXJzVHlwZQUAAAAPZXhjaGFuZ2VDb3VudGVyAgAAAARjcG1tCQAD/AAAAAQFAAAAEGV4Y2hhbmdlckFkZHJlc3MCAAAACGV4Y2hhbmdlCQAETAAAAAIJAAGRAAAAAgUAAAAFYXJnczEFAAAAD2V4Y2hhbmdlQ291bnRlcgUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAA5wbXRBc3NldElkUm91dAUAAAANcG10QW1vdW50Um91dAUAAAADbmlsAwkAAAAAAAACCQABkQAAAAIFAAAADmV4Y2hhbmdlcnNUeXBlBQAAAA9leGNoYW5nZUNvdW50ZXICAAAABGZsYXQJAAP8AAAABAUAAAAQZXhjaGFuZ2VyQWRkcmVzcwIAAAAIZXhjaGFuZ2UJAARMAAAAAgkAAZEAAAACBQAAAAVhcmdzMQUAAAAPZXhjaGFuZ2VDb3VudGVyCQAETAAAAAIJAAGRAAAAAgUAAAAFYXJnczIFAAAAD2V4Y2hhbmdlQ291bnRlcgUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAA5wbXRBc3NldElkUm91dAUAAAANcG10QW1vdW50Um91dAUAAAADbmlsCQAAAgAAAAECAAAAF0luY29ycmVjdCBleGNoYW5nZSB0eXBlAwkAAAAAAAACBQAAAANpbnYFAAAAA2ludgQAAAAHJG1hdGNoMAUAAAADaW52AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABEoSW50LCBCeXRlVmVjdG9yKQQAAAADaW52BQAAAAckbWF0Y2gwBAAAAAskdDA0MjQ4NDI4NgUAAAADaW52BAAAAA1hbW91bnRXaXRoRmVlCAUAAAALJHQwNDI0ODQyODYAAAACXzEEAAAAC2Fzc2V0SWRTZW5kCAUAAAALJHQwNDI0ODQyODYAAAACXzIJAAUVAAAAAwkAAGQAAAACBQAAAA9leGNoYW5nZUNvdW50ZXIAAAAAAAAAAAEFAAAADWFtb3VudFdpdGhGZWUFAAAAC2Fzc2V0SWRTZW5kCQAAAgAAAAECAAAAQEluY29ycmVjdCBpbnZva2UgcmVzdWx0OiBleHBlY3RlZCBhbW91bnRXaXRoRmVlIGFuZCBhc3NldHNJZFNlbmQJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQAAAAthY2N1bXVsYXRlZAQAAAALJHQwNDUyNDQ2MjUEAAAADSRsaXN0NDU3NjQ2MjUFAAAACmV4Y2hhbmdlcnMEAAAADSRzaXplNDU3NjQ2MjUJAAGQAAAAAQUAAAANJGxpc3Q0NTc2NDYyNQQAAAANJGFjYzA0NTc2NDYyNQkABRUAAAADAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADCQAAAAAAAAIFAAAADSRzaXplNDU3NjQ2MjUAAAAAAAAAAAAFAAAADSRhY2MwNDU3NjQ2MjUEAAAADSRhY2MxNDU3NjQ2MjUJAQAAAAxleGNoYW5nZUZvbGQAAAACBQAAAA0kYWNjMDQ1NzY0NjI1CQABkQAAAAIFAAAADSRsaXN0NDU3NjQ2MjUAAAAAAAAAAAADCQAAAAAAAAIFAAAADSRzaXplNDU3NjQ2MjUAAAAAAAAAAAEFAAAADSRhY2MxNDU3NjQ2MjUEAAAADSRhY2MyNDU3NjQ2MjUJAQAAAAxleGNoYW5nZUZvbGQAAAACBQAAAA0kYWNjMTQ1NzY0NjI1CQABkQAAAAIFAAAADSRsaXN0NDU3NjQ2MjUAAAAAAAAAAAEDCQAAAAAAAAIFAAAADSRzaXplNDU3NjQ2MjUAAAAAAAAAAAIFAAAADSRhY2MyNDU3NjQ2MjUEAAAADSRhY2MzNDU3NjQ2MjUJAQAAAAxleGNoYW5nZUZvbGQAAAACBQAAAA0kYWNjMjQ1NzY0NjI1CQABkQAAAAIFAAAADSRsaXN0NDU3NjQ2MjUAAAAAAAAAAAIDCQAAAAAAAAIFAAAADSRzaXplNDU3NjQ2MjUAAAAAAAAAAAMFAAAADSRhY2MzNDU3NjQ2MjUEAAAADSRhY2M0NDU3NjQ2MjUJAQAAAAxleGNoYW5nZUZvbGQAAAACBQAAAA0kYWNjMzQ1NzY0NjI1CQABkQAAAAIFAAAADSRsaXN0NDU3NjQ2MjUAAAAAAAAAAAMJAAACAAAAAQIAAAASTGlzdCBzaXplIGV4Y2VlZCAzBAAAAA9leGNoYW5nZUNvdW50ZXIIBQAAAAskdDA0NTI0NDYyNQAAAAJfMQQAAAAOYW1vdW50c1dpdGhGZWUIBQAAAAskdDA0NTI0NDYyNQAAAAJfMgQAAAAMYXNzZXRzSWRTZW5kCAUAAAALJHQwNDUyNDQ2MjUAAAACXzMEAAAAD2Ftb3VudFRvUmVjaWV2ZQkAA/AAAAACBQAAAAR0aGlzBQAAAA5yZWNlaXZlQXNzZXRJZAMDCQAAAAAAAAIFAAAAD2V4Y2hhbmdlQ291bnRlcgUAAAALcm91dGluZ1NpemUJAABnAAAAAgUAAAAPYW1vdW50VG9SZWNpZXZlBQAAABJtaW5BbW91bnRUb1JlY2VpdmUHCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAPYW1vdW50VG9SZWNpZXZlBQAAAA5yZWNlaXZlQXNzZXRJZAUAAAADbmlsCQAAAgAAAAECAAAAPnJvdXRpbmcgIT0gcm91dGluZ1NpemUgb3IgYW1vdW50VG9SZWNpZXZlIDwgbWluQW1vdW50VG9SZWNlaXZlAAAAADgfK+8=", "height": 1699982, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FY5V8rz5rLaMr94r5G68yKVrdwpwiE5sYjHMP9c1Jf6W Next: EoLSyHsy6moCym4RV4mYKg7iTAZCuhgXRVzQYzRvsJBZ Diff:
OldNewDifferences
1919
2020
2121 @Callable(q)
22-func routingTrade (d,e,r,f,s,c) = {
23- let t = $Tuple2(q.payments[0].amount, q.payments[0].assetId)
24- let b = t._1
25- let u = t._2
26- if (!(a(b, c, d, e, f)))
27- then throw("Check transaction possibilty: declined")
28- else {
29- let v = size(d)
30- func w (x,y) = {
31- let z = x
32- let A = z._1
33- let B = z._2
34- let C = z._3
35- if ((A == 0))
22+func routingTrade (d,e,r,s,f,t,c) = {
23+ let u = $Tuple2(q.payments[0].amount, q.payments[0].assetId)
24+ let b = u._1
25+ let v = u._2
26+ let w = size(d)
27+ func x (y,z) = {
28+ let A = y
29+ let B = A._1
30+ let C = A._2
31+ let D = A._3
32+ if ((B == 0))
33+ then {
34+ let E = addressFromStringValue(z)
35+ let F = if ((e[B] == "cpmm"))
36+ then invoke(E, "exchange", [r[B]], [AttachedPayment(v, b)])
37+ else if ((e[B] == "flat"))
38+ then invoke(E, "exchange", [r[B], s[B]], [AttachedPayment(v, b)])
39+ else throw("Incorrect exchange type")
40+ if ((F == F))
3641 then {
37- let D = addressFromStringValue(y)
38- let E = invoke(D, "exchange", [r[A]], [AttachedPayment(u, b)])
39- if ((E == E))
42+ let G = F
43+ if ($isInstanceOf(G, "(Int, ByteVector)"))
4044 then {
41- let F = E
42- if ($isInstanceOf(F, "(Int, ByteVector)"))
43- then {
44- let E = F
45- let G = E
46- let H = G._1
47- let I = G._2
48- $Tuple3((A + 1), H, I)
49- }
50- else throw("Incorrect invoke result: expected amountWithFee and assetsIdSend")
45+ let F = G
46+ let H = F
47+ let I = H._1
48+ let J = H._2
49+ $Tuple3((B + 1), I, J)
5150 }
52- else throw("Strict value is not equal to itself.")
51+ else throw("Incorrect invoke result: expected amountWithFee and assetsIdSend")
5352 }
54- else if (if ((A > 0))
55- then (v > A)
56- else false)
53+ else throw("Strict value is not equal to itself.")
54+ }
55+ else if (if ((B > 0))
56+ then (w > B)
57+ else false)
58+ then {
59+ let E = addressFromStringValue(z)
60+ let K = $Tuple2(D, C)
61+ let L = K._1
62+ let M = K._2
63+ let F = if ((e[B] == "cpmm"))
64+ then invoke(E, "exchange", [r[B]], [AttachedPayment(L, M)])
65+ else if ((e[B] == "flat"))
66+ then invoke(E, "exchange", [r[B], s[B]], [AttachedPayment(L, M)])
67+ else throw("Incorrect exchange type")
68+ if ((F == F))
5769 then {
58- let D = addressFromStringValue(y)
59- let J = $Tuple2(C, B)
60- let K = J._1
61- let L = J._2
62- let E = invoke(D, "exchange", [r[A]], [AttachedPayment(K, L)])
63- if ((E == E))
70+ let G = F
71+ if ($isInstanceOf(G, "(Int, ByteVector)"))
6472 then {
65- let F = E
66- if ($isInstanceOf(F, "(Int, ByteVector)"))
67- then {
68- let E = F
69- let M = E
70- let H = M._1
71- let I = M._2
72- $Tuple3((A + 1), H, I)
73- }
74- else throw("Incorrect invoke result: expected amountWithFee and assetsIdSend")
73+ let F = G
74+ let N = F
75+ let I = N._1
76+ let J = N._2
77+ $Tuple3((B + 1), I, J)
7578 }
76- else throw("Strict value is not equal to itself.")
79+ else throw("Incorrect invoke result: expected amountWithFee and assetsIdSend")
7780 }
78- else x
79- }
81+ else throw("Strict value is not equal to itself.")
82+ }
83+ else y
84+ }
8085
81- let N = {
82- let O = d
83- let P = size(O)
84- let Q = $Tuple3(0, 0, base58'')
85- if ((P == 0))
86- then Q
86+ let O = {
87+ let P = d
88+ let Q = size(P)
89+ let R = $Tuple3(0, 0, base58'')
90+ if ((Q == 0))
91+ then R
92+ else {
93+ let S = x(R, P[0])
94+ if ((Q == 1))
95+ then S
8796 else {
88- let R = w(Q, O[0])
89- if ((P == 1))
90- then R
97+ let T = x(S, P[1])
98+ if ((Q == 2))
99+ then T
91100 else {
92- let S = w(R, O[1])
93- if ((P == 2))
94- then S
101+ let U = x(T, P[2])
102+ if ((Q == 3))
103+ then U
95104 else {
96- let T = w(S, O[2])
97- if ((P == 3))
98- then T
99- else {
100- let U = w(T, O[3])
101- throw("List size exceed 3")
102- }
105+ let V = x(U, P[3])
106+ throw("List size exceed 3")
103107 }
104108 }
105109 }
106110 }
107- let A = N._1
108- let B = N._2
109- let C = N._3
110- let V = assetBalance(this, s)
111- if (if ((A == v))
112- then (V >= c)
113- else false)
114- then [ScriptTransfer(q.caller, V, s)]
115- else throw("routing != routingSize or amountToRecieve < minAmountToReceive")
116- }
111+ }
112+ let B = O._1
113+ let C = O._2
114+ let D = O._3
115+ let W = assetBalance(this, t)
116+ if (if ((B == w))
117+ then (W >= c)
118+ else false)
119+ then [ScriptTransfer(q.caller, W, t)]
120+ else throw("routing != routingSize or amountToRecieve < minAmountToReceive")
117121 }
118122
119123
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b,c,d,e,f) = {
55 let g = 3000
66 let h = 1000000
77 let i = getIntegerValue(addressFromStringValue(d[0]), f[0])
88 let j = getIntegerValue(addressFromStringValue(d[0]), f[1])
99 let k = getIntegerValue(addressFromStringValue(d[1]), f[2])
1010 let l = getIntegerValue(addressFromStringValue(d[1]), f[3])
1111 let m = fraction(j, b, (b + i))
1212 let n = fraction(m, (h - g), h)
1313 let o = fraction(l, n, (n + k))
1414 let p = fraction(o, (h - g), h)
1515 if ((p >= c))
1616 then true
1717 else false
1818 }
1919
2020
2121 @Callable(q)
22-func routingTrade (d,e,r,f,s,c) = {
23- let t = $Tuple2(q.payments[0].amount, q.payments[0].assetId)
24- let b = t._1
25- let u = t._2
26- if (!(a(b, c, d, e, f)))
27- then throw("Check transaction possibilty: declined")
28- else {
29- let v = size(d)
30- func w (x,y) = {
31- let z = x
32- let A = z._1
33- let B = z._2
34- let C = z._3
35- if ((A == 0))
22+func routingTrade (d,e,r,s,f,t,c) = {
23+ let u = $Tuple2(q.payments[0].amount, q.payments[0].assetId)
24+ let b = u._1
25+ let v = u._2
26+ let w = size(d)
27+ func x (y,z) = {
28+ let A = y
29+ let B = A._1
30+ let C = A._2
31+ let D = A._3
32+ if ((B == 0))
33+ then {
34+ let E = addressFromStringValue(z)
35+ let F = if ((e[B] == "cpmm"))
36+ then invoke(E, "exchange", [r[B]], [AttachedPayment(v, b)])
37+ else if ((e[B] == "flat"))
38+ then invoke(E, "exchange", [r[B], s[B]], [AttachedPayment(v, b)])
39+ else throw("Incorrect exchange type")
40+ if ((F == F))
3641 then {
37- let D = addressFromStringValue(y)
38- let E = invoke(D, "exchange", [r[A]], [AttachedPayment(u, b)])
39- if ((E == E))
42+ let G = F
43+ if ($isInstanceOf(G, "(Int, ByteVector)"))
4044 then {
41- let F = E
42- if ($isInstanceOf(F, "(Int, ByteVector)"))
43- then {
44- let E = F
45- let G = E
46- let H = G._1
47- let I = G._2
48- $Tuple3((A + 1), H, I)
49- }
50- else throw("Incorrect invoke result: expected amountWithFee and assetsIdSend")
45+ let F = G
46+ let H = F
47+ let I = H._1
48+ let J = H._2
49+ $Tuple3((B + 1), I, J)
5150 }
52- else throw("Strict value is not equal to itself.")
51+ else throw("Incorrect invoke result: expected amountWithFee and assetsIdSend")
5352 }
54- else if (if ((A > 0))
55- then (v > A)
56- else false)
53+ else throw("Strict value is not equal to itself.")
54+ }
55+ else if (if ((B > 0))
56+ then (w > B)
57+ else false)
58+ then {
59+ let E = addressFromStringValue(z)
60+ let K = $Tuple2(D, C)
61+ let L = K._1
62+ let M = K._2
63+ let F = if ((e[B] == "cpmm"))
64+ then invoke(E, "exchange", [r[B]], [AttachedPayment(L, M)])
65+ else if ((e[B] == "flat"))
66+ then invoke(E, "exchange", [r[B], s[B]], [AttachedPayment(L, M)])
67+ else throw("Incorrect exchange type")
68+ if ((F == F))
5769 then {
58- let D = addressFromStringValue(y)
59- let J = $Tuple2(C, B)
60- let K = J._1
61- let L = J._2
62- let E = invoke(D, "exchange", [r[A]], [AttachedPayment(K, L)])
63- if ((E == E))
70+ let G = F
71+ if ($isInstanceOf(G, "(Int, ByteVector)"))
6472 then {
65- let F = E
66- if ($isInstanceOf(F, "(Int, ByteVector)"))
67- then {
68- let E = F
69- let M = E
70- let H = M._1
71- let I = M._2
72- $Tuple3((A + 1), H, I)
73- }
74- else throw("Incorrect invoke result: expected amountWithFee and assetsIdSend")
73+ let F = G
74+ let N = F
75+ let I = N._1
76+ let J = N._2
77+ $Tuple3((B + 1), I, J)
7578 }
76- else throw("Strict value is not equal to itself.")
79+ else throw("Incorrect invoke result: expected amountWithFee and assetsIdSend")
7780 }
78- else x
79- }
81+ else throw("Strict value is not equal to itself.")
82+ }
83+ else y
84+ }
8085
81- let N = {
82- let O = d
83- let P = size(O)
84- let Q = $Tuple3(0, 0, base58'')
85- if ((P == 0))
86- then Q
86+ let O = {
87+ let P = d
88+ let Q = size(P)
89+ let R = $Tuple3(0, 0, base58'')
90+ if ((Q == 0))
91+ then R
92+ else {
93+ let S = x(R, P[0])
94+ if ((Q == 1))
95+ then S
8796 else {
88- let R = w(Q, O[0])
89- if ((P == 1))
90- then R
97+ let T = x(S, P[1])
98+ if ((Q == 2))
99+ then T
91100 else {
92- let S = w(R, O[1])
93- if ((P == 2))
94- then S
101+ let U = x(T, P[2])
102+ if ((Q == 3))
103+ then U
95104 else {
96- let T = w(S, O[2])
97- if ((P == 3))
98- then T
99- else {
100- let U = w(T, O[3])
101- throw("List size exceed 3")
102- }
105+ let V = x(U, P[3])
106+ throw("List size exceed 3")
103107 }
104108 }
105109 }
106110 }
107- let A = N._1
108- let B = N._2
109- let C = N._3
110- let V = assetBalance(this, s)
111- if (if ((A == v))
112- then (V >= c)
113- else false)
114- then [ScriptTransfer(q.caller, V, s)]
115- else throw("routing != routingSize or amountToRecieve < minAmountToReceive")
116- }
111+ }
112+ let B = O._1
113+ let C = O._2
114+ let D = O._3
115+ let W = assetBalance(this, t)
116+ if (if ((B == w))
117+ then (W >= c)
118+ else false)
119+ then [ScriptTransfer(q.caller, W, t)]
120+ else throw("routing != routingSize or amountToRecieve < minAmountToReceive")
117121 }
118122
119123

github/deemru/w8io/169f3d6 
37.08 ms