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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions