209 похожих чатов

Всем привет, в UniswapV2Library есть такая волшебная строчка, где добавляют

1.
Задался вопросом: "Зачем нужно добавлять 1 и нашел такой вот ответ в котором говорят, что там баг"
Был ещё один момент, когда отнимали MINIMUM_LIQUIDITY = 10**3 в core контракте UniswapV2Pair при добавлении ликвидности
Скажите пожалуйста, каким образом помогает MINIMUM_LIQUIDITY и эта единица? Заранее спасибо!

"""
That to round up.
The uniswap pools stricly enforce K, so if your amount in is suposed to be 3.3 EVM rounds that to 3. But that not enough, you would be underpaying for your tokens and the swap would fail.

This code always make you pay one more wei so in case it would have be rounded down, it's now rounded up to 4 and you give .7 wei for free to the LPs which the pool happly swallows.

This code has an "issue" if you are supposed to pay exactly 5 wei, it would round it to 6 even tho that not required. You could fix that by doing that :

amountIn = ((numerator - 1) / denominator).add(1);
However, the (numerator - 1) actually cost way more in gas than the 1 wei you are saving. (cost of PUSH1 + SUB is 6 gas, which at 100Gwei gas price makes you always pay 6 * 100Gwei = 600000000000 Weis extra just to save 1 wei, making the operation 599999999999 weis not worth it.)

I also want to say that one wei is 0.000000000000000001 Eth, so it's likely fine to give that to the LPs.
"""

https://github.com/Uniswap/v2-periphery/blob/master/contracts/libraries/UniswapV2Library.sol#L58

1 ответов

16 просмотров

если коротко, то в юнисвапе амм работает на постоянном произведении, то есть при нулевых fees у тебя произведение количества токенов 1 на количество токенов 2 в пуле будет постоянно эта единица нужна чтобы не возникало багов при делении

Похожие вопросы

Обсуждают сегодня

Карта сайта