tx · 6SXoeWqQf8bx81nzHafoynzZ9VGPorntBDAZ5HHNqUSq

3N2j6yXv5aLx1DTVGpwUmJHKZb5XwMfWZhk:  -1.00500000 Waves

2022.07.14 10:47 [2139111] smart account 3N2j6yXv5aLx1DTVGpwUmJHKZb5XwMfWZhk > SELF 0.00000000 Waves

{ "type": 13, "id": "6SXoeWqQf8bx81nzHafoynzZ9VGPorntBDAZ5HHNqUSq", "fee": 100500000, "feeAssetId": null, "timestamp": 1657784930833, "version": 2, "chainId": 84, "sender": "3N2j6yXv5aLx1DTVGpwUmJHKZb5XwMfWZhk", "senderPublicKey": "8ZzMCsQ15BKiHk944146A5WQ8eSFd8vaff4xaktCKSBK", "proofs": [ "Yix9sAH7JJRiTnusxT2KifnW2WDzAac5G6LkJc2mYnCtXQtZVMoAiLRzTVuK2cyruPNR8ofj2AB3tDoB2DvTBm7" ], "script": "base64:BgIRCAISAwoBCBIAEgASBAoCCAgRAAlzZXBhcmF0b3ICAV8BDWdldFBhaXJMZW5ndGgACQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMCCnBhaXJMZW5ndGgAAAENc2V0UGFpckxlbmdodAEJbmV3TGVuZ3RoCQEMSW50ZWdlckVudHJ5AgIKcGFpckxlbmd0aAUJbmV3TGVuZ3RoAQpnZXRQYWlyS2V5AgZ0b2tlbjAGdG9rZW4xBAh0b2tlbjBCVgkAsQkBCQDZBAEFBnRva2VuMAQIdG9rZW4xQlYJALEJAQkA2QQBBQZ0b2tlbjEDCQBmAgUIdG9rZW4xQlYFCHRva2VuMEJWCQC5CQIJAMwIAgUGdG9rZW4wCQDMCAIFBnRva2VuMQUDbmlsBQlzZXBhcmF0b3IJALkJAgkAzAgCBQZ0b2tlbjEJAMwIAgUGdG9rZW4wBQNuaWwFCXNlcGFyYXRvcgEOZ2V0UGFpclRva2VuSWQCBnRva2VuMAZ0b2tlbjEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAQpnZXRQYWlyS2V5AgUGdG9rZW4wBQZ0b2tlbjEBDnNldFBhaXJUb2tlbklkAwZ0b2tlbjAGdG9rZW4xB2lzc3VlSWQJAQtTdHJpbmdFbnRyeQIJAQpnZXRQYWlyS2V5AgUGdG9rZW4wBQZ0b2tlbjEFB2lzc3VlSWQBDmpvaW5QYWlyU3RydWN0BAZ0b2tlbjAGdG9rZW4xCHJlc2VydmUwCHJlc2VydmUxCQC5CQIJAMwIAgUGdG9rZW4wCQDMCAIFBnRva2VuMQkAzAgCCQCkAwEFCHJlc2VydmUwCQDMCAIJAKQDAQUIcmVzZXJ2ZTEFA25pbAUJc2VwYXJhdG9yAQ5nZXRQYWlyRGV0YWlscwEJbHBUb2tlbklkBAdkZXRhaWxzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUJbHBUb2tlbklkAhVhc3NldElkMF9hc3NldElkMV8wXzAFCXNlcGFyYXRvcgkAlgoECQCRAwIFB2RldGFpbHMAAAkAkQMCBQdkZXRhaWxzAAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdkZXRhaWxzAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdkZXRhaWxzAAMBDnNldFBhaXJEZXRhaWxzBQlscFRva2VuSWQGdG9rZW4wBnRva2VuMQhyZXNlcnZlMAhyZXNlcnZlMQkBC1N0cmluZ0VudHJ5AgUJbHBUb2tlbklkCQEOam9pblBhaXJTdHJ1Y3QEBQZ0b2tlbjAFBnRva2VuMQUIcmVzZXJ2ZTAFCHJlc2VydmUxARJnZXRQYWlyVG90YWxTdXBwbHkBCWxwVG9rZW5JZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgILdG90YWxTdXBwbHkFCXNlcGFyYXRvcgUJbHBUb2tlbklkAAABEnNldFBhaXJUb3RhbFN1cHBseQIJbHBUb2tlbklkDm5ld1RvdGFsU3VwcGx5CQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgICC3RvdGFsU3VwcGx5BQlzZXBhcmF0b3IFCWxwVG9rZW5JZAUObmV3VG90YWxTdXBwbHkBCWlzTmV3UGFpcgIGdG9rZW4wBnRva2VuMQkBASEBCQEJaXNEZWZpbmVkAQkAoggBCQEKZ2V0UGFpcktleQIFBnRva2VuMAUGdG9rZW4xAQ1pc1Rva2VuRXhpc3RzAQd0b2tlbklkBAckbWF0Y2gwCQDsBwEJANkEAQUHdG9rZW5JZAMJAAECBQckbWF0Y2gwAgVBc3NldAQBYQUHJG1hdGNoMAYJAAIBAg1CYWQgc2l0dWF0aW9uAARtYXh4AIDC1y8ACHplcm9BZGRyCQEFdmFsdWUBCQCmCAECIzNNNHF3RG9tUmFiSktMWnh1WGh3ZnFMQXBRa1U1OTJuV3hGABFNSU5JTVVNX0xJUVVJRElUWQCgjQYBDWNhbGNBbW91bnRPdXQDCGFtb3VudEluCXJlc2VydmVJbgpyZXNlcnZlT3V0BA9hbW91bnRJbldpdGhGZWUJAGgCBQhhbW91bnRJbgDlBwQJbnVtZXJhdG9yCQBoAgUPYW1vdW50SW5XaXRoRmVlBQpyZXNlcnZlT3V0BAtkZW5vbWluYXRvcgkAZAIJAGgCBQlyZXNlcnZlSW4A6AcFD2Ftb3VudEluV2l0aEZlZQkAaQIFCW51bWVyYXRvcgULZGVub21pbmF0b3IEAWkBBHN3YXABCHRva2VuT3V0BAhhbW91bnRJbgkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEB3Rva2VuSW4JANgEAQkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAdscFRva2VuCQEOZ2V0UGFpclRva2VuSWQCBQd0b2tlbkluBQh0b2tlbk91dAQLJHQwMjYzOTI3MjEJAQ5nZXRQYWlyRGV0YWlscwEFB2xwVG9rZW4ECnBhaXJUb2tlbjAIBQskdDAyNjM5MjcyMQJfMQQKcGFpclRva2VuMQgFCyR0MDI2MzkyNzIxAl8yBAxwYWlyUmVzZXJ2ZTAIBQskdDAyNjM5MjcyMQJfMwQMcGFpclJlc2VydmUxCAULJHQwMjYzOTI3MjECXzQECWFtb3VudE91dAkBDWNhbGNBbW91bnRPdXQDBQhhbW91bnRJbgUMcGFpclJlc2VydmUwBQxwYWlyUmVzZXJ2ZTEJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQlhbW91bnRPdXQJANkEAQUKcGFpclRva2VuMQkAzAgCCQEOc2V0UGFpckRldGFpbHMFBQdscFRva2VuBQd0b2tlbkluBQh0b2tlbk91dAkAZAIFDHBhaXJSZXNlcnZlMAUIYW1vdW50SW4JAGUCBQxwYWlyUmVzZXJ2ZTEFCWFtb3VudE91dAUDbmlsAWkBBG1pbnQABAZ0b2tlbjAJANgEAQkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAZ0b2tlbjEJANgEAQkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAQdhc3NldElkBAdscFRva2VuCQEOZ2V0UGFpclRva2VuSWQCBQZ0b2tlbjAFBnRva2VuMQQHYW1vdW50MAkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEB2Ftb3VudDEJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAEGYW1vdW50BAskdDAzMjY5MzM1MQkBDmdldFBhaXJEZXRhaWxzAQUHbHBUb2tlbgQKcGFpclRva2VuMAgFCyR0MDMyNjkzMzUxAl8xBApwYWlyVG9rZW4xCAULJHQwMzI2OTMzNTECXzIEDHBhaXJSZXNlcnZlMAgFCyR0MDMyNjkzMzUxAl8zBAxwYWlyUmVzZXJ2ZTEIBQskdDAzMjY5MzM1MQJfNAQLdG90YWxTdXBwbHkJARJnZXRQYWlyVG90YWxTdXBwbHkBBQdscFRva2VuAwkAAAIFC3RvdGFsU3VwcGx5AAAECWxpcXVpZGl0eQkAZQIJAQRzcXJ0BAkAaAIFB2Ftb3VudDAFB2Ftb3VudDEAAAAABQRET1dOBRFNSU5JTVVNX0xJUVVJRElUWQkAzAgCCQEHUmVpc3N1ZQMJANkEAQUHbHBUb2tlbgkAZAIFCWxpcXVpZGl0eQURTUlOSU1VTV9MSVFVSURJVFkGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCHplcm9BZGRyBRFNSU5JTVVNX0xJUVVJRElUWQkA2QQBBQdscFRva2VuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUJbGlxdWlkaXR5CQDZBAEFB2xwVG9rZW4JAMwIAgkBEnNldFBhaXJUb3RhbFN1cHBseQIFB2xwVG9rZW4JAGQCBQlsaXF1aWRpdHkFEU1JTklNVU1fTElRVUlESVRZCQDMCAIJAQ5zZXRQYWlyRGV0YWlscwUFB2xwVG9rZW4FBnRva2VuMAUGdG9rZW4xCQBkAgUMcGFpclJlc2VydmUwBQdhbW91bnQwCQBkAgUMcGFpclJlc2VydmUxBQdhbW91bnQxBQNuaWwECWxpcXVpZGl0eQkAlwMBCQDMCAIJAGkCCQBoAgUHYW1vdW50MAULdG90YWxTdXBwbHkFDHBhaXJSZXNlcnZlMAkAzAgCCQBpAgkAaAIFB2Ftb3VudDEFC3RvdGFsU3VwcGx5BQxwYWlyUmVzZXJ2ZTEFA25pbAkAzAgCCQEHUmVpc3N1ZQMJANkEAQUHbHBUb2tlbgUJbGlxdWlkaXR5BgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCWxpcXVpZGl0eQkA2QQBBQdscFRva2VuCQDMCAIJARJzZXRQYWlyVG90YWxTdXBwbHkCBQdscFRva2VuCQBkAgULdG90YWxTdXBwbHkFCWxpcXVpZGl0eQkAzAgCCQEOc2V0UGFpckRldGFpbHMFBQdscFRva2VuBQZ0b2tlbjAFBnRva2VuMQkAZAIFDHBhaXJSZXNlcnZlMAUHYW1vdW50MAkAZAIFDHBhaXJSZXNlcnZlMQUHYW1vdW50MQUDbmlsAWkBBGJ1cm4ABAhhbW91bnRscAkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQECWFzc2V0SWRMcAkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAskdDA0NDU4NDU1OAkBDmdldFBhaXJEZXRhaWxzAQkA2AQBBQlhc3NldElkTHAECnBhaXJUb2tlbjAIBQskdDA0NDU4NDU1OAJfMQQKcGFpclRva2VuMQgFCyR0MDQ0NTg0NTU4Al8yBAxwYWlyUmVzZXJ2ZTAIBQskdDA0NDU4NDU1OAJfMwQMcGFpclJlc2VydmUxCAULJHQwNDQ1ODQ1NTgCXzQEB2xwVG9rZW4JAQ5nZXRQYWlyVG9rZW5JZAIFCnBhaXJUb2tlbjAFCnBhaXJUb2tlbjEEC3RvdGFsU3VwcGx5CQESZ2V0UGFpclRvdGFsU3VwcGx5AQUHbHBUb2tlbgQFc2hhcmUJAGkCCQBoAgUIYW1vdW50bHAFBG1heHgFC3RvdGFsU3VwcGx5BAdhbW91bnQwCQBpAgkAaAIFBXNoYXJlBQxwYWlyUmVzZXJ2ZTAFBG1heHgEB2Ftb3VudDEJAGkCCQBoAgUFc2hhcmUFDHBhaXJSZXNlcnZlMQUEbWF4eAkAzAgCCQEEQnVybgIJANkEAQUHbHBUb2tlbgUIYW1vdW50bHAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQdhbW91bnQwCQDZBAEFCnBhaXJUb2tlbjAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQdhbW91bnQxCQDZBAEFCnBhaXJUb2tlbjEJAMwIAgkBEnNldFBhaXJUb3RhbFN1cHBseQIFB2xwVG9rZW4JAGUCBQt0b3RhbFN1cHBseQUIYW1vdW50bHAJAMwIAgkBDnNldFBhaXJEZXRhaWxzBQUHbHBUb2tlbgUKcGFpclRva2VuMAUKcGFpclRva2VuMQkAZQIFDHBhaXJSZXNlcnZlMAUHYW1vdW50MAkAZQIFDHBhaXJSZXNlcnZlMQUHYW1vdW50MQUDbmlsAWkBEGFkZExpcXVpZGl0eVBvb2wCBnRva2VuMAZ0b2tlbjEDCQEJaXNOZXdQYWlyAgUGdG9rZW4wBQZ0b2tlbjEDCQECIT0CBQZ0b2tlbjAFBnRva2VuMQMDCQENaXNUb2tlbkV4aXN0cwEFBnRva2VuMAkBDWlzVG9rZW5FeGlzdHMBBQZ0b2tlbjEHBAhuZXdUb2tlbgkAwggFCQDYBAEJAMkBAggFAWkNdHJhbnNhY3Rpb25JZAAKAgAAAAAABgQHaXNzdWVJZAkA2AQBCQC4CAEFCG5ld1Rva2VuBBBjdXJyZW50UGFpckluZGV4CQENZ2V0UGFpckxlbmd0aAAJAMwIAgUIbmV3VG9rZW4JAMwIAgkBC1N0cmluZ0VudHJ5AgkApAMBBRBjdXJyZW50UGFpckluZGV4BQdpc3N1ZUlkCQDMCAIJAQ1zZXRQYWlyTGVuZ2h0AQkAZAIFEGN1cnJlbnRQYWlySW5kZXgAAQkAzAgCCQEOc2V0UGFpclRva2VuSWQDBQZ0b2tlbjAFBnRva2VuMQUHaXNzdWVJZAkAzAgCCQEOc2V0UGFpckRldGFpbHMFBQdpc3N1ZUlkBQZ0b2tlbjAFBnRva2VuMQAAAAAFA25pbAkAAgECDFdyb25nIHRva2VucwkAAgECDEVxdWFsIHRva2VucwkAAgECE1BhaXIgYWxyZWFkeSBleGlzdHMAv+pZLQ==", "height": 2139111, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GYWtBGQttGYZQtM4hE6jPmscwjcChrrp5SbKeXEytTzY Next: 3T2LbSdMzfMKBjUfxnNod9JeCwsCS5VG2WknH2jnbs7v Diff:
OldNewDifferences
4545 func isNewPair (token0,token1) = !(isDefined(getString(getPairKey(token0, token1))))
4646
4747
48-func isTokenExists (tokenId) = true
48+func isTokenExists (tokenId) = match assetInfo(fromBase58String(tokenId)) {
49+ case a: Asset =>
50+ true
51+ case _ =>
52+ throw("Bad situation")
53+}
4954
5055
51-let maxx = 1000000000000
56+let maxx = 100000000
5257
5358 let zeroAddr = value(addressFromString("3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF"))
5459
5560 let MINIMUM_LIQUIDITY = 100000
61+
62+func calcAmountOut (amountIn,reserveIn,reserveOut) = {
63+ let amountInWithFee = (amountIn * 997)
64+ let numerator = (amountInWithFee * reserveOut)
65+ let denominator = ((reserveIn * 1000) + amountInWithFee)
66+ (numerator / denominator)
67+ }
68+
69+
70+@Callable(i)
71+func swap (tokenOut) = {
72+ let amountIn = value(i.payments[0].amount)
73+ let tokenIn = toBase58String(value(i.payments[0].assetId))
74+ let lpToken = getPairTokenId(tokenIn, tokenOut)
75+ let $t026392721 = getPairDetails(lpToken)
76+ let pairToken0 = $t026392721._1
77+ let pairToken1 = $t026392721._2
78+ let pairReserve0 = $t026392721._3
79+ let pairReserve1 = $t026392721._4
80+ let amountOut = calcAmountOut(amountIn, pairReserve0, pairReserve1)
81+[ScriptTransfer(i.caller, amountOut, fromBase58String(pairToken1)), setPairDetails(lpToken, tokenIn, tokenOut, (pairReserve0 + amountIn), (pairReserve1 - amountOut))]
82+ }
83+
84+
5685
5786 @Callable(i)
5887 func mint () = {
6190 let lpToken = getPairTokenId(token0, token1)
6291 let amount0 = value(i.payments[0].amount)
6392 let amount1 = value(i.payments[1].amount)
64- let $t023722454 = getPairDetails(lpToken)
65- let pairToken0 = $t023722454._1
66- let pairToken1 = $t023722454._2
67- let pairReserve0 = $t023722454._3
68- let pairReserve1 = $t023722454._4
93+ let $t032693351 = getPairDetails(lpToken)
94+ let pairToken0 = $t032693351._1
95+ let pairToken1 = $t032693351._2
96+ let pairReserve0 = $t032693351._3
97+ let pairReserve1 = $t032693351._4
6998 let totalSupply = getPairTotalSupply(lpToken)
7099 if ((totalSupply == 0))
71100 then {
74103 }
75104 else {
76105 let liquidity = min([((amount0 * totalSupply) / pairReserve0), ((amount1 * totalSupply) / pairReserve1)])
77-[Reissue(fromBase58String(lpToken), liquidity, true), ScriptTransfer(i.caller, liquidity, fromBase58String(lpToken)), setPairTotalSupply(lpToken, liquidity), setPairDetails(lpToken, token0, token1, (pairReserve0 + amount0), (pairReserve1 + amount1))]
106+[Reissue(fromBase58String(lpToken), liquidity, true), ScriptTransfer(i.caller, liquidity, fromBase58String(lpToken)), setPairTotalSupply(lpToken, (totalSupply + liquidity)), setPairDetails(lpToken, token0, token1, (pairReserve0 + amount0), (pairReserve1 + amount1))]
78107 }
79108 }
80109
84113 func burn () = {
85114 let amountlp = value(i.payments[0].amount)
86115 let assetIdLp = value(i.payments[0].assetId)
87- let $t035473647 = getPairDetails(toBase58String(assetIdLp))
88- let pairToken0 = $t035473647._1
89- let pairToken1 = $t035473647._2
90- let pairReserve0 = $t035473647._3
91- let pairReserve1 = $t035473647._4
116+ let $t044584558 = getPairDetails(toBase58String(assetIdLp))
117+ let pairToken0 = $t044584558._1
118+ let pairToken1 = $t044584558._2
119+ let pairReserve0 = $t044584558._3
120+ let pairReserve1 = $t044584558._4
92121 let lpToken = getPairTokenId(pairToken0, pairToken1)
93122 let totalSupply = getPairTotalSupply(lpToken)
94123 let share = ((amountlp * maxx) / totalSupply)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let separator = "_"
55
66 func getPairLength () = valueOrElse(getInteger(this, "pairLength"), 0)
77
88
99 func setPairLenght (newLength) = IntegerEntry("pairLength", newLength)
1010
1111
1212 func getPairKey (token0,token1) = {
1313 let token0BV = toInt(fromBase58String(token0))
1414 let token1BV = toInt(fromBase58String(token1))
1515 if ((token1BV > token0BV))
1616 then makeString([token0, token1], separator)
1717 else makeString([token1, token0], separator)
1818 }
1919
2020
2121 func getPairTokenId (token0,token1) = getStringValue(this, getPairKey(token0, token1))
2222
2323
2424 func setPairTokenId (token0,token1,issueId) = StringEntry(getPairKey(token0, token1), issueId)
2525
2626
2727 func joinPairStruct (token0,token1,reserve0,reserve1) = makeString([token0, token1, toString(reserve0), toString(reserve1)], separator)
2828
2929
3030 func getPairDetails (lpTokenId) = {
3131 let details = split(valueOrElse(getString(this, lpTokenId), "assetId0_assetId1_0_0"), separator)
3232 $Tuple4(details[0], details[1], parseIntValue(details[2]), parseIntValue(details[3]))
3333 }
3434
3535
3636 func setPairDetails (lpTokenId,token0,token1,reserve0,reserve1) = StringEntry(lpTokenId, joinPairStruct(token0, token1, reserve0, reserve1))
3737
3838
3939 func getPairTotalSupply (lpTokenId) = valueOrElse(getInteger(this, (("totalSupply" + separator) + lpTokenId)), 0)
4040
4141
4242 func setPairTotalSupply (lpTokenId,newTotalSupply) = IntegerEntry((("totalSupply" + separator) + lpTokenId), newTotalSupply)
4343
4444
4545 func isNewPair (token0,token1) = !(isDefined(getString(getPairKey(token0, token1))))
4646
4747
48-func isTokenExists (tokenId) = true
48+func isTokenExists (tokenId) = match assetInfo(fromBase58String(tokenId)) {
49+ case a: Asset =>
50+ true
51+ case _ =>
52+ throw("Bad situation")
53+}
4954
5055
51-let maxx = 1000000000000
56+let maxx = 100000000
5257
5358 let zeroAddr = value(addressFromString("3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF"))
5459
5560 let MINIMUM_LIQUIDITY = 100000
61+
62+func calcAmountOut (amountIn,reserveIn,reserveOut) = {
63+ let amountInWithFee = (amountIn * 997)
64+ let numerator = (amountInWithFee * reserveOut)
65+ let denominator = ((reserveIn * 1000) + amountInWithFee)
66+ (numerator / denominator)
67+ }
68+
69+
70+@Callable(i)
71+func swap (tokenOut) = {
72+ let amountIn = value(i.payments[0].amount)
73+ let tokenIn = toBase58String(value(i.payments[0].assetId))
74+ let lpToken = getPairTokenId(tokenIn, tokenOut)
75+ let $t026392721 = getPairDetails(lpToken)
76+ let pairToken0 = $t026392721._1
77+ let pairToken1 = $t026392721._2
78+ let pairReserve0 = $t026392721._3
79+ let pairReserve1 = $t026392721._4
80+ let amountOut = calcAmountOut(amountIn, pairReserve0, pairReserve1)
81+[ScriptTransfer(i.caller, amountOut, fromBase58String(pairToken1)), setPairDetails(lpToken, tokenIn, tokenOut, (pairReserve0 + amountIn), (pairReserve1 - amountOut))]
82+ }
83+
84+
5685
5786 @Callable(i)
5887 func mint () = {
5988 let token0 = toBase58String(value(i.payments[0].assetId))
6089 let token1 = toBase58String(value(i.payments[1].assetId))
6190 let lpToken = getPairTokenId(token0, token1)
6291 let amount0 = value(i.payments[0].amount)
6392 let amount1 = value(i.payments[1].amount)
64- let $t023722454 = getPairDetails(lpToken)
65- let pairToken0 = $t023722454._1
66- let pairToken1 = $t023722454._2
67- let pairReserve0 = $t023722454._3
68- let pairReserve1 = $t023722454._4
93+ let $t032693351 = getPairDetails(lpToken)
94+ let pairToken0 = $t032693351._1
95+ let pairToken1 = $t032693351._2
96+ let pairReserve0 = $t032693351._3
97+ let pairReserve1 = $t032693351._4
6998 let totalSupply = getPairTotalSupply(lpToken)
7099 if ((totalSupply == 0))
71100 then {
72101 let liquidity = (sqrt((amount0 * amount1), 0, 0, DOWN) - MINIMUM_LIQUIDITY)
73102 [Reissue(fromBase58String(lpToken), (liquidity + MINIMUM_LIQUIDITY), true), ScriptTransfer(zeroAddr, MINIMUM_LIQUIDITY, fromBase58String(lpToken)), ScriptTransfer(i.caller, liquidity, fromBase58String(lpToken)), setPairTotalSupply(lpToken, (liquidity + MINIMUM_LIQUIDITY)), setPairDetails(lpToken, token0, token1, (pairReserve0 + amount0), (pairReserve1 + amount1))]
74103 }
75104 else {
76105 let liquidity = min([((amount0 * totalSupply) / pairReserve0), ((amount1 * totalSupply) / pairReserve1)])
77-[Reissue(fromBase58String(lpToken), liquidity, true), ScriptTransfer(i.caller, liquidity, fromBase58String(lpToken)), setPairTotalSupply(lpToken, liquidity), setPairDetails(lpToken, token0, token1, (pairReserve0 + amount0), (pairReserve1 + amount1))]
106+[Reissue(fromBase58String(lpToken), liquidity, true), ScriptTransfer(i.caller, liquidity, fromBase58String(lpToken)), setPairTotalSupply(lpToken, (totalSupply + liquidity)), setPairDetails(lpToken, token0, token1, (pairReserve0 + amount0), (pairReserve1 + amount1))]
78107 }
79108 }
80109
81110
82111
83112 @Callable(i)
84113 func burn () = {
85114 let amountlp = value(i.payments[0].amount)
86115 let assetIdLp = value(i.payments[0].assetId)
87- let $t035473647 = getPairDetails(toBase58String(assetIdLp))
88- let pairToken0 = $t035473647._1
89- let pairToken1 = $t035473647._2
90- let pairReserve0 = $t035473647._3
91- let pairReserve1 = $t035473647._4
116+ let $t044584558 = getPairDetails(toBase58String(assetIdLp))
117+ let pairToken0 = $t044584558._1
118+ let pairToken1 = $t044584558._2
119+ let pairReserve0 = $t044584558._3
120+ let pairReserve1 = $t044584558._4
92121 let lpToken = getPairTokenId(pairToken0, pairToken1)
93122 let totalSupply = getPairTotalSupply(lpToken)
94123 let share = ((amountlp * maxx) / totalSupply)
95124 let amount0 = ((share * pairReserve0) / maxx)
96125 let amount1 = ((share * pairReserve1) / maxx)
97126 [Burn(fromBase58String(lpToken), amountlp), ScriptTransfer(i.caller, amount0, fromBase58String(pairToken0)), ScriptTransfer(i.caller, amount1, fromBase58String(pairToken1)), setPairTotalSupply(lpToken, (totalSupply - amountlp)), setPairDetails(lpToken, pairToken0, pairToken1, (pairReserve0 - amount0), (pairReserve1 - amount1))]
98127 }
99128
100129
101130
102131 @Callable(i)
103132 func addLiquidityPool (token0,token1) = if (isNewPair(token0, token1))
104133 then if ((token0 != token1))
105134 then if (if (isTokenExists(token0))
106135 then isTokenExists(token1)
107136 else false)
108137 then {
109138 let newToken = Issue(toBase58String(take(i.transactionId, 10)), "", 0, 0, true)
110139 let issueId = toBase58String(calculateAssetId(newToken))
111140 let currentPairIndex = getPairLength()
112141 [newToken, StringEntry(toString(currentPairIndex), issueId), setPairLenght((currentPairIndex + 1)), setPairTokenId(token0, token1, issueId), setPairDetails(issueId, token0, token1, 0, 0)]
113142 }
114143 else throw("Wrong tokens")
115144 else throw("Equal tokens")
116145 else throw("Pair already exists")
117146
118147

github/deemru/w8io/03bedc9 
52.27 ms