Gaphql API

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

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


1. Factory

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

Поле Тип Описание и назначение
id ID! Адрес контракта Factory. Используется для единственной точки входа в глобальные данные Uniswap V3.
poolCount BigInt! Общее число созданных пулов. Позволяет следить за ростом экосистемы.
txCount BigInt! Всего транзакций через субграф. Используется как индикатор активности.
totalVolumeUSD​,totalVolumeETH BigDecimal! Накопленный объём свопов в USD/ETH за всё время.
totalFeesUSD​,totalFeesETH BigDecimal! Сумма комиссий, начисленных протоколу, в USD/ETH.
untrackedVolumeUSD BigDecimal! Объём в USD с учётом всех пулов (даже без точного курса).
totalValueLockedUSD​,totalValueLockedETH BigDecimal! Текущий TVL протокола в USD/ETH, рассчитанный по последним ценам.
totalValueLockedUSDUntracked​,totalValueLockedETHUntracked BigDecimal! TVL, включая невыверенные курсы.
owner ID! Текущий владелец фабрики (адрес, управляющий параметрами через governance).

2. Bundle

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

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

3. Token

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

Поле Тип Что хранит и зачем
id Bytes! Адрес контракта токена. Обязателен для однозначной идентификации.
symbol​,name String! Символ (USDC) и имя (USD Coin). Отображаются в интерфейсах и графиках.
decimals BigInt! Число десятичных знаков. Необходимо для нормализации значений балансов и объёмов.
totalSupply BigInt! Общий объём эмиссии токена.
volume​,volumeUSD BigDecimal! Совокупный объём торгов в единицах токена и в USD (при пересчёте).
untrackedVolumeUSD BigDecimal! Объём в USD по всем пулам, включая те, где не было белого списка для курса.
feesUSD BigDecimal! Сумма комиссий, полученных по этому токену, в USD.
txCount BigInt! Количество транзакций со включением этого токена.
poolCount BigInt! Число пулов, в которых участвует токен.
totalValueLocked​,totalValueLockedUSD​,totalValueLockedUSDUntracked BigDecimal! Суммарный TVL токена во всех пулах (в единицах и в USD, включая/исключая невыверенные курсы).
derivedETH BigDecimal! Приблизительная цена токена в ETH (для других сетей – в нативной валюте).
whitelistPools [Pool!]! Список пулов, прошедших в «белый список» для расчёта USD-цены.
tokenDayData [TokenDayData!]! @derivedFrom(field: "token") Ссылка на историю по дням.

4. Pool

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

Поле Тип Описание
id Bytes! Адрес контракта пула.
createdAtTimestamp​,createdAtBlockNumber BigInt! Время и номер блока создания пула.
token0​,token1 Token! Два актива, составляющие пару.
feeTier BigInt! Размер комиссии (обычно 500, 3000, 10000 — что соответствует 0.05%, 0.3%, 1%).
liquidity BigInt! Текущая «в диапазоне» ликвидность.
sqrtPrice​,tick​,observationIndex BigInt! Параметры «наблюдателя» цен и текущего рыночного уровня (тик).
token0Price​,token1Price BigDecimal! Котировки: сколько token0 стоит в token1 и наоборот.
volumeToken0​,volumeToken1 BigDecimal! Накопленные объёмы свопов каждого токена.
volumeUSD​,untrackedVolumeUSD​,feesUSD​,txCount BigDecimal!, BigInt! Объёмы и комиссии в USD, объём транзакций.
collectedFeesToken0​,collectedFeesToken1​,collectedFeesUSD BigDecimal! Собранные сборы в токенах и в USD.
totalValueLockedToken0​,totalValueLockedToken1​,totalValueLockedETH​,totalValueLockedUSD​,totalValueLockedUSDUntracked BigDecimal! TVL в разных единицах.
liquidityProviderCount BigInt! Число адресов, предоставивших ликвидность.
poolHourData​,poolDayData [PoolHourData!]!, [PoolDayData!]! @derivedFrom(field: "pool") История по часам и по дням.
mints​,burns​,swaps​,collects​,ticks … @derivedFrom События внутри пула — отношения для выборки.

5. Tick

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

Поле Тип Назначение
id ID! Составляется как <poolAddress>#<tickIdx>​.
poolAddress Bytes! Адрес пула.
tickIdx BigInt! Индекс тика (целое число, шаги по логарифмической цене).
pool Pool! Ссылка на пул.
liquidityGross BigInt! Общая ликвидность, связанная с этим тиком (нижняя или верхняя граница).
liquidityNet BigInt! Изменение ликвидности при пересечении тика.
price0​,price1 BigDecimal! Расчётная (константная) цена token0/token1 на этом тике.
createdAtTimestamp​,createdAtBlockNumber BigInt! Когда тик впервые появился (для исторической выборки).

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

Transaction

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

Mint / Burn

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

Поле Тип Описание
id ID! Составляется как <txHash>#<index>​.
transaction Transaction! Ссылка на транзакцию.
timestamp BigInt! Момент события.
pool Pool! Пул, в котором добавили/сгорели ликвидность.
token0​,token1 Token! Токены пары.
owner Bytes! Адрес владельца позиции.
sender Bytes Контракт/сервис, вызвавший операцию.
origin Bytes! Исходный EOA.
amount BigInt! Ликвидность (единицы).
amount0​,amount1 BigDecimal! Количество каждого токена.
amountUSD BigDecimal? USD-эквивалент (при наличии цен).
tickLower​,tickUpper BigInt! Границы ценового диапазона.
logIndex BigInt! Порядок события в логе транзакции.

Swap

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

Поле Тип Назначение
amount0​,amount1 BigDecimal! Дельта token0/token1 (отрицательная/положительная).
amountUSD BigDecimal! USD эквивалент свопа.
sqrtPriceX96 BigInt! Новая цена пула в формате Q64.96.
tick BigInt! Новое значение тика после свапа.
sender​,recipient​,origin Bytes! Участники операции.
logIndex BigInt! Позиция в логе.

Collect

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

Поле Тип Описание
owner Bytes! Владелец позиции, получивший сборы.
amount0​,amount1​,amountUSD BigDecimal! Количество снятых токенов и их USD-эквивалент.
tickLower​,tickUpper BigInt! Диапазон позиции.
logIndex BigInt! Порядковый номер в логе.

Flash

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

Поле Тип Назначение
amount0​,amount1 BigDecimal! Выданные токены флэш-кредита.
amount0Paid​,amount1Paid BigDecimal! Возвращённые токены.
amountUSD BigDecimal! USD-эквивалент флэша.
sender​,recipient Bytes! Участники.
logIndex BigInt! Позиция в логе.

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

UniswapDayData

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

Поле Тип Содержание
date Int! Дата (unix / 86400).
volumeETH​,volumeUSD​,volumeUSDUntracked BigDecimal! Объёмы за день.
feesUSD BigDecimal! Сумма комиссий.
txCount BigInt! Число транзакций.
tvlUSD BigDecimal! TVL в USD на конец дня.

PoolDayData / PoolHourData

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

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

TokenDayData / TokenHourData

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

Поля Тип Содержание
id ID! <tokenAddress>-<date>
volume​,volumeUSD​,untrackedVolumeUSD BigDecimal! Объёмы торгуемости токена.
totalValueLocked​,totalValueLockedUSD BigDecimal! TVL токена.
priceUSD​,feesUSD BigDecimal! Цена токена и собранные комиссии в USD.
open​,high​,low​,close BigDecimal! Дневные/часовые 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 ...