1
0
mirror of https://github.com/oceanprotocol/market.git synced 2024-12-02 05:57:29 +01:00

formula update

This commit is contained in:
Matthias Kretschmann 2020-10-26 18:48:08 +01:00
parent 77e1d08a08
commit 2c27d955d9
Signed by: m
GPG Key ID: 606EEEF3C479A91F

View File

@ -13,6 +13,7 @@ import { useFormikContext } from 'formik'
import { PriceOptionsMarket } from '../../../../../@types/MetaData' import { PriceOptionsMarket } from '../../../../../@types/MetaData'
import { DDO } from '@oceanprotocol/lib' import { DDO } from '@oceanprotocol/lib'
import Price from './Price' import Price from './Price'
import Decimal from 'decimal.js'
export default function Dynamic({ export default function Dynamic({
ddo, ddo,
@ -32,7 +33,9 @@ export default function Dynamic({
price, price,
weightOnDataToken, weightOnDataToken,
weightOnOcean, weightOnOcean,
swapFee swapFee,
dtAmount,
oceanAmount
} = values as PriceOptionsMarket } = values as PriceOptionsMarket
const [error, setError] = useState<string>() const [error, setError] = useState<string>()
@ -40,14 +43,16 @@ export default function Dynamic({
// Calculate firstPrice whenever // Calculate firstPrice whenever
useEffect(() => { useEffect(() => {
const tokenAmountOut = 1 const tokenAmountOut = 1
const weightRatio = Decimal(weightOnDataToken).div(Decimal(weightOnOcean)) const weightRatio = new Decimal(weightOnDataToken).div(
const diff = Decimal(dtBalance).minus(tokenAmountOut) new Decimal(weightOnOcean)
const y = Decimal(dtBalance).div(diff) )
const foo = y.pow(weightRatio).minus(Decimal(1)) const diff = new Decimal(dtAmount).minus(tokenAmountOut)
const tokenAmountIn = Decimal(oceanBalance) const y = new Decimal(dtAmount).div(diff)
const foo = y.pow(weightRatio).minus(new Decimal(1))
const tokenAmountIn = new Decimal(oceanAmount)
.times(foo) .times(foo)
.div(Decimal(1).minus(Decimal(swapFee))) .div(new Decimal(1).minus(new Decimal(swapFee)))
setFirstPrice(tokenAmountIn) setFirstPrice(`${tokenAmountIn}`)
}, [swapFee, weightOnOcean, weightOnDataToken]) }, [swapFee, weightOnOcean, weightOnDataToken])
// Check: account, network & insufficient balance // Check: account, network & insufficient balance