Gaphql API

Ниже приведён полный список всех сущностей (типы с @entity​) в субграфе Uniswap V3, с разбором каждого поля: что оно хранит и для чего используется.

Источники схемы:
• Определения сущностей — исходный файл schema.graphql​ (GitHub) (GitHub)
• Общий обзор работы субграфа — Uniswap Docs (Uniswap Docs)


1. Factory

Хранит агрегированную статистику по всему протоколу.

ПолеТипОписание и назначение
idID!Адрес контракта Factory. Используется для единственной точки входа в глобальные данные Uniswap V3.
poolCountBigInt!Общее число созданных пулов. Позволяет следить за ростом экосистемы.
txCountBigInt!Всего транзакций через субграф. Используется как индикатор активности.
totalVolumeUSD​,totalVolumeETHBigDecimal!Накопленный объём свопов в USD/ETH за всё время.
totalFeesUSD​,totalFeesETHBigDecimal!Сумма комиссий, начисленных протоколу, в USD/ETH.
untrackedVolumeUSDBigDecimal!Объём в USD с учётом всех пулов (даже без точного курса).
totalValueLockedUSD​,totalValueLockedETHBigDecimal!Текущий TVL протокола в USD/ETH, рассчитанный по последним ценам.
totalValueLockedUSDUntracked​,totalValueLockedETHUntrackedBigDecimal!TVL, включая невыверенные курсы.
ownerID!Текущий владелец фабрики (адрес, управляющий параметрами через governance).

2. Bundle

Единичная сущность для расчёта курса ETH→USD.

ПолеТипОписание
idID!Всегда фиксировано в1​.
ethPriceUSDBigDecimal!Текущий курс ETH в USD, используемый при пересчёте объёмов и TVL.

3. Token

Описывает каждый токен, участвующий в пулах.

ПолеТипЧто хранит и зачем
idBytes!Адрес контракта токена. Обязателен для однозначной идентификации.
symbol​,nameString!Символ (USDC) и имя (USD Coin). Отображаются в интерфейсах и графиках.
decimalsBigInt!Число десятичных знаков. Необходимо для нормализации значений балансов и объёмов.
totalSupplyBigInt!Общий объём эмиссии токена.
volume​,volumeUSDBigDecimal!Совокупный объём торгов в единицах токена и в USD (при пересчёте).
untrackedVolumeUSDBigDecimal!Объём в USD по всем пулам, включая те, где не было белого списка для курса.
feesUSDBigDecimal!Сумма комиссий, полученных по этому токену, в USD.
txCountBigInt!Количество транзакций со включением этого токена.
poolCountBigInt!Число пулов, в которых участвует токен.
totalValueLocked​,totalValueLockedUSD​,totalValueLockedUSDUntrackedBigDecimal!Суммарный TVL токена во всех пулах (в единицах и в USD, включая/исключая невыверенные курсы).
derivedETHBigDecimal!Приблизительная цена токена в ETH (для других сетей – в нативной валюте).
whitelistPools[Pool!]!Список пулов, прошедших в «белый список» для расчёта USD-цены.
tokenDayData[TokenDayData!]! @derivedFrom(field: "token")Ссылка на историю по дням.

4. Pool

Каждый пул ликвидности с двумя токенами.

ПолеТипОписание
idBytes!Адрес контракта пула.
createdAtTimestamp​,createdAtBlockNumberBigInt!Время и номер блока создания пула.
token0​,token1Token!Два актива, составляющие пару.
feeTierBigInt!Размер комиссии (обычно 500, 3000, 10000 — что соответствует 0.05%, 0.3%, 1%).
liquidityBigInt!Текущая «в диапазоне» ликвидность.
sqrtPrice​,tick​,observationIndexBigInt!Параметры «наблюдателя» цен и текущего рыночного уровня (тик).
token0Price​,token1PriceBigDecimal!Котировки: сколько token0 стоит в token1 и наоборот.
volumeToken0​,volumeToken1BigDecimal!Накопленные объёмы свопов каждого токена.
volumeUSD​,untrackedVolumeUSD​,feesUSD​,txCountBigDecimal!, BigInt!Объёмы и комиссии в USD, объём транзакций.
collectedFeesToken0​,collectedFeesToken1​,collectedFeesUSDBigDecimal!Собранные сборы в токенах и в USD.
totalValueLockedToken0​,totalValueLockedToken1​,totalValueLockedETH​,totalValueLockedUSD​,totalValueLockedUSDUntrackedBigDecimal!TVL в разных единицах.
liquidityProviderCountBigInt!Число адресов, предоставивших ликвидность.
poolHourData​,poolDayData[PoolHourData!]!, [PoolDayData!]! @derivedFrom(field: "pool")История по часам и по дням.
mints​,burns​,swaps​,collects​,ticks… @derivedFromСобытия внутри пула — отношения для выборки.

5. Tick

Отдельная запись для каждого ценового тика в пуле.

