tx · GnLbgHxUtdYbZ6fXnrR9fJy7CwyFkiGw9eNpp7oS75Dv

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.07400000 Waves

2022.08.15 16:31 [2185648] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

{ "type": 13, "id": "GnLbgHxUtdYbZ6fXnrR9fJy7CwyFkiGw9eNpp7oS75Dv", "fee": 7400000, "feeAssetId": null, "timestamp": 1660570291550, "version": 2, "chainId": 84, "sender": "3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT", "senderPublicKey": "D1BL65meykxFZTCuq7jq9HSGLLnWvQamQPUNrguW5w39", "proofs": [ "5g84ivGMTAssfFmu6caNS5M5tHNfUynRzSJZ2LCidcvLMSAyNZq817i9nvwiC3dMzLjkkS3HiviSja6qdaTb3szf" ], "script": "base64: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CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAPsAAAAAQUAAAAEbHBJZAIAAAAIV3IgbHAgYXMAAAAIcXVhbnRpdHkEAAAACWFtQmFsYW5jZQMFAAAABmlzRXZhbAkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAdhbUlkU3RyAwMFAAAACmlzT25lQXNzZXQJAAAAAAAAAgUAAAAFcG10SWQFAAAAB2FtSWRTdHIHCQAAZQAAAAIJAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQUAAAAHYW1JZFN0cgUAAAAGcG10QW10AwUAAAAKaXNPbmVBc3NldAkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAdhbUlkU3RyCQAAZQAAAAIJAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQUAAAAHYW1JZFN0cgUAAAAHaW5BbUFtdAQAAAAJcHJCYWxhbmNlAwUAAAAGaXNFdmFsCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAAB3BySWRTdHIDAwUAAAAKaXNPbmVBc3NldAkAAAAAAAACBQAAAAVwbXRJZAUAAAAHcHJJZFN0cgcJAABlAAAAAgkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAdwcklkU3RyBQAAAAZwbXRBbXQDBQAAAAppc09uZUFzc2V0CQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAAB3BySWRTdHIJAABlAAAAAgkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAdwcklkU3RyBQAAAAdpblByQW10BAAAAA9pbkFtQXNzZXRBbXRYMTgJAQAAAAJ0MQAAAAIFAAAAB2luQW1BbXQFAAAABmFtdERjbQQAAAAPaW5QckFzc2V0QW10WDE4CQEAAAACdDEAAAACBQAAAAdpblByQW10BQAAAAhwcmljZURjbQQAAAAMdXNlclByaWNlWDE4CQEAAAAEY3BiaQAAAAIFAAAAD2luUHJBc3NldEFtdFgxOAUAAAAPaW5BbUFzc2V0QW10WDE4BAAAAAxhbUJhbGFuY2VYMTgJAQAAAAJ0MQAAAAIFAAAACWFtQmFsYW5jZQUAAAAGYW10RGNtBAAAAAxwckJhbGFuY2VYMTgJAQAAAAJ0MQAAAAIFAAAACXByQmFsYW5jZQUAAAAIcHJpY2VEY20EAAAAAXIDCQAAAAAAAAIFAAAABGxwRW0AAAAAAAAAAAAEAAAAC2N1clByaWNlWDE4BQAAAAp6ZXJvQmlnSW50BAAAAAtzbGlwcGFnZVgxOAUAAAAKemVyb0JpZ0ludAQAAAAIbHBBbXRYMTgJAAB2AAAABgkAATkAAAACBQAAAA9pbkFtQXNzZXRBbXRYMTgFAAAAD2luUHJBc3NldEFtdFgxOAAAAAAAAAAAAAkAATYAAAABAAAAAAAAAAAFAAAAAAAAAAABAAAAAAAAAAAABQAAAARET1dOCQAFFwAAAAUJAQAAAAJmMQAAAAIFAAAACGxwQW10WDE4BQAAAAZzY2FsZTgJAQAAAAJmMQAAAAIFAAAAD2luQW1Bc3NldEFtdFgxOAUAAAAGYW10RGNtCQEAAAACZjEAAAACBQAAAA9pblByQXNzZXRBbXRYMTgFAAAACHByaWNlRGNtCQEAAAAEY3BiaQAAAAIJAAE3AAAAAgUAAAAMcHJCYWxhbmNlWDE4BQAAAA9pblByQXNzZXRBbXRYMTgJAAE3AAAAAgUAAAAMYW1CYWxhbmNlWDE4BQAAAA9pbkFtQXNzZXRBbXRYMTgFAAAAC3NsaXBwYWdlWDE4BAAAAAtjdXJQcmljZVgxOAkBAAAABGNwYmkAAAACBQAAAAxwckJhbGFuY2VYMTgFAAAADGFtQmFsYW5jZVgxOAQAAAAPc2xpcHBhZ2VSZWFsWDE4CQABPAAAAAMJAQAAAANhYnMAAAABCQABOAAAAAIFAAAAC2N1clByaWNlWDE4BQAAAAx1c2VyUHJpY2VYMTgFAAAAB3NjYWxlMTgFAAAAC2N1clByaWNlWDE4BAAAAAtzbGlwcGFnZVgxOAkBAAAAAnQxAAAAAgUAAAAIc2xpcHBhZ2UFAAAABnNjYWxlOAMDCQEAAAACIT0AAAACBQAAAAtjdXJQcmljZVgxOAUAAAAKemVyb0JpZ0ludAkAAT8AAAACBQAAAA9zbGlwcGFnZVJlYWxYMTgFAAAAC3NsaXBwYWdlWDE4BwkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9QcmljZSBzbGlwcGFnZSAJAAGmAAAAAQUAAAAPc2xpcHBhZ2VSZWFsWDE4AgAAAAMgPiAJAAGmAAAAAQUAAAALc2xpcHBhZ2VYMTgEAAAADWxwRW1pc3Npb25YMTgJAQAAAAJ0MQAAAAIFAAAABGxwRW0FAAAABnNjYWxlOAQAAAAKcHJWaWFBbVgxOAkAATwAAAADBQAAAA9pbkFtQXNzZXRBbXRYMTgFAAAAC2N1clByaWNlWDE4BQAAAAdzY2FsZTE4BAAAAAphbVZpYVByWDE4CQABPAAAAAMFAAAAD2luUHJBc3NldEFtdFgxOAUAAAAHc2NhbGUxOAUAAAALY3VyUHJpY2VYMTgEAAAADGV4cGVjdGVkQW10cwMJAAE/AAAAAgUAAAAKcHJWaWFBbVgxOAUAAAAPaW5QckFzc2V0QW10WDE4CQAFFAAAAAIFAAAACmFtVmlhUHJYMTgFAAAAD2luUHJBc3NldEFtdFgxOAkABRQAAAACBQAAAA9pbkFtQXNzZXRBbXRYMTgFAAAACnByVmlhQW1YMTgEAAAAEWV4cEFtdEFzc2V0QW10WDE4CAUAAAAMZXhwZWN0ZWRBbXRzAAAAAl8xBAAAABNleHBQcmljZUFzc2V0QW10WDE4CAUAAAAMZXhwZWN0ZWRBbXRzAAAAAl8yBAAAAAhscEFtdFgxOAkAATwAAAADBQAAAA1scEVtaXNzaW9uWDE4BQAAABNleHBQcmljZUFzc2V0QW10WDE4BQAAAAxwckJhbGFuY2VYMTgJAAUXAAAABQkBAAAAAmYxAAAAAgUAAAAIbHBBbXRYMTgFAAAABnNjYWxlOAkBAAAAAmYxAAAAAgUAAAARZXhwQW10QXNzZXRBbXRYMTgFAAAABmFtdERjbQkBAAAAAmYxAAAAAgUAAAATZXhwUHJpY2VBc3NldEFtdFgxOAUAAAAIcHJpY2VEY20FAAAAC2N1clByaWNlWDE4BQAAAAtzbGlwcGFnZVgxOAQAAAAJY2FsY0xwQW10CAUAAAABcgAAAAJfMQQAAAAOY2FsY0FtQXNzZXRQbXQIBQAAAAFyAAAAAl8yBAAAAA5jYWxjUHJBc3NldFBtdAgFAAAAAXIAAAACXzMEAAAACGN1clByaWNlCQEAAAACZjEAAAACCAUAAAABcgAAAAJfNAUAAAAGc2NhbGU4BAAAAAxzbGlwcGFnZUNhbGMJAQAAAAJmMQAAAAIIBQAAAAFyAAAAAl81BQAAAAZzY2FsZTgDCQAAZwAAAAIAAAAAAAAAAAAFAAAACWNh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", "height": 2185648, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GJzhzkuGMUW9p3i8tYJg9ZWHDr45jnPYRLfobBZvR8uu Next: 8MAfPt5EzZNjJoHATMesYcYR7KUk5g8dmXWiBnwWqx5Y Diff:
OldNewDifferences
1-{-# STDLIB_VERSION 6 #-}
1+{-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
77
88 let c = toBigInt(1000000000000000000)
99
10-let d = 1000
10+let d = toBigInt(0)
1111
12-let e = toBigInt(0)
12+let e = toBigInt(1)
1313
14-let f = toBigInt(1)
14+let f = toBigInt((a - ((a * 1) / a)))
1515
16-let g = toBigInt((a - ((a * 1) / a)))
16+let g = "100"
1717
18-let h = "100"
18+let h = "1"
1919
20-let i = "1"
20+let i = "__"
2121
22-let j = "__"
22+let j = ""
2323
24-let k = ""
24+let k = 1
2525
26-let l = 1
26+let l = 2
2727
28-let m = 2
28+let m = 3
2929
30-let n = 3
30+let n = 4
3131
32-let o = 4
32+let o = 1
3333
34-let p = 1
34+let p = 2
3535
36-let q = 2
36+let q = 3
3737
38-let r = 3
38+let r = 4
3939
40-let s = 4
40+let s = 5
4141
42-let t = 5
42+let t = 6
4343
44-let u = 6
44+let u = 7
4545
46-let v = 7
46+let v = 8
4747
48-let w = 8
48+let w = 9
4949
50-let x = 9
50+let x = 1
5151
52-let y = 1
52+let y = 7
5353
54-let z = 7
54+let z = 10
5555
56-let A = 10
56+let A = "%s__delay"
5757
58-let B = 0
59-
60-func C (D,E) = fraction(toBigInt(D), c, toBigInt(E))
58+func B (C,D) = fraction(toBigInt(C), c, toBigInt(D))
6159
6260
63-func F (G,H) = toInt(fraction(G, toBigInt(H), c))
61+func E (F,G) = toInt(fraction(F, toBigInt(G), c))
6462
6563
66-func I (J,K,L) = fraction(J, K, L)
64+func H (I,J,K) = fraction(I, J, K)
6765
6866
69-func M (G) = if ((e > G))
70- then -(G)
71- else G
67+func L (F) = if ((d > F))
68+ then -(F)
69+ else F
7270
7371
74-func N () = "%s__factoryContract"
72+func M () = "%s__factoryContract"
7573
7674
77-func O () = "%s__managerPublicKey"
75+func N () = "%s__managerPublicKey"
7876
7977
80-func P () = "%s__pendingManagerPublicKey"
78+func O () = "%s__pendingManagerPublicKey"
8179
8280
83-func Q () = "%s%s__price__last"
81+func P () = "%s%s__price__last"
8482
8583
86-func R (S,T) = makeString(["%s%s%d%d__price__history", toString(S), toString(T)], j)
84+func Q (R,S) = makeString(["%s%s%d%d__price__history", toString(R), toString(S)], i)
8785
8886
89-func U (V,W) = ((("%s%s%s__P__" + V) + "__") + W)
87+func T (U,V) = ((("%s%s%s__P__" + U) + "__") + V)
9088
9189
92-func X (V,W) = ((("%s%s%s__G__" + V) + "__") + W)
90+func W (U,V) = ((("%s%s%s__G__" + U) + "__") + V)
9391
9492
95-func Y () = "%s__amountAsset"
93+func X () = "%s__amountAsset"
9694
9795
98-func Z () = "%s__priceAsset"
96+func Y () = "%s__priceAsset"
9997
10098
101-func aa () = "%s__amp"
99+func Z () = "%s__amp"
102100
103101
104-func ab () = "%s__addonAddr"
102+func aa () = "%s__addonAddr"
105103
106104
107-let ac = "%s__feePermille"
105+func ab (ac) = makeString(["%s%s__lastGetOneTknCall", ac], i)
108106
109-let ad = valueOrElse(getInteger(this, ac), B)
107+
108+func ad (ac) = makeString(["%s%s__lastPutOneTknCall", ac], i)
109+
110110
111111 func ae () = "%s__factoryConfig"
112112
123123 func al () = "%s__shutdown"
124124
125125
126-func am (an) = throw(makeString(["lp_stable.ride:", an], " "))
126+func am (an,ao,ap) = throw(((((("Failed: ordValid=" + toString(an)) + " sndrValid=") + toString(ao)) + " mtchrValid=") + toString(ap)))
127127
128128
129-func ao (ap,aq,ar) = am(((((("Failed: ordValid=" + toString(ap)) + " sndrValid=") + toString(aq)) + " mtchrValid=") + toString(ar)))
130-
131-
132-func as (G) = {
133- let at = G
134- if ($isInstanceOf(at, "String"))
129+func aq (F) = {
130+ let ar = F
131+ if ($isInstanceOf(ar, "String"))
135132 then {
136- let au = at
137- au
133+ let as = ar
134+ as
138135 }
139- else am("fail cast to String")
136+ else throw("fail cast to String")
140137 }
141138
142139
143-func av (aw,ax) = valueOrErrorMessage(getString(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
140+func at (au,av) = valueOrErrorMessage(getString(au, av), makeString(["mandatory ", toString(au), ".", av, " not defined"], ""))
144141
145142
146-func ay (aw,ax) = valueOrErrorMessage(getInteger(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
143+func aw (au,av) = valueOrErrorMessage(getInteger(au, av), makeString(["mandatory ", toString(au), ".", av, " not defined"], ""))
147144
148145
149-let az = addressFromStringValue(av(this, N()))
146+let ax = addressFromStringValue(at(this, M()))
150147
151-let aA = av(this, aa())
148+let ay = at(this, Z())
152149
153-func aB () = valueOrElse(getBoolean(az, al()), false)
150+func az () = valueOrElse(getBoolean(ax, al()), false)
154151
155152
156-func aC () = fromBase58String(av(az, af()))
153+func aA () = fromBase58String(at(ax, af()))
157154
158155
159-let aD = addressFromPublicKey(aC())
160-
161-func aE () = {
162- let aF = av(this, Y())
163- let aG = av(this, Z())
164- let aH = ay(az, aj(aG))
165- let ah = ay(az, aj(aF))
166- split(av(az, ag(toString(ah), toString(aH))), j)
156+func aB () = {
157+ let aC = at(this, X())
158+ let aD = at(this, Y())
159+ let aE = aw(ax, aj(aD))
160+ let ah = aw(ax, aj(aC))
161+ split(at(ax, ag(toString(ah), toString(aE))), i)
167162 }
168163
169164
170-func aI () = split(av(az, ae()), j)
165+func aF () = split(at(ax, ae()), i)
171166
172167
173-func aJ (aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT)], j)
168+func aG (aH,aI,aJ,aK,aL,aM,aN,aO,aP,aQ) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aH), toString(aI), toString(aJ), toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ)], i)
174169
175170
176-func aU (aV,aW,aX,aN,aQ,aR) = makeString(["%d%d%d%d%d%d", toString(aV), toString(aW), toString(aX), toString(aN), toString(aQ), toString(aR)], j)
171+func aR (aS,aT,aU,aK,aN,aO) = makeString(["%d%d%d%d%d%d", toString(aS), toString(aT), toString(aU), toString(aK), toString(aN), toString(aO)], i)
177172
178173
179-func aY (aZ) = if ((aZ == "WAVES"))
174+func aV (aW) = if ((aW == "WAVES"))
180175 then wavesBalance(this).available
181- else assetBalance(this, fromBase58String(aZ))
176+ else assetBalance(this, fromBase58String(aW))
182177
183178
184-func ba (bb,bc) = fraction(bb, c, bc)
179+func aX (aY,aZ) = fraction(aY, c, aZ)
185180
186181
187-func bd (be,bf,bg) = {
188- let bh = fraction((be - bf), b, bf)
189- let bi = ((bg - M(bh)) > e)
190- if (!(bi))
191- then am(("Big slippage: " + toString(bh)))
192- else $Tuple2(bi, min([be, bf]))
182+func ba (bb,bc,bd) = {
183+ let be = fraction((bb - bc), b, bc)
184+ let bf = ((bd - L(be)) > d)
185+ if (!(bf))
186+ then throw(("Big slpg: " + toString(be)))
187+ else $Tuple2(bf, min([bb, bc]))
193188 }
194189
195190
196-func bj (bk,bl,bg) = {
197- let bh = fraction(bl, b, bk)
198- let bm = (bg > bh)
199- if (if (bm)
191+func bg (bh,bi,bj) = {
192+ let be = fraction(bi, b, bh)
193+ let bk = (bj > be)
194+ if (if (bk)
200195 then true
201- else (bl > bk))
202- then am(((((((toString(bl) + " ") + toString(bk)) + " ") + toString(bh)) + " ") + toString(bg)))
203- else bm
196+ else (bi > bh))
197+ then throw(((((((toString(bi) + " ") + toString(bh)) + " ") + toString(be)) + " ") + toString(bj)))
198+ else bk
204199 }
205200
206201
207-func bn (bo,bp,bq,br) = {
208- let bs = C(bq, bo)
209- let bt = C(br, bp)
210- ba(bt, bs)
202+func bl (bm,bn,bo,bp) = {
203+ let bq = B(bo, bm)
204+ let br = B(bp, bn)
205+ aX(br, bq)
211206 }
212207
213208
214-func bu (bq,br,bv) = {
215- let bw = aE()
216- let bx = parseIntValue(bw[u])
217- let by = parseIntValue(bw[v])
218- let bz = bn(bx, by, bq, br)
219- let bc = C(bq, bx)
220- let bb = C(br, by)
221- let bA = C(bv, a)
222- let bB = ba(bc, bA)
223- let bC = ba(bb, bA)
224-[bz, bB, bC]
209+func bs (bo,bp,bt) = {
210+ let bu = aB()
211+ let bv = parseIntValue(bu[t])
212+ let bw = parseIntValue(bu[u])
213+ let bx = bl(bv, bw, bo, bp)
214+ let aZ = B(bo, bv)
215+ let aY = B(bp, bw)
216+ let by = B(bt, a)
217+ let bz = aX(aZ, by)
218+ let bA = aX(aY, by)
219+[bx, bz, bA]
225220 }
226221
227222
228-func bD (bq,br,bv) = {
229- let bE = bu(bq, br, bv)
230-[F(bE[0], a), F(bE[1], a), F(bE[2], a)]
223+func bB (bo,bp,bt) = {
224+ let bC = bs(bo, bp, bt)
225+[E(bC[0], a), E(bC[1], a), E(bC[2], a)]
231226 }
232227
233228
234-func bF (bG,bH,bI,bJ) = {
235- let bw = aE()
236- let bK = bw[r]
237- let bL = bw[s]
238- let bM = bw[t]
239- let bN = parseIntValue(bw[u])
240- let bO = parseIntValue(bw[v])
241- let bP = bw[q]
242- let bQ = valueOrErrorMessage(assetInfo(fromBase58String(bK)), "Wrong LP id").quantity
243- let bR = if ((bK == bH))
244- then true
245- else am("Wrong payment asset")
246- if ((bR == bR))
247- then {
248- let bS = if ((bN >= bO))
249- then bN
250- else bO
251- if ((bS == bS))
252- then {
253- let bT = aY(bL)
254- let bU = C(bT, bS)
255- let bV = aY(bM)
256- let bW = C(bV, bS)
257- let bX = ba(bW, bU)
258- let bY = F(bX, a)
259- let bZ = C(bI, a)
260- let ca = C(bQ, a)
261- let cb = fraction(bU, bZ, ca)
262- let cc = fraction(bW, bZ, ca)
263- let cd = F(cb, bS)
264- let ce = F(cc, bS)
265- let cf = if ((bG == ""))
266- then nil
267- else [ScriptTransfer(bJ, cd, if ((bL == "WAVES"))
268- then unit
269- else fromBase58String(bL)), ScriptTransfer(bJ, ce, if ((bM == "WAVES"))
270- then unit
271- else fromBase58String(bM)), StringEntry(X(toString(bJ), bG), aU(cd, ce, bI, bY, height, lastBlock.timestamp)), IntegerEntry(Q(), bY), IntegerEntry(R(height, lastBlock.timestamp), bY)]
272- $Tuple10(cd, ce, bL, bM, bT, bV, bQ, bX, bP, cf)
273- }
274- else throw("Strict value is not equal to itself.")
229+func bD (bE,bF,bG,bH) = {
230+ let bu = aB()
231+ let bI = bu[q]
232+ let bJ = bu[r]
233+ let bK = bu[s]
234+ let bL = parseIntValue(bu[t])
235+ let bM = parseIntValue(bu[u])
236+ let bN = bu[p]
237+ let bO = valueOrErrorMessage(assetInfo(fromBase58String(bI)), "Wrong LP id").quantity
238+ if ((bI != bF))
239+ then throw("Wrong pmt asset")
240+ else {
241+ let bP = aV(bJ)
242+ let bQ = B(bP, bL)
243+ let bR = aV(bK)
244+ let bS = B(bR, bM)
245+ let bT = aX(bS, bQ)
246+ let bU = E(bT, a)
247+ let bV = B(bG, a)
248+ let bW = B(bO, a)
249+ let bX = fraction(bQ, bV, bW)
250+ let bY = fraction(bS, bV, bW)
251+ let bZ = E(bX, bL)
252+ let ca = E(bY, bM)
253+ let cb = if ((bE == ""))
254+ then nil
255+ else [ScriptTransfer(bH, bZ, if ((bJ == "WAVES"))
256+ then unit
257+ else fromBase58String(bJ)), ScriptTransfer(bH, ca, if ((bK == "WAVES"))
258+ then unit
259+ else fromBase58String(bK)), StringEntry(W(toString(bH), bE), aR(bZ, ca, bG, bU, height, lastBlock.timestamp)), IntegerEntry(P(), bU), IntegerEntry(Q(height, lastBlock.timestamp), bU)]
260+ $Tuple10(bZ, ca, bJ, bK, bP, bR, bO, bT, bN, cb)
275261 }
276- else throw("Strict value is not equal to itself.")
277262 }
278263
279264
280-func cg (bG,ch,ci,cj,ck,cl,bJ,cm,cn,co,cp,cq) = {
281- let bw = aE()
282- let bK = fromBase58String(bw[r])
283- let cr = bw[s]
284- let cs = bw[t]
285- let ct = bw[w]
286- let cu = bw[x]
287- let bN = parseIntValue(bw[u])
288- let bO = parseIntValue(bw[v])
289- let bP = bw[q]
290- let bQ = valueOrErrorMessage(assetInfo(bK), "Wrong lp asset").quantity
291- let bT = if (cm)
292- then aY(cr)
293- else if (if (co)
294- then (cq == cr)
265+func cc (bE,bd,cd,ce,cf,cg,bH,ch,ci,cj,ck,cl) = {
266+ let bu = aB()
267+ let bI = fromBase58String(bu[q])
268+ let cm = bu[r]
269+ let cn = bu[s]
270+ let co = bu[v]
271+ let cp = bu[w]
272+ let cq = parseIntValue(bu[t])
273+ let cr = parseIntValue(bu[u])
274+ let bN = bu[p]
275+ let cs = valueOrErrorMessage(assetInfo(bI), "Wr lp as").quantity
276+ let bP = if (ch)
277+ then aV(cm)
278+ else if (if (cj)
279+ then (cl == cm)
295280 else false)
296- then (aY(cr) - cp)
297- else if (co)
298- then aY(cr)
299- else (aY(cr) - ci)
300- let bV = if (cm)
301- then aY(cs)
302- else if (if (co)
303- then (cq == cs)
281+ then (aV(cm) - ck)
282+ else if (cj)
283+ then aV(cm)
284+ else (aV(cm) - cd)
285+ let bR = if (ch)
286+ then aV(cn)
287+ else if (if (cj)
288+ then (cl == cn)
304289 else false)
305- then (aY(cs) - cp)
306- else if (co)
307- then aY(cs)
308- else (aY(cs) - ck)
309- let bS = if ((bN >= bO))
310- then bN
311- else bO
312- if ((bS == bS))
290+ then (aV(cn) - ck)
291+ else if (cj)
292+ then aV(cn)
293+ else (aV(cn) - cf)
294+ let ct = B(cd, cq)
295+ let cu = B(cf, cr)
296+ let cv = aX(cu, ct)
297+ let bQ = B(bP, cq)
298+ let bS = B(bR, cr)
299+ let cw = if ((cs == 0))
313300 then {
314- let cv = C(ci, bS)
315- let cw = C(ck, bS)
316- let cx = ba(cw, cv)
317- let bU = C(bT, bS)
318- let bW = C(bV, bS)
319- let cy = if ((bQ == 0))
320- then {
321- let bX = e
322- let cz = e
323- let cA = pow((cv * cw), 0, toBigInt(5), 1, 0, DOWN)
324- $Tuple5(F(cA, a), F(cv, bS), F(cw, bS), ba((bW + cw), (bU + cv)), cz)
301+ let bT = d
302+ let cx = d
303+ let by = pow((ct * cu), 0, toBigInt(5), 1, 0, DOWN)
304+ $Tuple5(E(by, a), E(ct, cq), E(cu, cr), aX((bS + cu), (bQ + ct)), cx)
305+ }
306+ else {
307+ let bT = aX(bS, bQ)
308+ let cy = fraction(L((bT - cv)), c, bT)
309+ let cx = B(bd, a)
310+ if (if ((bT != d))
311+ then (cy > cx)
312+ else false)
313+ then throw(((("Price slippage " + toString(cy)) + " > ") + toString(cx)))
314+ else {
315+ let cz = B(cs, a)
316+ let cA = fraction(ct, bT, c)
317+ let cB = fraction(cu, c, bT)
318+ let cC = if ((cA > cu))
319+ then $Tuple2(cB, cu)
320+ else $Tuple2(ct, cA)
321+ let cD = cC._1
322+ let cE = cC._2
323+ let by = fraction(cz, cE, bS)
324+ $Tuple5(E(by, a), E(cD, cq), E(cE, cr), bT, cx)
325325 }
326- else {
327- let bX = ba(bW, bU)
328- let cB = fraction(M((bX - cx)), c, bX)
329- let cz = C(ch, a)
330- if (if ((bX != e))
331- then (cB > cz)
332- else false)
333- then am(((("Price slippage " + toString(cB)) + " > ") + toString(cz)))
334- else {
335- let ca = C(bQ, a)
336- let cC = fraction(cv, bX, c)
337- let cD = fraction(cw, c, bX)
338- let cE = if ((cC > cw))
339- then $Tuple2(cD, cv)
340- else $Tuple2(cv, cC)
341- let cF = cE._1
342- let cG = cE._2
343- let cA = fraction(ca, cG, bW)
344- $Tuple5(F(cA, a), F(cF, bS), F(cG, bS), bX, cz)
345- }
346- }
347- let cH = cy._1
348- let cI = cy._2
349- let cJ = cy._3
350- let cK = F(cy._4, a)
351- let cL = F(cy._5, a)
352- let cM = if ((cH > 0))
353- then true
354- else am("LP <= 0")
355- if ((cM == cM))
356- then {
357- let cN = if (!(cn))
358- then 0
359- else cH
360- let cO = (ci - cI)
361- let cP = (ck - cJ)
362- let cQ = if (if (co)
363- then (cq == cr)
364- else false)
365- then $Tuple2(cp, 0)
366- else if (if (co)
367- then (cq == cs)
368- else false)
369- then $Tuple2(0, cp)
370- else $Tuple2(cI, cJ)
371- let cR = cQ._1
372- let cS = cQ._2
373- let cT = [IntegerEntry(Q(), cK), IntegerEntry(R(height, lastBlock.timestamp), cK), StringEntry(U(bJ, bG), aJ(cR, cS, cN, cK, ch, cL, height, lastBlock.timestamp, cO, cP))]
374- $Tuple13(cH, cN, cK, bT, bV, bQ, bK, bP, cT, cO, cP, cj, cl)
375- }
376- else throw("Strict value is not equal to itself.")
377326 }
378- else throw("Strict value is not equal to itself.")
327+ let cF = cw._1
328+ let cG = cw._2
329+ let cH = cw._3
330+ let bU = E(cw._4, a)
331+ let cI = E(cw._5, a)
332+ if ((0 >= cF))
333+ then throw("LP <= 0")
334+ else {
335+ let cJ = if (!(ci))
336+ then 0
337+ else cF
338+ let cK = (cd - cG)
339+ let cL = (cf - cH)
340+ let cM = if (if (cj)
341+ then (cl == cm)
342+ else false)
343+ then $Tuple2(ck, 0)
344+ else if (if (cj)
345+ then (cl == cn)
346+ else false)
347+ then $Tuple2(0, ck)
348+ else $Tuple2(cG, cH)
349+ let cN = cM._1
350+ let cO = cM._2
351+ let cP = [IntegerEntry(P(), bU), IntegerEntry(Q(height, lastBlock.timestamp), bU), StringEntry(T(bH, bE), aG(cN, cO, cJ, bU, bd, cI, height, lastBlock.timestamp, cK, cL))]
352+ $Tuple13(cF, cJ, bU, bP, bR, cs, bI, bN, cP, cK, cL, ce, cg)
353+ }
379354 }
380355
381356
382-func cU (cV) = {
383- let bw = aE()
384- let cW = bw[s]
385- let cX = bw[t]
386- let bP = parseIntValue(bw[q])
387- let bx = parseIntValue(bw[u])
388- let by = parseIntValue(bw[v])
389- let cY = aY(cW)
390- let cZ = aY(cX)
391- let bX = if ((cV.orderType == Buy))
392- then bn(bx, by, (cY + cV.amount), cZ)
393- else bn(bx, by, (cY - cV.amount), cZ)
394- let bY = F(bX, a)
395- if (if (if (aB())
357+func cQ (cR) = {
358+ let bu = aB()
359+ let cS = bu[r]
360+ let cT = bu[s]
361+ let bN = parseIntValue(bu[p])
362+ let bv = parseIntValue(bu[t])
363+ let bw = parseIntValue(bu[u])
364+ let cU = aV(cS)
365+ let cV = aV(cT)
366+ let bT = if ((cR.orderType == Buy))
367+ then bl(bv, bw, (cU + cR.amount), cV)
368+ else bl(bv, bw, (cU - cR.amount), cV)
369+ let bU = E(bT, a)
370+ if (if (if (az())
396371 then true
397- else (bP == n))
372+ else (bN == m))
398373 then true
399- else (bP == o))
400- then am("Admin blocked")
374+ else (bN == n))
375+ then throw("Admin blocked")
401376 else {
402- let da = cV.assetPair.amountAsset
403- let db = if ((da == unit))
377+ let cW = cR.assetPair.amountAsset
378+ let cX = if ((cW == unit))
404379 then "WAVES"
405- else toBase58String(value(da))
406- let dc = cV.assetPair.priceAsset
407- let dd = if ((dc == unit))
380+ else toBase58String(value(cW))
381+ let cY = cR.assetPair.priceAsset
382+ let cZ = if ((cY == unit))
408383 then "WAVES"
409- else toBase58String(value(dc))
410- if (if ((db != cW))
384+ else toBase58String(value(cY))
385+ if (if ((cX != cS))
411386 then true
412- else (dd != cX))
413- then am("Wr assets")
387+ else (cZ != cT))
388+ then throw("Wr assets")
414389 else {
415- let de = cV.price
416- let bO = fraction(a, by, bx)
417- let df = I(de, a, bO)
418- let dg = if ((cV.orderType == Buy))
419- then (bY >= df)
420- else (df >= bY)
390+ let da = cR.price
391+ let cr = fraction(a, bw, bv)
392+ let db = H(da, a, cr)
393+ let dc = if ((cR.orderType == Buy))
394+ then (bU >= db)
395+ else (db >= bU)
421396 true
422397 }
423398 }
424399 }
425400
426401
427-func dh (di) = {
428- let dj = if ((size(di.payments) == 1))
402+func dd (de) = if ((size(de.payments) != 1))
403+ then throw("1 pmnt exp")
404+ else {
405+ let df = value(de.payments[0])
406+ let bF = value(df.assetId)
407+ let ck = df.amount
408+ let cw = bD(toBase58String(de.transactionId), toBase58String(bF), ck, de.caller)
409+ let bZ = cw._1
410+ let ca = cw._2
411+ let bN = parseIntValue(cw._9)
412+ let cb = cw._10
413+ if (if (az())
414+ then true
415+ else (bN == n))
416+ then throw(("Admin blocked: " + toString(bN)))
417+ else $Tuple5(bZ, ca, ck, bF, cb)
418+ }
419+
420+
421+func dg (ac,V,dh,di,bd,ci,cj,ck,cl) = {
422+ let cw = cc(V, bd, value(dh).amount, value(dh).assetId, value(di).amount, value(di).assetId, ac, false, ci, cj, ck, cl)
423+ let bN = parseIntValue(cw._8)
424+ if (if (if (az())
429425 then true
430- else am("1 payment expected")
431- if ((dj == dj))
432- then {
433- let dk = value(di.payments[0])
434- let bH = value(dk.assetId)
435- let cp = dk.amount
436- let cy = bF(toBase58String(di.transactionId), toBase58String(bH), cp, di.caller)
437- let cd = cy._1
438- let ce = cy._2
439- let bP = parseIntValue(cy._9)
440- let cf = cy._10
441- if (if (aB())
442- then true
443- else (bP == o))
444- then am(("Admin blocked: " + toString(bP)))
445- else $Tuple5(cd, ce, cp, bH, cf)
446- }
447- else throw("Strict value is not equal to itself.")
426+ else (bN == l))
427+ then true
428+ else (bN == n))
429+ then throw(("Blocked:" + toString(bN)))
430+ else cw
448431 }
449432
450433
451-func dl (dm,W,dn,do,bg,cn,co,cp,cq) = {
452- let cy = cg(W, bg, value(dn).amount, value(dn).assetId, value(do).amount, value(do).assetId, dm, false, cn, co, cp, cq)
453- let bP = parseIntValue(cy._8)
454- if (if (if (aB())
455- then true
456- else (bP == m))
457- then true
458- else (bP == o))
459- then am(("Blocked:" + toString(bP)))
460- else cy
461- }
462-
463-
464-func dp (dq) = {
465- let dr = fraction(dq, ad, d)
466- $Tuple2((dq - dr), dr)
467- }
468-
469-
470-func ds () = {
471- let at = getString(O())
472- if ($isInstanceOf(at, "String"))
434+func dj () = {
435+ let ar = getString(N())
436+ if ($isInstanceOf(ar, "String"))
473437 then {
474- let dt = at
475- fromBase58String(dt)
438+ let dk = ar
439+ fromBase58String(dk)
476440 }
477- else if ($isInstanceOf(at, "Unit"))
441+ else if ($isInstanceOf(ar, "Unit"))
478442 then unit
479443 else throw("Match error")
480444 }
481445
482446
483-func du () = {
484- let at = getString(P())
485- if ($isInstanceOf(at, "String"))
447+func dl () = {
448+ let ar = getString(O())
449+ if ($isInstanceOf(ar, "String"))
486450 then {
487- let dt = at
488- fromBase58String(dt)
451+ let dk = ar
452+ fromBase58String(dk)
489453 }
490- else if ($isInstanceOf(at, "Unit"))
454+ else if ($isInstanceOf(ar, "Unit"))
491455 then unit
492456 else throw("Match error")
493457 }
494458
495459
496-let dv = am("Permission denied")
460+let dm = throw("Permission denied")
497461
498-func dw (di) = {
499- let at = ds()
500- if ($isInstanceOf(at, "ByteVector"))
462+func dn (de) = {
463+ let ar = dj()
464+ if ($isInstanceOf(ar, "ByteVector"))
501465 then {
502- let dx = at
503- if ((di.callerPublicKey == dx))
466+ let do = ar
467+ if ((de.callerPublicKey == do))
504468 then true
505- else dv
469+ else dm
506470 }
507- else if ($isInstanceOf(at, "Unit"))
508- then if ((di.caller == this))
471+ else if ($isInstanceOf(ar, "Unit"))
472+ then if ((de.caller == this))
509473 then true
510- else dv
474+ else dm
511475 else throw("Match error")
512476 }
513477
514478
515-@Callable(di)
516-func constructor (az) = {
517- let dy = dw(di)
518- if ((dy == dy))
519- then [StringEntry(N(), az)]
479+@Callable(de)
480+func constructor (M) = {
481+ let dp = dn(de)
482+ if ((dp == dp))
483+ then [StringEntry(M(), M)]
520484 else throw("Strict value is not equal to itself.")
521485 }
522486
523487
524488
525-@Callable(di)
526-func setManager (dz) = {
527- let dy = dw(di)
528- if ((dy == dy))
489+@Callable(de)
490+func setManager (dq) = {
491+ let dp = dn(de)
492+ if ((dp == dp))
529493 then {
530- let dA = fromBase58String(dz)
531- if ((dA == dA))
532- then [StringEntry(P(), dz)]
494+ let dr = fromBase58String(dq)
495+ if ((dr == dr))
496+ then [StringEntry(O(), dq)]
533497 else throw("Strict value is not equal to itself.")
534498 }
535499 else throw("Strict value is not equal to itself.")
537501
538502
539503
540-@Callable(di)
504+@Callable(de)
541505 func confirmManager () = {
542- let dB = du()
543- let dC = if (isDefined(dB))
506+ let bC = dl()
507+ let ds = if (isDefined(bC))
544508 then true
545- else am("No pending manager")
546- if ((dC == dC))
509+ else throw("No pending manager")
510+ if ((ds == ds))
547511 then {
548- let dD = if ((di.callerPublicKey == value(dB)))
512+ let dt = if ((de.callerPublicKey == value(bC)))
549513 then true
550- else am("You are not pending manager")
551- if ((dD == dD))
552- then [StringEntry(O(), toBase58String(value(dB))), DeleteEntry(P())]
514+ else throw("You are not pending manager")
515+ if ((dt == dt))
516+ then [StringEntry(N(), toBase58String(value(bC))), DeleteEntry(O())]
553517 else throw("Strict value is not equal to itself.")
554518 }
555519 else throw("Strict value is not equal to itself.")
557521
558522
559523
560-@Callable(di)
561-func put (bg,dE) = {
562- let dF = aI()
563- let dG = valueOrErrorMessage(addressFromString(dF[y]), "Wrong staking contract")
564- let dH = valueOrErrorMessage(addressFromString(dF[z]), "Wrogn slippage contract")
565- let dI = if ((bg >= 0))
566- then true
567- else am("wrong slippage")
568- if ((dI == dI))
569- then {
570- let dJ = if ((size(di.payments) == 2))
571- then true
572- else am("2 payments expected")
573- if ((dJ == dJ))
574- then {
575- let dK = dl(toString(di.caller), toBase58String(di.transactionId), AttachedPayment(value(di.payments[0]).assetId, value(di.payments[0]).amount), di.payments[1], bg, true, false, 0, "")
576- let cN = dK._2
577- let bK = dK._7
578- let cf = dK._9
579- let cO = dK._10
580- let cP = dK._11
581- let bL = dK._12
582- let bM = dK._13
583- let cy = invoke(az, "emit", [cN], nil)
584- if ((cy == cy))
585- then {
586- let dL = {
587- let at = cy
588- if ($isInstanceOf(at, "Address"))
524+@Callable(de)
525+func put (du,dv) = {
526+ let dw = aF()
527+ let dx = valueOrErrorMessage(addressFromString(dw[x]), "Wr st addr")
528+ let dy = valueOrErrorMessage(addressFromString(dw[y]), "Wr sl addr")
529+ if ((0 > du))
530+ then throw("Wrong slippage")
531+ else if ((size(de.payments) != 2))
532+ then throw("2 pmnts expd")
533+ else {
534+ let dz = dg(toString(de.caller), toBase58String(de.transactionId), AttachedPayment(value(de.payments[0]).assetId, value(de.payments[0]).amount), de.payments[1], du, true, false, 0, "")
535+ let cJ = dz._2
536+ let dA = dz._7
537+ let cb = dz._9
538+ let cK = dz._10
539+ let cL = dz._11
540+ let bJ = dz._12
541+ let bK = dz._13
542+ let cw = invoke(ax, "emit", [cJ], nil)
543+ if ((cw == cw))
544+ then {
545+ let dB = {
546+ let ar = cw
547+ if ($isInstanceOf(ar, "Address"))
548+ then {
549+ let dC = ar
550+ invoke(dC, "emit", [cJ], nil)
551+ }
552+ else unit
553+ }
554+ if ((dB == dB))
555+ then {
556+ let dD = if ((cK > 0))
557+ then invoke(dy, "put", nil, [AttachedPayment(bJ, cK)])
558+ else nil
559+ if ((dD == dD))
589560 then {
590- let dM = at
591- invoke(dM, "emit", [cN], nil)
561+ let dE = if ((cL > 0))
562+ then invoke(dy, "put", nil, [AttachedPayment(bK, cL)])
563+ else nil
564+ if ((dE == dE))
565+ then {
566+ let dF = if (dv)
567+ then {
568+ let dG = invoke(dx, "stake", nil, [AttachedPayment(dA, cJ)])
569+ if ((dG == dG))
570+ then nil
571+ else throw("Strict value is not equal to itself.")
572+ }
573+ else [ScriptTransfer(de.caller, cJ, dA)]
574+ (cb ++ dF)
575+ }
576+ else throw("Strict value is not equal to itself.")
592577 }
593- else unit
578+ else throw("Strict value is not equal to itself.")
594579 }
595- if ((dL == dL))
580+ else throw("Strict value is not equal to itself.")
581+ }
582+ else throw("Strict value is not equal to itself.")
583+ }
584+ }
585+
586+
587+
588+@Callable(de)
589+func putOneTkn (dH,dI,dJ,bd,dv) = {
590+ let bu = aF()
591+ let dx = valueOrErrorMessage(addressFromString(bu[x]), "Wr st addr")
592+ let dy = valueOrErrorMessage(addressFromString(bu[y]), "Wr sl addr")
593+ let dK = valueOrErrorMessage(addressFromString(bu[z]), "Wr gwx addr")
594+ let dL = aB()
595+ let bJ = dL[r]
596+ let bK = dL[s]
597+ let bL = parseIntValue(dL[t])
598+ let bM = parseIntValue(dL[u])
599+ let dM = valueOrElse(getString(this, aa()), "")
600+ let bH = if ((dM == toString(de.caller)))
601+ then de.originCaller
602+ else de.caller
603+ let dN = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
604+ let dO = reentrantInvoke(dN, "ensureCanPutOneTkn", [toString(bH)], nil)
605+ if ((dO == dO))
606+ then if (if (if (if ((0 >= bd))
607+ then true
608+ else (0 >= dH))
609+ then true
610+ else (0 >= dI))
611+ then true
612+ else (0 >= dJ))
613+ then throw("Wrong params")
614+ else if ((size(de.payments) != 1))
615+ then throw("1 pmnt expd")
616+ else {
617+ let df = value(de.payments[0])
618+ let bF = toBase58String(value(df.assetId))
619+ let ck = df.amount
620+ if (if (if ((dH > ck))
621+ then true
622+ else (dI > ck))
623+ then true
624+ else (10000000 > ck))
625+ then throw("Wrong pmt amt")
626+ else {
627+ let bP = aV(bJ)
628+ let bR = aV(bK)
629+ let dP = if ((bF == bJ))
630+ then $Tuple6((bP - ck), bR, (ck - dH), dI, 0, 0)
631+ else if ((bF == bK))
632+ then $Tuple6(bP, (bR - ck), 0, 0, (ck - dI), dH)
633+ else throw("wrong pmtAssetId")
634+ let dQ = dP._1
635+ let dR = dP._2
636+ let dS = dP._3
637+ let dT = dP._4
638+ let dU = dP._5
639+ let dV = dP._6
640+ let bi = invoke(dK, "calcD", [toString(dQ), toString(dR), ay, g, h], nil)
641+ let bh = invoke(dK, "calcD", [toString(toBigInt(((dQ + dS) - dV))), toString(toBigInt(((dR + dU) - dT))), ay, g, h], nil)
642+ let dW = bg(parseBigIntValue(aq(bh)), parseBigIntValue(aq(bi)), f)
643+ if ((dW == dW))
596644 then {
597- let dN = if ((cO > 0))
598- then invoke(dH, "put", nil, [AttachedPayment(bL, cO)])
599- else nil
600- if ((dN == dN))
645+ let dX = dg(toString(de.caller), toBase58String(de.transactionId), AttachedPayment(fromBase58String(bJ), dH), AttachedPayment(fromBase58String(bK), dI), bd, true, true, ck, bF)
646+ let dY = dX._2
647+ let dA = dX._7
648+ let cb = dX._9
649+ let cK = dX._10
650+ let cL = dX._11
651+ let dZ = ba(toBigInt(dY), toBigInt(dJ), toBigInt(bd))
652+ let cJ = toInt(dZ._2)
653+ let dz = invoke(ax, "emit", [cJ], nil)
654+ if ((dz == dz))
601655 then {
602- let dO = if ((cP > 0))
603- then invoke(dH, "put", nil, [AttachedPayment(bM, cP)])
604- else nil
605- if ((dO == dO))
656+ let dB = {
657+ let ar = dz
658+ if ($isInstanceOf(ar, "Address"))
659+ then {
660+ let dC = ar
661+ invoke(dC, "emit", [cJ], nil)
662+ }
663+ else unit
664+ }
665+ if ((dB == dB))
606666 then {
607- let dP = if (dE)
667+ let dD = if ((cK > 0))
668+ then invoke(dy, "put", nil, [AttachedPayment(fromBase58String(bJ), cK)])
669+ else nil
670+ if ((dD == dD))
608671 then {
609- let dQ = invoke(dG, "stake", nil, [AttachedPayment(bK, cN)])
610- if ((dQ == dQ))
611- then nil
672+ let dE = if ((cL > 0))
673+ then invoke(dy, "put", nil, [AttachedPayment(fromBase58String(bK), cL)])
674+ else nil
675+ if ((dE == dE))
676+ then {
677+ let dF = if (dv)
678+ then {
679+ let dG = invoke(dx, "stake", nil, [AttachedPayment(dA, cJ)])
680+ if ((dG == dG))
681+ then nil
682+ else throw("Strict value is not equal to itself.")
683+ }
684+ else [ScriptTransfer(de.caller, cJ, dA)]
685+ (cb ++ dF)
686+ }
612687 else throw("Strict value is not equal to itself.")
613688 }
614- else [ScriptTransfer(di.caller, cN, bK)]
615- (cf ++ dP)
689+ else throw("Strict value is not equal to itself.")
616690 }
617691 else throw("Strict value is not equal to itself.")
618692 }
619693 else throw("Strict value is not equal to itself.")
620694 }
695+ else throw("Strict value is not equal to itself.")
696+ }
697+ }
698+ else throw("Strict value is not equal to itself.")
699+ }
700+
701+
702+
703+@Callable(de)
704+func putForFree (ea) = if ((0 > ea))
705+ then throw("Wrong slpg")
706+ else if ((size(de.payments) != 2))
707+ then throw("2 pmnts expd")
708+ else {
709+ let dX = dg(toString(de.caller), toBase58String(de.transactionId), AttachedPayment(value(de.payments[0]).assetId, value(de.payments[0]).amount), de.payments[1], ea, false, false, 0, "")
710+ dX._9
711+ }
712+
713+
714+
715+@Callable(de)
716+func get () = {
717+ let cw = dd(de)
718+ let eb = cw._1
719+ let ca = cw._2
720+ let ck = cw._3
721+ let bF = cw._4
722+ let cb = cw._5
723+ let ec = invoke(ax, "burn", [ck], [AttachedPayment(bF, ck)])
724+ if ((ec == ec))
725+ then cb
726+ else throw("Strict value is not equal to itself.")
727+ }
728+
729+
730+
731+@Callable(de)
732+func getOneTkn (ed,ee,ef,eg,bd) = if ((size(de.payments) != 1))
733+ then throw("1 pmnt expd")
734+ else {
735+ let bu = aB()
736+ let bI = bu[q]
737+ let bJ = bu[r]
738+ let bK = bu[s]
739+ let bL = parseIntValue(bu[t])
740+ let bM = parseIntValue(bu[u])
741+ let bN = bu[p]
742+ let dw = aF()
743+ let dK = valueOrErrorMessage(addressFromString(dw[z]), "Wr sl addr")
744+ let df = value(de.payments[0])
745+ let dM = valueOrElse(getString(this, aa()), "")
746+ let bH = if ((dM == toString(de.caller)))
747+ then de.originCaller
748+ else de.caller
749+ let bE = toBase58String(de.transactionId)
750+ let bF = value(df.assetId)
751+ let ck = df.amount
752+ let dN = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
753+ let dO = reentrantInvoke(dN, "ensureCanGetOneTkn", [toString(bH)], nil)
754+ if ((dO == dO))
755+ then if ((1000000000 > ck))
756+ then throw("Min pmt 10 LP")
757+ else if (if (if ((0 > bd))
758+ then true
759+ else (0 > ed))
760+ then true
761+ else (0 > ef))
762+ then throw("Wrong params")
763+ else if ((bI != toBase58String(bF)))
764+ then throw("Wrong LP")
765+ else {
766+ let cw = bD(toBase58String(de.transactionId), toBase58String(bF), ck, de.caller)
767+ let eh = cw._1
768+ let ei = cw._2
769+ let bP = aV(bJ)
770+ let bR = aV(bK)
771+ let ej = if ((eg == bJ))
772+ then $Tuple7((bP - eh), (bR - ei), ed, ei, 0, 0, (eh + ed))
773+ else if ((eg == bK))
774+ then $Tuple7((bP - eh), (bR - ei), 0, 0, ed, eh, (ei + ed))
775+ else throw("wrong outAssetId")
776+ let dQ = ej._1
777+ let dR = ej._2
778+ let dS = ej._3
779+ let dT = ej._4
780+ let dU = ej._5
781+ let dV = ej._6
782+ let ek = ej._7
783+ if (if ((0 > dS))
784+ then true
785+ else (0 > dU))
786+ then throw("Wrong calc")
787+ else {
788+ let bi = invoke(dK, "calcD", [toString(dQ), toString(dR), ay, g, h], nil)
789+ let bh = invoke(dK, "calcD", [toString(((dQ - dS) + dV)), toString(((dR + dT) - dU)), ay, g, h], nil)
790+ let dW = bg(parseBigIntValue(aq(bh)), parseBigIntValue(aq(bi)), f)
791+ if ((dW == dW))
792+ then {
793+ let el = ba(toBigInt(ek), toBigInt(ef), toBigInt(bd))
794+ if ((el == el))
795+ then {
796+ let em = if ((eg == bJ))
797+ then $Tuple2(toInt(el._2), 0)
798+ else $Tuple2(0, toInt(el._2))
799+ let en = em._1
800+ let eo = em._2
801+ let ep = aX(B(bR, bM), B(bP, bL))
802+ let eq = E(ep, a)
803+ let cb = [ScriptTransfer(bH, (en + eo), if ((eg == "WAVES"))
804+ then unit
805+ else fromBase58String(eg)), StringEntry(W(toString(bH), bE), aR(en, eo, ck, eq, height, lastBlock.timestamp)), IntegerEntry(P(), eq), IntegerEntry(Q(height, lastBlock.timestamp), eq)]
806+ if ((cb == cb))
807+ then {
808+ let er = invoke(ax, "burn", [ck], [AttachedPayment(bF, ck)])
809+ if ((er == er))
810+ then cb
811+ else throw("Strict value is not equal to itself.")
812+ }
813+ else throw("Strict value is not equal to itself.")
814+ }
815+ else throw("Strict value is not equal to itself.")
816+ }
817+ else throw("Strict value is not equal to itself.")
818+ }
819+ }
820+ else throw("Strict value is not equal to itself.")
821+ }
822+
823+
824+
825+@Callable(de)
826+func getNoLess (es,et) = {
827+ let cw = dd(de)
828+ let bZ = cw._1
829+ let ca = cw._2
830+ let ck = cw._3
831+ let bF = cw._4
832+ let cb = cw._5
833+ if ((es > bZ))
834+ then throw(((("Failed: " + toString(bZ)) + " < ") + toString(es)))
835+ else if ((et > ca))
836+ then throw(((("Failed: " + toString(ca)) + " < ") + toString(et)))
837+ else {
838+ let eu = invoke(ax, "burn", [ck], [AttachedPayment(bF, ck)])
839+ if ((eu == eu))
840+ then cb
841+ else throw("Strict value is not equal to itself.")
842+ }
843+ }
844+
845+
846+
847+@Callable(de)
848+func unstakeAndGet (ev) = {
849+ let ew = if ((size(de.payments) != 0))
850+ then throw("No pmnts expd")
851+ else true
852+ if ((ew == ew))
853+ then {
854+ let bu = aB()
855+ let ex = aF()
856+ let dA = fromBase58String(bu[q])
857+ let ey = valueOrErrorMessage(addressFromString(ex[x]), "Wr st addr")
858+ let ez = invoke(ey, "unstake", [toBase58String(dA), ev], nil)
859+ if ((ez == ez))
860+ then {
861+ let cw = bD(toBase58String(de.transactionId), toBase58String(dA), ev, de.caller)
862+ let bN = parseIntValue(cw._9)
863+ let cb = cw._10
864+ let eA = if (if (az())
865+ then true
866+ else (bN == n))
867+ then throw(("Blocked: " + toString(bN)))
868+ else true
869+ if ((eA == eA))
870+ then {
871+ let eB = invoke(ax, "burn", [ev], [AttachedPayment(dA, ev)])
872+ if ((eB == eB))
873+ then cb
621874 else throw("Strict value is not equal to itself.")
622875 }
623876 else throw("Strict value is not equal to itself.")
629882
630883
631884
632-@Callable(di)
633-func putOneTkn (dR,dS,bf,bg,dE) = {
634- let bw = aI()
635- let dG = valueOrErrorMessage(addressFromString(bw[y]), "Wrong staking contract")
636- let dH = valueOrErrorMessage(addressFromString(bw[z]), "Wrong slippage contract")
637- let dT = valueOrErrorMessage(addressFromString(bw[A]), "Wrong gwx reward contract")
638- let dU = aE()
639- let bL = dU[s]
640- let bM = dU[t]
641- let bN = parseIntValue(dU[u])
642- let bO = parseIntValue(dU[v])
643- let dV = valueOrElse(getString(this, ab()), "")
644- let bJ = if ((dV == toString(di.caller)))
645- then di.originCaller
646- else di.caller
647- if (if (if (if ((0 >= bg))
648- then true
649- else (0 >= dR))
650- then true
651- else (0 >= dS))
652- then true
653- else (0 >= bf))
654- then am("Wrong params")
655- else if ((size(di.payments) != 1))
656- then am("1 payment expected")
657- else {
658- let dk = value(di.payments[0])
659- let bH = toBase58String(value(dk.assetId))
660- let dW = dk.amount
661- let dX = dp(dW)
662- let cp = dX._1
663- let dY = dX._2
664- if (if (if ((dR > cp))
665- then true
666- else (dS > cp))
667- then true
668- else (10000000 > cp))
669- then am("wrong payment amount")
670- else {
671- let bT = aY(bL)
672- let bV = aY(bM)
673- let dZ = if ((bH == bL))
674- then $Tuple6((bT - cp), bV, (cp - dR), dS, 0, 0)
675- else if ((bH == bM))
676- then $Tuple6(bT, (bV - cp), 0, 0, (cp - dS), dR)
677- else am("wrong paymentAssetId")
678- let ea = dZ._1
679- let eb = dZ._2
680- let ec = dZ._3
681- let ed = dZ._4
682- let ee = dZ._5
683- let ef = dZ._6
684- let bl = invoke(dT, "calcD", [toString(ea), toString(eb), aA, h, i], nil)
685- let bk = invoke(dT, "calcD", [toString(toBigInt(((ea + ec) - ef))), toString(toBigInt(((eb + ee) - ed))), aA, h, i], nil)
686- let eg = bj(parseBigIntValue(as(bk)), parseBigIntValue(as(bl)), g)
687- if ((eg == eg))
688- then {
689- let dK = dl(toString(di.caller), toBase58String(di.transactionId), AttachedPayment(fromBase58String(bL), dR), AttachedPayment(fromBase58String(bM), dS), bg, true, true, cp, bH)
690- let be = dK._2
691- let bK = dK._7
692- let cf = dK._9
693- let cO = dK._10
694- let cP = dK._11
695- let eh = bd(toBigInt(be), toBigInt(bf), toBigInt(bg))
696- let cN = toInt(eh._2)
697- let ei = invoke(az, "emit", [cN], nil)
698- if ((ei == ei))
699- then {
700- let dL = {
701- let at = ei
702- if ($isInstanceOf(at, "Address"))
703- then {
704- let dM = at
705- invoke(dM, "emit", [cN], nil)
706- }
707- else unit
708- }
709- if ((dL == dL))
710- then {
711- let dN = if ((cO > 0))
712- then invoke(dH, "put", nil, [AttachedPayment(fromBase58String(bL), cO)])
713- else nil
714- if ((dN == dN))
715- then {
716- let dO = if ((cP > 0))
717- then invoke(dH, "put", nil, [AttachedPayment(fromBase58String(bM), cP)])
718- else nil
719- if ((dO == dO))
720- then {
721- let dP = if (dE)
722- then {
723- let dQ = invoke(dG, "stake", nil, [AttachedPayment(bK, cN)])
724- if ((dQ == dQ))
725- then nil
726- else throw("Strict value is not equal to itself.")
727- }
728- else [ScriptTransfer(di.caller, cN, bK)]
729- let ej = if ((dY > 0))
730- then [ScriptTransfer(aD, dY, fromBase58String(bH))]
731- else nil
732- ((cf ++ dP) ++ ej)
733- }
734- else throw("Strict value is not equal to itself.")
735- }
736- else throw("Strict value is not equal to itself.")
737- }
738- else throw("Strict value is not equal to itself.")
739- }
740- else throw("Strict value is not equal to itself.")
741- }
742- else throw("Strict value is not equal to itself.")
743- }
744- }
885+@Callable(de)
886+func activate (eC,eD) = if ((toString(de.caller) != toString(ax)))
887+ then throw("denied")
888+ else $Tuple2([StringEntry(X(), eC), StringEntry(Y(), eD)], "success")
889+
890+
891+
892+@Callable(de)
893+func setS (eE,eA) = if ((toString(de.caller) != at(this, aa())))
894+ then dm
895+ else [StringEntry(eE, eA)]
896+
897+
898+
899+@Callable(de)
900+func setI (eE,eA) = if ((toString(de.caller) != at(this, aa())))
901+ then dm
902+ else [IntegerEntry(eE, eA)]
903+
904+
905+
906+@Callable(de)
907+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aB())
908+
909+
910+
911+@Callable(de)
912+func getAccBalanceWrapperREADONLY (aW) = $Tuple2(nil, aV(aW))
913+
914+
915+
916+@Callable(de)
917+func calcPricesWrapperREADONLY (bo,bp,bt) = {
918+ let eF = bs(bo, bp, bt)
919+ $Tuple2(nil, [toString(eF[0]), toString(eF[1]), toString(eF[2])])
745920 }
746921
747922
748923
749-@Callable(di)
750-func putForFree (ek) = if ((0 > ek))
751- then am("wrong slippage")
752- else if ((size(di.payments) != 2))
753- then am("2 payments expected")
754- else {
755- let dK = dl(toString(di.caller), toBase58String(di.transactionId), AttachedPayment(value(di.payments[0]).assetId, value(di.payments[0]).amount), di.payments[1], ek, false, false, 0, "")
756- dK._9
757- }
924+@Callable(de)
925+func fromX18WrapperREADONLY (F,eG) = $Tuple2(nil, E(parseBigIntValue(F), eG))
758926
759927
760928
761-@Callable(di)
762-func get () = {
763- let cy = dh(di)
764- let el = cy._1
765- let ce = cy._2
766- let cp = cy._3
767- let bH = cy._4
768- let cf = cy._5
769- let em = invoke(az, "burn", [cp], [AttachedPayment(bH, cp)])
770- if ((em == em))
771- then cf
772- else throw("Strict value is not equal to itself.")
929+@Callable(de)
930+func toX18WrapperREADONLY (C,D) = $Tuple2(nil, toString(B(C, D)))
931+
932+
933+
934+@Callable(de)
935+func calcPriceBigIntWrapperREADONLY (aY,aZ) = $Tuple2(nil, toString(aX(parseBigIntValue(aY), parseBigIntValue(aZ))))
936+
937+
938+
939+@Callable(de)
940+func estimatePutOperationWrapperREADONLY (bE,bd,cd,ce,cf,cg,eH,ch,ci) = $Tuple2(nil, cc(bE, bd, cd, ce, cf, cg, eH, ch, ci, false, 0, ""))
941+
942+
943+
944+@Callable(de)
945+func estimateGetOperationWrapperREADONLY (bE,eI,bG,eH) = {
946+ let cw = bD(bE, eI, bG, addressFromStringValue(eH))
947+ $Tuple2(nil, $Tuple10(cw._1, cw._2, cw._3, cw._4, cw._5, cw._6, cw._7, toString(cw._8), cw._9, cw._10))
773948 }
774949
775950
776-
777-@Callable(di)
778-func getOneTkn (en,eo,ep,eq,bg) = if ((size(di.payments) != 1))
779- then am("1 payment expected")
780- else {
781- let bw = aE()
782- let bK = bw[r]
783- let bL = bw[s]
784- let bM = bw[t]
785- let bN = parseIntValue(bw[u])
786- let bO = parseIntValue(bw[v])
787- let bP = bw[q]
788- let dF = aI()
789- let dT = valueOrErrorMessage(addressFromString(dF[A]), "Wrong gwxRewardContract address")
790- let dk = value(di.payments[0])
791- let dV = valueOrElse(getString(this, ab()), "")
792- let bJ = if ((dV == toString(di.caller)))
793- then di.originCaller
794- else di.caller
795- let bG = toBase58String(di.transactionId)
796- let bH = value(dk.assetId)
797- let cp = dk.amount
798- if ((1000000000 > cp))
799- then am("Min payment 10 LP")
800- else if (if (if ((0 > bg))
801- then true
802- else (0 > en))
803- then true
804- else (0 > ep))
805- then am("Wrong params")
806- else if ((bK != toBase58String(bH)))
807- then am("Wrong LP")
808- else {
809- let cy = bF(toBase58String(di.transactionId), toBase58String(bH), cp, di.caller)
810- let er = cy._1
811- let es = cy._2
812- let bT = aY(bL)
813- let bV = aY(bM)
814- let et = if ((eq == bL))
815- then $Tuple7((bT - er), (bV - es), en, es, 0, 0, (er + en))
816- else if ((eq == bM))
817- then $Tuple7((bT - er), (bV - es), 0, 0, en, er, (es + en))
818- else am("wrong outAssetId")
819- let ea = et._1
820- let eb = et._2
821- let ec = et._3
822- let ed = et._4
823- let ee = et._5
824- let ef = et._6
825- let eu = et._7
826- if (if ((0 > ec))
827- then true
828- else (0 > ee))
829- then am("Wrong calc")
830- else {
831- let bl = invoke(dT, "calcD", [toString(ea), toString(eb), aA, h, i], nil)
832- let bk = invoke(dT, "calcD", [toString(((ea - ec) + ef)), toString(((eb + ed) - ee)), aA, h, i], nil)
833- let eg = bj(parseBigIntValue(as(bk)), parseBigIntValue(as(bl)), g)
834- if ((eg == eg))
835- then {
836- let ev = bd(toBigInt(eu), toBigInt(ep), toBigInt(bg))
837- if ((ev == ev))
838- then {
839- let ew = if ((eq == bL))
840- then $Tuple2(toInt(ev._2), 0)
841- else $Tuple2(0, toInt(ev._2))
842- let ex = ew._1
843- let ey = ew._2
844- let ez = (ex + ey)
845- let eA = dp(ez)
846- let eB = eA._1
847- let dY = eA._2
848- let eC = if ((eq == "WAVES"))
849- then unit
850- else fromBase58String(eq)
851- let ej = if ((dY > 0))
852- then [ScriptTransfer(aD, dY, eC)]
853- else nil
854- let bS = if ((bN >= bO))
855- then bN
856- else bO
857- if ((bS == bS))
858- then {
859- let eD = ba(C(bV, bS), C(bT, bS))
860- let eE = F(eD, a)
861- let cf = [ScriptTransfer(bJ, eB, eC), StringEntry(X(toString(bJ), bG), aU(ex, ey, cp, eE, height, lastBlock.timestamp)), IntegerEntry(Q(), eE), IntegerEntry(R(height, lastBlock.timestamp), eE)]
862- if ((cf == cf))
863- then {
864- let eF = invoke(az, "burn", [cp], [AttachedPayment(bH, cp)])
865- if ((eF == eF))
866- then (cf ++ ej)
867- else throw("Strict value is not equal to itself.")
868- }
869- else throw("Strict value is not equal to itself.")
870- }
871- else throw("Strict value is not equal to itself.")
872- }
873- else throw("Strict value is not equal to itself.")
874- }
875- else throw("Strict value is not equal to itself.")
876- }
877- }
878- }
879-
880-
881-
882-@Callable(di)
883-func getNoLess (eG,eH) = {
884- let cy = dh(di)
885- let cd = cy._1
886- let ce = cy._2
887- let cp = cy._3
888- let bH = cy._4
889- let cf = cy._5
890- let eI = if ((cd >= eG))
891- then true
892- else am(((("Failed: " + toString(cd)) + " < ") + toString(eG)))
893- if ((eI == eI))
951+@Verifier(eJ)
952+func eK () = {
953+ let ar = eJ
954+ if ($isInstanceOf(ar, "Order"))
894955 then {
895- let eJ = if ((ce >= eH))
896- then true
897- else am(((("Failed: " + toString(ce)) + " < ") + toString(eH)))
898- if ((eJ == eJ))
899- then {
900- let eK = invoke(az, "burn", [cp], [AttachedPayment(bH, cp)])
901- if ((eK == eK))
902- then cf
903- else throw("Strict value is not equal to itself.")
904- }
905- else throw("Strict value is not equal to itself.")
906- }
907- else throw("Strict value is not equal to itself.")
908- }
909-
910-
911-
912-@Callable(di)
913-func unstakeAndGet (dq) = {
914- let dj = if ((size(di.payments) != 0))
915- then am("no payments expected")
916- else true
917- if ((dj == dj))
918- then {
919- let bw = aE()
920- let eL = aI()
921- let bK = fromBase58String(bw[r])
922- let eM = valueOrErrorMessage(addressFromString(eL[y]), "wrong")
923- let eN = invoke(eM, "unstake", [toBase58String(bK), dq], nil)
924- if ((eN == eN))
925- then {
926- let cy = bF(toBase58String(di.transactionId), toBase58String(bK), dq, di.caller)
927- let bP = parseIntValue(cy._9)
928- let cf = cy._10
929- let eO = if (if (aB())
930- then true
931- else (bP == o))
932- then am(("Blocked: " + toString(bP)))
933- else true
934- if ((eO == eO))
935- then {
936- let eP = invoke(az, "burn", [dq], [AttachedPayment(bK, dq)])
937- if ((eP == eP))
938- then cf
939- else throw("Strict value is not equal to itself.")
940- }
941- else throw("Strict value is not equal to itself.")
942- }
943- else throw("Strict value is not equal to itself.")
944- }
945- else throw("Strict value is not equal to itself.")
946- }
947-
948-
949-
950-@Callable(di)
951-func activate (eQ,eR) = if ((toString(di.caller) != toString(az)))
952- then am("denied")
953- else $Tuple2([StringEntry(Y(), eQ), StringEntry(Z(), eR)], "success")
954-
955-
956-
957-@Callable(di)
958-func setS (eS,eO) = if ((toString(di.caller) != av(this, ab())))
959- then dv
960- else [StringEntry(eS, eO)]
961-
962-
963-
964-@Callable(di)
965-func setI (eS,eO) = if ((toString(di.caller) != av(this, ab())))
966- then dv
967- else [IntegerEntry(eS, eO)]
968-
969-
970-
971-@Callable(di)
972-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aE())
973-
974-
975-
976-@Callable(di)
977-func getAccBalanceWrapperREADONLY (aZ) = $Tuple2(nil, aY(aZ))
978-
979-
980-
981-@Callable(di)
982-func calcPricesWrapperREADONLY (bq,br,bv) = {
983- let eT = bu(bq, br, bv)
984- $Tuple2(nil, [toString(eT[0]), toString(eT[1]), toString(eT[2])])
985- }
986-
987-
988-
989-@Callable(di)
990-func fromX18WrapperREADONLY (G,eU) = $Tuple2(nil, F(parseBigIntValue(G), eU))
991-
992-
993-
994-@Callable(di)
995-func toX18WrapperREADONLY (D,E) = $Tuple2(nil, toString(C(D, E)))
996-
997-
998-
999-@Callable(di)
1000-func calcPriceBigIntWrapperREADONLY (bb,bc) = $Tuple2(nil, toString(ba(parseBigIntValue(bb), parseBigIntValue(bc))))
1001-
1002-
1003-
1004-@Callable(di)
1005-func estimatePutOperationWrapperREADONLY (bG,bg,ci,eV,ck,eW,eX,cm,cn) = $Tuple2(nil, cg(bG, bg, ci, eV, ck, eW, eX, cm, cn, false, 0, ""))
1006-
1007-
1008-
1009-@Callable(di)
1010-func estimateGetOperationWrapperREADONLY (bG,eY,bI,eX) = {
1011- let cy = bF(bG, eY, bI, addressFromStringValue(eX))
1012- $Tuple2(nil, $Tuple10(cy._1, cy._2, cy._3, cy._4, cy._5, cy._6, cy._7, toString(cy._8), cy._9, cy._10))
1013- }
1014-
1015-
1016-@Verifier(eZ)
1017-func fa () = {
1018- let at = eZ
1019- if ($isInstanceOf(at, "Order"))
1020- then {
1021- let cV = at
1022- let fb = aC()
1023- let ap = cU(cV)
1024- let fc = sigVerify(cV.bodyBytes, cV.proofs[0], cV.senderPublicKey)
1025- let fd = sigVerify(cV.bodyBytes, cV.proofs[1], fb)
1026- if (if (if (ap)
1027- then fc
956+ let cR = ar
957+ let eL = aA()
958+ let an = cQ(cR)
959+ let eM = sigVerify(cR.bodyBytes, cR.proofs[0], cR.senderPublicKey)
960+ let eN = sigVerify(cR.bodyBytes, cR.proofs[1], eL)
961+ if (if (if (an)
962+ then eM
1028963 else false)
1029- then fd
964+ then eN
1030965 else false)
1031966 then true
1032- else ao(ap, fc, fd)
967+ else am(an, eM, eN)
1033968 }
1034969 else {
1035- let fe = {
1036- let ff = ds()
1037- if ($isInstanceOf(ff, "ByteVector"))
970+ let eO = {
971+ let eP = dj()
972+ if ($isInstanceOf(eP, "ByteVector"))
1038973 then {
1039- let dx = ff
1040- dx
974+ let do = eP
975+ do
1041976 }
1042- else if ($isInstanceOf(ff, "Unit"))
1043- then eZ.senderPublicKey
977+ else if ($isInstanceOf(eP, "Unit"))
978+ then eJ.senderPublicKey
1044979 else throw("Match error")
1045980 }
1046- sigVerify(eZ.bodyBytes, eZ.proofs[0], fe)
981+ sigVerify(eJ.bodyBytes, eJ.proofs[0], eO)
1047982 }
1048983 }
1049984
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 6 #-}
1+{-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
10-let d = 1000
10+let d = toBigInt(0)
1111
12-let e = toBigInt(0)
12+let e = toBigInt(1)
1313
14-let f = toBigInt(1)
14+let f = toBigInt((a - ((a * 1) / a)))
1515
16-let g = toBigInt((a - ((a * 1) / a)))
16+let g = "100"
1717
18-let h = "100"
18+let h = "1"
1919
20-let i = "1"
20+let i = "__"
2121
22-let j = "__"
22+let j = ""
2323
24-let k = ""
24+let k = 1
2525
26-let l = 1
26+let l = 2
2727
28-let m = 2
28+let m = 3
2929
30-let n = 3
30+let n = 4
3131
32-let o = 4
32+let o = 1
3333
34-let p = 1
34+let p = 2
3535
36-let q = 2
36+let q = 3
3737
38-let r = 3
38+let r = 4
3939
40-let s = 4
40+let s = 5
4141
42-let t = 5
42+let t = 6
4343
44-let u = 6
44+let u = 7
4545
46-let v = 7
46+let v = 8
4747
48-let w = 8
48+let w = 9
4949
50-let x = 9
50+let x = 1
5151
52-let y = 1
52+let y = 7
5353
54-let z = 7
54+let z = 10
5555
56-let A = 10
56+let A = "%s__delay"
5757
58-let B = 0
59-
60-func C (D,E) = fraction(toBigInt(D), c, toBigInt(E))
58+func B (C,D) = fraction(toBigInt(C), c, toBigInt(D))
6159
6260
63-func F (G,H) = toInt(fraction(G, toBigInt(H), c))
61+func E (F,G) = toInt(fraction(F, toBigInt(G), c))
6462
6563
66-func I (J,K,L) = fraction(J, K, L)
64+func H (I,J,K) = fraction(I, J, K)
6765
6866
69-func M (G) = if ((e > G))
70- then -(G)
71- else G
67+func L (F) = if ((d > F))
68+ then -(F)
69+ else F
7270
7371
74-func N () = "%s__factoryContract"
72+func M () = "%s__factoryContract"
7573
7674
77-func O () = "%s__managerPublicKey"
75+func N () = "%s__managerPublicKey"
7876
7977
80-func P () = "%s__pendingManagerPublicKey"
78+func O () = "%s__pendingManagerPublicKey"
8179
8280
83-func Q () = "%s%s__price__last"
81+func P () = "%s%s__price__last"
8482
8583
86-func R (S,T) = makeString(["%s%s%d%d__price__history", toString(S), toString(T)], j)
84+func Q (R,S) = makeString(["%s%s%d%d__price__history", toString(R), toString(S)], i)
8785
8886
89-func U (V,W) = ((("%s%s%s__P__" + V) + "__") + W)
87+func T (U,V) = ((("%s%s%s__P__" + U) + "__") + V)
9088
9189
92-func X (V,W) = ((("%s%s%s__G__" + V) + "__") + W)
90+func W (U,V) = ((("%s%s%s__G__" + U) + "__") + V)
9391
9492
95-func Y () = "%s__amountAsset"
93+func X () = "%s__amountAsset"
9694
9795
98-func Z () = "%s__priceAsset"
96+func Y () = "%s__priceAsset"
9997
10098
101-func aa () = "%s__amp"
99+func Z () = "%s__amp"
102100
103101
104-func ab () = "%s__addonAddr"
102+func aa () = "%s__addonAddr"
105103
106104
107-let ac = "%s__feePermille"
105+func ab (ac) = makeString(["%s%s__lastGetOneTknCall", ac], i)
108106
109-let ad = valueOrElse(getInteger(this, ac), B)
107+
108+func ad (ac) = makeString(["%s%s__lastPutOneTknCall", ac], i)
109+
110110
111111 func ae () = "%s__factoryConfig"
112112
113113
114114 func af () = "%s%s__matcher__publicKey"
115115
116116
117117 func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
118118
119119
120120 func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
121121
122122
123123 func al () = "%s__shutdown"
124124
125125
126-func am (an) = throw(makeString(["lp_stable.ride:", an], " "))
126+func am (an,ao,ap) = throw(((((("Failed: ordValid=" + toString(an)) + " sndrValid=") + toString(ao)) + " mtchrValid=") + toString(ap)))
127127
128128
129-func ao (ap,aq,ar) = am(((((("Failed: ordValid=" + toString(ap)) + " sndrValid=") + toString(aq)) + " mtchrValid=") + toString(ar)))
130-
131-
132-func as (G) = {
133- let at = G
134- if ($isInstanceOf(at, "String"))
129+func aq (F) = {
130+ let ar = F
131+ if ($isInstanceOf(ar, "String"))
135132 then {
136- let au = at
137- au
133+ let as = ar
134+ as
138135 }
139- else am("fail cast to String")
136+ else throw("fail cast to String")
140137 }
141138
142139
143-func av (aw,ax) = valueOrErrorMessage(getString(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
140+func at (au,av) = valueOrErrorMessage(getString(au, av), makeString(["mandatory ", toString(au), ".", av, " not defined"], ""))
144141
145142
146-func ay (aw,ax) = valueOrErrorMessage(getInteger(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
143+func aw (au,av) = valueOrErrorMessage(getInteger(au, av), makeString(["mandatory ", toString(au), ".", av, " not defined"], ""))
147144
148145
149-let az = addressFromStringValue(av(this, N()))
146+let ax = addressFromStringValue(at(this, M()))
150147
151-let aA = av(this, aa())
148+let ay = at(this, Z())
152149
153-func aB () = valueOrElse(getBoolean(az, al()), false)
150+func az () = valueOrElse(getBoolean(ax, al()), false)
154151
155152
156-func aC () = fromBase58String(av(az, af()))
153+func aA () = fromBase58String(at(ax, af()))
157154
158155
159-let aD = addressFromPublicKey(aC())
160-
161-func aE () = {
162- let aF = av(this, Y())
163- let aG = av(this, Z())
164- let aH = ay(az, aj(aG))
165- let ah = ay(az, aj(aF))
166- split(av(az, ag(toString(ah), toString(aH))), j)
156+func aB () = {
157+ let aC = at(this, X())
158+ let aD = at(this, Y())
159+ let aE = aw(ax, aj(aD))
160+ let ah = aw(ax, aj(aC))
161+ split(at(ax, ag(toString(ah), toString(aE))), i)
167162 }
168163
169164
170-func aI () = split(av(az, ae()), j)
165+func aF () = split(at(ax, ae()), i)
171166
172167
173-func aJ (aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT)], j)
168+func aG (aH,aI,aJ,aK,aL,aM,aN,aO,aP,aQ) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aH), toString(aI), toString(aJ), toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ)], i)
174169
175170
176-func aU (aV,aW,aX,aN,aQ,aR) = makeString(["%d%d%d%d%d%d", toString(aV), toString(aW), toString(aX), toString(aN), toString(aQ), toString(aR)], j)
171+func aR (aS,aT,aU,aK,aN,aO) = makeString(["%d%d%d%d%d%d", toString(aS), toString(aT), toString(aU), toString(aK), toString(aN), toString(aO)], i)
177172
178173
179-func aY (aZ) = if ((aZ == "WAVES"))
174+func aV (aW) = if ((aW == "WAVES"))
180175 then wavesBalance(this).available
181- else assetBalance(this, fromBase58String(aZ))
176+ else assetBalance(this, fromBase58String(aW))
182177
183178
184-func ba (bb,bc) = fraction(bb, c, bc)
179+func aX (aY,aZ) = fraction(aY, c, aZ)
185180
186181
187-func bd (be,bf,bg) = {
188- let bh = fraction((be - bf), b, bf)
189- let bi = ((bg - M(bh)) > e)
190- if (!(bi))
191- then am(("Big slippage: " + toString(bh)))
192- else $Tuple2(bi, min([be, bf]))
182+func ba (bb,bc,bd) = {
183+ let be = fraction((bb - bc), b, bc)
184+ let bf = ((bd - L(be)) > d)
185+ if (!(bf))
186+ then throw(("Big slpg: " + toString(be)))
187+ else $Tuple2(bf, min([bb, bc]))
193188 }
194189
195190
196-func bj (bk,bl,bg) = {
197- let bh = fraction(bl, b, bk)
198- let bm = (bg > bh)
199- if (if (bm)
191+func bg (bh,bi,bj) = {
192+ let be = fraction(bi, b, bh)
193+ let bk = (bj > be)
194+ if (if (bk)
200195 then true
201- else (bl > bk))
202- then am(((((((toString(bl) + " ") + toString(bk)) + " ") + toString(bh)) + " ") + toString(bg)))
203- else bm
196+ else (bi > bh))
197+ then throw(((((((toString(bi) + " ") + toString(bh)) + " ") + toString(be)) + " ") + toString(bj)))
198+ else bk
204199 }
205200
206201
207-func bn (bo,bp,bq,br) = {
208- let bs = C(bq, bo)
209- let bt = C(br, bp)
210- ba(bt, bs)
202+func bl (bm,bn,bo,bp) = {
203+ let bq = B(bo, bm)
204+ let br = B(bp, bn)
205+ aX(br, bq)
211206 }
212207
213208
214-func bu (bq,br,bv) = {
215- let bw = aE()
216- let bx = parseIntValue(bw[u])
217- let by = parseIntValue(bw[v])
218- let bz = bn(bx, by, bq, br)
219- let bc = C(bq, bx)
220- let bb = C(br, by)
221- let bA = C(bv, a)
222- let bB = ba(bc, bA)
223- let bC = ba(bb, bA)
224-[bz, bB, bC]
209+func bs (bo,bp,bt) = {
210+ let bu = aB()
211+ let bv = parseIntValue(bu[t])
212+ let bw = parseIntValue(bu[u])
213+ let bx = bl(bv, bw, bo, bp)
214+ let aZ = B(bo, bv)
215+ let aY = B(bp, bw)
216+ let by = B(bt, a)
217+ let bz = aX(aZ, by)
218+ let bA = aX(aY, by)
219+[bx, bz, bA]
225220 }
226221
227222
228-func bD (bq,br,bv) = {
229- let bE = bu(bq, br, bv)
230-[F(bE[0], a), F(bE[1], a), F(bE[2], a)]
223+func bB (bo,bp,bt) = {
224+ let bC = bs(bo, bp, bt)
225+[E(bC[0], a), E(bC[1], a), E(bC[2], a)]
231226 }
232227
233228
234-func bF (bG,bH,bI,bJ) = {
235- let bw = aE()
236- let bK = bw[r]
237- let bL = bw[s]
238- let bM = bw[t]
239- let bN = parseIntValue(bw[u])
240- let bO = parseIntValue(bw[v])
241- let bP = bw[q]
242- let bQ = valueOrErrorMessage(assetInfo(fromBase58String(bK)), "Wrong LP id").quantity
243- let bR = if ((bK == bH))
244- then true
245- else am("Wrong payment asset")
246- if ((bR == bR))
247- then {
248- let bS = if ((bN >= bO))
249- then bN
250- else bO
251- if ((bS == bS))
252- then {
253- let bT = aY(bL)
254- let bU = C(bT, bS)
255- let bV = aY(bM)
256- let bW = C(bV, bS)
257- let bX = ba(bW, bU)
258- let bY = F(bX, a)
259- let bZ = C(bI, a)
260- let ca = C(bQ, a)
261- let cb = fraction(bU, bZ, ca)
262- let cc = fraction(bW, bZ, ca)
263- let cd = F(cb, bS)
264- let ce = F(cc, bS)
265- let cf = if ((bG == ""))
266- then nil
267- else [ScriptTransfer(bJ, cd, if ((bL == "WAVES"))
268- then unit
269- else fromBase58String(bL)), ScriptTransfer(bJ, ce, if ((bM == "WAVES"))
270- then unit
271- else fromBase58String(bM)), StringEntry(X(toString(bJ), bG), aU(cd, ce, bI, bY, height, lastBlock.timestamp)), IntegerEntry(Q(), bY), IntegerEntry(R(height, lastBlock.timestamp), bY)]
272- $Tuple10(cd, ce, bL, bM, bT, bV, bQ, bX, bP, cf)
273- }
274- else throw("Strict value is not equal to itself.")
229+func bD (bE,bF,bG,bH) = {
230+ let bu = aB()
231+ let bI = bu[q]
232+ let bJ = bu[r]
233+ let bK = bu[s]
234+ let bL = parseIntValue(bu[t])
235+ let bM = parseIntValue(bu[u])
236+ let bN = bu[p]
237+ let bO = valueOrErrorMessage(assetInfo(fromBase58String(bI)), "Wrong LP id").quantity
238+ if ((bI != bF))
239+ then throw("Wrong pmt asset")
240+ else {
241+ let bP = aV(bJ)
242+ let bQ = B(bP, bL)
243+ let bR = aV(bK)
244+ let bS = B(bR, bM)
245+ let bT = aX(bS, bQ)
246+ let bU = E(bT, a)
247+ let bV = B(bG, a)
248+ let bW = B(bO, a)
249+ let bX = fraction(bQ, bV, bW)
250+ let bY = fraction(bS, bV, bW)
251+ let bZ = E(bX, bL)
252+ let ca = E(bY, bM)
253+ let cb = if ((bE == ""))
254+ then nil
255+ else [ScriptTransfer(bH, bZ, if ((bJ == "WAVES"))
256+ then unit
257+ else fromBase58String(bJ)), ScriptTransfer(bH, ca, if ((bK == "WAVES"))
258+ then unit
259+ else fromBase58String(bK)), StringEntry(W(toString(bH), bE), aR(bZ, ca, bG, bU, height, lastBlock.timestamp)), IntegerEntry(P(), bU), IntegerEntry(Q(height, lastBlock.timestamp), bU)]
260+ $Tuple10(bZ, ca, bJ, bK, bP, bR, bO, bT, bN, cb)
275261 }
276- else throw("Strict value is not equal to itself.")
277262 }
278263
279264
280-func cg (bG,ch,ci,cj,ck,cl,bJ,cm,cn,co,cp,cq) = {
281- let bw = aE()
282- let bK = fromBase58String(bw[r])
283- let cr = bw[s]
284- let cs = bw[t]
285- let ct = bw[w]
286- let cu = bw[x]
287- let bN = parseIntValue(bw[u])
288- let bO = parseIntValue(bw[v])
289- let bP = bw[q]
290- let bQ = valueOrErrorMessage(assetInfo(bK), "Wrong lp asset").quantity
291- let bT = if (cm)
292- then aY(cr)
293- else if (if (co)
294- then (cq == cr)
265+func cc (bE,bd,cd,ce,cf,cg,bH,ch,ci,cj,ck,cl) = {
266+ let bu = aB()
267+ let bI = fromBase58String(bu[q])
268+ let cm = bu[r]
269+ let cn = bu[s]
270+ let co = bu[v]
271+ let cp = bu[w]
272+ let cq = parseIntValue(bu[t])
273+ let cr = parseIntValue(bu[u])
274+ let bN = bu[p]
275+ let cs = valueOrErrorMessage(assetInfo(bI), "Wr lp as").quantity
276+ let bP = if (ch)
277+ then aV(cm)
278+ else if (if (cj)
279+ then (cl == cm)
295280 else false)
296- then (aY(cr) - cp)
297- else if (co)
298- then aY(cr)
299- else (aY(cr) - ci)
300- let bV = if (cm)
301- then aY(cs)
302- else if (if (co)
303- then (cq == cs)
281+ then (aV(cm) - ck)
282+ else if (cj)
283+ then aV(cm)
284+ else (aV(cm) - cd)
285+ let bR = if (ch)
286+ then aV(cn)
287+ else if (if (cj)
288+ then (cl == cn)
304289 else false)
305- then (aY(cs) - cp)
306- else if (co)
307- then aY(cs)
308- else (aY(cs) - ck)
309- let bS = if ((bN >= bO))
310- then bN
311- else bO
312- if ((bS == bS))
290+ then (aV(cn) - ck)
291+ else if (cj)
292+ then aV(cn)
293+ else (aV(cn) - cf)
294+ let ct = B(cd, cq)
295+ let cu = B(cf, cr)
296+ let cv = aX(cu, ct)
297+ let bQ = B(bP, cq)
298+ let bS = B(bR, cr)
299+ let cw = if ((cs == 0))
313300 then {
314- let cv = C(ci, bS)
315- let cw = C(ck, bS)
316- let cx = ba(cw, cv)
317- let bU = C(bT, bS)
318- let bW = C(bV, bS)
319- let cy = if ((bQ == 0))
320- then {
321- let bX = e
322- let cz = e
323- let cA = pow((cv * cw), 0, toBigInt(5), 1, 0, DOWN)
324- $Tuple5(F(cA, a), F(cv, bS), F(cw, bS), ba((bW + cw), (bU + cv)), cz)
301+ let bT = d
302+ let cx = d
303+ let by = pow((ct * cu), 0, toBigInt(5), 1, 0, DOWN)
304+ $Tuple5(E(by, a), E(ct, cq), E(cu, cr), aX((bS + cu), (bQ + ct)), cx)
305+ }
306+ else {
307+ let bT = aX(bS, bQ)
308+ let cy = fraction(L((bT - cv)), c, bT)
309+ let cx = B(bd, a)
310+ if (if ((bT != d))
311+ then (cy > cx)
312+ else false)
313+ then throw(((("Price slippage " + toString(cy)) + " > ") + toString(cx)))
314+ else {
315+ let cz = B(cs, a)
316+ let cA = fraction(ct, bT, c)
317+ let cB = fraction(cu, c, bT)
318+ let cC = if ((cA > cu))
319+ then $Tuple2(cB, cu)
320+ else $Tuple2(ct, cA)
321+ let cD = cC._1
322+ let cE = cC._2
323+ let by = fraction(cz, cE, bS)
324+ $Tuple5(E(by, a), E(cD, cq), E(cE, cr), bT, cx)
325325 }
326- else {
327- let bX = ba(bW, bU)
328- let cB = fraction(M((bX - cx)), c, bX)
329- let cz = C(ch, a)
330- if (if ((bX != e))
331- then (cB > cz)
332- else false)
333- then am(((("Price slippage " + toString(cB)) + " > ") + toString(cz)))
334- else {
335- let ca = C(bQ, a)
336- let cC = fraction(cv, bX, c)
337- let cD = fraction(cw, c, bX)
338- let cE = if ((cC > cw))
339- then $Tuple2(cD, cv)
340- else $Tuple2(cv, cC)
341- let cF = cE._1
342- let cG = cE._2
343- let cA = fraction(ca, cG, bW)
344- $Tuple5(F(cA, a), F(cF, bS), F(cG, bS), bX, cz)
345- }
346- }
347- let cH = cy._1
348- let cI = cy._2
349- let cJ = cy._3
350- let cK = F(cy._4, a)
351- let cL = F(cy._5, a)
352- let cM = if ((cH > 0))
353- then true
354- else am("LP <= 0")
355- if ((cM == cM))
356- then {
357- let cN = if (!(cn))
358- then 0
359- else cH
360- let cO = (ci - cI)
361- let cP = (ck - cJ)
362- let cQ = if (if (co)
363- then (cq == cr)
364- else false)
365- then $Tuple2(cp, 0)
366- else if (if (co)
367- then (cq == cs)
368- else false)
369- then $Tuple2(0, cp)
370- else $Tuple2(cI, cJ)
371- let cR = cQ._1
372- let cS = cQ._2
373- let cT = [IntegerEntry(Q(), cK), IntegerEntry(R(height, lastBlock.timestamp), cK), StringEntry(U(bJ, bG), aJ(cR, cS, cN, cK, ch, cL, height, lastBlock.timestamp, cO, cP))]
374- $Tuple13(cH, cN, cK, bT, bV, bQ, bK, bP, cT, cO, cP, cj, cl)
375- }
376- else throw("Strict value is not equal to itself.")
377326 }
378- else throw("Strict value is not equal to itself.")
327+ let cF = cw._1
328+ let cG = cw._2
329+ let cH = cw._3
330+ let bU = E(cw._4, a)
331+ let cI = E(cw._5, a)
332+ if ((0 >= cF))
333+ then throw("LP <= 0")
334+ else {
335+ let cJ = if (!(ci))
336+ then 0
337+ else cF
338+ let cK = (cd - cG)
339+ let cL = (cf - cH)
340+ let cM = if (if (cj)
341+ then (cl == cm)
342+ else false)
343+ then $Tuple2(ck, 0)
344+ else if (if (cj)
345+ then (cl == cn)
346+ else false)
347+ then $Tuple2(0, ck)
348+ else $Tuple2(cG, cH)
349+ let cN = cM._1
350+ let cO = cM._2
351+ let cP = [IntegerEntry(P(), bU), IntegerEntry(Q(height, lastBlock.timestamp), bU), StringEntry(T(bH, bE), aG(cN, cO, cJ, bU, bd, cI, height, lastBlock.timestamp, cK, cL))]
352+ $Tuple13(cF, cJ, bU, bP, bR, cs, bI, bN, cP, cK, cL, ce, cg)
353+ }
379354 }
380355
381356
382-func cU (cV) = {
383- let bw = aE()
384- let cW = bw[s]
385- let cX = bw[t]
386- let bP = parseIntValue(bw[q])
387- let bx = parseIntValue(bw[u])
388- let by = parseIntValue(bw[v])
389- let cY = aY(cW)
390- let cZ = aY(cX)
391- let bX = if ((cV.orderType == Buy))
392- then bn(bx, by, (cY + cV.amount), cZ)
393- else bn(bx, by, (cY - cV.amount), cZ)
394- let bY = F(bX, a)
395- if (if (if (aB())
357+func cQ (cR) = {
358+ let bu = aB()
359+ let cS = bu[r]
360+ let cT = bu[s]
361+ let bN = parseIntValue(bu[p])
362+ let bv = parseIntValue(bu[t])
363+ let bw = parseIntValue(bu[u])
364+ let cU = aV(cS)
365+ let cV = aV(cT)
366+ let bT = if ((cR.orderType == Buy))
367+ then bl(bv, bw, (cU + cR.amount), cV)
368+ else bl(bv, bw, (cU - cR.amount), cV)
369+ let bU = E(bT, a)
370+ if (if (if (az())
396371 then true
397- else (bP == n))
372+ else (bN == m))
398373 then true
399- else (bP == o))
400- then am("Admin blocked")
374+ else (bN == n))
375+ then throw("Admin blocked")
401376 else {
402- let da = cV.assetPair.amountAsset
403- let db = if ((da == unit))
377+ let cW = cR.assetPair.amountAsset
378+ let cX = if ((cW == unit))
404379 then "WAVES"
405- else toBase58String(value(da))
406- let dc = cV.assetPair.priceAsset
407- let dd = if ((dc == unit))
380+ else toBase58String(value(cW))
381+ let cY = cR.assetPair.priceAsset
382+ let cZ = if ((cY == unit))
408383 then "WAVES"
409- else toBase58String(value(dc))
410- if (if ((db != cW))
384+ else toBase58String(value(cY))
385+ if (if ((cX != cS))
411386 then true
412- else (dd != cX))
413- then am("Wr assets")
387+ else (cZ != cT))
388+ then throw("Wr assets")
414389 else {
415- let de = cV.price
416- let bO = fraction(a, by, bx)
417- let df = I(de, a, bO)
418- let dg = if ((cV.orderType == Buy))
419- then (bY >= df)
420- else (df >= bY)
390+ let da = cR.price
391+ let cr = fraction(a, bw, bv)
392+ let db = H(da, a, cr)
393+ let dc = if ((cR.orderType == Buy))
394+ then (bU >= db)
395+ else (db >= bU)
421396 true
422397 }
423398 }
424399 }
425400
426401
427-func dh (di) = {
428- let dj = if ((size(di.payments) == 1))
402+func dd (de) = if ((size(de.payments) != 1))
403+ then throw("1 pmnt exp")
404+ else {
405+ let df = value(de.payments[0])
406+ let bF = value(df.assetId)
407+ let ck = df.amount
408+ let cw = bD(toBase58String(de.transactionId), toBase58String(bF), ck, de.caller)
409+ let bZ = cw._1
410+ let ca = cw._2
411+ let bN = parseIntValue(cw._9)
412+ let cb = cw._10
413+ if (if (az())
414+ then true
415+ else (bN == n))
416+ then throw(("Admin blocked: " + toString(bN)))
417+ else $Tuple5(bZ, ca, ck, bF, cb)
418+ }
419+
420+
421+func dg (ac,V,dh,di,bd,ci,cj,ck,cl) = {
422+ let cw = cc(V, bd, value(dh).amount, value(dh).assetId, value(di).amount, value(di).assetId, ac, false, ci, cj, ck, cl)
423+ let bN = parseIntValue(cw._8)
424+ if (if (if (az())
429425 then true
430- else am("1 payment expected")
431- if ((dj == dj))
432- then {
433- let dk = value(di.payments[0])
434- let bH = value(dk.assetId)
435- let cp = dk.amount
436- let cy = bF(toBase58String(di.transactionId), toBase58String(bH), cp, di.caller)
437- let cd = cy._1
438- let ce = cy._2
439- let bP = parseIntValue(cy._9)
440- let cf = cy._10
441- if (if (aB())
442- then true
443- else (bP == o))
444- then am(("Admin blocked: " + toString(bP)))
445- else $Tuple5(cd, ce, cp, bH, cf)
446- }
447- else throw("Strict value is not equal to itself.")
426+ else (bN == l))
427+ then true
428+ else (bN == n))
429+ then throw(("Blocked:" + toString(bN)))
430+ else cw
448431 }
449432
450433
451-func dl (dm,W,dn,do,bg,cn,co,cp,cq) = {
452- let cy = cg(W, bg, value(dn).amount, value(dn).assetId, value(do).amount, value(do).assetId, dm, false, cn, co, cp, cq)
453- let bP = parseIntValue(cy._8)
454- if (if (if (aB())
455- then true
456- else (bP == m))
457- then true
458- else (bP == o))
459- then am(("Blocked:" + toString(bP)))
460- else cy
461- }
462-
463-
464-func dp (dq) = {
465- let dr = fraction(dq, ad, d)
466- $Tuple2((dq - dr), dr)
467- }
468-
469-
470-func ds () = {
471- let at = getString(O())
472- if ($isInstanceOf(at, "String"))
434+func dj () = {
435+ let ar = getString(N())
436+ if ($isInstanceOf(ar, "String"))
473437 then {
474- let dt = at
475- fromBase58String(dt)
438+ let dk = ar
439+ fromBase58String(dk)
476440 }
477- else if ($isInstanceOf(at, "Unit"))
441+ else if ($isInstanceOf(ar, "Unit"))
478442 then unit
479443 else throw("Match error")
480444 }
481445
482446
483-func du () = {
484- let at = getString(P())
485- if ($isInstanceOf(at, "String"))
447+func dl () = {
448+ let ar = getString(O())
449+ if ($isInstanceOf(ar, "String"))
486450 then {
487- let dt = at
488- fromBase58String(dt)
451+ let dk = ar
452+ fromBase58String(dk)
489453 }
490- else if ($isInstanceOf(at, "Unit"))
454+ else if ($isInstanceOf(ar, "Unit"))
491455 then unit
492456 else throw("Match error")
493457 }
494458
495459
496-let dv = am("Permission denied")
460+let dm = throw("Permission denied")
497461
498-func dw (di) = {
499- let at = ds()
500- if ($isInstanceOf(at, "ByteVector"))
462+func dn (de) = {
463+ let ar = dj()
464+ if ($isInstanceOf(ar, "ByteVector"))
501465 then {
502- let dx = at
503- if ((di.callerPublicKey == dx))
466+ let do = ar
467+ if ((de.callerPublicKey == do))
504468 then true
505- else dv
469+ else dm
506470 }
507- else if ($isInstanceOf(at, "Unit"))
508- then if ((di.caller == this))
471+ else if ($isInstanceOf(ar, "Unit"))
472+ then if ((de.caller == this))
509473 then true
510- else dv
474+ else dm
511475 else throw("Match error")
512476 }
513477
514478
515-@Callable(di)
516-func constructor (az) = {
517- let dy = dw(di)
518- if ((dy == dy))
519- then [StringEntry(N(), az)]
479+@Callable(de)
480+func constructor (M) = {
481+ let dp = dn(de)
482+ if ((dp == dp))
483+ then [StringEntry(M(), M)]
520484 else throw("Strict value is not equal to itself.")
521485 }
522486
523487
524488
525-@Callable(di)
526-func setManager (dz) = {
527- let dy = dw(di)
528- if ((dy == dy))
489+@Callable(de)
490+func setManager (dq) = {
491+ let dp = dn(de)
492+ if ((dp == dp))
529493 then {
530- let dA = fromBase58String(dz)
531- if ((dA == dA))
532- then [StringEntry(P(), dz)]
494+ let dr = fromBase58String(dq)
495+ if ((dr == dr))
496+ then [StringEntry(O(), dq)]
533497 else throw("Strict value is not equal to itself.")
534498 }
535499 else throw("Strict value is not equal to itself.")
536500 }
537501
538502
539503
540-@Callable(di)
504+@Callable(de)
541505 func confirmManager () = {
542- let dB = du()
543- let dC = if (isDefined(dB))
506+ let bC = dl()
507+ let ds = if (isDefined(bC))
544508 then true
545- else am("No pending manager")
546- if ((dC == dC))
509+ else throw("No pending manager")
510+ if ((ds == ds))
547511 then {
548- let dD = if ((di.callerPublicKey == value(dB)))
512+ let dt = if ((de.callerPublicKey == value(bC)))
549513 then true
550- else am("You are not pending manager")
551- if ((dD == dD))
552- then [StringEntry(O(), toBase58String(value(dB))), DeleteEntry(P())]
514+ else throw("You are not pending manager")
515+ if ((dt == dt))
516+ then [StringEntry(N(), toBase58String(value(bC))), DeleteEntry(O())]
553517 else throw("Strict value is not equal to itself.")
554518 }
555519 else throw("Strict value is not equal to itself.")
556520 }
557521
558522
559523
560-@Callable(di)
561-func put (bg,dE) = {
562- let dF = aI()
563- let dG = valueOrErrorMessage(addressFromString(dF[y]), "Wrong staking contract")
564- let dH = valueOrErrorMessage(addressFromString(dF[z]), "Wrogn slippage contract")
565- let dI = if ((bg >= 0))
566- then true
567- else am("wrong slippage")
568- if ((dI == dI))
569- then {
570- let dJ = if ((size(di.payments) == 2))
571- then true
572- else am("2 payments expected")
573- if ((dJ == dJ))
574- then {
575- let dK = dl(toString(di.caller), toBase58String(di.transactionId), AttachedPayment(value(di.payments[0]).assetId, value(di.payments[0]).amount), di.payments[1], bg, true, false, 0, "")
576- let cN = dK._2
577- let bK = dK._7
578- let cf = dK._9
579- let cO = dK._10
580- let cP = dK._11
581- let bL = dK._12
582- let bM = dK._13
583- let cy = invoke(az, "emit", [cN], nil)
584- if ((cy == cy))
585- then {
586- let dL = {
587- let at = cy
588- if ($isInstanceOf(at, "Address"))
524+@Callable(de)
525+func put (du,dv) = {
526+ let dw = aF()
527+ let dx = valueOrErrorMessage(addressFromString(dw[x]), "Wr st addr")
528+ let dy = valueOrErrorMessage(addressFromString(dw[y]), "Wr sl addr")
529+ if ((0 > du))
530+ then throw("Wrong slippage")
531+ else if ((size(de.payments) != 2))
532+ then throw("2 pmnts expd")
533+ else {
534+ let dz = dg(toString(de.caller), toBase58String(de.transactionId), AttachedPayment(value(de.payments[0]).assetId, value(de.payments[0]).amount), de.payments[1], du, true, false, 0, "")
535+ let cJ = dz._2
536+ let dA = dz._7
537+ let cb = dz._9
538+ let cK = dz._10
539+ let cL = dz._11
540+ let bJ = dz._12
541+ let bK = dz._13
542+ let cw = invoke(ax, "emit", [cJ], nil)
543+ if ((cw == cw))
544+ then {
545+ let dB = {
546+ let ar = cw
547+ if ($isInstanceOf(ar, "Address"))
548+ then {
549+ let dC = ar
550+ invoke(dC, "emit", [cJ], nil)
551+ }
552+ else unit
553+ }
554+ if ((dB == dB))
555+ then {
556+ let dD = if ((cK > 0))
557+ then invoke(dy, "put", nil, [AttachedPayment(bJ, cK)])
558+ else nil
559+ if ((dD == dD))
589560 then {
590- let dM = at
591- invoke(dM, "emit", [cN], nil)
561+ let dE = if ((cL > 0))
562+ then invoke(dy, "put", nil, [AttachedPayment(bK, cL)])
563+ else nil
564+ if ((dE == dE))
565+ then {
566+ let dF = if (dv)
567+ then {
568+ let dG = invoke(dx, "stake", nil, [AttachedPayment(dA, cJ)])
569+ if ((dG == dG))
570+ then nil
571+ else throw("Strict value is not equal to itself.")
572+ }
573+ else [ScriptTransfer(de.caller, cJ, dA)]
574+ (cb ++ dF)
575+ }
576+ else throw("Strict value is not equal to itself.")
592577 }
593- else unit
578+ else throw("Strict value is not equal to itself.")
594579 }
595- if ((dL == dL))
580+ else throw("Strict value is not equal to itself.")
581+ }
582+ else throw("Strict value is not equal to itself.")
583+ }
584+ }
585+
586+
587+
588+@Callable(de)
589+func putOneTkn (dH,dI,dJ,bd,dv) = {
590+ let bu = aF()
591+ let dx = valueOrErrorMessage(addressFromString(bu[x]), "Wr st addr")
592+ let dy = valueOrErrorMessage(addressFromString(bu[y]), "Wr sl addr")
593+ let dK = valueOrErrorMessage(addressFromString(bu[z]), "Wr gwx addr")
594+ let dL = aB()
595+ let bJ = dL[r]
596+ let bK = dL[s]
597+ let bL = parseIntValue(dL[t])
598+ let bM = parseIntValue(dL[u])
599+ let dM = valueOrElse(getString(this, aa()), "")
600+ let bH = if ((dM == toString(de.caller)))
601+ then de.originCaller
602+ else de.caller
603+ let dN = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
604+ let dO = reentrantInvoke(dN, "ensureCanPutOneTkn", [toString(bH)], nil)
605+ if ((dO == dO))
606+ then if (if (if (if ((0 >= bd))
607+ then true
608+ else (0 >= dH))
609+ then true
610+ else (0 >= dI))
611+ then true
612+ else (0 >= dJ))
613+ then throw("Wrong params")
614+ else if ((size(de.payments) != 1))
615+ then throw("1 pmnt expd")
616+ else {
617+ let df = value(de.payments[0])
618+ let bF = toBase58String(value(df.assetId))
619+ let ck = df.amount
620+ if (if (if ((dH > ck))
621+ then true
622+ else (dI > ck))
623+ then true
624+ else (10000000 > ck))
625+ then throw("Wrong pmt amt")
626+ else {
627+ let bP = aV(bJ)
628+ let bR = aV(bK)
629+ let dP = if ((bF == bJ))
630+ then $Tuple6((bP - ck), bR, (ck - dH), dI, 0, 0)
631+ else if ((bF == bK))
632+ then $Tuple6(bP, (bR - ck), 0, 0, (ck - dI), dH)
633+ else throw("wrong pmtAssetId")
634+ let dQ = dP._1
635+ let dR = dP._2
636+ let dS = dP._3
637+ let dT = dP._4
638+ let dU = dP._5
639+ let dV = dP._6
640+ let bi = invoke(dK, "calcD", [toString(dQ), toString(dR), ay, g, h], nil)
641+ let bh = invoke(dK, "calcD", [toString(toBigInt(((dQ + dS) - dV))), toString(toBigInt(((dR + dU) - dT))), ay, g, h], nil)
642+ let dW = bg(parseBigIntValue(aq(bh)), parseBigIntValue(aq(bi)), f)
643+ if ((dW == dW))
596644 then {
597- let dN = if ((cO > 0))
598- then invoke(dH, "put", nil, [AttachedPayment(bL, cO)])
599- else nil
600- if ((dN == dN))
645+ let dX = dg(toString(de.caller), toBase58String(de.transactionId), AttachedPayment(fromBase58String(bJ), dH), AttachedPayment(fromBase58String(bK), dI), bd, true, true, ck, bF)
646+ let dY = dX._2
647+ let dA = dX._7
648+ let cb = dX._9
649+ let cK = dX._10
650+ let cL = dX._11
651+ let dZ = ba(toBigInt(dY), toBigInt(dJ), toBigInt(bd))
652+ let cJ = toInt(dZ._2)
653+ let dz = invoke(ax, "emit", [cJ], nil)
654+ if ((dz == dz))
601655 then {
602- let dO = if ((cP > 0))
603- then invoke(dH, "put", nil, [AttachedPayment(bM, cP)])
604- else nil
605- if ((dO == dO))
656+ let dB = {
657+ let ar = dz
658+ if ($isInstanceOf(ar, "Address"))
659+ then {
660+ let dC = ar
661+ invoke(dC, "emit", [cJ], nil)
662+ }
663+ else unit
664+ }
665+ if ((dB == dB))
606666 then {
607- let dP = if (dE)
667+ let dD = if ((cK > 0))
668+ then invoke(dy, "put", nil, [AttachedPayment(fromBase58String(bJ), cK)])
669+ else nil
670+ if ((dD == dD))
608671 then {
609- let dQ = invoke(dG, "stake", nil, [AttachedPayment(bK, cN)])
610- if ((dQ == dQ))
611- then nil
672+ let dE = if ((cL > 0))
673+ then invoke(dy, "put", nil, [AttachedPayment(fromBase58String(bK), cL)])
674+ else nil
675+ if ((dE == dE))
676+ then {
677+ let dF = if (dv)
678+ then {
679+ let dG = invoke(dx, "stake", nil, [AttachedPayment(dA, cJ)])
680+ if ((dG == dG))
681+ then nil
682+ else throw("Strict value is not equal to itself.")
683+ }
684+ else [ScriptTransfer(de.caller, cJ, dA)]
685+ (cb ++ dF)
686+ }
612687 else throw("Strict value is not equal to itself.")
613688 }
614- else [ScriptTransfer(di.caller, cN, bK)]
615- (cf ++ dP)
689+ else throw("Strict value is not equal to itself.")
616690 }
617691 else throw("Strict value is not equal to itself.")
618692 }
619693 else throw("Strict value is not equal to itself.")
620694 }
695+ else throw("Strict value is not equal to itself.")
696+ }
697+ }
698+ else throw("Strict value is not equal to itself.")
699+ }
700+
701+
702+
703+@Callable(de)
704+func putForFree (ea) = if ((0 > ea))
705+ then throw("Wrong slpg")
706+ else if ((size(de.payments) != 2))
707+ then throw("2 pmnts expd")
708+ else {
709+ let dX = dg(toString(de.caller), toBase58String(de.transactionId), AttachedPayment(value(de.payments[0]).assetId, value(de.payments[0]).amount), de.payments[1], ea, false, false, 0, "")
710+ dX._9
711+ }
712+
713+
714+
715+@Callable(de)
716+func get () = {
717+ let cw = dd(de)
718+ let eb = cw._1
719+ let ca = cw._2
720+ let ck = cw._3
721+ let bF = cw._4
722+ let cb = cw._5
723+ let ec = invoke(ax, "burn", [ck], [AttachedPayment(bF, ck)])
724+ if ((ec == ec))
725+ then cb
726+ else throw("Strict value is not equal to itself.")
727+ }
728+
729+
730+
731+@Callable(de)
732+func getOneTkn (ed,ee,ef,eg,bd) = if ((size(de.payments) != 1))
733+ then throw("1 pmnt expd")
734+ else {
735+ let bu = aB()
736+ let bI = bu[q]
737+ let bJ = bu[r]
738+ let bK = bu[s]
739+ let bL = parseIntValue(bu[t])
740+ let bM = parseIntValue(bu[u])
741+ let bN = bu[p]
742+ let dw = aF()
743+ let dK = valueOrErrorMessage(addressFromString(dw[z]), "Wr sl addr")
744+ let df = value(de.payments[0])
745+ let dM = valueOrElse(getString(this, aa()), "")
746+ let bH = if ((dM == toString(de.caller)))
747+ then de.originCaller
748+ else de.caller
749+ let bE = toBase58String(de.transactionId)
750+ let bF = value(df.assetId)
751+ let ck = df.amount
752+ let dN = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
753+ let dO = reentrantInvoke(dN, "ensureCanGetOneTkn", [toString(bH)], nil)
754+ if ((dO == dO))
755+ then if ((1000000000 > ck))
756+ then throw("Min pmt 10 LP")
757+ else if (if (if ((0 > bd))
758+ then true
759+ else (0 > ed))
760+ then true
761+ else (0 > ef))
762+ then throw("Wrong params")
763+ else if ((bI != toBase58String(bF)))
764+ then throw("Wrong LP")
765+ else {
766+ let cw = bD(toBase58String(de.transactionId), toBase58String(bF), ck, de.caller)
767+ let eh = cw._1
768+ let ei = cw._2
769+ let bP = aV(bJ)
770+ let bR = aV(bK)
771+ let ej = if ((eg == bJ))
772+ then $Tuple7((bP - eh), (bR - ei), ed, ei, 0, 0, (eh + ed))
773+ else if ((eg == bK))
774+ then $Tuple7((bP - eh), (bR - ei), 0, 0, ed, eh, (ei + ed))
775+ else throw("wrong outAssetId")
776+ let dQ = ej._1
777+ let dR = ej._2
778+ let dS = ej._3
779+ let dT = ej._4
780+ let dU = ej._5
781+ let dV = ej._6
782+ let ek = ej._7
783+ if (if ((0 > dS))
784+ then true
785+ else (0 > dU))
786+ then throw("Wrong calc")
787+ else {
788+ let bi = invoke(dK, "calcD", [toString(dQ), toString(dR), ay, g, h], nil)
789+ let bh = invoke(dK, "calcD", [toString(((dQ - dS) + dV)), toString(((dR + dT) - dU)), ay, g, h], nil)
790+ let dW = bg(parseBigIntValue(aq(bh)), parseBigIntValue(aq(bi)), f)
791+ if ((dW == dW))
792+ then {
793+ let el = ba(toBigInt(ek), toBigInt(ef), toBigInt(bd))
794+ if ((el == el))
795+ then {
796+ let em = if ((eg == bJ))
797+ then $Tuple2(toInt(el._2), 0)
798+ else $Tuple2(0, toInt(el._2))
799+ let en = em._1
800+ let eo = em._2
801+ let ep = aX(B(bR, bM), B(bP, bL))
802+ let eq = E(ep, a)
803+ let cb = [ScriptTransfer(bH, (en + eo), if ((eg == "WAVES"))
804+ then unit
805+ else fromBase58String(eg)), StringEntry(W(toString(bH), bE), aR(en, eo, ck, eq, height, lastBlock.timestamp)), IntegerEntry(P(), eq), IntegerEntry(Q(height, lastBlock.timestamp), eq)]
806+ if ((cb == cb))
807+ then {
808+ let er = invoke(ax, "burn", [ck], [AttachedPayment(bF, ck)])
809+ if ((er == er))
810+ then cb
811+ else throw("Strict value is not equal to itself.")
812+ }
813+ else throw("Strict value is not equal to itself.")
814+ }
815+ else throw("Strict value is not equal to itself.")
816+ }
817+ else throw("Strict value is not equal to itself.")
818+ }
819+ }
820+ else throw("Strict value is not equal to itself.")
821+ }
822+
823+
824+
825+@Callable(de)
826+func getNoLess (es,et) = {
827+ let cw = dd(de)
828+ let bZ = cw._1
829+ let ca = cw._2
830+ let ck = cw._3
831+ let bF = cw._4
832+ let cb = cw._5
833+ if ((es > bZ))
834+ then throw(((("Failed: " + toString(bZ)) + " < ") + toString(es)))
835+ else if ((et > ca))
836+ then throw(((("Failed: " + toString(ca)) + " < ") + toString(et)))
837+ else {
838+ let eu = invoke(ax, "burn", [ck], [AttachedPayment(bF, ck)])
839+ if ((eu == eu))
840+ then cb
841+ else throw("Strict value is not equal to itself.")
842+ }
843+ }
844+
845+
846+
847+@Callable(de)
848+func unstakeAndGet (ev) = {
849+ let ew = if ((size(de.payments) != 0))
850+ then throw("No pmnts expd")
851+ else true
852+ if ((ew == ew))
853+ then {
854+ let bu = aB()
855+ let ex = aF()
856+ let dA = fromBase58String(bu[q])
857+ let ey = valueOrErrorMessage(addressFromString(ex[x]), "Wr st addr")
858+ let ez = invoke(ey, "unstake", [toBase58String(dA), ev], nil)
859+ if ((ez == ez))
860+ then {
861+ let cw = bD(toBase58String(de.transactionId), toBase58String(dA), ev, de.caller)
862+ let bN = parseIntValue(cw._9)
863+ let cb = cw._10
864+ let eA = if (if (az())
865+ then true
866+ else (bN == n))
867+ then throw(("Blocked: " + toString(bN)))
868+ else true
869+ if ((eA == eA))
870+ then {
871+ let eB = invoke(ax, "burn", [ev], [AttachedPayment(dA, ev)])
872+ if ((eB == eB))
873+ then cb
621874 else throw("Strict value is not equal to itself.")
622875 }
623876 else throw("Strict value is not equal to itself.")
624877 }
625878 else throw("Strict value is not equal to itself.")
626879 }
627880 else throw("Strict value is not equal to itself.")
628881 }
629882
630883
631884
632-@Callable(di)
633-func putOneTkn (dR,dS,bf,bg,dE) = {
634- let bw = aI()
635- let dG = valueOrErrorMessage(addressFromString(bw[y]), "Wrong staking contract")
636- let dH = valueOrErrorMessage(addressFromString(bw[z]), "Wrong slippage contract")
637- let dT = valueOrErrorMessage(addressFromString(bw[A]), "Wrong gwx reward contract")
638- let dU = aE()
639- let bL = dU[s]
640- let bM = dU[t]
641- let bN = parseIntValue(dU[u])
642- let bO = parseIntValue(dU[v])
643- let dV = valueOrElse(getString(this, ab()), "")
644- let bJ = if ((dV == toString(di.caller)))
645- then di.originCaller
646- else di.caller
647- if (if (if (if ((0 >= bg))
648- then true
649- else (0 >= dR))
650- then true
651- else (0 >= dS))
652- then true
653- else (0 >= bf))
654- then am("Wrong params")
655- else if ((size(di.payments) != 1))
656- then am("1 payment expected")
657- else {
658- let dk = value(di.payments[0])
659- let bH = toBase58String(value(dk.assetId))
660- let dW = dk.amount
661- let dX = dp(dW)
662- let cp = dX._1
663- let dY = dX._2
664- if (if (if ((dR > cp))
665- then true
666- else (dS > cp))
667- then true
668- else (10000000 > cp))
669- then am("wrong payment amount")
670- else {
671- let bT = aY(bL)
672- let bV = aY(bM)
673- let dZ = if ((bH == bL))
674- then $Tuple6((bT - cp), bV, (cp - dR), dS, 0, 0)
675- else if ((bH == bM))
676- then $Tuple6(bT, (bV - cp), 0, 0, (cp - dS), dR)
677- else am("wrong paymentAssetId")
678- let ea = dZ._1
679- let eb = dZ._2
680- let ec = dZ._3
681- let ed = dZ._4
682- let ee = dZ._5
683- let ef = dZ._6
684- let bl = invoke(dT, "calcD", [toString(ea), toString(eb), aA, h, i], nil)
685- let bk = invoke(dT, "calcD", [toString(toBigInt(((ea + ec) - ef))), toString(toBigInt(((eb + ee) - ed))), aA, h, i], nil)
686- let eg = bj(parseBigIntValue(as(bk)), parseBigIntValue(as(bl)), g)
687- if ((eg == eg))
688- then {
689- let dK = dl(toString(di.caller), toBase58String(di.transactionId), AttachedPayment(fromBase58String(bL), dR), AttachedPayment(fromBase58String(bM), dS), bg, true, true, cp, bH)
690- let be = dK._2
691- let bK = dK._7
692- let cf = dK._9
693- let cO = dK._10
694- let cP = dK._11
695- let eh = bd(toBigInt(be), toBigInt(bf), toBigInt(bg))
696- let cN = toInt(eh._2)
697- let ei = invoke(az, "emit", [cN], nil)
698- if ((ei == ei))
699- then {
700- let dL = {
701- let at = ei
702- if ($isInstanceOf(at, "Address"))
703- then {
704- let dM = at
705- invoke(dM, "emit", [cN], nil)
706- }
707- else unit
708- }
709- if ((dL == dL))
710- then {
711- let dN = if ((cO > 0))
712- then invoke(dH, "put", nil, [AttachedPayment(fromBase58String(bL), cO)])
713- else nil
714- if ((dN == dN))
715- then {
716- let dO = if ((cP > 0))
717- then invoke(dH, "put", nil, [AttachedPayment(fromBase58String(bM), cP)])
718- else nil
719- if ((dO == dO))
720- then {
721- let dP = if (dE)
722- then {
723- let dQ = invoke(dG, "stake", nil, [AttachedPayment(bK, cN)])
724- if ((dQ == dQ))
725- then nil
726- else throw("Strict value is not equal to itself.")
727- }
728- else [ScriptTransfer(di.caller, cN, bK)]
729- let ej = if ((dY > 0))
730- then [ScriptTransfer(aD, dY, fromBase58String(bH))]
731- else nil
732- ((cf ++ dP) ++ ej)
733- }
734- else throw("Strict value is not equal to itself.")
735- }
736- else throw("Strict value is not equal to itself.")
737- }
738- else throw("Strict value is not equal to itself.")
739- }
740- else throw("Strict value is not equal to itself.")
741- }
742- else throw("Strict value is not equal to itself.")
743- }
744- }
885+@Callable(de)
886+func activate (eC,eD) = if ((toString(de.caller) != toString(ax)))
887+ then throw("denied")
888+ else $Tuple2([StringEntry(X(), eC), StringEntry(Y(), eD)], "success")
889+
890+
891+
892+@Callable(de)
893+func setS (eE,eA) = if ((toString(de.caller) != at(this, aa())))
894+ then dm
895+ else [StringEntry(eE, eA)]
896+
897+
898+
899+@Callable(de)
900+func setI (eE,eA) = if ((toString(de.caller) != at(this, aa())))
901+ then dm
902+ else [IntegerEntry(eE, eA)]
903+
904+
905+
906+@Callable(de)
907+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aB())
908+
909+
910+
911+@Callable(de)
912+func getAccBalanceWrapperREADONLY (aW) = $Tuple2(nil, aV(aW))
913+
914+
915+
916+@Callable(de)
917+func calcPricesWrapperREADONLY (bo,bp,bt) = {
918+ let eF = bs(bo, bp, bt)
919+ $Tuple2(nil, [toString(eF[0]), toString(eF[1]), toString(eF[2])])
745920 }
746921
747922
748923
749-@Callable(di)
750-func putForFree (ek) = if ((0 > ek))
751- then am("wrong slippage")
752- else if ((size(di.payments) != 2))
753- then am("2 payments expected")
754- else {
755- let dK = dl(toString(di.caller), toBase58String(di.transactionId), AttachedPayment(value(di.payments[0]).assetId, value(di.payments[0]).amount), di.payments[1], ek, false, false, 0, "")
756- dK._9
757- }
924+@Callable(de)
925+func fromX18WrapperREADONLY (F,eG) = $Tuple2(nil, E(parseBigIntValue(F), eG))
758926
759927
760928
761-@Callable(di)
762-func get () = {
763- let cy = dh(di)
764- let el = cy._1
765- let ce = cy._2
766- let cp = cy._3
767- let bH = cy._4
768- let cf = cy._5
769- let em = invoke(az, "burn", [cp], [AttachedPayment(bH, cp)])
770- if ((em == em))
771- then cf
772- else throw("Strict value is not equal to itself.")
929+@Callable(de)
930+func toX18WrapperREADONLY (C,D) = $Tuple2(nil, toString(B(C, D)))
931+
932+
933+
934+@Callable(de)
935+func calcPriceBigIntWrapperREADONLY (aY,aZ) = $Tuple2(nil, toString(aX(parseBigIntValue(aY), parseBigIntValue(aZ))))
936+
937+
938+
939+@Callable(de)
940+func estimatePutOperationWrapperREADONLY (bE,bd,cd,ce,cf,cg,eH,ch,ci) = $Tuple2(nil, cc(bE, bd, cd, ce, cf, cg, eH, ch, ci, false, 0, ""))
941+
942+
943+
944+@Callable(de)
945+func estimateGetOperationWrapperREADONLY (bE,eI,bG,eH) = {
946+ let cw = bD(bE, eI, bG, addressFromStringValue(eH))
947+ $Tuple2(nil, $Tuple10(cw._1, cw._2, cw._3, cw._4, cw._5, cw._6, cw._7, toString(cw._8), cw._9, cw._10))
773948 }
774949
775950
776-
777-@Callable(di)
778-func getOneTkn (en,eo,ep,eq,bg) = if ((size(di.payments) != 1))
779- then am("1 payment expected")
780- else {
781- let bw = aE()
782- let bK = bw[r]
783- let bL = bw[s]
784- let bM = bw[t]
785- let bN = parseIntValue(bw[u])
786- let bO = parseIntValue(bw[v])
787- let bP = bw[q]
788- let dF = aI()
789- let dT = valueOrErrorMessage(addressFromString(dF[A]), "Wrong gwxRewardContract address")
790- let dk = value(di.payments[0])
791- let dV = valueOrElse(getString(this, ab()), "")
792- let bJ = if ((dV == toString(di.caller)))
793- then di.originCaller
794- else di.caller
795- let bG = toBase58String(di.transactionId)
796- let bH = value(dk.assetId)
797- let cp = dk.amount
798- if ((1000000000 > cp))
799- then am("Min payment 10 LP")
800- else if (if (if ((0 > bg))
801- then true
802- else (0 > en))
803- then true
804- else (0 > ep))
805- then am("Wrong params")
806- else if ((bK != toBase58String(bH)))
807- then am("Wrong LP")
808- else {
809- let cy = bF(toBase58String(di.transactionId), toBase58String(bH), cp, di.caller)
810- let er = cy._1
811- let es = cy._2
812- let bT = aY(bL)
813- let bV = aY(bM)
814- let et = if ((eq == bL))
815- then $Tuple7((bT - er), (bV - es), en, es, 0, 0, (er + en))
816- else if ((eq == bM))
817- then $Tuple7((bT - er), (bV - es), 0, 0, en, er, (es + en))
818- else am("wrong outAssetId")
819- let ea = et._1
820- let eb = et._2
821- let ec = et._3
822- let ed = et._4
823- let ee = et._5
824- let ef = et._6
825- let eu = et._7
826- if (if ((0 > ec))
827- then true
828- else (0 > ee))
829- then am("Wrong calc")
830- else {
831- let bl = invoke(dT, "calcD", [toString(ea), toString(eb), aA, h, i], nil)
832- let bk = invoke(dT, "calcD", [toString(((ea - ec) + ef)), toString(((eb + ed) - ee)), aA, h, i], nil)
833- let eg = bj(parseBigIntValue(as(bk)), parseBigIntValue(as(bl)), g)
834- if ((eg == eg))
835- then {
836- let ev = bd(toBigInt(eu), toBigInt(ep), toBigInt(bg))
837- if ((ev == ev))
838- then {
839- let ew = if ((eq == bL))
840- then $Tuple2(toInt(ev._2), 0)
841- else $Tuple2(0, toInt(ev._2))
842- let ex = ew._1
843- let ey = ew._2
844- let ez = (ex + ey)
845- let eA = dp(ez)
846- let eB = eA._1
847- let dY = eA._2
848- let eC = if ((eq == "WAVES"))
849- then unit
850- else fromBase58String(eq)
851- let ej = if ((dY > 0))
852- then [ScriptTransfer(aD, dY, eC)]
853- else nil
854- let bS = if ((bN >= bO))
855- then bN
856- else bO
857- if ((bS == bS))
858- then {
859- let eD = ba(C(bV, bS), C(bT, bS))
860- let eE = F(eD, a)
861- let cf = [ScriptTransfer(bJ, eB, eC), StringEntry(X(toString(bJ), bG), aU(ex, ey, cp, eE, height, lastBlock.timestamp)), IntegerEntry(Q(), eE), IntegerEntry(R(height, lastBlock.timestamp), eE)]
862- if ((cf == cf))
863- then {
864- let eF = invoke(az, "burn", [cp], [AttachedPayment(bH, cp)])
865- if ((eF == eF))
866- then (cf ++ ej)
867- else throw("Strict value is not equal to itself.")
868- }
869- else throw("Strict value is not equal to itself.")
870- }
871- else throw("Strict value is not equal to itself.")
872- }
873- else throw("Strict value is not equal to itself.")
874- }
875- else throw("Strict value is not equal to itself.")
876- }
877- }
878- }
879-
880-
881-
882-@Callable(di)
883-func getNoLess (eG,eH) = {
884- let cy = dh(di)
885- let cd = cy._1
886- let ce = cy._2
887- let cp = cy._3
888- let bH = cy._4
889- let cf = cy._5
890- let eI = if ((cd >= eG))
891- then true
892- else am(((("Failed: " + toString(cd)) + " < ") + toString(eG)))
893- if ((eI == eI))
951+@Verifier(eJ)
952+func eK () = {
953+ let ar = eJ
954+ if ($isInstanceOf(ar, "Order"))
894955 then {
895- let eJ = if ((ce >= eH))
896- then true
897- else am(((("Failed: " + toString(ce)) + " < ") + toString(eH)))
898- if ((eJ == eJ))
899- then {
900- let eK = invoke(az, "burn", [cp], [AttachedPayment(bH, cp)])
901- if ((eK == eK))
902- then cf
903- else throw("Strict value is not equal to itself.")
904- }
905- else throw("Strict value is not equal to itself.")
906- }
907- else throw("Strict value is not equal to itself.")
908- }
909-
910-
911-
912-@Callable(di)
913-func unstakeAndGet (dq) = {
914- let dj = if ((size(di.payments) != 0))
915- then am("no payments expected")
916- else true
917- if ((dj == dj))
918- then {
919- let bw = aE()
920- let eL = aI()
921- let bK = fromBase58String(bw[r])
922- let eM = valueOrErrorMessage(addressFromString(eL[y]), "wrong")
923- let eN = invoke(eM, "unstake", [toBase58String(bK), dq], nil)
924- if ((eN == eN))
925- then {
926- let cy = bF(toBase58String(di.transactionId), toBase58String(bK), dq, di.caller)
927- let bP = parseIntValue(cy._9)
928- let cf = cy._10
929- let eO = if (if (aB())
930- then true
931- else (bP == o))
932- then am(("Blocked: " + toString(bP)))
933- else true
934- if ((eO == eO))
935- then {
936- let eP = invoke(az, "burn", [dq], [AttachedPayment(bK, dq)])
937- if ((eP == eP))
938- then cf
939- else throw("Strict value is not equal to itself.")
940- }
941- else throw("Strict value is not equal to itself.")
942- }
943- else throw("Strict value is not equal to itself.")
944- }
945- else throw("Strict value is not equal to itself.")
946- }
947-
948-
949-
950-@Callable(di)
951-func activate (eQ,eR) = if ((toString(di.caller) != toString(az)))
952- then am("denied")
953- else $Tuple2([StringEntry(Y(), eQ), StringEntry(Z(), eR)], "success")
954-
955-
956-
957-@Callable(di)
958-func setS (eS,eO) = if ((toString(di.caller) != av(this, ab())))
959- then dv
960- else [StringEntry(eS, eO)]
961-
962-
963-
964-@Callable(di)
965-func setI (eS,eO) = if ((toString(di.caller) != av(this, ab())))
966- then dv
967- else [IntegerEntry(eS, eO)]
968-
969-
970-
971-@Callable(di)
972-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aE())
973-
974-
975-
976-@Callable(di)
977-func getAccBalanceWrapperREADONLY (aZ) = $Tuple2(nil, aY(aZ))
978-
979-
980-
981-@Callable(di)
982-func calcPricesWrapperREADONLY (bq,br,bv) = {
983- let eT = bu(bq, br, bv)
984- $Tuple2(nil, [toString(eT[0]), toString(eT[1]), toString(eT[2])])
985- }
986-
987-
988-
989-@Callable(di)
990-func fromX18WrapperREADONLY (G,eU) = $Tuple2(nil, F(parseBigIntValue(G), eU))
991-
992-
993-
994-@Callable(di)
995-func toX18WrapperREADONLY (D,E) = $Tuple2(nil, toString(C(D, E)))
996-
997-
998-
999-@Callable(di)
1000-func calcPriceBigIntWrapperREADONLY (bb,bc) = $Tuple2(nil, toString(ba(parseBigIntValue(bb), parseBigIntValue(bc))))
1001-
1002-
1003-
1004-@Callable(di)
1005-func estimatePutOperationWrapperREADONLY (bG,bg,ci,eV,ck,eW,eX,cm,cn) = $Tuple2(nil, cg(bG, bg, ci, eV, ck, eW, eX, cm, cn, false, 0, ""))
1006-
1007-
1008-
1009-@Callable(di)
1010-func estimateGetOperationWrapperREADONLY (bG,eY,bI,eX) = {
1011- let cy = bF(bG, eY, bI, addressFromStringValue(eX))
1012- $Tuple2(nil, $Tuple10(cy._1, cy._2, cy._3, cy._4, cy._5, cy._6, cy._7, toString(cy._8), cy._9, cy._10))
1013- }
1014-
1015-
1016-@Verifier(eZ)
1017-func fa () = {
1018- let at = eZ
1019- if ($isInstanceOf(at, "Order"))
1020- then {
1021- let cV = at
1022- let fb = aC()
1023- let ap = cU(cV)
1024- let fc = sigVerify(cV.bodyBytes, cV.proofs[0], cV.senderPublicKey)
1025- let fd = sigVerify(cV.bodyBytes, cV.proofs[1], fb)
1026- if (if (if (ap)
1027- then fc
956+ let cR = ar
957+ let eL = aA()
958+ let an = cQ(cR)
959+ let eM = sigVerify(cR.bodyBytes, cR.proofs[0], cR.senderPublicKey)
960+ let eN = sigVerify(cR.bodyBytes, cR.proofs[1], eL)
961+ if (if (if (an)
962+ then eM
1028963 else false)
1029- then fd
964+ then eN
1030965 else false)
1031966 then true
1032- else ao(ap, fc, fd)
967+ else am(an, eM, eN)
1033968 }
1034969 else {
1035- let fe = {
1036- let ff = ds()
1037- if ($isInstanceOf(ff, "ByteVector"))
970+ let eO = {
971+ let eP = dj()
972+ if ($isInstanceOf(eP, "ByteVector"))
1038973 then {
1039- let dx = ff
1040- dx
974+ let do = eP
975+ do
1041976 }
1042- else if ($isInstanceOf(ff, "Unit"))
1043- then eZ.senderPublicKey
977+ else if ($isInstanceOf(eP, "Unit"))
978+ then eJ.senderPublicKey
1044979 else throw("Match error")
1045980 }
1046- sigVerify(eZ.bodyBytes, eZ.proofs[0], fe)
981+ sigVerify(eJ.bodyBytes, eJ.proofs[0], eO)
1047982 }
1048983 }
1049984

github/deemru/w8io/c3f4982 
183.30 ms