juster-finance / juster-app

Decentralized betting protocol built on Tezos blockchain
https://app.juster.fi
MIT License
9 stars 3 forks source link

Providing liquidity wrong minimal pool value #5

Closed ztepler closed 3 years ago

ztepler commented 3 years ago

image При добавлении ликвидности в ивент, передаваемый amount идёт в полном наборе в наибольший из пулов (либо aboveEq, либо Below). Меньший пул дополняется суммой от amount, которая равна отношнениям меньшего пула к большему (в результате чего соотношение пулов остаётся константой - добавление ликвидности не меняет соотношение пулов). В UI сейчас отображается что передаваемый amount идёт в одинаковом размере в оба пула, это не корректно.

Необходимо добавить эту логику расчёта для меньшего из пулов, на примере со скрином должно быть: Amount: 100 (всё правильно) Higher: 13.50 + 100 = 113.50 (всё правильно) Lower: 0.95 + 0.95/13.50*100 = 7.99 (сейчас показывает 100.95 и это не правильно)

проверка 7.99 / 113.50 == 0.95 / 13.50

Если нужно, я могу подготовить какой-нибудь хэлпер в SDK или как-то переформулировать формулу, если объяснение не достаточно понятно

То есть логика может быть, например, такой:

let maxPool = max(currentAboveEq, currentBelow)
let newAboveEq = curentAboveEq + curentAboveEq / maxPool * providedAmount
let newBelow = currentBelow + currentBelow / maxPool * providedAmount
ztepler commented 3 years ago

Хочу добавить что формируемая транзакция правильная, то есть это просто ошибка отображения числа в UI (графически пулы правильно показаны что не меняются)