ПолеТипНазначение
idID!Составляется как<poolAddress>#<tickIdx>​.
poolAddressBytes!Адрес пула.
tickIdxBigInt!Индекс тика (целое число, шаги по логарифмической цене).
poolPool!Ссылка на пул.
liquidityGrossBigInt!Общая ликвидность, связанная с этим тиком (нижняя или верхняя граница).
liquidityNetBigInt!Изменение ликвидности при пересечении тика.
price0​,price1BigDecimal!Расчётная (константная) цена token0/token1 на этом тике.
createdAtTimestamp​,createdAtBlockNumberBigInt!Когда тик впервые появился (для исторической выборки).

6. Transaction и события внутри него

Transaction

ПолеТипЗачем нужно
idID!Хэш транзакции.
blockNumberBigInt!Номер блока включения.
timestampBigInt!Когда была подтверждена.
gasUsed​,gasPriceBigInt!Метрики газовых затрат для оценки стоимости взаимодействия.
mints​,burns​,swaps​,flashed​,collects… @derivedFromСвязанные события для подробного анализа.

Mint / Burn

Добавление или удаление ликвидности.

ПолеТипОписание
idID!Составляется как<txHash>#<index>​.
transactionTransaction!Ссылка на транзакцию.
timestampBigInt!Момент события.
poolPool!Пул, в котором добавили/сгорели ликвидность.
token0​,token1Token!Токены пары.
ownerBytes!Адрес владельца позиции.
senderBytesКонтракт/сервис, вызвавший операцию.
originBytes!Исходный EOA.
amountBigInt!Ликвидность (единицы).
amount0​,amount1BigDecimal!Количество каждого токена.
amountUSDBigDecimal?USD-эквивалент (при наличии цен).
tickLower​,tickUpperBigInt!Границы ценового диапазона.
logIndexBigInt!Порядок события в логе транзакции.

Swap

Обмен внутри пула.

ПолеТипНазначение
amount0​,amount1BigDecimal!Дельта token0/token1 (отрицательная/положительная).
amountUSDBigDecimal!USD эквивалент свопа.
sqrtPriceX96BigInt!Новая цена пула в формате Q64.96.
tickBigInt!Новое значение тика после свапа.
sender​,recipient​,originBytes!Участники операции.
logIndexBigInt!Позиция в логе.

Collect

Снятие комиссий провайдером.

ПолеТипОписание
ownerBytes!Владелец позиции, получивший сборы.
amount0​,amount1​,amountUSDBigDecimal!Количество снятых токенов и их USD-эквивалент.
tickLower​,tickUpperBigInt!Диапазон позиции.
logIndexBigInt!Порядковый номер в логе.

Flash

Флэш-кредит (безпользовательская сессия).

ПолеТипНазначение
amount0​,amount1BigDecimal!Выданные токены флэш-кредита.
amount0Paid​,amount1PaidBigDecimal!Возвращённые токены.
amountUSDBigDecimal!USD-эквивалент флэша.
sender​,recipientBytes!Участники.
logIndexBigInt!Позиция в логе.

7. Исторические агрегаты

UniswapDayData

Сводка по протоколу за сутки.

ПолеТипСодержание
dateInt!Дата (unix / 86400).
volumeETH​,volumeUSD​,volumeUSDUntrackedBigDecimal!Объёмы за день.
feesUSDBigDecimal!Сумма комиссий.
txCountBigInt!Число транзакций.
tvlUSDBigDecimal!TVL в USD на конец дня.

PoolDayData / PoolHourData

Срезы для каждого пула за день/час.

Поля (общие)ТипЗначение
idID!<poolAddress>-<date>
periodStartUnix​(hour) /date​(day)Int!Время начала периода.
liquidity​,sqrtPrice​,tick​,token0Price​,token1PriceСостояние пула на конец периода.
tvlUSD​,volumeToken0/1​,volumeUSD​,feesUSD​,txCountМетрики объёмов, комиссий и активности.
open​,high​,low​,closeBigDecimal!OHLC для цены token0 за период.

TokenDayData / TokenHourData

Аналогично по каждому токену.

ПоляТипСодержание
idID!<tokenAddress>-<date>
volume​,volumeUSD​,untrackedVolumeUSDBigDecimal!Объёмы торгуемости токена.
totalValueLocked​,totalValueLockedUSDBigDecimal!TVL токена.
priceUSD​,feesUSDBigDecimal!Цена токена и собранные комиссии в USD.
open​,high​,low​,closeBigDecimal!Дневные/часовые OHLC.

Все эти сущности обеспечивают полную картину работы протокола и дают возможность:

  • быстро получать агрегированные данные (Factory, UniswapDayData),
  • анализировать историю активности по пулам и токенам (Day/HourData),
  • детально распаковывать каждую транзакцию и связанные события внутри пулов.
    Reply

    Welcome to here!

    Here we can learn from each other how to use SiYuan, give feedback and suggestions, and build SiYuan together.

    Signup About
    Please input reply content ...