Skip to content

Error: bisect endpoints must have different signs #148

Description

@Subfortytwo

Lately, I started to have a new error message:

Error: bisect endpoints must have different signs
    at fr (/home/user/gnagna/node_modules/@shadeprotocol/shadejs/dist/index.umd.cjs:3:42061)
    at Et (/home/user/gnagna/node_modules/@shadeprotocol/shadejs/dist/index.umd.cjs:3:42677)
    at Oe.findZeroWithPool1Params (/home/user/gnagna/node_modules/@shadeprotocol/shadejs/dist/index.umd.cjs:3:50617)
    at Oe.solveInvFnForPool1Size (/home/user/gnagna/node_modules/@shadeprotocol/shadejs/dist/index.umd.cjs:3:43889)
    at Oe.simulateToken0WithToken1Trade (/home/user/gnagna/node_modules/@shadeprotocol/shadejs/dist/index.umd.cjs:3:45529)
    at Oe.swapToken0WithToken1 (/home/user/gnagna/node_modules/@shadeprotocol/shadejs/dist/index.umd.cjs:3:44237)
    at yr (/home/user/gnagna/node_modules/@shadeprotocol/shadejs/dist/index.umd.cjs:3:52564)
    at main (/home/user/gnagna/src/test.ts:43:47)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)

I am not sure 0o.

Here a piece of faulty code producing the error. BN is an alias for BigNumer and toHuman divides by 100000 the input:


const output = await batchQueryPairsInfo({
...
    })

    const u = output[0].pairInfo
    const humanVal = toHuman(BN(10000000))

    console.log("This is humanVal: ", humanVal.toString())
    if (!u.stableParams)
        return

    const inputParams = {
        inputToken0Amount: humanVal,
        inputToken1Amount: humanVal,

        poolToken0Amount: toHuman(BN(u.token0Amount)),
        poolToken1Amount: toHuman(BN(u.token1Amount)),
        priceRatio: BN(u.stableParams.priceRatio ?? 0),
        alpha: BN(u.stableParams.alpha),
        gamma1: BN(u.stableParams.gamma1),
        gamma2: BN(u.stableParams.gamma2),
        liquidityProviderFee: BN(u.lpFee),
        daoFee: BN(u.daoFee),
        minTradeSizeToken0For1: BN(u.stableParams.minTradeSizeXForY),
        minTradeSizeToken1For0: BN(u.stableParams.minTradeSizeYForX),
        priceImpactLimit: BN(u.stableParams.maxPriceImpactAllowed)
    };


    const quote_to_base = stableSwapToken0for1(inputParams).decimalPlaces(6)

Also the value of inputParams:

{
  inputToken0Amount: BigNumber { s: 1, e: 1, c: [ 10 ] },
  inputToken1Amount: BigNumber { s: 1, e: 1, c: [ 10 ] },
  poolToken0Amount: BigNumber { s: 1, e: 3, c: [ 7052, 35108000000000 ] },
  poolToken1Amount: BigNumber { s: 1, e: 4, c: [ 11640, 539300000000 ] },
  priceRatio: BigNumber { s: 1, e: 0, c: [ 0 ] },
  alpha: BigNumber { s: 1, e: 2, c: [ 150 ] },
  gamma1: BigNumber { s: 1, e: 0, c: [ 6 ] },
  gamma2: BigNumber { s: 1, e: 1, c: [ 50 ] },
  liquidityProviderFee: BigNumber { s: 1, e: -4, c: [ 50000000000 ] },
  daoFee: BigNumber { s: 1, e: -4, c: [ 50000000000 ] },
  minTradeSizeToken0For1: BigNumber { s: 1, e: -4, c: [ 10000000000 ] },
  minTradeSizeToken1For0: BigNumber { s: 1, e: -4, c: [ 10000000000 ] },
  priceImpactLimit: BigNumber { s: 1, e: 3, c: [ 1000 ] }
}

I am getting a bit lost in Shade's code :/. Thanks for your support.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions