Как с помощью подграфа Uniswap v3 или других опций найти пулы ликвидности, содержащие данный символ токена?

Я пытаюсь получить список всех пулов, содержащих символ токена, с помощью Uniswap v3 для возможностей арбитража. Например, если я хочу найти все пулы, содержащие "WETH".

Используя подграф ,

      {
    tokens(first: 10, where:{symbol:"WETH"}){
    id
    name
    symbol
  }
}

Возврат:

      {
  "data": {
    "tokens": [
      {
        "id": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
        "name": "Wrapped Ether",
        "symbol": "WETH"
      }
    ]
  }
}

Как только у меня будет выбранный пул, я буду использовать его позже в factory.getPool().

Теперь, чтобы найти пулы, содержащие WETH, я использую график, чтобы проверить, token0 ИЛИ token1 содержит WETH ID, 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.

      // search token0
{
    pools(first:10, where: {
    token0:"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",            
}){
    token0{
      name
      symbol
      id
    }
    token1{
      name
      symbol
      id
    }
    }
}


// search token1
{
    pools(first:10, where: {
    token1:"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",            
}){
    token0{
      name
      symbol
      id
    }
    token1{
      name
      symbol
      id
    }
    }
}

Теперь у меня есть список всех пулов, содержащих «WETH» и идентификаторы пула, которые будут использоваться на заводе для выполнения свопов.

Итак, я хотел бы знать, есть ли более простой способ сделать это, пожалуйста !?

1 ответ

Я думаю, вы могли бы использовать свойство «whitelistPools», доступное в объекте запроса Token.

Вот пример, проверенный в проводнике Uniswap v3, и он работает:

      {
  token(id:"0x6b175474e89094c44da98b954eedeac495271d0f") {
    symbol,
    name,
    whitelistPools (orderBy: liquidity, orderDirection: desc) {
      id,
      token0 { id, symbol, decimals},
      token1 { id, symbol, decimals },
      liquidity,
      feeTier
    }
  }
}

В приведенном выше примере я просто передал адрес токена DAI и получил список пулов, содержащих данный токен. Вы также можете узнать, где наш данный токен является «token0» или «token1» (на самом деле token0 — это просто тот, у которого меньше шестнадцатеричное значение адреса).

Из полученного списка вы получаете список пулов, которые вы можете легко отфильтровать из своего кода.

Другие вопросы по тегам