tx · GxjWgaYVUqufYJx2KUDasBhB8BnQ6VRBEYk4rQXfSt4S

3Mz51suw3H98TBYJHSra1k2uSYQMv2vUkzt:  -0.03500000 Waves

2022.06.06 23:58 [2085003] smart account 3Mz51suw3H98TBYJHSra1k2uSYQMv2vUkzt > SELF 0.00000000 Waves

{ "type": 13, "id": "GxjWgaYVUqufYJx2KUDasBhB8BnQ6VRBEYk4rQXfSt4S", "fee": 3500000, "feeAssetId": null, "timestamp": 1654549135005, "version": 1, "sender": "3Mz51suw3H98TBYJHSra1k2uSYQMv2vUkzt", "senderPublicKey": "8RPibCyjGbPr7troJPW7WTXkrbynj8HwkrckopSZoYVn", "proofs": [ "4c52Z1LJA1f7bmAZAmmMEs3KSz1wiQoCKMMY84GfG9zXUhRGueJLeouXH9LT1236gySe7ZWLe2RfLFKQp4vZWyrf" ], "script": "base64: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GhAKAmJuEgpwckFzc2V0RGNtGgsKAmJvEgVhbUFtdBoLCgJicBIFcHJBbXQaEQoCYnESC2FtdEFzQW10WDE4GhAKAmJyEgpwckFzQW10WDE4GhAKAmJzEgpjYWxjUHJpY2VzGgsKAmJ0EgVscEFtdBoJCgJidRIDY2ZnGg4KAmJ2EghhbXRBc0RjbRoNCgJidxIHcHJBc0RjbRoOCgJieBIIcHJpY2VYMTgaDgoCYnkSCGxwQW10WDE4GhMKAmJ6Eg1scFBySW5BbUFzWDE4GgwKAWMSB3NjYWxlMTgaEAoCY0ESCnByVmlhQW1YMTgaEAoCY0ISCmFtVmlhUHJYMTgaEgoCY0MSDGV4cGVjdGVkQW10cxoXCgJjRBIRZXhwQW10QXNzZXRBbXRYMTgaGQoCY0USE2V4cFByaWNlQXNzZXRBbXRYMTgaDwoCY0YSCWNhbGNMcEFtdBoUCgJjRxIOY2FsY0FtQXNzZXRQbXQaFAoCY0gSDmNhbGNQckFzc2V0UG10GhIKAmNJEgxzbGlwcGFnZUNhbGMaDwoCY0oSCWVtaXRMcEFtdBoMCgJjSxIGYW1EaWZmGgwKAmNMEgZwckRpZmYaEwoCY00SDSR0MDE1NDc2MTU4MjEaEAoCY04SCndyaXRlQW1BbXQaEAoCY08SCndyaXRlUHJBbXQaEQoCY1ASC2NvbW1vblN0YXRlGgkKAmNREgNtb2EaCwoCY1ISBW9yZGVyGg0KAmNTEgdhbXRBc0lkGgwKAmNUEgZwckFzSWQaFQoCY1USD2FjY0FtdEFzQmFsYW5jZRoUCgJjVhIOYWNjUHJBc0JhbGFuY2UaEAoCY1cSCm9yQW10QXNzZXQaEAoCY1gSCm9yQW10QXNTdHIaDwoCY1kSCW9yUHJBc3NldBoPCgJjWhIJb3JQckFzU3RyGg4KAmNhEghvdXRQckFtdBoLCgJjYhIFc3RhdGUaCQoCY2MSA2VwbxoNCgJjZBIHaW5BbUFtdBoMCgJjZRIGaW5BbUlkGg0KAmNmEgdpblByQW10GgwKAmNnEgZpblBySWQaDAoCY2gSBmlzRXZhbBoMCgJjaRIGZW1pdExwGhAKAmNqEgppc09uZUFzc2V0GgwKAmNrEgZwbXRBbXQaCwoCY2wSBXBtdElkGg0KAmNtEgdhbUlkU3RyGg0KAmNuEgdwcklkU3Ry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", "chainId": 84, "height": 2085003, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 62d83Zvmpq7eF9FjcGYKqtzQkVeTziJzH9mqowoE4Zuk Next: 43vkL3G74hfCY2wob9C7MJF9nMsBeD6biqAuFkcHuU5b Diff:
OldNewDifferences
102102 func ada () = "%s__addonAddr"
103103
104104
105-func lgotc (caller) = makeString(["%s%s__lastGetOneTknCall", caller], SEP)
106-
107-
108-func lsotc (caller) = makeString(["%s%s__lastPutOneTknCall", caller], SEP)
105+func lgopotc (caller) = makeString(["%s%s__lastGetOrPutOneTknCall", caller], SEP)
109106
110107
111108 func fcfg () = "%s__factoryConfig"
186183
187184
188185 func vd (D1,D0,slpg) = {
189- 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
186+ let error = throw("error 123")
187+ if ((error == error))
188+ then {
189+ 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
196+ }
197+ else throw("Strict value is not equal to itself.")
196198 }
197199
198200
334336 else calcLpAmt
335337 let amDiff = (inAmAmt - calcAmAssetPmt)
336338 let prDiff = (inPrAmt - calcPrAssetPmt)
337- let $t01553115876 = if (if (isOneAsset)
339+ let $t01547615821 = if (if (isOneAsset)
338340 then (pmtId == amIdStr)
339341 else false)
340342 then $Tuple2(pmtAmt, 0)
343345 else false)
344346 then $Tuple2(0, pmtAmt)
345347 else $Tuple2(calcAmAssetPmt, calcPrAssetPmt)
346- let writeAmAmt = $t01553115876._1
347- let writePrAmt = $t01553115876._2
348+ let writeAmAmt = $t01547615821._1
349+ let writePrAmt = $t01547615821._2
348350 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))]
349351 $Tuple13(calcLpAmt, emitLpAmt, curPrice, amBalance, prBalance, lpEm, lpId, sts, commonState, amDiff, prDiff, inAmId, inPrId)
350352 }
611613 else {
612614 let amBalance = getAccBalance(amId)
613615 let prBalance = getAccBalance(prId)
614- let $t02483725217 = if ((pmtAssetId == amId))
616+ let $t02478225162 = if ((pmtAssetId == amId))
615617 then $Tuple6((amBalance - pmtAmt), prBalance, (pmtAmt - amAssetPart), prAssetPart, 0, 0)
616618 else if ((pmtAssetId == prId))
617619 then $Tuple6(amBalance, (prBalance - pmtAmt), 0, 0, (pmtAmt - prAssetPart), amAssetPart)
618620 else throw("wrong pmtAssetId")
619- let amBalanceNow = $t02483725217._1
620- let prBalanceNow = $t02483725217._2
621- let virtSwapInAm = $t02483725217._3
622- let virtSwapOutPr = $t02483725217._4
623- let virtSwapInPr = $t02483725217._5
624- let virtSwapOutAm = $t02483725217._6
621+ let amBalanceNow = $t02478225162._1
622+ let prBalanceNow = $t02478225162._2
623+ let virtSwapInAm = $t02478225162._3
624+ let virtSwapOutPr = $t02478225162._4
625+ let virtSwapInPr = $t02478225162._5
626+ let virtSwapOutAm = $t02478225162._6
625627 let D0 = invoke(gwxCntr, "calcD", [toString(amBalanceNow), toString(prBalanceNow), A, Amult, Dconv], nil)
626628 let D1 = invoke(gwxCntr, "calcD", [toString(toBigInt(((amBalanceNow + virtSwapInAm) - virtSwapOutAm))), toString(toBigInt(((prBalanceNow + virtSwapInPr) - virtSwapOutPr))), A, Amult, Dconv], nil)
627629 let D0vsD1 = vd(parseBigIntValue(str(D1)), parseBigIntValue(str(D0)), slippage4D)
750752 let estimPrAmt = r._2
751753 let amBalance = getAccBalance(amId)
752754 let prBalance = getAccBalance(prId)
753- let $t03025330710 = if ((outAssetId == amId))
755+ let $t03019830655 = if ((outAssetId == amId))
754756 then $Tuple7((amBalance - estimAmAmt), (prBalance - estimPrAmt), exchResult, estimPrAmt, 0, 0, (estimAmAmt + exchResult))
755757 else if ((outAssetId == prId))
756758 then $Tuple7((amBalance - estimAmAmt), (prBalance - estimPrAmt), 0, 0, exchResult, estimAmAmt, (estimPrAmt + exchResult))
757759 else throw("wrong outAssetId")
758- let amBalanceNow = $t03025330710._1
759- let prBalanceNow = $t03025330710._2
760- let virtSwapInAm = $t03025330710._3
761- let virtSwapOutPr = $t03025330710._4
762- let virtSwapInPr = $t03025330710._5
763- let virtSwapOutAm = $t03025330710._6
764- let totalGet = $t03025330710._7
760+ let amBalanceNow = $t03019830655._1
761+ let prBalanceNow = $t03019830655._2
762+ let virtSwapInAm = $t03019830655._3
763+ let virtSwapOutPr = $t03019830655._4
764+ let virtSwapInPr = $t03019830655._5
765+ let virtSwapOutAm = $t03019830655._6
766+ let totalGet = $t03019830655._7
765767 if (if ((0 > virtSwapInAm))
766768 then true
767769 else (0 > virtSwapInPr))
775777 let finalRes = vad(toBigInt(totalGet), toBigInt(outAmount), toBigInt(slippage))
776778 if ((finalRes == finalRes))
777779 then {
778- let $t03141531519 = if ((outAssetId == amId))
780+ let $t03136031464 = if ((outAssetId == amId))
779781 then $Tuple2(toInt(finalRes._2), 0)
780782 else $Tuple2(0, toInt(finalRes._2))
781- let outAm = $t03141531519._1
782- let outPr = $t03141531519._2
783+ let outAm = $t03136031464._1
784+ let outPr = $t03136031464._2
783785 let curPrX18 = cpbi(t1(prBalance, prDcm), t1(amBalance, amDcm))
784786 let curPr = f1(curPrX18, scale8)
785787 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
105-func lgotc (caller) = makeString(["%s%s__lastGetOneTknCall", caller], SEP)
106-
107-
108-func lsotc (caller) = makeString(["%s%s__lastPutOneTknCall", caller], SEP)
105+func lgopotc (caller) = makeString(["%s%s__lastGetOrPutOneTknCall", caller], SEP)
109106
110107
111108 func fcfg () = "%s__factoryConfig"
112109
113110
114111 func mtpk () = "%s%s__matcher__publicKey"
115112
116113
117114 func pc (iAmtAs,iPrAs) = (((("%d%d%s__" + iAmtAs) + "__") + iPrAs) + "__config")
118115
119116
120117 func mba (bAStr) = ("%s%s%s__mappings__baseAsset2internalId__" + bAStr)
121118
122119
123120 func aps () = "%s__shutdown"
124121
125122
126123 func toe (orV,sendrV,matchV) = throw(((((("Failed: ordValid=" + toString(orV)) + " sndrValid=") + toString(sendrV)) + " mtchrValid=") + toString(matchV)))
127124
128125
129126 func str (val) = match val {
130127 case valStr: String =>
131128 valStr
132129 case _ =>
133130 throw("fail cast to String")
134131 }
135132
136133
137134 func strf (addr,key) = valueOrErrorMessage(getString(addr, key), makeString(["mandatory ", toString(addr), ".", key, " not defined"], ""))
138135
139136
140137 func intf (addr,key) = valueOrErrorMessage(getInteger(addr, key), makeString(["mandatory ", toString(addr), ".", key, " not defined"], ""))
141138
142139
143140 let fca = addressFromStringValue(strf(this, fc()))
144141
145142 let A = strf(this, amp())
146143
147144 func igs () = valueOrElse(getBoolean(fca, aps()), false)
148145
149146
150147 func mp () = fromBase58String(strf(fca, mtpk()))
151148
152149
153150 func gpc () = {
154151 let amtAs = strf(this, aa())
155152 let priceAs = strf(this, pa())
156153 let iPriceAs = intf(fca, mba(priceAs))
157154 let iAmtAs = intf(fca, mba(amtAs))
158155 split(strf(fca, pc(toString(iAmtAs), toString(iPriceAs))), SEP)
159156 }
160157
161158
162159 func gfc () = split(strf(fca, fcfg()), SEP)
163160
164161
165162 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)
166163
167164
168165 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)
169166
170167
171168 func getAccBalance (assetId) = if ((assetId == "WAVES"))
172169 then wavesBalance(this).available
173170 else assetBalance(this, fromBase58String(assetId))
174171
175172
176173 func cpbi (prAmtX18,amAmtX18) = fraction(prAmtX18, scale18, amAmtX18)
177174
178175
179176 func vad (A1,A2,slippage) = {
180177 let diff = fraction((A1 - A2), scale8BigInt, A2)
181178 let pass = ((slippage - abs(diff)) > zeroBigInt)
182179 if (!(pass))
183180 then throw(("Big slpg: " + toString(diff)))
184181 else $Tuple2(pass, min([A1, A2]))
185182 }
186183
187184
188185 func vd (D1,D0,slpg) = {
189- 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
186+ let error = throw("error 123")
187+ if ((error == error))
188+ then {
189+ 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
196+ }
197+ else throw("Strict value is not equal to itself.")
196198 }
197199
198200
199201 func pcp (amAssetDcm,prAssetDcm,amAmt,prAmt) = {
200202 let amtAsAmtX18 = t1(amAmt, amAssetDcm)
201203 let prAsAmtX18 = t1(prAmt, prAssetDcm)
202204 cpbi(prAsAmtX18, amtAsAmtX18)
203205 }
204206
205207
206208 func calcPrices (amAmt,prAmt,lpAmt) = {
207209 let cfg = gpc()
208210 let amtAsDcm = parseIntValue(cfg[idxAmtAsDcm])
209211 let prAsDcm = parseIntValue(cfg[idxPriceAsDcm])
210212 let priceX18 = pcp(amtAsDcm, prAsDcm, amAmt, prAmt)
211213 let amAmtX18 = t1(amAmt, amtAsDcm)
212214 let prAmtX18 = t1(prAmt, prAsDcm)
213215 let lpAmtX18 = t1(lpAmt, scale8)
214216 let lpPrInAmAsX18 = cpbi(amAmtX18, lpAmtX18)
215217 let lpPrInPrAsX18 = cpbi(prAmtX18, lpAmtX18)
216218 [priceX18, lpPrInAmAsX18, lpPrInPrAsX18]
217219 }
218220
219221
220222 func calculatePrices (amAmt,prAmt,lpAmt) = {
221223 let p = calcPrices(amAmt, prAmt, lpAmt)
222224 [f1(p[0], scale8), f1(p[1], scale8), f1(p[2], scale8)]
223225 }
224226
225227
226228 func ego (txId58,pmtAssetId,pmtLpAmt,userAddress) = {
227229 let cfg = gpc()
228230 let lpId = cfg[idxLPAsId]
229231 let amId = cfg[idxAmAsId]
230232 let prId = cfg[idxPrAsId]
231233 let amDcm = parseIntValue(cfg[idxAmtAsDcm])
232234 let prDcm = parseIntValue(cfg[idxPriceAsDcm])
233235 let sts = cfg[idxPoolSt]
234236 let lpEmiss = valueOrErrorMessage(assetInfo(fromBase58String(lpId)), "Wrong LP id").quantity
235237 if ((lpId != pmtAssetId))
236238 then throw("Wrong pmt asset")
237239 else {
238240 let amBalance = getAccBalance(amId)
239241 let amBalanceX18 = t1(amBalance, amDcm)
240242 let prBalance = getAccBalance(prId)
241243 let prBalanceX18 = t1(prBalance, prDcm)
242244 let curPriceX18 = cpbi(prBalanceX18, amBalanceX18)
243245 let curPrice = f1(curPriceX18, scale8)
244246 let pmtLpAmtX18 = t1(pmtLpAmt, scale8)
245247 let lpEmissX18 = t1(lpEmiss, scale8)
246248 let outAmAmtX18 = fraction(amBalanceX18, pmtLpAmtX18, lpEmissX18)
247249 let outPrAmtX18 = fraction(prBalanceX18, pmtLpAmtX18, lpEmissX18)
248250 let outAmAmt = f1(outAmAmtX18, amDcm)
249251 let outPrAmt = f1(outPrAmtX18, prDcm)
250252 let state = if ((txId58 == ""))
251253 then nil
252254 else [ScriptTransfer(userAddress, outAmAmt, if ((amId == "WAVES"))
253255 then unit
254256 else fromBase58String(amId)), ScriptTransfer(userAddress, outPrAmt, if ((prId == "WAVES"))
255257 then unit
256258 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)]
257259 $Tuple10(outAmAmt, outPrAmt, amId, prId, amBalance, prBalance, lpEmiss, curPriceX18, sts, state)
258260 }
259261 }
260262
261263
262264 func epo (txId58,slippage,inAmAmt,inAmId,inPrAmt,inPrId,userAddress,isEval,emitLp,isOneAsset,pmtAmt,pmtId) = {
263265 let cfg = gpc()
264266 let lpId = fromBase58String(cfg[idxLPAsId])
265267 let amIdStr = cfg[idxAmAsId]
266268 let prIdStr = cfg[idxPrAsId]
267269 let inAmIdStr = cfg[idxIAmtAsId]
268270 let inPrIdStr = cfg[idxIPriceAsId]
269271 let amtDcm = parseIntValue(cfg[idxAmtAsDcm])
270272 let priceDcm = parseIntValue(cfg[idxPriceAsDcm])
271273 let sts = cfg[idxPoolSt]
272274 let lpEm = valueOrErrorMessage(assetInfo(lpId), "Wr lp as").quantity
273275 let amBalance = if (isEval)
274276 then getAccBalance(amIdStr)
275277 else if (if (isOneAsset)
276278 then (pmtId == amIdStr)
277279 else false)
278280 then (getAccBalance(amIdStr) - pmtAmt)
279281 else if (isOneAsset)
280282 then getAccBalance(amIdStr)
281283 else (getAccBalance(amIdStr) - inAmAmt)
282284 let prBalance = if (isEval)
283285 then getAccBalance(prIdStr)
284286 else if (if (isOneAsset)
285287 then (pmtId == prIdStr)
286288 else false)
287289 then (getAccBalance(prIdStr) - pmtAmt)
288290 else if (isOneAsset)
289291 then getAccBalance(prIdStr)
290292 else (getAccBalance(prIdStr) - inPrAmt)
291293 let inAmAssetAmtX18 = t1(inAmAmt, amtDcm)
292294 let inPrAssetAmtX18 = t1(inPrAmt, priceDcm)
293295 let userPriceX18 = cpbi(inPrAssetAmtX18, inAmAssetAmtX18)
294296 let amBalanceX18 = t1(amBalance, amtDcm)
295297 let prBalanceX18 = t1(prBalance, priceDcm)
296298 let r = if ((lpEm == 0))
297299 then {
298300 let curPriceX18 = zeroBigInt
299301 let slippageX18 = zeroBigInt
300302 let lpAmtX18 = pow((inAmAssetAmtX18 * inPrAssetAmtX18), 0, toBigInt(5), 1, 0, DOWN)
301303 $Tuple5(f1(lpAmtX18, scale8), f1(inAmAssetAmtX18, amtDcm), f1(inPrAssetAmtX18, priceDcm), cpbi((prBalanceX18 + inPrAssetAmtX18), (amBalanceX18 + inAmAssetAmtX18)), slippageX18)
302304 }
303305 else {
304306 let curPriceX18 = cpbi(prBalanceX18, amBalanceX18)
305307 let slippageRealX18 = fraction(abs((curPriceX18 - userPriceX18)), scale18, curPriceX18)
306308 let slippageX18 = t1(slippage, scale8)
307309 if (if ((curPriceX18 != zeroBigInt))
308310 then (slippageRealX18 > slippageX18)
309311 else false)
310312 then throw(((("Price slippage " + toString(slippageRealX18)) + " > ") + toString(slippageX18)))
311313 else {
312314 let lpEmissionX18 = t1(lpEm, scale8)
313315 let prViaAmX18 = fraction(inAmAssetAmtX18, curPriceX18, scale18)
314316 let amViaPrX18 = fraction(inPrAssetAmtX18, scale18, curPriceX18)
315317 let expectedAmts = if ((prViaAmX18 > inPrAssetAmtX18))
316318 then $Tuple2(amViaPrX18, inPrAssetAmtX18)
317319 else $Tuple2(inAmAssetAmtX18, prViaAmX18)
318320 let expAmtAssetAmtX18 = expectedAmts._1
319321 let expPriceAssetAmtX18 = expectedAmts._2
320322 let lpAmtX18 = fraction(lpEmissionX18, expPriceAssetAmtX18, prBalanceX18)
321323 $Tuple5(f1(lpAmtX18, scale8), f1(expAmtAssetAmtX18, amtDcm), f1(expPriceAssetAmtX18, priceDcm), curPriceX18, slippageX18)
322324 }
323325 }
324326 let calcLpAmt = r._1
325327 let calcAmAssetPmt = r._2
326328 let calcPrAssetPmt = r._3
327329 let curPrice = f1(r._4, scale8)
328330 let slippageCalc = f1(r._5, scale8)
329331 if ((0 >= calcLpAmt))
330332 then throw("LP <= 0")
331333 else {
332334 let emitLpAmt = if (!(emitLp))
333335 then 0
334336 else calcLpAmt
335337 let amDiff = (inAmAmt - calcAmAssetPmt)
336338 let prDiff = (inPrAmt - calcPrAssetPmt)
337- let $t01553115876 = if (if (isOneAsset)
339+ let $t01547615821 = if (if (isOneAsset)
338340 then (pmtId == amIdStr)
339341 else false)
340342 then $Tuple2(pmtAmt, 0)
341343 else if (if (isOneAsset)
342344 then (pmtId == prIdStr)
343345 else false)
344346 then $Tuple2(0, pmtAmt)
345347 else $Tuple2(calcAmAssetPmt, calcPrAssetPmt)
346- let writeAmAmt = $t01553115876._1
347- let writePrAmt = $t01553115876._2
348+ let writeAmAmt = $t01547615821._1
349+ let writePrAmt = $t01547615821._2
348350 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))]
349351 $Tuple13(calcLpAmt, emitLpAmt, curPrice, amBalance, prBalance, lpEm, lpId, sts, commonState, amDiff, prDiff, inAmId, inPrId)
350352 }
351353 }
352354
353355
354356 func moa (order) = {
355357 let cfg = gpc()
356358 let amtAsId = cfg[idxAmAsId]
357359 let prAsId = cfg[idxPrAsId]
358360 let sts = parseIntValue(cfg[idxPoolSt])
359361 let amtAsDcm = parseIntValue(cfg[idxAmtAsDcm])
360362 let prAsDcm = parseIntValue(cfg[idxPriceAsDcm])
361363 let accAmtAsBalance = getAccBalance(amtAsId)
362364 let accPrAsBalance = getAccBalance(prAsId)
363365 let curPriceX18 = if ((order.orderType == Buy))
364366 then pcp(amtAsDcm, prAsDcm, (accAmtAsBalance + order.amount), accPrAsBalance)
365367 else pcp(amtAsDcm, prAsDcm, (accAmtAsBalance - order.amount), accPrAsBalance)
366368 let curPrice = f1(curPriceX18, scale8)
367369 if (if (if (igs())
368370 then true
369371 else (sts == PoolMatcherDis))
370372 then true
371373 else (sts == PoolShutdown))
372374 then throw("Admin blocked")
373375 else {
374376 let orAmtAsset = order.assetPair.amountAsset
375377 let orAmtAsStr = if ((orAmtAsset == unit))
376378 then "WAVES"
377379 else toBase58String(value(orAmtAsset))
378380 let orPrAsset = order.assetPair.priceAsset
379381 let orPrAsStr = if ((orPrAsset == unit))
380382 then "WAVES"
381383 else toBase58String(value(orPrAsset))
382384 if (if ((orAmtAsStr != amtAsId))
383385 then true
384386 else (orPrAsStr != prAsId))
385387 then throw("Wr assets")
386388 else {
387389 let orderPrice = order.price
388390 let priceDcm = fraction(scale8, prAsDcm, amtAsDcm)
389391 let castOrderPrice = ts(orderPrice, scale8, priceDcm)
390392 let isOrderPriceValid = if ((order.orderType == Buy))
391393 then (curPrice >= castOrderPrice)
392394 else (castOrderPrice >= curPrice)
393395 true
394396 }
395397 }
396398 }
397399
398400
399401 func cg (i) = if ((size(i.payments) != 1))
400402 then throw("1 pmnt exp")
401403 else {
402404 let pmt = value(i.payments[0])
403405 let pmtAssetId = value(pmt.assetId)
404406 let pmtAmt = pmt.amount
405407 let r = ego(toBase58String(i.transactionId), toBase58String(pmtAssetId), pmtAmt, i.caller)
406408 let outAmAmt = r._1
407409 let outPrAmt = r._2
408410 let sts = parseIntValue(r._9)
409411 let state = r._10
410412 if (if (igs())
411413 then true
412414 else (sts == PoolShutdown))
413415 then throw(("Admin blocked: " + toString(sts)))
414416 else $Tuple5(outAmAmt, outPrAmt, pmtAmt, pmtAssetId, state)
415417 }
416418
417419
418420 func cp (caller,txId,amAsPmt,prAsPmt,slippage,emitLp,isOneAsset,pmtAmt,pmtId) = {
419421 let r = epo(txId, slippage, value(amAsPmt).amount, value(amAsPmt).assetId, value(prAsPmt).amount, value(prAsPmt).assetId, caller, false, emitLp, isOneAsset, pmtAmt, pmtId)
420422 let sts = parseIntValue(r._8)
421423 if (if (if (igs())
422424 then true
423425 else (sts == PoolPutDis))
424426 then true
425427 else (sts == PoolShutdown))
426428 then throw(("Blocked:" + toString(sts)))
427429 else r
428430 }
429431
430432
431433 func m () = match getString(mpk()) {
432434 case s: String =>
433435 fromBase58String(s)
434436 case _: Unit =>
435437 unit
436438 case _ =>
437439 throw("Match error")
438440 }
439441
440442
441443 func pm () = match getString(pmpk()) {
442444 case s: String =>
443445 fromBase58String(s)
444446 case _: Unit =>
445447 unit
446448 case _ =>
447449 throw("Match error")
448450 }
449451
450452
451453 let pd = throw("Permission denied")
452454
453455 func mm (i) = match m() {
454456 case pk: ByteVector =>
455457 if ((i.callerPublicKey == pk))
456458 then true
457459 else pd
458460 case _: Unit =>
459461 if ((i.caller == this))
460462 then true
461463 else pd
462464 case _ =>
463465 throw("Match error")
464466 }
465467
466468
467469 @Callable(i)
468470 func constructor (fc) = {
469471 let c = mm(i)
470472 if ((c == c))
471473 then [StringEntry(fc(), fc)]
472474 else throw("Strict value is not equal to itself.")
473475 }
474476
475477
476478
477479 @Callable(i)
478480 func setManager (pendingManagerPublicKey) = {
479481 let c = mm(i)
480482 if ((c == c))
481483 then {
482484 let cm = fromBase58String(pendingManagerPublicKey)
483485 if ((cm == cm))
484486 then [StringEntry(pmpk(), pendingManagerPublicKey)]
485487 else throw("Strict value is not equal to itself.")
486488 }
487489 else throw("Strict value is not equal to itself.")
488490 }
489491
490492
491493
492494 @Callable(i)
493495 func confirmManager () = {
494496 let p = pm()
495497 let hpm = if (isDefined(p))
496498 then true
497499 else throw("No pending manager")
498500 if ((hpm == hpm))
499501 then {
500502 let cpm = if ((i.callerPublicKey == value(p)))
501503 then true
502504 else throw("You are not pending manager")
503505 if ((cpm == cpm))
504506 then [StringEntry(mpk(), toBase58String(value(p))), DeleteEntry(pmpk())]
505507 else throw("Strict value is not equal to itself.")
506508 }
507509 else throw("Strict value is not equal to itself.")
508510 }
509511
510512
511513
512514 @Callable(i)
513515 func put (slip,autoStake) = {
514516 let factCfg = gfc()
515517 let stakingCntr = valueOrErrorMessage(addressFromString(factCfg[idxFactStakCntr]), "Wr st addr")
516518 let slipCntr = valueOrErrorMessage(addressFromString(factCfg[idxFactSlippCntr]), "Wr sl addr")
517519 if ((0 > slip))
518520 then throw("Wrong slippage")
519521 else if ((size(i.payments) != 2))
520522 then throw("2 pmnts expd")
521523 else {
522524 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, "")
523525 let emitLpAmt = e._2
524526 let lpAssetId = e._7
525527 let state = e._9
526528 let amDiff = e._10
527529 let prDiff = e._11
528530 let amId = e._12
529531 let prId = e._13
530532 let r = invoke(fca, "emit", [emitLpAmt], nil)
531533 if ((r == r))
532534 then {
533535 let el = match r {
534536 case legacy: Address =>
535537 invoke(legacy, "emit", [emitLpAmt], nil)
536538 case _ =>
537539 unit
538540 }
539541 if ((el == el))
540542 then {
541543 let sa = if ((amDiff > 0))
542544 then invoke(slipCntr, "put", nil, [AttachedPayment(amId, amDiff)])
543545 else nil
544546 if ((sa == sa))
545547 then {
546548 let sp = if ((prDiff > 0))
547549 then invoke(slipCntr, "put", nil, [AttachedPayment(prId, prDiff)])
548550 else nil
549551 if ((sp == sp))
550552 then {
551553 let lpTrnsfr = if (autoStake)
552554 then {
553555 let ss = invoke(stakingCntr, "stake", nil, [AttachedPayment(lpAssetId, emitLpAmt)])
554556 if ((ss == ss))
555557 then nil
556558 else throw("Strict value is not equal to itself.")
557559 }
558560 else [ScriptTransfer(i.caller, emitLpAmt, lpAssetId)]
559561 (state ++ lpTrnsfr)
560562 }
561563 else throw("Strict value is not equal to itself.")
562564 }
563565 else throw("Strict value is not equal to itself.")
564566 }
565567 else throw("Strict value is not equal to itself.")
566568 }
567569 else throw("Strict value is not equal to itself.")
568570 }
569571 }
570572
571573
572574
573575 @Callable(i)
574576 func putOneTkn (amAssetPart,prAssetPart,outLp,slippage,autoStake) = {
575577 let cfg = gfc()
576578 let stakingCntr = valueOrErrorMessage(addressFromString(cfg[idxFactStakCntr]), "Wr st addr")
577579 let slipCntr = valueOrErrorMessage(addressFromString(cfg[idxFactSlippCntr]), "Wr sl addr")
578580 let gwxCntr = valueOrErrorMessage(addressFromString(cfg[idxFactGwxRewCntr]), "Wr gwx addr")
579581 let poolCfg = gpc()
580582 let amId = poolCfg[idxAmAsId]
581583 let prId = poolCfg[idxPrAsId]
582584 let amDcm = parseIntValue(poolCfg[idxAmtAsDcm])
583585 let prDcm = parseIntValue(poolCfg[idxPriceAsDcm])
584586 let addon = valueOrElse(getString(this, ada()), "")
585587 let userAddress = if ((addon == toString(i.caller)))
586588 then i.originCaller
587589 else i.caller
588590 let addonContract = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(ada()), "no addons")), "addon address in not valid")
589591 let check = reentrantInvoke(addonContract, "ensureCanGetOrPutOneTkn", [toString(userAddress)], nil)
590592 if ((check == check))
591593 then if (if (if (if ((0 >= slippage))
592594 then true
593595 else (0 >= amAssetPart))
594596 then true
595597 else (0 >= prAssetPart))
596598 then true
597599 else (0 >= outLp))
598600 then throw("Wrong params")
599601 else if ((size(i.payments) != 1))
600602 then throw("1 pmnt expd")
601603 else {
602604 let pmt = value(i.payments[0])
603605 let pmtAssetId = toBase58String(value(pmt.assetId))
604606 let pmtAmt = pmt.amount
605607 if (if (if ((amAssetPart > pmtAmt))
606608 then true
607609 else (prAssetPart > pmtAmt))
608610 then true
609611 else (10000000 > pmtAmt))
610612 then throw("Wrong pmt amt")
611613 else {
612614 let amBalance = getAccBalance(amId)
613615 let prBalance = getAccBalance(prId)
614- let $t02483725217 = if ((pmtAssetId == amId))
616+ let $t02478225162 = if ((pmtAssetId == amId))
615617 then $Tuple6((amBalance - pmtAmt), prBalance, (pmtAmt - amAssetPart), prAssetPart, 0, 0)
616618 else if ((pmtAssetId == prId))
617619 then $Tuple6(amBalance, (prBalance - pmtAmt), 0, 0, (pmtAmt - prAssetPart), amAssetPart)
618620 else throw("wrong pmtAssetId")
619- let amBalanceNow = $t02483725217._1
620- let prBalanceNow = $t02483725217._2
621- let virtSwapInAm = $t02483725217._3
622- let virtSwapOutPr = $t02483725217._4
623- let virtSwapInPr = $t02483725217._5
624- let virtSwapOutAm = $t02483725217._6
621+ let amBalanceNow = $t02478225162._1
622+ let prBalanceNow = $t02478225162._2
623+ let virtSwapInAm = $t02478225162._3
624+ let virtSwapOutPr = $t02478225162._4
625+ let virtSwapInPr = $t02478225162._5
626+ let virtSwapOutAm = $t02478225162._6
625627 let D0 = invoke(gwxCntr, "calcD", [toString(amBalanceNow), toString(prBalanceNow), A, Amult, Dconv], nil)
626628 let D1 = invoke(gwxCntr, "calcD", [toString(toBigInt(((amBalanceNow + virtSwapInAm) - virtSwapOutAm))), toString(toBigInt(((prBalanceNow + virtSwapInPr) - virtSwapOutPr))), A, Amult, Dconv], nil)
627629 let D0vsD1 = vd(parseBigIntValue(str(D1)), parseBigIntValue(str(D0)), slippage4D)
628630 if ((D0vsD1 == D0vsD1))
629631 then {
630632 let estPut = cp(toString(i.caller), toBase58String(i.transactionId), AttachedPayment(fromBase58String(amId), amAssetPart), AttachedPayment(fromBase58String(prId), prAssetPart), slippage, true, true, pmtAmt, pmtAssetId)
631633 let estimLP = estPut._2
632634 let lpAssetId = estPut._7
633635 let state = estPut._9
634636 let amDiff = estPut._10
635637 let prDiff = estPut._11
636638 let lpCalcRes = vad(toBigInt(estimLP), toBigInt(outLp), toBigInt(slippage))
637639 let emitLpAmt = toInt(lpCalcRes._2)
638640 let e = invoke(fca, "emit", [emitLpAmt], nil)
639641 if ((e == e))
640642 then {
641643 let el = match e {
642644 case legacy: Address =>
643645 invoke(legacy, "emit", [emitLpAmt], nil)
644646 case _ =>
645647 unit
646648 }
647649 if ((el == el))
648650 then {
649651 let sa = if ((amDiff > 0))
650652 then invoke(slipCntr, "put", nil, [AttachedPayment(fromBase58String(amId), amDiff)])
651653 else nil
652654 if ((sa == sa))
653655 then {
654656 let sp = if ((prDiff > 0))
655657 then invoke(slipCntr, "put", nil, [AttachedPayment(fromBase58String(prId), prDiff)])
656658 else nil
657659 if ((sp == sp))
658660 then {
659661 let lpTrnsfr = if (autoStake)
660662 then {
661663 let ss = invoke(stakingCntr, "stake", nil, [AttachedPayment(lpAssetId, emitLpAmt)])
662664 if ((ss == ss))
663665 then nil
664666 else throw("Strict value is not equal to itself.")
665667 }
666668 else [ScriptTransfer(i.caller, emitLpAmt, lpAssetId)]
667669 (state ++ lpTrnsfr)
668670 }
669671 else throw("Strict value is not equal to itself.")
670672 }
671673 else throw("Strict value is not equal to itself.")
672674 }
673675 else throw("Strict value is not equal to itself.")
674676 }
675677 else throw("Strict value is not equal to itself.")
676678 }
677679 else throw("Strict value is not equal to itself.")
678680 }
679681 }
680682 else throw("Strict value is not equal to itself.")
681683 }
682684
683685
684686
685687 @Callable(i)
686688 func putForFree (maxSlpg) = if ((0 > maxSlpg))
687689 then throw("Wrong slpg")
688690 else if ((size(i.payments) != 2))
689691 then throw("2 pmnts expd")
690692 else {
691693 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, "")
692694 estPut._9
693695 }
694696
695697
696698
697699 @Callable(i)
698700 func get () = {
699701 let r = cg(i)
700702 let outAmtAmt = r._1
701703 let outPrAmt = r._2
702704 let pmtAmt = r._3
703705 let pmtAssetId = r._4
704706 let state = r._5
705707 let b = invoke(fca, "burn", [pmtAmt], [AttachedPayment(pmtAssetId, pmtAmt)])
706708 if ((b == b))
707709 then state
708710 else throw("Strict value is not equal to itself.")
709711 }
710712
711713
712714
713715 @Callable(i)
714716 func getOneTkn (exchResult,notUsed,outAmount,outAssetId,slippage) = if ((size(i.payments) != 1))
715717 then throw("1 pmnt expd")
716718 else {
717719 let cfg = gpc()
718720 let lpId = cfg[idxLPAsId]
719721 let amId = cfg[idxAmAsId]
720722 let prId = cfg[idxPrAsId]
721723 let amDcm = parseIntValue(cfg[idxAmtAsDcm])
722724 let prDcm = parseIntValue(cfg[idxPriceAsDcm])
723725 let sts = cfg[idxPoolSt]
724726 let factCfg = gfc()
725727 let gwxCntr = valueOrErrorMessage(addressFromString(factCfg[idxFactGwxRewCntr]), "Wr sl addr")
726728 let pmt = value(i.payments[0])
727729 let addon = valueOrElse(getString(this, ada()), "")
728730 let userAddress = if ((addon == toString(i.caller)))
729731 then i.originCaller
730732 else i.caller
731733 let txId58 = toBase58String(i.transactionId)
732734 let pmtAssetId = value(pmt.assetId)
733735 let pmtAmt = pmt.amount
734736 let addonContract = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(ada()), "no addons")), "addon address in not valid")
735737 let check = reentrantInvoke(addonContract, "ensureCanGetOrPutOneTkn", [toString(userAddress)], nil)
736738 if ((check == check))
737739 then if ((1000000000 > pmtAmt))
738740 then throw("Min pmt 10 LP")
739741 else if (if (if ((0 > slippage))
740742 then true
741743 else (0 > exchResult))
742744 then true
743745 else (0 > outAmount))
744746 then throw("Wrong params")
745747 else if ((lpId != toBase58String(pmtAssetId)))
746748 then throw("Wrong LP")
747749 else {
748750 let r = ego(toBase58String(i.transactionId), toBase58String(pmtAssetId), pmtAmt, i.caller)
749751 let estimAmAmt = r._1
750752 let estimPrAmt = r._2
751753 let amBalance = getAccBalance(amId)
752754 let prBalance = getAccBalance(prId)
753- let $t03025330710 = if ((outAssetId == amId))
755+ let $t03019830655 = if ((outAssetId == amId))
754756 then $Tuple7((amBalance - estimAmAmt), (prBalance - estimPrAmt), exchResult, estimPrAmt, 0, 0, (estimAmAmt + exchResult))
755757 else if ((outAssetId == prId))
756758 then $Tuple7((amBalance - estimAmAmt), (prBalance - estimPrAmt), 0, 0, exchResult, estimAmAmt, (estimPrAmt + exchResult))
757759 else throw("wrong outAssetId")
758- let amBalanceNow = $t03025330710._1
759- let prBalanceNow = $t03025330710._2
760- let virtSwapInAm = $t03025330710._3
761- let virtSwapOutPr = $t03025330710._4
762- let virtSwapInPr = $t03025330710._5
763- let virtSwapOutAm = $t03025330710._6
764- let totalGet = $t03025330710._7
760+ let amBalanceNow = $t03019830655._1
761+ let prBalanceNow = $t03019830655._2
762+ let virtSwapInAm = $t03019830655._3
763+ let virtSwapOutPr = $t03019830655._4
764+ let virtSwapInPr = $t03019830655._5
765+ let virtSwapOutAm = $t03019830655._6
766+ let totalGet = $t03019830655._7
765767 if (if ((0 > virtSwapInAm))
766768 then true
767769 else (0 > virtSwapInPr))
768770 then throw("Wrong calc")
769771 else {
770772 let D0 = invoke(gwxCntr, "calcD", [toString(amBalanceNow), toString(prBalanceNow), A, Amult, Dconv], nil)
771773 let D1 = invoke(gwxCntr, "calcD", [toString(((amBalanceNow - virtSwapInAm) + virtSwapOutAm)), toString(((prBalanceNow + virtSwapOutPr) - virtSwapInPr)), A, Amult, Dconv], nil)
772774 let D0vsD1 = vd(parseBigIntValue(str(D1)), parseBigIntValue(str(D0)), slippage4D)
773775 if ((D0vsD1 == D0vsD1))
774776 then {
775777 let finalRes = vad(toBigInt(totalGet), toBigInt(outAmount), toBigInt(slippage))
776778 if ((finalRes == finalRes))
777779 then {
778- let $t03141531519 = if ((outAssetId == amId))
780+ let $t03136031464 = if ((outAssetId == amId))
779781 then $Tuple2(toInt(finalRes._2), 0)
780782 else $Tuple2(0, toInt(finalRes._2))
781- let outAm = $t03141531519._1
782- let outPr = $t03141531519._2
783+ let outAm = $t03136031464._1
784+ let outPr = $t03136031464._2
783785 let curPrX18 = cpbi(t1(prBalance, prDcm), t1(amBalance, amDcm))
784786 let curPr = f1(curPrX18, scale8)
785787 let state = [ScriptTransfer(userAddress, (outAm + outPr), if ((outAssetId == "WAVES"))
786788 then unit
787789 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)]
788790 if ((state == state))
789791 then {
790792 let burn = invoke(fca, "burn", [pmtAmt], [AttachedPayment(pmtAssetId, pmtAmt)])
791793 if ((burn == burn))
792794 then state
793795 else throw("Strict value is not equal to itself.")
794796 }
795797 else throw("Strict value is not equal to itself.")
796798 }
797799 else throw("Strict value is not equal to itself.")
798800 }
799801 else throw("Strict value is not equal to itself.")
800802 }
801803 }
802804 else throw("Strict value is not equal to itself.")
803805 }
804806
805807
806808
807809 @Callable(i)
808810 func getNoLess (noLessThenAmtAsset,noLessThenPriceAsset) = {
809811 let r = cg(i)
810812 let outAmAmt = r._1
811813 let outPrAmt = r._2
812814 let pmtAmt = r._3
813815 let pmtAssetId = r._4
814816 let state = r._5
815817 if ((noLessThenAmtAsset > outAmAmt))
816818 then throw(((("Failed: " + toString(outAmAmt)) + " < ") + toString(noLessThenAmtAsset)))
817819 else if ((noLessThenPriceAsset > outPrAmt))
818820 then throw(((("Failed: " + toString(outPrAmt)) + " < ") + toString(noLessThenPriceAsset)))
819821 else {
820822 let burnLPAssetOnFactory = invoke(fca, "burn", [pmtAmt], [AttachedPayment(pmtAssetId, pmtAmt)])
821823 if ((burnLPAssetOnFactory == burnLPAssetOnFactory))
822824 then state
823825 else throw("Strict value is not equal to itself.")
824826 }
825827 }
826828
827829
828830
829831 @Callable(i)
830832 func unstakeAndGet (amount) = {
831833 let checkPayments = if ((size(i.payments) != 0))
832834 then throw("No pmnts expd")
833835 else true
834836 if ((checkPayments == checkPayments))
835837 then {
836838 let cfg = gpc()
837839 let factoryCfg = gfc()
838840 let lpAssetId = fromBase58String(cfg[idxLPAsId])
839841 let staking = valueOrErrorMessage(addressFromString(factoryCfg[idxFactStakCntr]), "Wr st addr")
840842 let unstakeInv = invoke(staking, "unstake", [toBase58String(lpAssetId), amount], nil)
841843 if ((unstakeInv == unstakeInv))
842844 then {
843845 let r = ego(toBase58String(i.transactionId), toBase58String(lpAssetId), amount, i.caller)
844846 let sts = parseIntValue(r._9)
845847 let state = r._10
846848 let v = if (if (igs())
847849 then true
848850 else (sts == PoolShutdown))
849851 then throw(("Blocked: " + toString(sts)))
850852 else true
851853 if ((v == v))
852854 then {
853855 let burnA = invoke(fca, "burn", [amount], [AttachedPayment(lpAssetId, amount)])
854856 if ((burnA == burnA))
855857 then state
856858 else throw("Strict value is not equal to itself.")
857859 }
858860 else throw("Strict value is not equal to itself.")
859861 }
860862 else throw("Strict value is not equal to itself.")
861863 }
862864 else throw("Strict value is not equal to itself.")
863865 }
864866
865867
866868
867869 @Callable(i)
868870 func activate (amtAsStr,prAsStr) = if ((toString(i.caller) != toString(fca)))
869871 then throw("denied")
870872 else $Tuple2([StringEntry(aa(), amtAsStr), StringEntry(pa(), prAsStr)], "success")
871873
872874
873875
874876 @Callable(i)
875877 func setS (k,v) = if ((toString(i.caller) != strf(this, ada())))
876878 then pd
877879 else [StringEntry(k, v)]
878880
879881
880882
881883 @Callable(i)
882884 func setI (k,v) = if ((toString(i.caller) != strf(this, ada())))
883885 then pd
884886 else [IntegerEntry(k, v)]
885887
886888
887889
888890 @Callable(i)
889891 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, gpc())
890892
891893
892894
893895 @Callable(i)
894896 func getAccBalanceWrapperREADONLY (assetId) = $Tuple2(nil, getAccBalance(assetId))
895897
896898
897899
898900 @Callable(i)
899901 func calcPricesWrapperREADONLY (amAmt,prAmt,lpAmt) = {
900902 let pr = calcPrices(amAmt, prAmt, lpAmt)
901903 $Tuple2(nil, [toString(pr[0]), toString(pr[1]), toString(pr[2])])
902904 }
903905
904906
905907
906908 @Callable(i)
907909 func fromX18WrapperREADONLY (val,resScaleMult) = $Tuple2(nil, f1(parseBigIntValue(val), resScaleMult))
908910
909911
910912
911913 @Callable(i)
912914 func toX18WrapperREADONLY (origVal,origScaleMult) = $Tuple2(nil, toString(t1(origVal, origScaleMult)))
913915
914916
915917
916918 @Callable(i)
917919 func calcPriceBigIntWrapperREADONLY (prAmtX18,amAmtX18) = $Tuple2(nil, toString(cpbi(parseBigIntValue(prAmtX18), parseBigIntValue(amAmtX18))))
918920
919921
920922
921923 @Callable(i)
922924 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, ""))
923925
924926
925927
926928 @Callable(i)
927929 func estimateGetOperationWrapperREADONLY (txId58,pmtAsId,pmtLpAmt,usrAddr) = {
928930 let r = ego(txId58, pmtAsId, pmtLpAmt, addressFromStringValue(usrAddr))
929931 $Tuple2(nil, $Tuple10(r._1, r._2, r._3, r._4, r._5, r._6, r._7, toString(r._8), r._9, r._10))
930932 }
931933
932934
933935 @Verifier(tx)
934936 func verify () = match tx {
935937 case order: Order =>
936938 let mtchPub = mp()
937939 let orV = moa(order)
938940 let sndrV = sigVerify(order.bodyBytes, order.proofs[0], order.senderPublicKey)
939941 let mtchV = sigVerify(order.bodyBytes, order.proofs[1], mtchPub)
940942 if (if (if (orV)
941943 then sndrV
942944 else false)
943945 then mtchV
944946 else false)
945947 then true
946948 else toe(orV, sndrV, mtchV)
947949 case _ =>
948950 let targetPublicKey = match m() {
949951 case pk: ByteVector =>
950952 pk
951953 case _: Unit =>
952954 tx.senderPublicKey
953955 case _ =>
954956 throw("Match error")
955957 }
956958 sigVerify(tx.bodyBytes, tx.proofs[0], targetPublicKey)
957959 }
958960

github/deemru/w8io/169f3d6 
131.36 ms