tx · 6HWibhqdx21VVwqnFB4CwA4fhpwwSMWdnTLKU9PgZVB3

3Mz51suw3H98TBYJHSra1k2uSYQMv2vUkzt:  -0.03500000 Waves

2022.06.06 17:25 [2084613] smart account 3Mz51suw3H98TBYJHSra1k2uSYQMv2vUkzt > SELF 0.00000000 Waves

{ "type": 13, "id": "6HWibhqdx21VVwqnFB4CwA4fhpwwSMWdnTLKU9PgZVB3", "fee": 3500000, "feeAssetId": null, "timestamp": 1654525644295, "version": 1, "sender": "3Mz51suw3H98TBYJHSra1k2uSYQMv2vUkzt", "senderPublicKey": "8RPibCyjGbPr7troJPW7WTXkrbynj8HwkrckopSZoYVn", "proofs": [ "4LHayKnnzRFsqQqAdoxnGjdYRaXZsasH9HwYUakEZiVGbQFRRzn2NEKsKetH2d8EPnTNubTV76QETbqzRshQCm1s" ], "script": "base64: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CgJibhIKYW1Bc3NldERjbRoQCgJibxIKcHJBc3NldERjbRoLCgJicBIFYW1BbXQaCwoCYnESBXByQW10GhEKAmJyEgthbXRBc0FtdFgxOBoQCgJicxIKcHJBc0FtdFgxOBoQCgJidBIKY2FsY1ByaWNlcxoLCgJidRIFbHBBbXQaCQoCYnYSA2NmZxoOCgJidxIIYW10QXNEY20aDQoCYngSB3ByQXNEY20aDgoCYnkSCHByaWNlWDE4Gg4KAmJ6EghscEFtdFgxOBoMCgFjEgdzY2FsZTE4GhMKAmNBEg1scEVtaXNzaW9uWDE4GhAKAmNCEgpwclZpYUFtWDE4GhAKAmNDEgphbVZpYVByWDE4GhIKAmNEEgxleHBlY3RlZEFtdHMaFwoCY0USEWV4cEFtdEFzc2V0QW10WDE4GhkKAmNGEhNleHBQcmljZUFzc2V0QW10WDE4Gg8KAmNHEgljYWxjTHBBbXQaFAoCY0gSDmNhbGNBbUFzc2V0UG10GhQKAmNJEg5jYWxjUHJBc3NldFBtdBoSCgJjShIMc2xpcHBhZ2VDYWxjGg8KAmNLEgllbWl0THBBbXQaDAoCY0wSBmFtRGlmZhoMCgJjTRIGcHJEaWZmGhMKAmNOEg0kdDAxNTU3ODE1OTIzGhAKAmNPEgp3cml0ZUFtQW10GhAKAmNQEgp3cml0ZVByQW10GhEKAmNREgtjb21tb25TdGF0ZRoJCgJjUhIDbW9hGgsKAmNTEgVvcmRlchoNCgJjVBIHYW10QXNJZBoMCgJjVRIGcHJBc0lkGhUKAmNWEg9hY2NBbXRBc0JhbGFuY2UaFAoCY1cSDmFjY1ByQXNCYWxhbmNlGhAKAmNYEgpvckFtdEFzc2V0GhAKAmNZEgpvckFtdEFzU3RyGg8KAmNaEglvclByQXNzZXQaDgoCY2ESCG91dEFtQW10Gg4KAmNiEghvdXRQckFtdBoLCgJjYxIFc3RhdGUaCQoCY2QSA2VwbxoNCgJjZRIHaW5BbUFtdBoMCgJjZhIGaW5BbUlkGg0KAmNnEgdpblByQW10GgwKAmNoEgZpblBySWQaDAoCY2kSBmlzRXZhbBoMCgJjahIGZW1pdExwGhAKAmNrEgppc09uZUFzc2V0GgwKAmNsEgZwbXRBbXQaCwoCY20SBXBtdElkGg0KAmNuEgdhbUlkU3Ry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", "chainId": 84, "height": 2084613, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: AyeZvm8VT5tKEUeQ3vLt3GwCtU4B7CAfESzHou4y4Gww Next: BJ7o1MjJRnEzWAWZcqFVCJpGE4oREiwVMrpuqbt9zmo3 Diff:
OldNewDifferences
187187
188188 func vd (D1,D0,slpg) = {
189189 let diff = fraction(D0, scale8BigInt, D1)
190- let fail = (slpg > diff)
191- if (if (fail)
192- then true
193- else (D0 > D1))
194- then throw(((((((toString(D0) + " ") + toString(D1)) + " ") + toString(diff)) + " ") + toString(slpg)))
195- else fail
190+ if ((diff == diff))
191+ then {
192+ let error = throw("after diff error")
193+ if ((error == error))
194+ then {
195+ let fail = (slpg > diff)
196+ if (if (fail)
197+ then true
198+ else (D0 > D1))
199+ then throw(((((((toString(D0) + " ") + toString(D1)) + " ") + toString(diff)) + " ") + toString(slpg)))
200+ else fail
201+ }
202+ else throw("Strict value is not equal to itself.")
203+ }
204+ else throw("Strict value is not equal to itself.")
196205 }
197206
198207
334343 else calcLpAmt
335344 let amDiff = (inAmAmt - calcAmAssetPmt)
336345 let prDiff = (inPrAmt - calcPrAssetPmt)
337- let $t01553115876 = if (if (isOneAsset)
346+ let $t01557815923 = if (if (isOneAsset)
338347 then (pmtId == amIdStr)
339348 else false)
340349 then $Tuple2(pmtAmt, 0)
343352 else false)
344353 then $Tuple2(0, pmtAmt)
345354 else $Tuple2(calcAmAssetPmt, calcPrAssetPmt)
346- let writeAmAmt = $t01553115876._1
347- let writePrAmt = $t01553115876._2
355+ let writeAmAmt = $t01557815923._1
356+ let writePrAmt = $t01557815923._2
348357 let commonState = [IntegerEntry(pl(), curPrice), IntegerEntry(ph(height, lastBlock.timestamp), curPrice), StringEntry(pau(userAddress, txId58), dataPutActionInfo(writeAmAmt, writePrAmt, emitLpAmt, curPrice, slippage, slippageCalc, height, lastBlock.timestamp, amDiff, prDiff))]
349358 $Tuple13(calcLpAmt, emitLpAmt, curPrice, amBalance, prBalance, lpEm, lpId, sts, commonState, amDiff, prDiff, inAmId, inPrId)
350359 }
611620 else {
612621 let amBalance = getAccBalance(amId)
613622 let prBalance = getAccBalance(prId)
614- let $t02483225212 = if ((pmtAssetId == amId))
623+ let $t02487925259 = if ((pmtAssetId == amId))
615624 then $Tuple6((amBalance - pmtAmt), prBalance, (pmtAmt - amAssetPart), prAssetPart, 0, 0)
616625 else if ((pmtAssetId == prId))
617626 then $Tuple6(amBalance, (prBalance - pmtAmt), 0, 0, (pmtAmt - prAssetPart), amAssetPart)
618627 else throw("wrong pmtAssetId")
619- let amBalanceNow = $t02483225212._1
620- let prBalanceNow = $t02483225212._2
621- let virtSwapInAm = $t02483225212._3
622- let virtSwapOutPr = $t02483225212._4
623- let virtSwapInPr = $t02483225212._5
624- let virtSwapOutAm = $t02483225212._6
628+ let amBalanceNow = $t02487925259._1
629+ let prBalanceNow = $t02487925259._2
630+ let virtSwapInAm = $t02487925259._3
631+ let virtSwapOutPr = $t02487925259._4
632+ let virtSwapInPr = $t02487925259._5
633+ let virtSwapOutAm = $t02487925259._6
625634 let D0 = invoke(gwxCntr, "calcD", [toString(amBalanceNow), toString(prBalanceNow), A, Amult, Dconv], nil)
626635 let D1 = invoke(gwxCntr, "calcD", [toString(toBigInt(((amBalanceNow + virtSwapInAm) - virtSwapOutAm))), toString(toBigInt(((prBalanceNow + virtSwapInPr) - virtSwapOutPr))), A, Amult, Dconv], nil)
627636 let D0vsD1 = vd(parseBigIntValue(str(D1)), parseBigIntValue(str(D0)), slippage4D)
750759 let estimPrAmt = r._2
751760 let amBalance = getAccBalance(amId)
752761 let prBalance = getAccBalance(prId)
753- let $t03024330700 = if ((outAssetId == amId))
762+ let $t03029030747 = if ((outAssetId == amId))
754763 then $Tuple7((amBalance - estimAmAmt), (prBalance - estimPrAmt), exchResult, estimPrAmt, 0, 0, (estimAmAmt + exchResult))
755764 else if ((outAssetId == prId))
756765 then $Tuple7((amBalance - estimAmAmt), (prBalance - estimPrAmt), 0, 0, exchResult, estimAmAmt, (estimPrAmt + exchResult))
757766 else throw("wrong outAssetId")
758- let amBalanceNow = $t03024330700._1
759- let prBalanceNow = $t03024330700._2
760- let virtSwapInAm = $t03024330700._3
761- let virtSwapOutPr = $t03024330700._4
762- let virtSwapInPr = $t03024330700._5
763- let virtSwapOutAm = $t03024330700._6
764- let totalGet = $t03024330700._7
767+ let amBalanceNow = $t03029030747._1
768+ let prBalanceNow = $t03029030747._2
769+ let virtSwapInAm = $t03029030747._3
770+ let virtSwapOutPr = $t03029030747._4
771+ let virtSwapInPr = $t03029030747._5
772+ let virtSwapOutAm = $t03029030747._6
773+ let totalGet = $t03029030747._7
765774 if (if ((0 > virtSwapInAm))
766775 then true
767776 else (0 > virtSwapInPr))
775784 let finalRes = vad(toBigInt(totalGet), toBigInt(outAmount), toBigInt(slippage))
776785 if ((finalRes == finalRes))
777786 then {
778- let $t03140531509 = if ((outAssetId == amId))
787+ let $t03145231556 = if ((outAssetId == amId))
779788 then $Tuple2(toInt(finalRes._2), 0)
780789 else $Tuple2(0, toInt(finalRes._2))
781- let outAm = $t03140531509._1
782- let outPr = $t03140531509._2
790+ let outAm = $t03145231556._1
791+ let outPr = $t03145231556._2
783792 let curPrX18 = cpbi(t1(prBalance, prDcm), t1(amBalance, amDcm))
784793 let curPr = f1(curPrX18, scale8)
785794 let state = [ScriptTransfer(userAddress, (outAm + outPr), if ((outAssetId == "WAVES"))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let scale8 = 100000000
55
66 let scale8BigInt = toBigInt(100000000)
77
88 let scale18 = toBigInt(1000000000000000000)
99
1010 let zeroBigInt = toBigInt(0)
1111
1212 let oneBigInt = toBigInt(1)
1313
1414 let slippage4D = toBigInt((scale8 - ((scale8 * 1) / scale8)))
1515
1616 let Amult = "100"
1717
1818 let Dconv = "1"
1919
2020 let SEP = "__"
2121
2222 let EMPTY = ""
2323
2424 let PoolActive = 1
2525
2626 let PoolPutDis = 2
2727
2828 let PoolMatcherDis = 3
2929
3030 let PoolShutdown = 4
3131
3232 let idxPoolAddress = 1
3333
3434 let idxPoolSt = 2
3535
3636 let idxLPAsId = 3
3737
3838 let idxAmAsId = 4
3939
4040 let idxPrAsId = 5
4141
4242 let idxAmtAsDcm = 6
4343
4444 let idxPriceAsDcm = 7
4545
4646 let idxIAmtAsId = 8
4747
4848 let idxIPriceAsId = 9
4949
5050 let idxFactStakCntr = 1
5151
5252 let idxFactSlippCntr = 7
5353
5454 let idxFactGwxRewCntr = 10
5555
5656 let delay = "%s__delay"
5757
5858 func t1 (origVal,origScaleMult) = fraction(toBigInt(origVal), scale18, toBigInt(origScaleMult))
5959
6060
6161 func f1 (val,resultScaleMult) = toInt(fraction(val, toBigInt(resultScaleMult), scale18))
6262
6363
6464 func ts (amt,resScale,curScale) = fraction(amt, resScale, curScale)
6565
6666
6767 func abs (val) = if ((zeroBigInt > val))
6868 then -(val)
6969 else val
7070
7171
7272 func fc () = "%s__factoryContract"
7373
7474
7575 func mpk () = "%s__managerPublicKey"
7676
7777
7878 func pmpk () = "%s__pendingManagerPublicKey"
7979
8080
8181 func pl () = "%s%s__price__last"
8282
8383
8484 func ph (h,t) = makeString(["%s%s%d%d__price__history", toString(h), toString(t)], SEP)
8585
8686
8787 func pau (ua,txId) = ((("%s%s%s__P__" + ua) + "__") + txId)
8888
8989
9090 func gau (ua,txId) = ((("%s%s%s__G__" + ua) + "__") + txId)
9191
9292
9393 func aa () = "%s__amountAsset"
9494
9595
9696 func pa () = "%s__priceAsset"
9797
9898
9999 func amp () = "%s__amp"
100100
101101
102102 func ada () = "%s__addonAddr"
103103
104104
105105 func lgotc (caller) = makeString(["%s%s__lastGetOneTknCall", caller], SEP)
106106
107107
108108 func lsotc (caller) = makeString(["%s%s__lastPutOneTknCall", caller], SEP)
109109
110110
111111 func fcfg () = "%s__factoryConfig"
112112
113113
114114 func mtpk () = "%s%s__matcher__publicKey"
115115
116116
117117 func pc (iAmtAs,iPrAs) = (((("%d%d%s__" + iAmtAs) + "__") + iPrAs) + "__config")
118118
119119
120120 func mba (bAStr) = ("%s%s%s__mappings__baseAsset2internalId__" + bAStr)
121121
122122
123123 func aps () = "%s__shutdown"
124124
125125
126126 func toe (orV,sendrV,matchV) = throw(((((("Failed: ordValid=" + toString(orV)) + " sndrValid=") + toString(sendrV)) + " mtchrValid=") + toString(matchV)))
127127
128128
129129 func str (val) = match val {
130130 case valStr: String =>
131131 valStr
132132 case _ =>
133133 throw("fail cast to String")
134134 }
135135
136136
137137 func strf (addr,key) = valueOrErrorMessage(getString(addr, key), makeString(["mandatory ", toString(addr), ".", key, " not defined"], ""))
138138
139139
140140 func intf (addr,key) = valueOrErrorMessage(getInteger(addr, key), makeString(["mandatory ", toString(addr), ".", key, " not defined"], ""))
141141
142142
143143 let fca = addressFromStringValue(strf(this, fc()))
144144
145145 let A = strf(this, amp())
146146
147147 func igs () = valueOrElse(getBoolean(fca, aps()), false)
148148
149149
150150 func mp () = fromBase58String(strf(fca, mtpk()))
151151
152152
153153 func gpc () = {
154154 let amtAs = strf(this, aa())
155155 let priceAs = strf(this, pa())
156156 let iPriceAs = intf(fca, mba(priceAs))
157157 let iAmtAs = intf(fca, mba(amtAs))
158158 split(strf(fca, pc(toString(iAmtAs), toString(iPriceAs))), SEP)
159159 }
160160
161161
162162 func gfc () = split(strf(fca, fcfg()), SEP)
163163
164164
165165 func dataPutActionInfo (inAmtAssetAmt,inPriceAssetAmt,outLpAmt,price,slipByUser,slippageReal,txHeight,txTimestamp,slipageAmAmt,slipagePrAmt) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(inAmtAssetAmt), toString(inPriceAssetAmt), toString(outLpAmt), toString(price), toString(slipByUser), toString(slippageReal), toString(txHeight), toString(txTimestamp), toString(slipageAmAmt), toString(slipagePrAmt)], SEP)
166166
167167
168168 func dataGetActionInfo (outAmtAssetAmt,outPriceAssetAmt,inLpAmt,price,txHeight,txTimestamp) = makeString(["%d%d%d%d%d%d", toString(outAmtAssetAmt), toString(outPriceAssetAmt), toString(inLpAmt), toString(price), toString(txHeight), toString(txTimestamp)], SEP)
169169
170170
171171 func getAccBalance (assetId) = if ((assetId == "WAVES"))
172172 then wavesBalance(this).available
173173 else assetBalance(this, fromBase58String(assetId))
174174
175175
176176 func cpbi (prAmtX18,amAmtX18) = fraction(prAmtX18, scale18, amAmtX18)
177177
178178
179179 func vad (A1,A2,slippage) = {
180180 let diff = fraction((A1 - A2), scale8BigInt, A2)
181181 let pass = ((slippage - abs(diff)) > zeroBigInt)
182182 if (!(pass))
183183 then throw(("Big slpg: " + toString(diff)))
184184 else $Tuple2(pass, min([A1, A2]))
185185 }
186186
187187
188188 func vd (D1,D0,slpg) = {
189189 let diff = fraction(D0, scale8BigInt, D1)
190- let fail = (slpg > diff)
191- if (if (fail)
192- then true
193- else (D0 > D1))
194- then throw(((((((toString(D0) + " ") + toString(D1)) + " ") + toString(diff)) + " ") + toString(slpg)))
195- else fail
190+ if ((diff == diff))
191+ then {
192+ let error = throw("after diff error")
193+ if ((error == error))
194+ then {
195+ let fail = (slpg > diff)
196+ if (if (fail)
197+ then true
198+ else (D0 > D1))
199+ then throw(((((((toString(D0) + " ") + toString(D1)) + " ") + toString(diff)) + " ") + toString(slpg)))
200+ else fail
201+ }
202+ else throw("Strict value is not equal to itself.")
203+ }
204+ else throw("Strict value is not equal to itself.")
196205 }
197206
198207
199208 func pcp (amAssetDcm,prAssetDcm,amAmt,prAmt) = {
200209 let amtAsAmtX18 = t1(amAmt, amAssetDcm)
201210 let prAsAmtX18 = t1(prAmt, prAssetDcm)
202211 cpbi(prAsAmtX18, amtAsAmtX18)
203212 }
204213
205214
206215 func calcPrices (amAmt,prAmt,lpAmt) = {
207216 let cfg = gpc()
208217 let amtAsDcm = parseIntValue(cfg[idxAmtAsDcm])
209218 let prAsDcm = parseIntValue(cfg[idxPriceAsDcm])
210219 let priceX18 = pcp(amtAsDcm, prAsDcm, amAmt, prAmt)
211220 let amAmtX18 = t1(amAmt, amtAsDcm)
212221 let prAmtX18 = t1(prAmt, prAsDcm)
213222 let lpAmtX18 = t1(lpAmt, scale8)
214223 let lpPrInAmAsX18 = cpbi(amAmtX18, lpAmtX18)
215224 let lpPrInPrAsX18 = cpbi(prAmtX18, lpAmtX18)
216225 [priceX18, lpPrInAmAsX18, lpPrInPrAsX18]
217226 }
218227
219228
220229 func calculatePrices (amAmt,prAmt,lpAmt) = {
221230 let p = calcPrices(amAmt, prAmt, lpAmt)
222231 [f1(p[0], scale8), f1(p[1], scale8), f1(p[2], scale8)]
223232 }
224233
225234
226235 func ego (txId58,pmtAssetId,pmtLpAmt,userAddress) = {
227236 let cfg = gpc()
228237 let lpId = cfg[idxLPAsId]
229238 let amId = cfg[idxAmAsId]
230239 let prId = cfg[idxPrAsId]
231240 let amDcm = parseIntValue(cfg[idxAmtAsDcm])
232241 let prDcm = parseIntValue(cfg[idxPriceAsDcm])
233242 let sts = cfg[idxPoolSt]
234243 let lpEmiss = valueOrErrorMessage(assetInfo(fromBase58String(lpId)), "Wrong LP id").quantity
235244 if ((lpId != pmtAssetId))
236245 then throw("Wrong pmt asset")
237246 else {
238247 let amBalance = getAccBalance(amId)
239248 let amBalanceX18 = t1(amBalance, amDcm)
240249 let prBalance = getAccBalance(prId)
241250 let prBalanceX18 = t1(prBalance, prDcm)
242251 let curPriceX18 = cpbi(prBalanceX18, amBalanceX18)
243252 let curPrice = f1(curPriceX18, scale8)
244253 let pmtLpAmtX18 = t1(pmtLpAmt, scale8)
245254 let lpEmissX18 = t1(lpEmiss, scale8)
246255 let outAmAmtX18 = fraction(amBalanceX18, pmtLpAmtX18, lpEmissX18)
247256 let outPrAmtX18 = fraction(prBalanceX18, pmtLpAmtX18, lpEmissX18)
248257 let outAmAmt = f1(outAmAmtX18, amDcm)
249258 let outPrAmt = f1(outPrAmtX18, prDcm)
250259 let state = if ((txId58 == ""))
251260 then nil
252261 else [ScriptTransfer(userAddress, outAmAmt, if ((amId == "WAVES"))
253262 then unit
254263 else fromBase58String(amId)), ScriptTransfer(userAddress, outPrAmt, if ((prId == "WAVES"))
255264 then unit
256265 else fromBase58String(prId)), StringEntry(gau(toString(userAddress), txId58), dataGetActionInfo(outAmAmt, outPrAmt, pmtLpAmt, curPrice, height, lastBlock.timestamp)), IntegerEntry(pl(), curPrice), IntegerEntry(ph(height, lastBlock.timestamp), curPrice)]
257266 $Tuple10(outAmAmt, outPrAmt, amId, prId, amBalance, prBalance, lpEmiss, curPriceX18, sts, state)
258267 }
259268 }
260269
261270
262271 func epo (txId58,slippage,inAmAmt,inAmId,inPrAmt,inPrId,userAddress,isEval,emitLp,isOneAsset,pmtAmt,pmtId) = {
263272 let cfg = gpc()
264273 let lpId = fromBase58String(cfg[idxLPAsId])
265274 let amIdStr = cfg[idxAmAsId]
266275 let prIdStr = cfg[idxPrAsId]
267276 let inAmIdStr = cfg[idxIAmtAsId]
268277 let inPrIdStr = cfg[idxIPriceAsId]
269278 let amtDcm = parseIntValue(cfg[idxAmtAsDcm])
270279 let priceDcm = parseIntValue(cfg[idxPriceAsDcm])
271280 let sts = cfg[idxPoolSt]
272281 let lpEm = valueOrErrorMessage(assetInfo(lpId), "Wr lp as").quantity
273282 let amBalance = if (isEval)
274283 then getAccBalance(amIdStr)
275284 else if (if (isOneAsset)
276285 then (pmtId == amIdStr)
277286 else false)
278287 then (getAccBalance(amIdStr) - pmtAmt)
279288 else if (isOneAsset)
280289 then getAccBalance(amIdStr)
281290 else (getAccBalance(amIdStr) - inAmAmt)
282291 let prBalance = if (isEval)
283292 then getAccBalance(prIdStr)
284293 else if (if (isOneAsset)
285294 then (pmtId == prIdStr)
286295 else false)
287296 then (getAccBalance(prIdStr) - pmtAmt)
288297 else if (isOneAsset)
289298 then getAccBalance(prIdStr)
290299 else (getAccBalance(prIdStr) - inPrAmt)
291300 let inAmAssetAmtX18 = t1(inAmAmt, amtDcm)
292301 let inPrAssetAmtX18 = t1(inPrAmt, priceDcm)
293302 let userPriceX18 = cpbi(inPrAssetAmtX18, inAmAssetAmtX18)
294303 let amBalanceX18 = t1(amBalance, amtDcm)
295304 let prBalanceX18 = t1(prBalance, priceDcm)
296305 let r = if ((lpEm == 0))
297306 then {
298307 let curPriceX18 = zeroBigInt
299308 let slippageX18 = zeroBigInt
300309 let lpAmtX18 = pow((inAmAssetAmtX18 * inPrAssetAmtX18), 0, toBigInt(5), 1, 0, DOWN)
301310 $Tuple5(f1(lpAmtX18, scale8), f1(inAmAssetAmtX18, amtDcm), f1(inPrAssetAmtX18, priceDcm), cpbi((prBalanceX18 + inPrAssetAmtX18), (amBalanceX18 + inAmAssetAmtX18)), slippageX18)
302311 }
303312 else {
304313 let curPriceX18 = cpbi(prBalanceX18, amBalanceX18)
305314 let slippageRealX18 = fraction(abs((curPriceX18 - userPriceX18)), scale18, curPriceX18)
306315 let slippageX18 = t1(slippage, scale8)
307316 if (if ((curPriceX18 != zeroBigInt))
308317 then (slippageRealX18 > slippageX18)
309318 else false)
310319 then throw(((("Price slippage " + toString(slippageRealX18)) + " > ") + toString(slippageX18)))
311320 else {
312321 let lpEmissionX18 = t1(lpEm, scale8)
313322 let prViaAmX18 = fraction(inAmAssetAmtX18, curPriceX18, scale18)
314323 let amViaPrX18 = fraction(inPrAssetAmtX18, scale18, curPriceX18)
315324 let expectedAmts = if ((prViaAmX18 > inPrAssetAmtX18))
316325 then $Tuple2(amViaPrX18, inPrAssetAmtX18)
317326 else $Tuple2(inAmAssetAmtX18, prViaAmX18)
318327 let expAmtAssetAmtX18 = expectedAmts._1
319328 let expPriceAssetAmtX18 = expectedAmts._2
320329 let lpAmtX18 = fraction(lpEmissionX18, expPriceAssetAmtX18, prBalanceX18)
321330 $Tuple5(f1(lpAmtX18, scale8), f1(expAmtAssetAmtX18, amtDcm), f1(expPriceAssetAmtX18, priceDcm), curPriceX18, slippageX18)
322331 }
323332 }
324333 let calcLpAmt = r._1
325334 let calcAmAssetPmt = r._2
326335 let calcPrAssetPmt = r._3
327336 let curPrice = f1(r._4, scale8)
328337 let slippageCalc = f1(r._5, scale8)
329338 if ((0 >= calcLpAmt))
330339 then throw("LP <= 0")
331340 else {
332341 let emitLpAmt = if (!(emitLp))
333342 then 0
334343 else calcLpAmt
335344 let amDiff = (inAmAmt - calcAmAssetPmt)
336345 let prDiff = (inPrAmt - calcPrAssetPmt)
337- let $t01553115876 = if (if (isOneAsset)
346+ let $t01557815923 = if (if (isOneAsset)
338347 then (pmtId == amIdStr)
339348 else false)
340349 then $Tuple2(pmtAmt, 0)
341350 else if (if (isOneAsset)
342351 then (pmtId == prIdStr)
343352 else false)
344353 then $Tuple2(0, pmtAmt)
345354 else $Tuple2(calcAmAssetPmt, calcPrAssetPmt)
346- let writeAmAmt = $t01553115876._1
347- let writePrAmt = $t01553115876._2
355+ let writeAmAmt = $t01557815923._1
356+ let writePrAmt = $t01557815923._2
348357 let commonState = [IntegerEntry(pl(), curPrice), IntegerEntry(ph(height, lastBlock.timestamp), curPrice), StringEntry(pau(userAddress, txId58), dataPutActionInfo(writeAmAmt, writePrAmt, emitLpAmt, curPrice, slippage, slippageCalc, height, lastBlock.timestamp, amDiff, prDiff))]
349358 $Tuple13(calcLpAmt, emitLpAmt, curPrice, amBalance, prBalance, lpEm, lpId, sts, commonState, amDiff, prDiff, inAmId, inPrId)
350359 }
351360 }
352361
353362
354363 func moa (order) = {
355364 let cfg = gpc()
356365 let amtAsId = cfg[idxAmAsId]
357366 let prAsId = cfg[idxPrAsId]
358367 let sts = parseIntValue(cfg[idxPoolSt])
359368 let amtAsDcm = parseIntValue(cfg[idxAmtAsDcm])
360369 let prAsDcm = parseIntValue(cfg[idxPriceAsDcm])
361370 let accAmtAsBalance = getAccBalance(amtAsId)
362371 let accPrAsBalance = getAccBalance(prAsId)
363372 let curPriceX18 = if ((order.orderType == Buy))
364373 then pcp(amtAsDcm, prAsDcm, (accAmtAsBalance + order.amount), accPrAsBalance)
365374 else pcp(amtAsDcm, prAsDcm, (accAmtAsBalance - order.amount), accPrAsBalance)
366375 let curPrice = f1(curPriceX18, scale8)
367376 if (if (if (igs())
368377 then true
369378 else (sts == PoolMatcherDis))
370379 then true
371380 else (sts == PoolShutdown))
372381 then throw("Admin blocked")
373382 else {
374383 let orAmtAsset = order.assetPair.amountAsset
375384 let orAmtAsStr = if ((orAmtAsset == unit))
376385 then "WAVES"
377386 else toBase58String(value(orAmtAsset))
378387 let orPrAsset = order.assetPair.priceAsset
379388 let orPrAsStr = if ((orPrAsset == unit))
380389 then "WAVES"
381390 else toBase58String(value(orPrAsset))
382391 if (if ((orAmtAsStr != amtAsId))
383392 then true
384393 else (orPrAsStr != prAsId))
385394 then throw("Wr assets")
386395 else {
387396 let orderPrice = order.price
388397 let priceDcm = fraction(scale8, prAsDcm, amtAsDcm)
389398 let castOrderPrice = ts(orderPrice, scale8, priceDcm)
390399 let isOrderPriceValid = if ((order.orderType == Buy))
391400 then (curPrice >= castOrderPrice)
392401 else (castOrderPrice >= curPrice)
393402 true
394403 }
395404 }
396405 }
397406
398407
399408 func cg (i) = if ((size(i.payments) != 1))
400409 then throw("1 pmnt exp")
401410 else {
402411 let pmt = value(i.payments[0])
403412 let pmtAssetId = value(pmt.assetId)
404413 let pmtAmt = pmt.amount
405414 let r = ego(toBase58String(i.transactionId), toBase58String(pmtAssetId), pmtAmt, i.caller)
406415 let outAmAmt = r._1
407416 let outPrAmt = r._2
408417 let sts = parseIntValue(r._9)
409418 let state = r._10
410419 if (if (igs())
411420 then true
412421 else (sts == PoolShutdown))
413422 then throw(("Admin blocked: " + toString(sts)))
414423 else $Tuple5(outAmAmt, outPrAmt, pmtAmt, pmtAssetId, state)
415424 }
416425
417426
418427 func cp (caller,txId,amAsPmt,prAsPmt,slippage,emitLp,isOneAsset,pmtAmt,pmtId) = {
419428 let r = epo(txId, slippage, value(amAsPmt).amount, value(amAsPmt).assetId, value(prAsPmt).amount, value(prAsPmt).assetId, caller, false, emitLp, isOneAsset, pmtAmt, pmtId)
420429 let sts = parseIntValue(r._8)
421430 if (if (if (igs())
422431 then true
423432 else (sts == PoolPutDis))
424433 then true
425434 else (sts == PoolShutdown))
426435 then throw(("Blocked:" + toString(sts)))
427436 else r
428437 }
429438
430439
431440 func m () = match getString(mpk()) {
432441 case s: String =>
433442 fromBase58String(s)
434443 case _: Unit =>
435444 unit
436445 case _ =>
437446 throw("Match error")
438447 }
439448
440449
441450 func pm () = match getString(pmpk()) {
442451 case s: String =>
443452 fromBase58String(s)
444453 case _: Unit =>
445454 unit
446455 case _ =>
447456 throw("Match error")
448457 }
449458
450459
451460 let pd = throw("Permission denied")
452461
453462 func mm (i) = match m() {
454463 case pk: ByteVector =>
455464 if ((i.callerPublicKey == pk))
456465 then true
457466 else pd
458467 case _: Unit =>
459468 if ((i.caller == this))
460469 then true
461470 else pd
462471 case _ =>
463472 throw("Match error")
464473 }
465474
466475
467476 @Callable(i)
468477 func constructor (fc) = {
469478 let c = mm(i)
470479 if ((c == c))
471480 then [StringEntry(fc(), fc)]
472481 else throw("Strict value is not equal to itself.")
473482 }
474483
475484
476485
477486 @Callable(i)
478487 func setManager (pendingManagerPublicKey) = {
479488 let c = mm(i)
480489 if ((c == c))
481490 then {
482491 let cm = fromBase58String(pendingManagerPublicKey)
483492 if ((cm == cm))
484493 then [StringEntry(pmpk(), pendingManagerPublicKey)]
485494 else throw("Strict value is not equal to itself.")
486495 }
487496 else throw("Strict value is not equal to itself.")
488497 }
489498
490499
491500
492501 @Callable(i)
493502 func confirmManager () = {
494503 let p = pm()
495504 let hpm = if (isDefined(p))
496505 then true
497506 else throw("No pending manager")
498507 if ((hpm == hpm))
499508 then {
500509 let cpm = if ((i.callerPublicKey == value(p)))
501510 then true
502511 else throw("You are not pending manager")
503512 if ((cpm == cpm))
504513 then [StringEntry(mpk(), toBase58String(value(p))), DeleteEntry(pmpk())]
505514 else throw("Strict value is not equal to itself.")
506515 }
507516 else throw("Strict value is not equal to itself.")
508517 }
509518
510519
511520
512521 @Callable(i)
513522 func put (slip,autoStake) = {
514523 let factCfg = gfc()
515524 let stakingCntr = valueOrErrorMessage(addressFromString(factCfg[idxFactStakCntr]), "Wr st addr")
516525 let slipCntr = valueOrErrorMessage(addressFromString(factCfg[idxFactSlippCntr]), "Wr sl addr")
517526 if ((0 > slip))
518527 then throw("Wrong slippage")
519528 else if ((size(i.payments) != 2))
520529 then throw("2 pmnts expd")
521530 else {
522531 let e = cp(toString(i.caller), toBase58String(i.transactionId), AttachedPayment(value(i.payments[0]).assetId, value(i.payments[0]).amount), i.payments[1], slip, true, false, 0, "")
523532 let emitLpAmt = e._2
524533 let lpAssetId = e._7
525534 let state = e._9
526535 let amDiff = e._10
527536 let prDiff = e._11
528537 let amId = e._12
529538 let prId = e._13
530539 let r = invoke(fca, "emit", [emitLpAmt], nil)
531540 if ((r == r))
532541 then {
533542 let el = match r {
534543 case legacy: Address =>
535544 invoke(legacy, "emit", [emitLpAmt], nil)
536545 case _ =>
537546 unit
538547 }
539548 if ((el == el))
540549 then {
541550 let sa = if ((amDiff > 0))
542551 then invoke(slipCntr, "put", nil, [AttachedPayment(amId, amDiff)])
543552 else nil
544553 if ((sa == sa))
545554 then {
546555 let sp = if ((prDiff > 0))
547556 then invoke(slipCntr, "put", nil, [AttachedPayment(prId, prDiff)])
548557 else nil
549558 if ((sp == sp))
550559 then {
551560 let lpTrnsfr = if (autoStake)
552561 then {
553562 let ss = invoke(stakingCntr, "stake", nil, [AttachedPayment(lpAssetId, emitLpAmt)])
554563 if ((ss == ss))
555564 then nil
556565 else throw("Strict value is not equal to itself.")
557566 }
558567 else [ScriptTransfer(i.caller, emitLpAmt, lpAssetId)]
559568 (state ++ lpTrnsfr)
560569 }
561570 else throw("Strict value is not equal to itself.")
562571 }
563572 else throw("Strict value is not equal to itself.")
564573 }
565574 else throw("Strict value is not equal to itself.")
566575 }
567576 else throw("Strict value is not equal to itself.")
568577 }
569578 }
570579
571580
572581
573582 @Callable(i)
574583 func putOneTkn (amAssetPart,prAssetPart,outLp,slippage,autoStake) = {
575584 let cfg = gfc()
576585 let stakingCntr = valueOrErrorMessage(addressFromString(cfg[idxFactStakCntr]), "Wr st addr")
577586 let slipCntr = valueOrErrorMessage(addressFromString(cfg[idxFactSlippCntr]), "Wr sl addr")
578587 let gwxCntr = valueOrErrorMessage(addressFromString(cfg[idxFactGwxRewCntr]), "Wr gwx addr")
579588 let poolCfg = gpc()
580589 let amId = poolCfg[idxAmAsId]
581590 let prId = poolCfg[idxPrAsId]
582591 let amDcm = parseIntValue(poolCfg[idxAmtAsDcm])
583592 let prDcm = parseIntValue(poolCfg[idxPriceAsDcm])
584593 let addon = valueOrElse(getString(this, ada()), "")
585594 let userAddress = if ((addon == toString(i.caller)))
586595 then i.originCaller
587596 else i.caller
588597 let addonContract = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(ada()), "no addons")), "addon address in not valid")
589598 let check = reentrantInvoke(addonContract, "ensureCanPutOneTkn", [toString(userAddress)], nil)
590599 if ((check == check))
591600 then if (if (if (if ((0 >= slippage))
592601 then true
593602 else (0 >= amAssetPart))
594603 then true
595604 else (0 >= prAssetPart))
596605 then true
597606 else (0 >= outLp))
598607 then throw("Wrong params")
599608 else if ((size(i.payments) != 1))
600609 then throw("1 pmnt expd")
601610 else {
602611 let pmt = value(i.payments[0])
603612 let pmtAssetId = toBase58String(value(pmt.assetId))
604613 let pmtAmt = pmt.amount
605614 if (if (if ((amAssetPart > pmtAmt))
606615 then true
607616 else (prAssetPart > pmtAmt))
608617 then true
609618 else (10000000 > pmtAmt))
610619 then throw("Wrong pmt amt")
611620 else {
612621 let amBalance = getAccBalance(amId)
613622 let prBalance = getAccBalance(prId)
614- let $t02483225212 = if ((pmtAssetId == amId))
623+ let $t02487925259 = if ((pmtAssetId == amId))
615624 then $Tuple6((amBalance - pmtAmt), prBalance, (pmtAmt - amAssetPart), prAssetPart, 0, 0)
616625 else if ((pmtAssetId == prId))
617626 then $Tuple6(amBalance, (prBalance - pmtAmt), 0, 0, (pmtAmt - prAssetPart), amAssetPart)
618627 else throw("wrong pmtAssetId")
619- let amBalanceNow = $t02483225212._1
620- let prBalanceNow = $t02483225212._2
621- let virtSwapInAm = $t02483225212._3
622- let virtSwapOutPr = $t02483225212._4
623- let virtSwapInPr = $t02483225212._5
624- let virtSwapOutAm = $t02483225212._6
628+ let amBalanceNow = $t02487925259._1
629+ let prBalanceNow = $t02487925259._2
630+ let virtSwapInAm = $t02487925259._3
631+ let virtSwapOutPr = $t02487925259._4
632+ let virtSwapInPr = $t02487925259._5
633+ let virtSwapOutAm = $t02487925259._6
625634 let D0 = invoke(gwxCntr, "calcD", [toString(amBalanceNow), toString(prBalanceNow), A, Amult, Dconv], nil)
626635 let D1 = invoke(gwxCntr, "calcD", [toString(toBigInt(((amBalanceNow + virtSwapInAm) - virtSwapOutAm))), toString(toBigInt(((prBalanceNow + virtSwapInPr) - virtSwapOutPr))), A, Amult, Dconv], nil)
627636 let D0vsD1 = vd(parseBigIntValue(str(D1)), parseBigIntValue(str(D0)), slippage4D)
628637 if ((D0vsD1 == D0vsD1))
629638 then {
630639 let estPut = cp(toString(i.caller), toBase58String(i.transactionId), AttachedPayment(fromBase58String(amId), amAssetPart), AttachedPayment(fromBase58String(prId), prAssetPart), slippage, true, true, pmtAmt, pmtAssetId)
631640 let estimLP = estPut._2
632641 let lpAssetId = estPut._7
633642 let state = estPut._9
634643 let amDiff = estPut._10
635644 let prDiff = estPut._11
636645 let lpCalcRes = vad(toBigInt(estimLP), toBigInt(outLp), toBigInt(slippage))
637646 let emitLpAmt = toInt(lpCalcRes._2)
638647 let e = invoke(fca, "emit", [emitLpAmt], nil)
639648 if ((e == e))
640649 then {
641650 let el = match e {
642651 case legacy: Address =>
643652 invoke(legacy, "emit", [emitLpAmt], nil)
644653 case _ =>
645654 unit
646655 }
647656 if ((el == el))
648657 then {
649658 let sa = if ((amDiff > 0))
650659 then invoke(slipCntr, "put", nil, [AttachedPayment(fromBase58String(amId), amDiff)])
651660 else nil
652661 if ((sa == sa))
653662 then {
654663 let sp = if ((prDiff > 0))
655664 then invoke(slipCntr, "put", nil, [AttachedPayment(fromBase58String(prId), prDiff)])
656665 else nil
657666 if ((sp == sp))
658667 then {
659668 let lpTrnsfr = if (autoStake)
660669 then {
661670 let ss = invoke(stakingCntr, "stake", nil, [AttachedPayment(lpAssetId, emitLpAmt)])
662671 if ((ss == ss))
663672 then nil
664673 else throw("Strict value is not equal to itself.")
665674 }
666675 else [ScriptTransfer(i.caller, emitLpAmt, lpAssetId)]
667676 (state ++ lpTrnsfr)
668677 }
669678 else throw("Strict value is not equal to itself.")
670679 }
671680 else throw("Strict value is not equal to itself.")
672681 }
673682 else throw("Strict value is not equal to itself.")
674683 }
675684 else throw("Strict value is not equal to itself.")
676685 }
677686 else throw("Strict value is not equal to itself.")
678687 }
679688 }
680689 else throw("Strict value is not equal to itself.")
681690 }
682691
683692
684693
685694 @Callable(i)
686695 func putForFree (maxSlpg) = if ((0 > maxSlpg))
687696 then throw("Wrong slpg")
688697 else if ((size(i.payments) != 2))
689698 then throw("2 pmnts expd")
690699 else {
691700 let estPut = cp(toString(i.caller), toBase58String(i.transactionId), AttachedPayment(value(i.payments[0]).assetId, value(i.payments[0]).amount), i.payments[1], maxSlpg, false, false, 0, "")
692701 estPut._9
693702 }
694703
695704
696705
697706 @Callable(i)
698707 func get () = {
699708 let r = cg(i)
700709 let outAmtAmt = r._1
701710 let outPrAmt = r._2
702711 let pmtAmt = r._3
703712 let pmtAssetId = r._4
704713 let state = r._5
705714 let b = invoke(fca, "burn", [pmtAmt], [AttachedPayment(pmtAssetId, pmtAmt)])
706715 if ((b == b))
707716 then state
708717 else throw("Strict value is not equal to itself.")
709718 }
710719
711720
712721
713722 @Callable(i)
714723 func getOneTkn (exchResult,notUsed,outAmount,outAssetId,slippage) = if ((size(i.payments) != 1))
715724 then throw("1 pmnt expd")
716725 else {
717726 let cfg = gpc()
718727 let lpId = cfg[idxLPAsId]
719728 let amId = cfg[idxAmAsId]
720729 let prId = cfg[idxPrAsId]
721730 let amDcm = parseIntValue(cfg[idxAmtAsDcm])
722731 let prDcm = parseIntValue(cfg[idxPriceAsDcm])
723732 let sts = cfg[idxPoolSt]
724733 let factCfg = gfc()
725734 let gwxCntr = valueOrErrorMessage(addressFromString(factCfg[idxFactGwxRewCntr]), "Wr sl addr")
726735 let pmt = value(i.payments[0])
727736 let addon = valueOrElse(getString(this, ada()), "")
728737 let userAddress = if ((addon == toString(i.caller)))
729738 then i.originCaller
730739 else i.caller
731740 let txId58 = toBase58String(i.transactionId)
732741 let pmtAssetId = value(pmt.assetId)
733742 let pmtAmt = pmt.amount
734743 let addonContract = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(ada()), "no addons")), "addon address in not valid")
735744 let check = reentrantInvoke(addonContract, "ensureCanGetOneTkn", [toString(userAddress)], nil)
736745 if ((check == check))
737746 then if ((1000000000 > pmtAmt))
738747 then throw("Min pmt 10 LP")
739748 else if (if (if ((0 > slippage))
740749 then true
741750 else (0 > exchResult))
742751 then true
743752 else (0 > outAmount))
744753 then throw("Wrong params")
745754 else if ((lpId != toBase58String(pmtAssetId)))
746755 then throw("Wrong LP")
747756 else {
748757 let r = ego(toBase58String(i.transactionId), toBase58String(pmtAssetId), pmtAmt, i.caller)
749758 let estimAmAmt = r._1
750759 let estimPrAmt = r._2
751760 let amBalance = getAccBalance(amId)
752761 let prBalance = getAccBalance(prId)
753- let $t03024330700 = if ((outAssetId == amId))
762+ let $t03029030747 = if ((outAssetId == amId))
754763 then $Tuple7((amBalance - estimAmAmt), (prBalance - estimPrAmt), exchResult, estimPrAmt, 0, 0, (estimAmAmt + exchResult))
755764 else if ((outAssetId == prId))
756765 then $Tuple7((amBalance - estimAmAmt), (prBalance - estimPrAmt), 0, 0, exchResult, estimAmAmt, (estimPrAmt + exchResult))
757766 else throw("wrong outAssetId")
758- let amBalanceNow = $t03024330700._1
759- let prBalanceNow = $t03024330700._2
760- let virtSwapInAm = $t03024330700._3
761- let virtSwapOutPr = $t03024330700._4
762- let virtSwapInPr = $t03024330700._5
763- let virtSwapOutAm = $t03024330700._6
764- let totalGet = $t03024330700._7
767+ let amBalanceNow = $t03029030747._1
768+ let prBalanceNow = $t03029030747._2
769+ let virtSwapInAm = $t03029030747._3
770+ let virtSwapOutPr = $t03029030747._4
771+ let virtSwapInPr = $t03029030747._5
772+ let virtSwapOutAm = $t03029030747._6
773+ let totalGet = $t03029030747._7
765774 if (if ((0 > virtSwapInAm))
766775 then true
767776 else (0 > virtSwapInPr))
768777 then throw("Wrong calc")
769778 else {
770779 let D0 = invoke(gwxCntr, "calcD", [toString(amBalanceNow), toString(prBalanceNow), A, Amult, Dconv], nil)
771780 let D1 = invoke(gwxCntr, "calcD", [toString(((amBalanceNow - virtSwapInAm) + virtSwapOutAm)), toString(((prBalanceNow + virtSwapOutPr) - virtSwapInPr)), A, Amult, Dconv], nil)
772781 let D0vsD1 = vd(parseBigIntValue(str(D1)), parseBigIntValue(str(D0)), slippage4D)
773782 if ((D0vsD1 == D0vsD1))
774783 then {
775784 let finalRes = vad(toBigInt(totalGet), toBigInt(outAmount), toBigInt(slippage))
776785 if ((finalRes == finalRes))
777786 then {
778- let $t03140531509 = if ((outAssetId == amId))
787+ let $t03145231556 = if ((outAssetId == amId))
779788 then $Tuple2(toInt(finalRes._2), 0)
780789 else $Tuple2(0, toInt(finalRes._2))
781- let outAm = $t03140531509._1
782- let outPr = $t03140531509._2
790+ let outAm = $t03145231556._1
791+ let outPr = $t03145231556._2
783792 let curPrX18 = cpbi(t1(prBalance, prDcm), t1(amBalance, amDcm))
784793 let curPr = f1(curPrX18, scale8)
785794 let state = [ScriptTransfer(userAddress, (outAm + outPr), if ((outAssetId == "WAVES"))
786795 then unit
787796 else fromBase58String(outAssetId)), StringEntry(gau(toString(userAddress), txId58), dataGetActionInfo(outAm, outPr, pmtAmt, curPr, height, lastBlock.timestamp)), IntegerEntry(pl(), curPr), IntegerEntry(ph(height, lastBlock.timestamp), curPr)]
788797 if ((state == state))
789798 then {
790799 let burn = invoke(fca, "burn", [pmtAmt], [AttachedPayment(pmtAssetId, pmtAmt)])
791800 if ((burn == burn))
792801 then state
793802 else throw("Strict value is not equal to itself.")
794803 }
795804 else throw("Strict value is not equal to itself.")
796805 }
797806 else throw("Strict value is not equal to itself.")
798807 }
799808 else throw("Strict value is not equal to itself.")
800809 }
801810 }
802811 else throw("Strict value is not equal to itself.")
803812 }
804813
805814
806815
807816 @Callable(i)
808817 func getNoLess (noLessThenAmtAsset,noLessThenPriceAsset) = {
809818 let r = cg(i)
810819 let outAmAmt = r._1
811820 let outPrAmt = r._2
812821 let pmtAmt = r._3
813822 let pmtAssetId = r._4
814823 let state = r._5
815824 if ((noLessThenAmtAsset > outAmAmt))
816825 then throw(((("Failed: " + toString(outAmAmt)) + " < ") + toString(noLessThenAmtAsset)))
817826 else if ((noLessThenPriceAsset > outPrAmt))
818827 then throw(((("Failed: " + toString(outPrAmt)) + " < ") + toString(noLessThenPriceAsset)))
819828 else {
820829 let burnLPAssetOnFactory = invoke(fca, "burn", [pmtAmt], [AttachedPayment(pmtAssetId, pmtAmt)])
821830 if ((burnLPAssetOnFactory == burnLPAssetOnFactory))
822831 then state
823832 else throw("Strict value is not equal to itself.")
824833 }
825834 }
826835
827836
828837
829838 @Callable(i)
830839 func unstakeAndGet (amount) = {
831840 let checkPayments = if ((size(i.payments) != 0))
832841 then throw("No pmnts expd")
833842 else true
834843 if ((checkPayments == checkPayments))
835844 then {
836845 let cfg = gpc()
837846 let factoryCfg = gfc()
838847 let lpAssetId = fromBase58String(cfg[idxLPAsId])
839848 let staking = valueOrErrorMessage(addressFromString(factoryCfg[idxFactStakCntr]), "Wr st addr")
840849 let unstakeInv = invoke(staking, "unstake", [toBase58String(lpAssetId), amount], nil)
841850 if ((unstakeInv == unstakeInv))
842851 then {
843852 let r = ego(toBase58String(i.transactionId), toBase58String(lpAssetId), amount, i.caller)
844853 let sts = parseIntValue(r._9)
845854 let state = r._10
846855 let v = if (if (igs())
847856 then true
848857 else (sts == PoolShutdown))
849858 then throw(("Blocked: " + toString(sts)))
850859 else true
851860 if ((v == v))
852861 then {
853862 let burnA = invoke(fca, "burn", [amount], [AttachedPayment(lpAssetId, amount)])
854863 if ((burnA == burnA))
855864 then state
856865 else throw("Strict value is not equal to itself.")
857866 }
858867 else throw("Strict value is not equal to itself.")
859868 }
860869 else throw("Strict value is not equal to itself.")
861870 }
862871 else throw("Strict value is not equal to itself.")
863872 }
864873
865874
866875
867876 @Callable(i)
868877 func activate (amtAsStr,prAsStr) = if ((toString(i.caller) != toString(fca)))
869878 then throw("denied")
870879 else $Tuple2([StringEntry(aa(), amtAsStr), StringEntry(pa(), prAsStr)], "success")
871880
872881
873882
874883 @Callable(i)
875884 func setS (k,v) = if ((toString(i.caller) != strf(this, ada())))
876885 then pd
877886 else [StringEntry(k, v)]
878887
879888
880889
881890 @Callable(i)
882891 func setI (k,v) = if ((toString(i.caller) != strf(this, ada())))
883892 then pd
884893 else [IntegerEntry(k, v)]
885894
886895
887896
888897 @Callable(i)
889898 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, gpc())
890899
891900
892901
893902 @Callable(i)
894903 func getAccBalanceWrapperREADONLY (assetId) = $Tuple2(nil, getAccBalance(assetId))
895904
896905
897906
898907 @Callable(i)
899908 func calcPricesWrapperREADONLY (amAmt,prAmt,lpAmt) = {
900909 let pr = calcPrices(amAmt, prAmt, lpAmt)
901910 $Tuple2(nil, [toString(pr[0]), toString(pr[1]), toString(pr[2])])
902911 }
903912
904913
905914
906915 @Callable(i)
907916 func fromX18WrapperREADONLY (val,resScaleMult) = $Tuple2(nil, f1(parseBigIntValue(val), resScaleMult))
908917
909918
910919
911920 @Callable(i)
912921 func toX18WrapperREADONLY (origVal,origScaleMult) = $Tuple2(nil, toString(t1(origVal, origScaleMult)))
913922
914923
915924
916925 @Callable(i)
917926 func calcPriceBigIntWrapperREADONLY (prAmtX18,amAmtX18) = $Tuple2(nil, toString(cpbi(parseBigIntValue(prAmtX18), parseBigIntValue(amAmtX18))))
918927
919928
920929
921930 @Callable(i)
922931 func estimatePutOperationWrapperREADONLY (txId58,slippage,inAmAmt,inAmId,inPrAmt,inPrId,usrAddr,isEval,emitLp) = $Tuple2(nil, epo(txId58, slippage, inAmAmt, inAmId, inPrAmt, inPrId, usrAddr, isEval, emitLp, false, 0, ""))
923932
924933
925934
926935 @Callable(i)
927936 func estimateGetOperationWrapperREADONLY (txId58,pmtAsId,pmtLpAmt,usrAddr) = {
928937 let r = ego(txId58, pmtAsId, pmtLpAmt, addressFromStringValue(usrAddr))
929938 $Tuple2(nil, $Tuple10(r._1, r._2, r._3, r._4, r._5, r._6, r._7, toString(r._8), r._9, r._10))
930939 }
931940
932941
933942 @Verifier(tx)
934943 func verify () = match tx {
935944 case order: Order =>
936945 let mtchPub = mp()
937946 let orV = moa(order)
938947 let sndrV = sigVerify(order.bodyBytes, order.proofs[0], order.senderPublicKey)
939948 let mtchV = sigVerify(order.bodyBytes, order.proofs[1], mtchPub)
940949 if (if (if (orV)
941950 then sndrV
942951 else false)
943952 then mtchV
944953 else false)
945954 then true
946955 else toe(orV, sndrV, mtchV)
947956 case _ =>
948957 let targetPublicKey = match m() {
949958 case pk: ByteVector =>
950959 pk
951960 case _: Unit =>
952961 tx.senderPublicKey
953962 case _ =>
954963 throw("Match error")
955964 }
956965 sigVerify(tx.bodyBytes, tx.proofs[0], targetPublicKey)
957966 }
958967

github/deemru/w8io/169f3d6 
173.30 ms