Commit 141e605c authored by Noah Zinsmeister's avatar Noah Zinsmeister Committed by GitHub

v2 slippage fix (#763)

* appropriately discount for multi-hop fee slippage

* fix comment

* make calculation more explicit with a ternary
parent 3a426fa3
...@@ -219,12 +219,25 @@ function ExchangePage({ sendingInput = false, history, params }: ExchangePagePro ...@@ -219,12 +219,25 @@ function ExchangePage({ sendingInput = false, history, params }: ExchangePagePro
[dependentField]: parsedAmounts[dependentField] ? parsedAmounts[dependentField].toSignificant(6) : '' [dependentField]: parsedAmounts[dependentField] ? parsedAmounts[dependentField].toSignificant(6) : ''
} }
// for each hop in our trade, take away the "innate" price impact from 0.3% fees
// e.g. for 3 tokens/2 hops: 1 - ((1 - .03) * (1-.03))
const baseFee = basisPointsToPercent(10000 - 30)
const realizedFee = !trade
? undefined
: trade.route.path.length === 2
? baseFee
: basisPointsToPercent(10000).subtract(
new Array(trade.route.path.length - 2)
.fill(0)
.reduce<Fraction>((currentFee: Percent | Fraction): Fraction => currentFee.multiply(baseFee), baseFee)
)
const priceSlippage = const priceSlippage =
slippageFromTrade && slippageFromTrade && realizedFee
new Percent( ? new Percent(
slippageFromTrade.subtract(new Fraction('30', '10000')).numerator, slippageFromTrade.subtract(realizedFee).numerator,
slippageFromTrade.subtract(new Fraction('30', '10000')).denominator slippageFromTrade.subtract(realizedFee).denominator
) )
: undefined
const onTokenSelection = useCallback( const onTokenSelection = useCallback(
(field: Field, address: string) => { (field: Field, address: string) => {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment