tx · V9D3acSCg93xkjD61fuNua7yg5wni65pUZhdNxagBpT

3N8b7mamWRbw6YjYJgsNGzTsKAbsbf4zVSA:  -0.03100000 Waves

2022.07.10 03:32 [2132904] smart account 3N8b7mamWRbw6YjYJgsNGzTsKAbsbf4zVSA > SELF 0.00000000 Waves

{ "type": 13, "id": "V9D3acSCg93xkjD61fuNua7yg5wni65pUZhdNxagBpT", "fee": 3100000, "feeAssetId": null, "timestamp": 1657413198331, "version": 2, "chainId": 84, "sender": "3N8b7mamWRbw6YjYJgsNGzTsKAbsbf4zVSA", "senderPublicKey": "FA2TFZp55AkfpLAK7toKNNdufbHH3cY6aCSSMFcFPafT", "proofs": [ "29J2p71Ri7ctj2nyEQZssRUJy9fuQStjPZQ3AeUtLTgdjkBXMZrEhQaCbowhXD3wrRCxnJy78cbexBExdvR4QqZ3" ], "script": "base64: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ZUFzc2V0AAAAAwAAAAZhc3NldFMAAAALc3RyaW5nQXNzZXQAAAAHYWNXYXZlcwMDCQAAAAAAAAIFAAAABmFzc2V0UwUAAAAFV0FWRVMJAAAAAAAAAgUAAAALc3RyaW5nQXNzZXQCAAAABVdBVkVTBwMFAAAAB2FjV2F2ZXMGCQAAAgAAAAECAAAANFRoZSBzbWFydCBjb250cmFjdCBkb2VzIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBXYXZlcy4DCQAAAAAAAAIFAAAABmFzc2V0UwkAAlkAAAABBQAAAAtzdHJpbmdBc3NldAYHAAAADQAAAAFpAQAAAAtjb25zdHJ1Y3RvcgAAAAkAAAALTWFpbkFzc2V0SWQAAAALVXNkbkFzc2V0SWQAAAALVXNkdEFzc2V0SWQAAAALVXNkY0Fzc2V0SWQAAAALTmdubkFzc2V0SWQAAAALRXVybkFzc2V0SWQAAAAScGVyY2VudGFnZVJhdGVTd2FwAAAAEWJsb2NrRGlzdHJpYnV0aW9uAAAAC2FjY2VwdFdhdmVzAwMJAAAAAAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzBgkAAAAAAAACCAUAAAABaQAAAAZjYWxsZXIJAQAAABFhZG1pblZlcmlmaWNhdGlvbgAAAAAEAAAAD2tleVBvb2xVc2RuVXNkdAkBAAAAAmtwAAAAAgUAAAALVXNkbkFzc2V0SWQFAAAAC1VzZHRBc3NldElkBAAAAA9rZXlQb29sVXNkblVzZGMJAQAAAAJrcAAAAAIFAAAAC1VzZG5Bc3NldElkBQAAAAtVc2RjQXNzZXRJZAQAAAAPa2V5UG9vbFVzZG5OZ25uCQEAAAACa3AAAAACBQAAAAtVc2RuQXNzZXRJZAUAAAALTmdubkFzc2V0SWQEAAAAEGtleVBvb2xVc2RuV2F2ZXMJAQAAAAJrcAAAAAIFAAAAC1VzZG5Bc3NldElkBQAAAAV3YXZlcwQAAAAUa2V5UG9vbFVzZG5NYWluQXNzZXQJAQAAAAJrcAAAAAIFAAAAC1VzZG5Bc3NldElkBQAAAAtNYWluQXNzZXRJZAQAAAAPa2V5UG9vbFVzZG5FdXJuCQEAAAACa3AAAAACBQAAAAtVc2RuQXNzZXRJZAUAAAALRXVybkFzc2V0SWQEAAAAD2tleVBvb2xVc2RjVXNkdAkBAAAAAmtwAAAAAgUAAAALVXNkY0Fzc2V0SWQFAAAAC1VzZHRBc3NldElkBAAAAA9rZXlQb29sVXNkY05nbm4JAQAAAAJrcAAAAAIFAAAAC1VzZGNBc3NldElkBQAAAAtOZ25uQXNzZXRJZAQAAAAQa2V5UG9vbFVzZGNXYXZlcwkBAAAAAmtwAAAAAgUAAAALVXNkY0Fzc2V0SWQFAAAABXdhdmVzBAAAABRrZXlQb29sVXNkY01haW5Bc3NldAkBAAAAAmtwAAAAAgUAAAALVXNkY0Fzc2V0SWQFAAAAC01haW5Bc3NldElkBAAAAA9rZXlQb29sVXNkY0V1cm4JAQAAAAJrcAAAAAIFAAAAC1VzZGNBc3NldElkBQAAAAtFdXJuQXNzZXRJZAQAAAAPa2V5UG9vbFVzZHROZ25uCQEAAAACa3AAAAACBQAAAAtVc2R0QXNzZXRJZAUAAAALTmdubkFzc2V0SWQEAAAAEGtleVBvb2xVc2R0V2F2ZXMJAQAAAAJrcAAAAAIFAAAAC1VzZHRBc3NldElkBQAAAAV3YXZlcwQAAAAUa2V5UG9vbFVzZHRNYWluQXNzZXQJAQAAAAJrcAAAAAIFAAAAC1VzZHRBc3NldElkBQAAAAtNYWluQXNzZXRJZAQAAAAPa2V5UG9vbFVzZHRFdXJuCQEAAAACa3AAAAACBQAAAAtVc2R0QXNzZXRJZAUAAAALRXVybkFzc2V0SWQEAAAAEGtleVBvb2xOZ25uV2F2ZXMJAQAAAAJrcAAAAAIFAAAAC05nbm5Bc3NldElkBQAAAAV3YXZlcwQAAAAUa2V5UG9vbE5nbm5NYWluQXNzZXQJAQAAAAJrcAAAAAIFAAAAC05nbm5Bc3NldElkBQAAAAtNYWluQXNzZXRJZAQAAAAPa2V5UG9vbE5nbm5FdXJuCQEAAAACa3AAAAACBQAAAAtOZ25uQXNzZXRJZAUAAAALRXVybkFzc2V0SWQEAAAAEGtleVBvb2xNYWluV2F2ZXMJAQAAAAJrcAAAAAIFAAAAC01haW5Bc3NldElkBQAAAAV3YXZlcwQAAAAPa2V5UG9vbE1haW5FdXJuCQEAAAACa3AAAAACBQAAAAtNYWluQXNzZXRJZAUAAAALRXVybkFzc2V0SWQEAAAAEGtleVBvb2xFdXJuV2F2ZXMJ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AAACBQAAAAZBc3NldDEFAAAABkFzc2V0MgUAAAAGQXNzZXQxBAAAABNjdXJyZW50QW1vdW50QXNzZXQyCQEAAAAGcG9vbEFBAAAAAwUAAAAKY3VycmVudEtleQkBAAAAAmtwAAAAAgUAAAAGQXNzZXQxBQAAAAZBc3NldDIFAAAABkFzc2V0MgQAAAAWbmV3Y3VycmVudEFtb3VudEFzc2V0MQkAAGUAAAACBQAAABNjdXJyZW50QW1vdW50QXNzZXQxBQAAAA1yZWNlaXZlQXNzZXQxBAAAABZuZXdjdXJyZW50QW1vdW50QXNzZXQyCQAAZQAAAAIFAAAAE2N1cnJlbnRBbW91bnRBc3NldDIFAAAADXJlY2VpdmVBc3NldDIEAAAAEG5ld2N1cnJlbnRBbW91bnQJAABlAAAAAgUAAAANY3VycmVudEFtb3VudAUAAAAGQW1vdW50BAAAAA1uZXdhc3NldDFwb29sCQAAZQAAAAIFAAAACmFzc2V0MXBvb2wFAAAADXJlY2VpdmVBc3NldDEEAAAADW5ld2Fzc2V0MnBvb2wJAABlAAAAAgUAAAAKYXNzZXQycG9vbAUAAAANcmVjZWl2ZUFzc2V0MgMJAAAAAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAkAAlkAAAABBQAAAAlscEFzc2V0SWQDCQAAAAAAAAIFAAAABkFtb3VudAgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50CQAETAAAAAIJAQAAAARCdXJuAAAAAgkAAlkAAAABBQAAAAlscEFzc2V0SWQFAAAABkFtb3VudAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMFAAAADXJlY2VpdmVBc3NldDEFAAAABmFzc2V0MQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMFAAAADXJlY2VpdmVBc3NldDIFAAAABmFzc2V0MgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAABHBrZXkAAAADBQAAAAZBc3NldDEFAAAABkFzc2V0MgUAAAAKY3VycmVudEtleQUAAAAGaGVpZ2h0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAACmN1cnJlbnRLZXkCAAAAAV8JAQAAAAJrcAAAAAIFAAAABkFzc2V0MQUAAAAGQXNzZXQyAgAAAAFfBQAAAAZBc3NldDEFAAAAFm5ld2N1cnJlbnRBbW91bnRBc3NldDEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAKY3VycmVudEtleQIAAAABXwkBAAAAAmtwAAAAAgUAAAAGQXNzZXQxBQAAAAZBc3NldDICAAAAAV8FAAAABkFzc2V0MgUAAAAWbmV3Y3VycmVudEFtb3VudEFzc2V0MgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAQAAAAJrcAAAAAIFAAAABkFzc2V0MQUAAAAGQXNzZXQyAgAAAAFfBQAAAApjdXJyZW50S2V5BQAAABBuZXdjdXJyZW50QW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkBAAAAAmtwAAAAAgUAAAAGQXNzZXQxBQAAAAZBc3NldDICAAAAAV8FAAAABkFzc2V0MQUAAAANbmV3YXNzZXQxcG9vbAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAQAAAAJrcAAAAAIFAAAABkFzc2V0MQUAAAAGQXNzZXQyAgAAAAFfBQAAAAZBc3NldDIFAAAADW5ld2Fzc2V0MnBvb2wJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAABkFzc2V0MQkAAGUAAAACCQEAAAATZ2V0QW1vdW50QmxvY2tBc3NldAAAAAEFAAAABkFzc2V0MQUAAAANcmVjZWl2ZUFzc2V0MQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAGQXNzZXQyCQAAZQAAAAIJAQAAABNnZXRBbW91bnRCbG9ja0Fzc2V0AAAAAQUAAAAGQXNzZXQyBQAAAA1yZWNlaXZlQXNzZXQyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAlscEFzc2V0SWQJAABlAAAAAgkBAAAAE2dldEFtb3VudEJsb2NrQXNzZXQAAAABBQAAAAlscEFzc2V0SWQFAAAABkFtb3VudAUAAAADbmlsCQAAAgAAAAECAAAALFdpdGhkcmF3YWwgYW1vdW50IGxvd2VyIHRoYW4gYXNzZXQgbHAgYW1vdW50CQAAAgAAAAECAAAAOVJlcXVpcmVzIGFuIGxwIGFzc2V0IGFzIHBheW1lbnQgdG8gcmVtb3ZlIGxvY2tlZCBhbW91bnRzLgkAAAIAAAABAgAAAEhBbW91bnQgdG8gYmUgd2l0aGRyYXduIGdyZWF0ZXIgdGhhbiB0aGUgYW1vdW50IGF2YWlsYWJsZSBmb3Igd2l0aGRyYXdhbC4JAAACAAAAAQIAAAArWW91IGhhdmUgbm8gbG9ja2VkIHZhbHVlcyDigIvigItpbiB0aGUgcG9vbAkAAAIAAAABAgAAABFJbnZhbGlkIFBvb2wgS2V5LgkAAAIAAAABAgAAABlJbnZhbGlkIEFzc2V0MSBvciBBc3NldDIhCQAAAgAAAAECAAAAIEFzc2V0MSBjYW5ub3QgYmUgZXF1YWwgdG8gQXNzZXQyCQAAAgAAAAECAAAAKWxpcXVpZGl0eSBpcyBjdXJyZW50bHkgdW5kZXIgbWFpbnRlbmFuY2UuCQAAAgAAAAECAAAAJGRBcHAgaXMgY3VycmVudGx5IHVuZGVyIG1haW50ZW5hbmNlLgAAAAFpAQAAAARzd2FwAAAAAgAAAAZBc3NldDEAAAAGQXNzZXQyBAAAAApjdXJyZW50S2V5CQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAB2FjV2F2ZXMJAQAAABFAZXh0ck5hdGl2ZSgxMDUxKQAAAAIFAAAABHRoaXMFAAAABmFXYXZlcwQAAAAFcG93ZXIJAQAAABFAZXh0ck5hdGl2ZSgxMDUxKQAAAAIFAAAABHRoaXMFAAAAAmFjBAAAAAxzd2FwQWN0aXZhdGUJAQAAABFAZXh0ck5hdGl2ZSgxMDUxKQAAAAIF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", "height": 2132904, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7Y1qEyibqKGgPQWBfgYwGbfNF8HUTU3rXDXBJuRQ1ht1 Next: none Diff:
OldNewDifferences
428428 let bu = fromBase58String(getStringValue(this, F))
429429 let aX = fromBase58String(getStringValue(this, a))
430430 let aY = getStringValue(this, (b + J(U, V)))
431+ let bv = getIntegerValue(this, ((J(U, V) + "_") + U))
432+ let bw = getIntegerValue(this, ((J(U, V) + "_") + V))
433+ let bx = (bv / bw)
434+ let by = (bw / bv)
431435 if (aV)
432436 then if (!(bp))
433437 then if (if (if (!((K == L)))
463467 else (L == bu)
464468 else false)
465469 then if (!((N == 0)))
466- then {
467- let aZ = toBase58String(s.caller.bytes)
468- let ba = O(aZ, J(U, V))
469- let bv = Q(aZ, J(U, V), U)
470- let bw = Q(aZ, J(U, V), V)
471- let bx = S(J(U, V), U)
472- let by = S(J(U, V), V)
473- let bz = ((bx * i) / by)
474- let bA = (bv + s.payments[0].amount)
475- let bB = (bw + s.payments[1].amount)
476- let bC = (ba + bz)
477- let bD = (bx + s.payments[0].amount)
478- let bE = (by + s.payments[1].amount)
479-[Reissue(fromBase58String(aY), bz, true), ScriptTransfer(Address(s.caller.bytes), bz, fromBase58String(aY)), IntegerEntry(T(U, V, aZ), height), IntegerEntry(((((aZ + "_") + J(U, V)) + "_") + U), bA), IntegerEntry(((((aZ + "_") + J(U, V)) + "_") + V), bB), IntegerEntry(((J(U, V) + "_") + aZ), bC), IntegerEntry(((J(U, V) + "_") + U), bD), IntegerEntry(((J(U, V) + "_") + V), bE), IntegerEntry(U, (q(U) + s.payments[0].amount)), IntegerEntry(V, (q(V) + s.payments[1].amount)), IntegerEntry(aY, (q(aY) + bz))]
480- }
470+ then if (if ((bx == (s.payments[0].amount / s.payments[1].amount)))
471+ then (by == (s.payments[1].amount / s.payments[0].amount))
472+ else false)
473+ then {
474+ let aZ = toBase58String(s.caller.bytes)
475+ let ba = O(aZ, J(U, V))
476+ let bz = Q(aZ, J(U, V), U)
477+ let bA = Q(aZ, J(U, V), V)
478+ let bB = S(J(U, V), U)
479+ let bC = S(J(U, V), V)
480+ let bD = ((bB * i) / bC)
481+ let bE = (bz + s.payments[0].amount)
482+ let bF = (bA + s.payments[1].amount)
483+ let bG = (ba + bD)
484+ let bH = (bB + s.payments[0].amount)
485+ let bI = (bC + s.payments[1].amount)
486+[Reissue(fromBase58String(aY), bD, true), ScriptTransfer(Address(s.caller.bytes), bD, fromBase58String(aY)), IntegerEntry(T(U, V, aZ), height), IntegerEntry(((((aZ + "_") + J(U, V)) + "_") + U), bE), IntegerEntry(((((aZ + "_") + J(U, V)) + "_") + V), bF), IntegerEntry(((J(U, V) + "_") + aZ), bG), IntegerEntry(((J(U, V) + "_") + U), bH), IntegerEntry(((J(U, V) + "_") + V), bI), IntegerEntry(U, (q(U) + s.payments[0].amount)), IntegerEntry(V, (q(V) + s.payments[1].amount)), IntegerEntry(aY, (q(aY) + bD))]
487+ }
488+ else throw("Payment of invalid 1/1 amounts to the Pool.")
481489 else throw("Invalid Pool Key.")
482490 else throw("Invalid Asset1 or Asset2!")
483491 else throw("Asset1 cannot be equal to Asset2")
488496
489497
490498 @Callable(s)
491-func removeLiquidity (U,V,bF) = {
499+func removeLiquidity (U,V,bJ) = {
492500 let aZ = toBase58String(s.caller.bytes)
493501 let aV = getBooleanValue(this, v)
494502 let bp = getBooleanValue(this, w)
513521 let bu = fromBase58String(getStringValue(this, F))
514522 let aY = getStringValue(this, (b + J(U, V)))
515523 let ba = O(aZ, J(U, V))
516- let bG = W(aZ, bh)
517- let bH = getIntegerValue(this, aY)
518- let bI = getIntegerValue(this, ((J(U, V) + "_") + U))
519- let bJ = getIntegerValue(this, ((J(U, V) + "_") + V))
524+ let bK = W(aZ, bh)
525+ let bL = getIntegerValue(this, aY)
526+ let bv = getIntegerValue(this, ((J(U, V) + "_") + U))
527+ let bw = getIntegerValue(this, ((J(U, V) + "_") + V))
520528 if (aV)
521529 then if (!(bp))
522530 then if (!((U == V)))
549557 else false)
550558 then if (!((N == 0)))
551559 then if (!((ba == 0)))
552- then if (((ba - bG) >= bF))
560+ then if (((ba - bK) >= bJ))
553561 then {
554- let bK = (bF / bH)
555- let bL = (bK * bI)
556- let bM = (bK * bJ)
557- let bx = S(J(U, V), U)
558- let by = S(J(U, V), V)
559- let bv = Q(aZ, J(U, V), U)
560- let bw = Q(aZ, J(U, V), V)
561- let bA = (bv - bL)
562- let bB = (bw - bM)
563- let bC = (ba - bF)
564- let bD = (bx - bL)
565- let bE = (by - bM)
562+ let bM = (bJ / bL)
563+ let bN = (bM * bv)
564+ let bO = (bM * bw)
565+ let bB = S(J(U, V), U)
566+ let bC = S(J(U, V), V)
567+ let bz = Q(aZ, J(U, V), U)
568+ let bA = Q(aZ, J(U, V), V)
569+ let bE = (bz - bN)
570+ let bF = (bA - bO)
571+ let bG = (ba - bJ)
572+ let bH = (bB - bN)
573+ let bI = (bC - bO)
566574 if ((s.payments[0].assetId == fromBase58String(aY)))
567- then if ((bF == s.payments[0].amount))
568- then [Burn(fromBase58String(aY), bF), ScriptTransfer(Address(s.caller.bytes), bL, K), ScriptTransfer(Address(s.caller.bytes), bM, L), IntegerEntry(T(U, V, aZ), height), IntegerEntry(((((aZ + "_") + J(U, V)) + "_") + U), bA), IntegerEntry(((((aZ + "_") + J(U, V)) + "_") + V), bB), IntegerEntry(((J(U, V) + "_") + aZ), bC), IntegerEntry(((J(U, V) + "_") + U), bD), IntegerEntry(((J(U, V) + "_") + V), bE), IntegerEntry(U, (q(U) - bL)), IntegerEntry(V, (q(V) - bM)), IntegerEntry(aY, (q(aY) - bF))]
575+ then if ((bJ == s.payments[0].amount))
576+ then [Burn(fromBase58String(aY), bJ), ScriptTransfer(Address(s.caller.bytes), bN, K), ScriptTransfer(Address(s.caller.bytes), bO, L), IntegerEntry(T(U, V, aZ), height), IntegerEntry(((((aZ + "_") + J(U, V)) + "_") + U), bE), IntegerEntry(((((aZ + "_") + J(U, V)) + "_") + V), bF), IntegerEntry(((J(U, V) + "_") + aZ), bG), IntegerEntry(((J(U, V) + "_") + U), bH), IntegerEntry(((J(U, V) + "_") + V), bI), IntegerEntry(U, (q(U) - bN)), IntegerEntry(V, (q(V) - bO)), IntegerEntry(aY, (q(aY) - bJ))]
569577 else throw("Withdrawal amount lower than asset lp amount")
570578 else throw("Requires an lp asset as payment to remove locked amounts.")
571579 }
585593 let aZ = toBase58String(s.caller.bytes)
586594 let ab = getBooleanValue(this, H)
587595 let aV = getBooleanValue(this, v)
588- let bN = getBooleanValue(this, x)
596+ let bP = getBooleanValue(this, x)
589597 let bh = J(U, V)
590598 let N = M(bh)
591599 let K = s.payments[0].assetId
595603 let bt = fromBase58String(getStringValue(this, E))
596604 let aX = fromBase58String(getStringValue(this, a))
597605 let bu = fromBase58String(getStringValue(this, F))
598- let bO = getIntegerValue(this, ((J(U, V) + "_") + U))
599- let bP = getIntegerValue(this, ((J(U, V) + "_") + V))
600- let bQ = getIntegerValue(this, g)
606+ let bQ = getIntegerValue(this, ((J(U, V) + "_") + U))
607+ let bR = getIntegerValue(this, ((J(U, V) + "_") + V))
608+ let bS = getIntegerValue(this, g)
601609 if (aV)
602- then if (!(bN))
610+ then if (!(bP))
603611 then if (if (!((U == V)))
604612 then if (Y(K, U, ab))
605613 then true
622630 then if ((s.payments[1].assetId == aX))
623631 then if ((s.payments[1].amount == 300000))
624632 then {
625- let bR = if (!((K == fromBase58String(U))))
626- then (bO / bP)
627- else (bP / bO)
628- let aM = (s.payments[0].amount - ((s.payments[0].amount * bQ) / (100 * i)))
629- let bS = (aM * bR)
630-[ScriptTransfer(Address(s.caller.bytes), bS, if ((V == G))
633+ let bT = if (!((K == fromBase58String(U))))
634+ then (bQ / bR)
635+ else (bR / bQ)
636+ let aM = (s.payments[0].amount - ((s.payments[0].amount * bS) / (100 * i)))
637+ let bU = (aM * bT)
638+[ScriptTransfer(Address(s.caller.bytes), bU, if ((V == G))
631639 then I
632- else fromBase58String(V)), IntegerEntry(V, (q(V) - bS)), IntegerEntry(((J(U, V) + "_") + V), (S(J(U, V), V) - bS))]
640+ else fromBase58String(V)), IntegerEntry(V, (q(V) - bU)), IntegerEntry(((J(U, V) + "_") + V), (S(J(U, V), V) - bU))]
633641 }
634642 else throw("Swap denied! 0.003 AxAi is required for the swap fee.")
635643 else throw("Invalid rate asset")
641649 }
642650
643651
644-@Verifier(bT)
645-func bU () = {
646- let r = bT
652+@Verifier(bV)
653+func bW () = {
654+ let r = bV
647655 if ($isInstanceOf(r, "Order"))
648656 then {
649- let bV = r
657+ let bX = r
650658 true
651659 }
652660 else if ($isInstanceOf(r, "ExchangeTransaction"))
653661 then {
654- let bW = r
662+ let bY = r
655663 true
656664 }
657- else sigVerify(bT.bodyBytes, bT.proofs[0], bT.senderPublicKey)
665+ else sigVerify(bV.bodyBytes, bV.proofs[0], bV.senderPublicKey)
658666 }
659667
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "main_asset"
55
66 let b = "lp_asset_"
77
88 let c = "pool__"
99
1010 let d = "STAKING_AMOUNT_"
1111
1212 let e = "LEASE_AMOUNT_"
1313
1414 let f = "ID_"
1515
1616 let g = "percentage_rate_fee"
1717
1818 let h = "Deposit_Height_Of_"
1919
2020 let i = 100000000
2121
2222 let j = 1000000
2323
2424 let k = Address(this.bytes)
2525
2626 let l = 5
2727
2828 func m (n) = toString(valueOrErrorMessage(addressFromString(n), (("Can't parse " + n) + " as address")))
2929
3030
3131 func o (p) = toBase58String(valueOrErrorMessage(value(assetInfo(fromBase58String(p))).id, (("Asset Id: " + p) + " is invalid.")))
3232
3333
3434 func q (p) = {
3535 let r = getInteger(this, p)
3636 if ($isInstanceOf(r, "Int"))
3737 then {
3838 let s = r
3939 s
4040 }
4141 else 0
4242 }
4343
4444
4545 func t (p) = {
4646 let r = assetInfo(p)
4747 if ($isInstanceOf(r, "Asset"))
4848 then {
4949 let u = r
5050 u.name
5151 }
5252 else throw("Can't find asset")
5353 }
5454
5555
5656 let v = "activate"
5757
5858 let w = "activate_pools"
5959
6060 let x = "activate_swap"
6161
6262 let y = "activate_liquidity"
6363
6464 let z = "block_distribuition"
6565
6666 let A = "Total_Tokens_Locked_"
6767
6868 let B = "usdn_asset"
6969
7070 let C = "usdt_asset"
7171
7272 let D = "usdc_asset"
7373
7474 let E = "ngnn_asset"
7575
7676 let F = "eurn_asset"
7777
7878 let G = "WAVES"
7979
8080 let H = "accept_waves"
8181
8282 let I = unit
8383
8484 func J (K,L) = (((c + K) + "_") + L)
8585
8686
8787 func M (N) = {
8888 let r = getInteger(this, N)
8989 if ($isInstanceOf(r, "Int"))
9090 then {
9191 let s = r
9292 s
9393 }
9494 else 0
9595 }
9696
9797
9898 func O (n,N) = {
9999 let r = getInteger(this, ((N + "_") + n))
100100 if ($isInstanceOf(r, "Int"))
101101 then {
102102 let P = r
103103 P
104104 }
105105 else 0
106106 }
107107
108108
109109 func Q (n,N,u) = {
110110 let r = getInteger(this, ((((N + "_") + n) + "_") + u))
111111 if ($isInstanceOf(r, "Int"))
112112 then {
113113 let R = r
114114 R
115115 }
116116 else 1
117117 }
118118
119119
120120 func S (N,u) = {
121121 let r = getInteger(this, ((N + "_") + u))
122122 if ($isInstanceOf(r, "Int"))
123123 then {
124124 let R = r
125125 R
126126 }
127127 else 1
128128 }
129129
130130
131131 func T (U,V,n) = (((h + J(U, V)) + "_") + n)
132132
133133
134134 func W (n,N) = {
135135 let r = getInteger(this, ((("STAKE_LP_" + n) + "_") + N))
136136 if ($isInstanceOf(r, "Int"))
137137 then {
138138 let R = r
139139 R
140140 }
141141 else 0
142142 }
143143
144144
145145 func X () = {
146146 let r = getString(this, "admin")
147147 if ($isInstanceOf(r, "String"))
148148 then {
149149 let P = r
150150 Address(fromBase58String(P))
151151 }
152152 else this
153153 }
154154
155155
156156 func Y (Z,aa,ab) = if (if ((Z == I))
157157 then (aa == "WAVES")
158158 else false)
159159 then if (ab)
160160 then true
161161 else throw("The smart contract does not currently support Waves.")
162162 else if ((Z == fromBase58String(aa)))
163163 then true
164164 else false
165165
166166
167167 @Callable(s)
168168 func constructor (ac,ad,ae,af,ag,ah,ai,aj,ak) = if (if ((s.caller == this))
169169 then true
170170 else (s.caller == X()))
171171 then {
172172 let al = J(ad, ae)
173173 let am = J(ad, af)
174174 let an = J(ad, ag)
175175 let ao = J(ad, G)
176176 let ap = J(ad, ac)
177177 let aq = J(ad, ah)
178178 let ar = J(af, ae)
179179 let as = J(af, ag)
180180 let at = J(af, G)
181181 let au = J(af, ac)
182182 let av = J(af, ah)
183183 let aw = J(ae, ag)
184184 let ax = J(ae, G)
185185 let ay = J(ae, ac)
186186 let az = J(ae, ah)
187187 let aA = J(ag, G)
188188 let aB = J(ag, ac)
189189 let aC = J(ag, ah)
190190 let aD = J(ac, G)
191191 let aE = J(ac, ah)
192192 let aF = J(ah, G)
193193 [StringEntry(a, ac), StringEntry(B, ad), StringEntry(D, af), StringEntry(C, ae), StringEntry(E, ag), BooleanEntry(H, ak), IntegerEntry(g, ai), BooleanEntry(v, true), BooleanEntry(x, false), BooleanEntry(w, false), BooleanEntry(y, false), IntegerEntry(z, aj), IntegerEntry(al, 1), IntegerEntry(ao, 1), IntegerEntry(am, 1), IntegerEntry(an, 1), IntegerEntry(ap, 1), IntegerEntry(ar, 1), IntegerEntry(as, 1), IntegerEntry(at, 1), IntegerEntry(ay, 1), IntegerEntry(aw, 1), IntegerEntry(ax, 1), IntegerEntry(aA, 1), IntegerEntry(aB, 1), IntegerEntry(aD, 1), IntegerEntry(aF, 1), IntegerEntry(aE, 1), IntegerEntry(aC, 1), IntegerEntry(av, 1), IntegerEntry(aq, 1), IntegerEntry(az, 1), StringEntry(F, ah)]
194194 }
195195 else throw("Only the Admin itself can invoke this function")
196196
197197
198198
199199 @Callable(s)
200200 func activate (aG) = if (if ((s.caller == this))
201201 then true
202202 else (s.caller == X()))
203203 then [BooleanEntry(v, aG)]
204204 else throw("Only the Admin itself can invoke this function")
205205
206206
207207
208208 @Callable(s)
209209 func maintenance (aH,aI,aJ) = if (if ((s.caller == this))
210210 then true
211211 else (s.caller == X()))
212212 then [BooleanEntry(w, aH), BooleanEntry(x, aI), BooleanEntry(y, aJ)]
213213 else throw("Only the Admin itself can invoke this function")
214214
215215
216216
217217 @Callable(s)
218218 func percentualRateFeeSwapEdit (aK) = if (if ((s.caller == this))
219219 then true
220220 else (s.caller == X()))
221221 then [IntegerEntry(g, aK)]
222222 else throw("Only the Admin itself can invoke this function")
223223
224224
225225
226226 @Callable(s)
227227 func acceptWaves (aL) = if (if ((s.caller == this))
228228 then true
229229 else (s.caller == X()))
230230 then [BooleanEntry(H, aL)]
231231 else throw("Only the Admin itself can invoke this function")
232232
233233
234234
235235 @Callable(s)
236236 func blockDistribution (aM) = if (if ((s.caller == this))
237237 then true
238238 else (s.caller == X()))
239239 then [IntegerEntry(z, aM)]
240240 else throw("Only the Admin itself can invoke this function")
241241
242242
243243
244244 @Callable(s)
245245 func addAdmin (n) = if (if ((s.caller == this))
246246 then true
247247 else (s.caller == X()))
248248 then [StringEntry("admin", n)]
249249 else throw("Only the Admin itself can invoke this function")
250250
251251
252252
253253 @Callable(s)
254254 func lpAssetCreateForPairPool (K,L,aN,aO) = {
255255 let aP = if ((K == G))
256256 then G
257257 else t(fromBase58String(K))
258258 let aQ = if ((L == G))
259259 then G
260260 else t(fromBase58String(L))
261261 let aR = if (aO)
262262 then aN
263263 else ((aP + "_") + aQ)
264264 let N = M(J(K, L))
265265 if (if ((s.caller == this))
266266 then true
267267 else (s.caller == X()))
268268 then if (!((N == 0)))
269269 then {
270270 let aS = Issue(aR, ((("LP asset for pool liquidity in AxAi Swap pair " + K) + "_") + L), 1, 8, true)
271271 let aT = calculateAssetId(aS)
272272 [StringEntry((b + J(K, L)), toBase58String(aT)), aS]
273273 }
274274 else throw("Invalid Pool Key. Try inverting the assets")
275275 else throw("Only the Admin itself can invoke this function")
276276 }
277277
278278
279279
280280 @Callable(s)
281281 func deposit (aU,U,V) = {
282282 let aV = getBooleanValue(this, v)
283283 let aW = getBooleanValue(this, y)
284284 let aX = getStringValue(this, a)
285285 let aY = if (aU)
286286 then getStringValue(this, (b + J(U, V)))
287287 else aX
288288 if (aV)
289289 then if (!(aW))
290290 then if ((s.payments[0].assetId != fromBase58String(aY)))
291291 then throw((("Invalid asset! Kindly Deposit Only " + aX) + " or valid asset lp"))
292292 else if (!(aU))
293293 then {
294294 let aZ = toBase58String(s.caller.bytes)
295295 let ba = {
296296 let r = getInteger(this, aZ)
297297 if ($isInstanceOf(r, "Int"))
298298 then {
299299 let R = r
300300 R
301301 }
302302 else 0
303303 }
304304 let bb = (ba + s.payments[0].amount)
305305 let bc = IntegerEntry(aZ, bb)
306306 let bd = IntegerEntry((h + aZ), height)
307307 let be = {
308308 let r = getInteger(this, "Total_Tokens_Locked:")
309309 if ($isInstanceOf(r, "Int"))
310310 then {
311311 let R = r
312312 R
313313 }
314314 else 0
315315 }
316316 let bf = (be + s.payments[0].amount)
317317 let bg = IntegerEntry("Total_Tokens_Locked:", bf)
318318 [bc, bd, bg]
319319 }
320320 else {
321321 let bh = J(U, V)
322322 let N = M(bh)
323323 if (!((N == 0)))
324324 then {
325325 let aZ = toBase58String(s.caller.bytes)
326326 let ba = {
327327 let r = getInteger(this, ((("STAKE_LP_" + aZ) + "_") + bh))
328328 if ($isInstanceOf(r, "Int"))
329329 then {
330330 let R = r
331331 R
332332 }
333333 else 0
334334 }
335335 let bb = (ba + s.payments[0].amount)
336336 let bc = IntegerEntry(((("STAKE_LP_" + aZ) + "_") + bh), bb)
337337 let bd = IntegerEntry(((((h + "_") + aZ) + "_") + bh), height)
338338 let be = {
339339 let r = getInteger(this, ("Total_Tokens_LP_Locked_" + bh))
340340 if ($isInstanceOf(r, "Int"))
341341 then {
342342 let R = r
343343 R
344344 }
345345 else 0
346346 }
347347 let bf = (be + s.payments[0].amount)
348348 let bg = IntegerEntry(("Total_Tokens_LP_Locked_" + bh), bf)
349349 [bc, bd, bg]
350350 }
351351 else throw("Invalid Pool key.")
352352 }
353353 else throw("liquidity is currently under maintenance.")
354354 else throw("dApp is currently under maintenance.")
355355 }
356356
357357
358358
359359 @Callable(s)
360360 func remove (aU,U,V,bi) = {
361361 let aV = getBooleanValue(this, v)
362362 let aW = getBooleanValue(this, y)
363363 let bj = s.payments[0]
364364 let aX = fromBase58String(getStringValue(this, a))
365365 if (aV)
366366 then if (!(aW))
367367 then {
368368 let aZ = toBase58String(s.caller.bytes)
369369 let ba = {
370370 let r = if (aU)
371371 then getIntegerValue(this, ((("STAKE_LP_" + aZ) + "_") + J(U, V)))
372372 else getIntegerValue(this, aZ)
373373 if ($isInstanceOf(r, "Int"))
374374 then {
375375 let R = r
376376 R
377377 }
378378 else 0
379379 }
380380 let bk = if (aU)
381381 then ((((h + "_") + aZ) + "_") + J(U, V))
382382 else (h + aZ)
383383 let be = if (aU)
384384 then getIntegerValue(this, ("Total_Tokens_LP_Locked_" + J(U, V)))
385385 else getIntegerValue(this, "Total_Tokens_Locked:")
386386 let bf = (be - bi)
387387 let bl = (height - getIntegerValue(this, bk))
388388 let bm = getIntegerValue(this, z)
389389 let bn = ((bl * bm) * i)
390390 let bo = (bn / (be / bi))
391391 if ((0 > bi))
392392 then throw(if (aU)
393393 then (((("Can't withdraw negative " + U) + "/") + V) + " amount")
394394 else "Can't withdraw negative AxAi amount")
395395 else {
396396 let bb = (ba - bi)
397397 if ((0 > bb))
398398 then throw(if (aU)
399399 then (((("Not enough Asset Lp " + U) + "/") + V) + " balance")
400400 else "Not enough AxAi balance")
401401 else [IntegerEntry(if (aU)
402402 then ((("STAKE_LP_" + aZ) + "_") + J(U, V))
403403 else aZ, bb), IntegerEntry(if (aU)
404404 then ("Total_Tokens_LP_Locked_" + J(U, V))
405405 else "Total_Tokens_Locked:", bf), ScriptTransfer(s.caller, bi, if (aU)
406406 then fromBase58String(getStringValue(this, (b + J(U, V))))
407407 else aX), ScriptTransfer(s.caller, bo, aX)]
408408 }
409409 }
410410 else throw("liquidity is currently under maintenance.")
411411 else throw("dApp is currently under maintenance.")
412412 }
413413
414414
415415
416416 @Callable(s)
417417 func addLiquidity (U,V) = {
418418 let aV = getBooleanValue(this, v)
419419 let bp = getBooleanValue(this, w)
420420 let ab = getBooleanValue(this, H)
421421 let N = M(J(U, V))
422422 let K = s.payments[0].assetId
423423 let L = s.payments[1].assetId
424424 let bq = fromBase58String(getStringValue(this, B))
425425 let br = fromBase58String(getStringValue(this, D))
426426 let bs = fromBase58String(getStringValue(this, C))
427427 let bt = fromBase58String(getStringValue(this, E))
428428 let bu = fromBase58String(getStringValue(this, F))
429429 let aX = fromBase58String(getStringValue(this, a))
430430 let aY = getStringValue(this, (b + J(U, V)))
431+ let bv = getIntegerValue(this, ((J(U, V) + "_") + U))
432+ let bw = getIntegerValue(this, ((J(U, V) + "_") + V))
433+ let bx = (bv / bw)
434+ let by = (bw / bv)
431435 if (aV)
432436 then if (!(bp))
433437 then if (if (if (!((K == L)))
434438 then Y(K, U, ab)
435439 else false)
436440 then Y(L, V, ab)
437441 else false)
438442 then if (if (if (if (if (if (if (if ((K == bq))
439443 then true
440444 else (K == br))
441445 then true
442446 else (K == bs))
443447 then true
444448 else (K == bt))
445449 then true
446450 else (K == aX))
447451 then true
448452 else (K == I))
449453 then true
450454 else (K == bu))
451455 then if (if (if (if (if (if ((L == bq))
452456 then true
453457 else (L == br))
454458 then true
455459 else (L == bs))
456460 then true
457461 else (L == bt))
458462 then true
459463 else (L == aX))
460464 then true
461465 else (L == I))
462466 then true
463467 else (L == bu)
464468 else false)
465469 then if (!((N == 0)))
466- then {
467- let aZ = toBase58String(s.caller.bytes)
468- let ba = O(aZ, J(U, V))
469- let bv = Q(aZ, J(U, V), U)
470- let bw = Q(aZ, J(U, V), V)
471- let bx = S(J(U, V), U)
472- let by = S(J(U, V), V)
473- let bz = ((bx * i) / by)
474- let bA = (bv + s.payments[0].amount)
475- let bB = (bw + s.payments[1].amount)
476- let bC = (ba + bz)
477- let bD = (bx + s.payments[0].amount)
478- let bE = (by + s.payments[1].amount)
479-[Reissue(fromBase58String(aY), bz, true), ScriptTransfer(Address(s.caller.bytes), bz, fromBase58String(aY)), IntegerEntry(T(U, V, aZ), height), IntegerEntry(((((aZ + "_") + J(U, V)) + "_") + U), bA), IntegerEntry(((((aZ + "_") + J(U, V)) + "_") + V), bB), IntegerEntry(((J(U, V) + "_") + aZ), bC), IntegerEntry(((J(U, V) + "_") + U), bD), IntegerEntry(((J(U, V) + "_") + V), bE), IntegerEntry(U, (q(U) + s.payments[0].amount)), IntegerEntry(V, (q(V) + s.payments[1].amount)), IntegerEntry(aY, (q(aY) + bz))]
480- }
470+ then if (if ((bx == (s.payments[0].amount / s.payments[1].amount)))
471+ then (by == (s.payments[1].amount / s.payments[0].amount))
472+ else false)
473+ then {
474+ let aZ = toBase58String(s.caller.bytes)
475+ let ba = O(aZ, J(U, V))
476+ let bz = Q(aZ, J(U, V), U)
477+ let bA = Q(aZ, J(U, V), V)
478+ let bB = S(J(U, V), U)
479+ let bC = S(J(U, V), V)
480+ let bD = ((bB * i) / bC)
481+ let bE = (bz + s.payments[0].amount)
482+ let bF = (bA + s.payments[1].amount)
483+ let bG = (ba + bD)
484+ let bH = (bB + s.payments[0].amount)
485+ let bI = (bC + s.payments[1].amount)
486+[Reissue(fromBase58String(aY), bD, true), ScriptTransfer(Address(s.caller.bytes), bD, fromBase58String(aY)), IntegerEntry(T(U, V, aZ), height), IntegerEntry(((((aZ + "_") + J(U, V)) + "_") + U), bE), IntegerEntry(((((aZ + "_") + J(U, V)) + "_") + V), bF), IntegerEntry(((J(U, V) + "_") + aZ), bG), IntegerEntry(((J(U, V) + "_") + U), bH), IntegerEntry(((J(U, V) + "_") + V), bI), IntegerEntry(U, (q(U) + s.payments[0].amount)), IntegerEntry(V, (q(V) + s.payments[1].amount)), IntegerEntry(aY, (q(aY) + bD))]
487+ }
488+ else throw("Payment of invalid 1/1 amounts to the Pool.")
481489 else throw("Invalid Pool Key.")
482490 else throw("Invalid Asset1 or Asset2!")
483491 else throw("Asset1 cannot be equal to Asset2")
484492 else throw("liquidity is currently under maintenance.")
485493 else throw("dApp is currently under maintenance.")
486494 }
487495
488496
489497
490498 @Callable(s)
491-func removeLiquidity (U,V,bF) = {
499+func removeLiquidity (U,V,bJ) = {
492500 let aZ = toBase58String(s.caller.bytes)
493501 let aV = getBooleanValue(this, v)
494502 let bp = getBooleanValue(this, w)
495503 let ab = getBooleanValue(this, H)
496504 let bh = J(U, V)
497505 let N = M(bh)
498506 let K = if ((U == G))
499507 then if (ab)
500508 then I
501509 else throw("The smart contract does not currently support Waves.")
502510 else fromBase58String(U)
503511 let L = if ((V == G))
504512 then if (ab)
505513 then I
506514 else throw("The smart contract does not currently support Waves.")
507515 else fromBase58String(V)
508516 let bq = fromBase58String(getStringValue(this, B))
509517 let br = fromBase58String(getStringValue(this, D))
510518 let bs = fromBase58String(getStringValue(this, C))
511519 let bt = fromBase58String(getStringValue(this, E))
512520 let aX = fromBase58String(getStringValue(this, a))
513521 let bu = fromBase58String(getStringValue(this, F))
514522 let aY = getStringValue(this, (b + J(U, V)))
515523 let ba = O(aZ, J(U, V))
516- let bG = W(aZ, bh)
517- let bH = getIntegerValue(this, aY)
518- let bI = getIntegerValue(this, ((J(U, V) + "_") + U))
519- let bJ = getIntegerValue(this, ((J(U, V) + "_") + V))
524+ let bK = W(aZ, bh)
525+ let bL = getIntegerValue(this, aY)
526+ let bv = getIntegerValue(this, ((J(U, V) + "_") + U))
527+ let bw = getIntegerValue(this, ((J(U, V) + "_") + V))
520528 if (aV)
521529 then if (!(bp))
522530 then if (!((U == V)))
523531 then if (if (if (if (if (if (if (if ((K == bq))
524532 then true
525533 else (K == br))
526534 then true
527535 else (K == bs))
528536 then true
529537 else (K == bt))
530538 then true
531539 else (K == aX))
532540 then true
533541 else (K == I))
534542 then true
535543 else (K == bu))
536544 then if (if (if (if (if (if ((L == bq))
537545 then true
538546 else (L == br))
539547 then true
540548 else (L == bs))
541549 then true
542550 else (L == bt))
543551 then true
544552 else (L == aX))
545553 then true
546554 else (L == I))
547555 then true
548556 else (L == bu)
549557 else false)
550558 then if (!((N == 0)))
551559 then if (!((ba == 0)))
552- then if (((ba - bG) >= bF))
560+ then if (((ba - bK) >= bJ))
553561 then {
554- let bK = (bF / bH)
555- let bL = (bK * bI)
556- let bM = (bK * bJ)
557- let bx = S(J(U, V), U)
558- let by = S(J(U, V), V)
559- let bv = Q(aZ, J(U, V), U)
560- let bw = Q(aZ, J(U, V), V)
561- let bA = (bv - bL)
562- let bB = (bw - bM)
563- let bC = (ba - bF)
564- let bD = (bx - bL)
565- let bE = (by - bM)
562+ let bM = (bJ / bL)
563+ let bN = (bM * bv)
564+ let bO = (bM * bw)
565+ let bB = S(J(U, V), U)
566+ let bC = S(J(U, V), V)
567+ let bz = Q(aZ, J(U, V), U)
568+ let bA = Q(aZ, J(U, V), V)
569+ let bE = (bz - bN)
570+ let bF = (bA - bO)
571+ let bG = (ba - bJ)
572+ let bH = (bB - bN)
573+ let bI = (bC - bO)
566574 if ((s.payments[0].assetId == fromBase58String(aY)))
567- then if ((bF == s.payments[0].amount))
568- then [Burn(fromBase58String(aY), bF), ScriptTransfer(Address(s.caller.bytes), bL, K), ScriptTransfer(Address(s.caller.bytes), bM, L), IntegerEntry(T(U, V, aZ), height), IntegerEntry(((((aZ + "_") + J(U, V)) + "_") + U), bA), IntegerEntry(((((aZ + "_") + J(U, V)) + "_") + V), bB), IntegerEntry(((J(U, V) + "_") + aZ), bC), IntegerEntry(((J(U, V) + "_") + U), bD), IntegerEntry(((J(U, V) + "_") + V), bE), IntegerEntry(U, (q(U) - bL)), IntegerEntry(V, (q(V) - bM)), IntegerEntry(aY, (q(aY) - bF))]
575+ then if ((bJ == s.payments[0].amount))
576+ then [Burn(fromBase58String(aY), bJ), ScriptTransfer(Address(s.caller.bytes), bN, K), ScriptTransfer(Address(s.caller.bytes), bO, L), IntegerEntry(T(U, V, aZ), height), IntegerEntry(((((aZ + "_") + J(U, V)) + "_") + U), bE), IntegerEntry(((((aZ + "_") + J(U, V)) + "_") + V), bF), IntegerEntry(((J(U, V) + "_") + aZ), bG), IntegerEntry(((J(U, V) + "_") + U), bH), IntegerEntry(((J(U, V) + "_") + V), bI), IntegerEntry(U, (q(U) - bN)), IntegerEntry(V, (q(V) - bO)), IntegerEntry(aY, (q(aY) - bJ))]
569577 else throw("Withdrawal amount lower than asset lp amount")
570578 else throw("Requires an lp asset as payment to remove locked amounts.")
571579 }
572580 else throw("Amount to be withdrawn greater than the amount available for withdrawal.")
573581 else throw("You have no locked values ​​in the pool")
574582 else throw("Invalid Pool Key.")
575583 else throw("Invalid Asset1 or Asset2!")
576584 else throw("Asset1 cannot be equal to Asset2")
577585 else throw("liquidity is currently under maintenance.")
578586 else throw("dApp is currently under maintenance.")
579587 }
580588
581589
582590
583591 @Callable(s)
584592 func swap (U,V) = {
585593 let aZ = toBase58String(s.caller.bytes)
586594 let ab = getBooleanValue(this, H)
587595 let aV = getBooleanValue(this, v)
588- let bN = getBooleanValue(this, x)
596+ let bP = getBooleanValue(this, x)
589597 let bh = J(U, V)
590598 let N = M(bh)
591599 let K = s.payments[0].assetId
592600 let bq = fromBase58String(getStringValue(this, B))
593601 let br = fromBase58String(getStringValue(this, D))
594602 let bs = fromBase58String(getStringValue(this, C))
595603 let bt = fromBase58String(getStringValue(this, E))
596604 let aX = fromBase58String(getStringValue(this, a))
597605 let bu = fromBase58String(getStringValue(this, F))
598- let bO = getIntegerValue(this, ((J(U, V) + "_") + U))
599- let bP = getIntegerValue(this, ((J(U, V) + "_") + V))
600- let bQ = getIntegerValue(this, g)
606+ let bQ = getIntegerValue(this, ((J(U, V) + "_") + U))
607+ let bR = getIntegerValue(this, ((J(U, V) + "_") + V))
608+ let bS = getIntegerValue(this, g)
601609 if (aV)
602- then if (!(bN))
610+ then if (!(bP))
603611 then if (if (!((U == V)))
604612 then if (Y(K, U, ab))
605613 then true
606614 else Y(K, V, ab)
607615 else false)
608616 then if (if (if (if (if (if (if ((K == bq))
609617 then true
610618 else (K == br))
611619 then true
612620 else (K == bs))
613621 then true
614622 else (K == bt))
615623 then true
616624 else (K == aX))
617625 then true
618626 else (K == bu))
619627 then true
620628 else (K == I))
621629 then if (!((N == 0)))
622630 then if ((s.payments[1].assetId == aX))
623631 then if ((s.payments[1].amount == 300000))
624632 then {
625- let bR = if (!((K == fromBase58String(U))))
626- then (bO / bP)
627- else (bP / bO)
628- let aM = (s.payments[0].amount - ((s.payments[0].amount * bQ) / (100 * i)))
629- let bS = (aM * bR)
630-[ScriptTransfer(Address(s.caller.bytes), bS, if ((V == G))
633+ let bT = if (!((K == fromBase58String(U))))
634+ then (bQ / bR)
635+ else (bR / bQ)
636+ let aM = (s.payments[0].amount - ((s.payments[0].amount * bS) / (100 * i)))
637+ let bU = (aM * bT)
638+[ScriptTransfer(Address(s.caller.bytes), bU, if ((V == G))
631639 then I
632- else fromBase58String(V)), IntegerEntry(V, (q(V) - bS)), IntegerEntry(((J(U, V) + "_") + V), (S(J(U, V), V) - bS))]
640+ else fromBase58String(V)), IntegerEntry(V, (q(V) - bU)), IntegerEntry(((J(U, V) + "_") + V), (S(J(U, V), V) - bU))]
633641 }
634642 else throw("Swap denied! 0.003 AxAi is required for the swap fee.")
635643 else throw("Invalid rate asset")
636644 else throw("Invalid Swap Key.")
637645 else throw("Invalid Asset1 or Asset2!")
638646 else throw("Asset1 cannot be equal to Asset2")
639647 else throw("Swap is currently under maintenance.")
640648 else throw("dApp is currently under maintenance.")
641649 }
642650
643651
644-@Verifier(bT)
645-func bU () = {
646- let r = bT
652+@Verifier(bV)
653+func bW () = {
654+ let r = bV
647655 if ($isInstanceOf(r, "Order"))
648656 then {
649- let bV = r
657+ let bX = r
650658 true
651659 }
652660 else if ($isInstanceOf(r, "ExchangeTransaction"))
653661 then {
654- let bW = r
662+ let bY = r
655663 true
656664 }
657- else sigVerify(bT.bodyBytes, bT.proofs[0], bT.senderPublicKey)
665+ else sigVerify(bV.bodyBytes, bV.proofs[0], bV.senderPublicKey)
658666 }
659667

github/deemru/w8io/169f3d6 
115.13 ms