mirror of https://github.com/certusone/oyster.git
feat: fix exchange rate bug by removing those bad methods that dont work right
This commit is contained in:
parent
fc23f18420
commit
bda95affc2
|
@ -184,5 +184,6 @@ export const collateralToLiquidity = (collateralAmount: BN | number, reserve?: L
|
||||||
|
|
||||||
export const liquidityToCollateral = (liquidityAmount: BN | number, reserve?: LendingReserve) => {
|
export const liquidityToCollateral = (liquidityAmount: BN | number, reserve?: LendingReserve) => {
|
||||||
const amount = typeof liquidityAmount === 'number' ? liquidityAmount : liquidityAmount.toNumber();
|
const amount = typeof liquidityAmount === 'number' ? liquidityAmount : liquidityAmount.toNumber();
|
||||||
|
console.log('Exchange rate:', collateralExchangeRate(reserve));
|
||||||
return Math.floor(amount * collateralExchangeRate(reserve));
|
return Math.floor(amount * collateralExchangeRate(reserve));
|
||||||
};
|
};
|
||||||
|
|
|
@ -2,7 +2,6 @@ import { useEffect } from 'react';
|
||||||
import { LABELS } from '../../../constants';
|
import { LABELS } from '../../../constants';
|
||||||
import { useEnrichedPools } from '../../../contexts/market';
|
import { useEnrichedPools } from '../../../contexts/market';
|
||||||
import { useUserDeposits } from '../../../hooks';
|
import { useUserDeposits } from '../../../hooks';
|
||||||
import { collateralToLiquidity, liquidityToCollateral } from '../../../models';
|
|
||||||
import { usePoolForBasket } from '../../../utils/pools';
|
import { usePoolForBasket } from '../../../utils/pools';
|
||||||
import { Position } from './interfaces';
|
import { Position } from './interfaces';
|
||||||
|
|
||||||
|
@ -39,10 +38,11 @@ export function useLeverage({
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If there is more of A than B
|
||||||
|
const exchangeRate = enriched[0].liquidityB / enriched[0].liquidityA;
|
||||||
const amountDesiredToPurchase = parseFloat(newPosition.asset.value);
|
const amountDesiredToPurchase = parseFloat(newPosition.asset.value);
|
||||||
const leverageDesired = newPosition.leverage;
|
const leverageDesired = newPosition.leverage;
|
||||||
|
const amountAvailableInOysterForMargin = collateralDeposit.info.amount * exchangeRate;
|
||||||
const amountAvailableInOysterForMargin = collateralToLiquidity(collateralDeposit.info.amount, desiredType.info);
|
|
||||||
const amountToDepositOnMargin = amountDesiredToPurchase / leverageDesired;
|
const amountToDepositOnMargin = amountDesiredToPurchase / leverageDesired;
|
||||||
|
|
||||||
if (amountToDepositOnMargin > amountAvailableInOysterForMargin) {
|
if (amountToDepositOnMargin > amountAvailableInOysterForMargin) {
|
||||||
|
@ -55,7 +55,7 @@ export function useLeverage({
|
||||||
const supplyRatio = liqA / liqB;
|
const supplyRatio = liqA / liqB;
|
||||||
|
|
||||||
// change in liquidity is amount desired (in units of B) converted to collateral units(A)
|
// change in liquidity is amount desired (in units of B) converted to collateral units(A)
|
||||||
const chgLiqA = liquidityToCollateral(amountDesiredToPurchase, desiredType.info);
|
const chgLiqA = amountDesiredToPurchase / exchangeRate;
|
||||||
const newLiqA = liqA - chgLiqA;
|
const newLiqA = liqA - chgLiqA;
|
||||||
const newLiqB = liqB + amountDesiredToPurchase;
|
const newLiqB = liqB + amountDesiredToPurchase;
|
||||||
const newSupplyRatio = newLiqA / newLiqB;
|
const newSupplyRatio = newLiqA / newLiqB;
|
||||||
|
|
Loading…
Reference in New Issue