|
|
@@ -192,8 +192,8 @@ module.exports = class LpLib {
|
|
|
const r1RealAmount = parseInt(lp.r1) / Math.pow(10, parseInt(lp.decimals1))
|
|
|
|
|
|
// 计算0换1的价格和1换0的价格
|
|
|
- lp.in1Token0OutToken1 = r1RealAmount / r0RealAmount // 一个token0 = in1Token0OutToken1个token1
|
|
|
- lp.in1Token1OutToken0 = r0RealAmount / r1RealAmount // 一个token1 = in1Token1OutToken0个token0
|
|
|
+ lp.token0ToToken1Price = r1RealAmount / r0RealAmount // 一个token0 = token0ToToken1Price个token1
|
|
|
+ lp.token1ToToken0Price = r0RealAmount / r1RealAmount // 一个token1 = token1ToToken0Price个token0
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -215,9 +215,9 @@ module.exports = class LpLib {
|
|
|
const token1 = maxValueLp.token1
|
|
|
|
|
|
if (baseTokenAddress === token0) {
|
|
|
- baseTokenConvertEthValueMap[baseTokenAddress] = maxValueLp.in1Token0OutToken1
|
|
|
+ baseTokenConvertEthValueMap[baseTokenAddress] = maxValueLp.token0ToToken1Price
|
|
|
} else if (baseTokenAddress === token1) {
|
|
|
- baseTokenConvertEthValueMap[baseTokenAddress] = maxValueLp.in1Token1OutToken0
|
|
|
+ baseTokenConvertEthValueMap[baseTokenAddress] = maxValueLp.token1ToToken0Price
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -236,39 +236,47 @@ module.exports = class LpLib {
|
|
|
}
|
|
|
|
|
|
getLpEthValue(lp, baseTokenConvertEthValueMap, maxValueLpMap) {
|
|
|
- if (lp.r0 === 0 && lp.r1 === 0) {
|
|
|
- return 0
|
|
|
- }
|
|
|
-
|
|
|
+ const r0 = lp.r0
|
|
|
+ const r1 = lp.r1
|
|
|
const token0 = lp.token0
|
|
|
const token1 = lp.token1
|
|
|
+ const decimals0 = lp.decimals0
|
|
|
+ const decimals1 = lp.decimals1
|
|
|
+
|
|
|
+ if (r0 === 0 && r1 === 0) {
|
|
|
+ return 0
|
|
|
+ }
|
|
|
|
|
|
// 1.两token之一能直接与ethw或wethw做直接池子的
|
|
|
if (ethTokenAddressList.indexOf(token0) !== -1 || ethTokenAddressList.indexOf(token1) !== -1) {
|
|
|
if (ethTokenAddressList.indexOf(token0) !== -1) {
|
|
|
const ethToken = baseTokenMap[token0]
|
|
|
- return 2 * lp.r0 / (10 ** ethToken.decimals)
|
|
|
+ return 2 * r0 / (10 ** ethToken.decimals)
|
|
|
} else if (ethTokenAddressList.indexOf(token1) !== -1) {
|
|
|
const ethToken = baseTokenMap[token1]
|
|
|
- return 2 * lp.r1 / (10 ** ethToken.decimals)
|
|
|
+ return 2 * r1 / (10 ** ethToken.decimals)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 2.两token之一能直接与baseToken做池子的
|
|
|
// 带入maxValueLpMap计算
|
|
|
for (const baseTokenAddress of baseTokenAddressList) {
|
|
|
+ const baseTokenToEthPrice = baseTokenConvertEthValueMap[baseTokenAddress]
|
|
|
+
|
|
|
const token0AndBaseKey = this.getKey(token0, baseTokenAddress)
|
|
|
const token0AndBaseTokenLp = maxValueLpMap[token0AndBaseKey]
|
|
|
|
|
|
if (token0AndBaseTokenLp) {
|
|
|
if (token0AndBaseTokenLp.token0 === token0) {
|
|
|
- let price = token0AndBaseTokenLp.in1Token0OutToken1 * baseTokenConvertEthValueMap[baseTokenAddress]
|
|
|
+ const token0ToBaseTokenPrice = token0AndBaseTokenLp.token0ToToken1Price
|
|
|
+ const price = token0ToBaseTokenPrice * baseTokenToEthPrice
|
|
|
|
|
|
- return 2 * lp.r0 * price / (10 ** lp.decimals0)
|
|
|
+ return 2 * r0 * price / (10 ** decimals0)
|
|
|
} else {
|
|
|
- let price = token0AndBaseTokenLp.in1Token1OutToken0 * baseTokenConvertEthValueMap[baseTokenAddress]
|
|
|
+ const token1ToBaseTokenPrice = token0AndBaseTokenLp.token1ToToken0Price
|
|
|
+ const price = token1ToBaseTokenPrice * baseTokenToEthPrice
|
|
|
|
|
|
- return 2 * lp.r0 * price / (10 ** lp.decimals0)
|
|
|
+ return 2 * r1 * price / (10 ** decimals1)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -276,13 +284,15 @@ module.exports = class LpLib {
|
|
|
const token1AndBaseTokenLp = maxValueLpMap[token1AndBaseKey]
|
|
|
if (token1AndBaseTokenLp) {
|
|
|
if (token1AndBaseTokenLp.token0 === token1) {
|
|
|
- let price = token1AndBaseTokenLp.in1Token0OutToken1 * baseTokenConvertEthValueMap[baseTokenAddress]
|
|
|
+ const token0ToBaseTokenPrice = token1AndBaseTokenLp.token0ToToken1Price
|
|
|
+ const price = token0ToBaseTokenPrice * baseTokenToEthPrice
|
|
|
|
|
|
- return 2 * lp.r1 * price / (10 ** lp.decimals1)
|
|
|
+ return 2 * r0 * price / (10 ** decimals0)
|
|
|
} else {
|
|
|
- let price = token1AndBaseTokenLp.in1Token1OutToken0 * baseTokenConvertEthValueMap[baseTokenAddress]
|
|
|
+ const token1ToBaseTokenPrice = token1AndBaseTokenLp.token1ToToken0Price
|
|
|
+ const price = token1ToBaseTokenPrice * baseTokenToEthPrice
|
|
|
|
|
|
- return 2 * lp.r1 * price / (10 ** lp.decimals1)
|
|
|
+ return 2 * r1 * price / (10 ** decimals1)
|
|
|
}
|
|
|
}
|
|
|
}
|