Супер-мега-статистика по Aptos

Супер-мега-статистика по Aptos

Разнорабочий

У меня получилось найти кучу полезных данных по Аптосу, но тут интересны не только сами данные, но и способ которым я их получил.

Решил дать вам и рыбу и удочку.

Я начал изучать https запросы сканов, в надежде найти что-то интересное в api. Попробовал открыть в браузере https://api.apscan.io и увидел вот такую картину.

swagger!

Это конфиг swagger, описывающий структуру rest api, такие штуки не часто выкладывают в продакшен, чаще используют на тестовых серверах для удобства разработчиков.

Попробуем вставить этот конфиг на эту страницу https://petstore.swagger.io/, чтобы визуализировать доступные эндпоинты, которые мы можем вызывать.

UI для Swagger

Обратите внимание, на Base URL: 0.0.0.0:3000/, как я и говорил, конфиг не планировали выкладывать, он для использования на локальном хосте разработчика.

Второй, более важный момент, название проекта PostgREST API. Очевидно, это какая-то штука, которая превращает rest запросы в запросы к базе данных PostgreSQL. Сморим документацию, находим раздел с синтаксисом запросов, которые позволят выгребать данные из базы данных. Операторы сравнения, логические операторы.

Теперь мы легко и за считанные секунды можем узнать много интересной информации, например:

Сколько адресов имеют ноль транзакций?

curl "https://api.apscan.io/accounts?transactions_count=eq.0" -I \
  -H "Range-Unit: items" \
  -H "Prefer: count=exact"
Подчёркнуто количество найденных результатов
Небольшое пояснение, ключ -I у curl это выводить только http-заголовки ответа без вывода тела ответа. Оператор eq.0 означает равно нулю. Заголовок запроса "Prefer: count=exact" заставляет сервер вернуть точное количество найденных результатов в заголовке content-range.

Сколько адресов имеют от 2 до 9 транзакций?

curl "https://api.apscan.io/accounts?transactions_count=in.(2,3,4,5,6,7,8,9)" -I \
  -H "Range-Unit: items" \
  -H "Prefer: count=exact"

Сколько адресов имеют от 30 до 49? Чтобы не перечислять как в предыдущем запросе, сделаем так:

curl "https://api.apscan.io/accounts?and=(transactions_count.gte.30,transactions_count.lte.49)" -I \
  -H "Range-Unit: items" \
  -H "Prefer: count=exact"

С транзакциями понятно, теперь баланс. Сколько адресов имеют баланс 0 APT?

curl "https://api.apscan.io/coin_balances_rank?and=(move_resource_generic_type_params.eq.%5B%220x1%3A%3Aaptos_coin%3A%3AAptosCoin%22%5D,balance.eq.0)" -I \
  -H "Range-Unit: items" \
  -H "Prefer: count=exact"
Строка %5B%220x1%3A%3Aaptos_coin%3A%3AAptosCoin%22%5D это ["0x1::aptos_coin::AptosCoin"], то есть токен APT. Можно запрашивать балансы любых токенов подставляя их id.

Сколько адресов имеют баланс больше нуля и меньше 0.1 APT:

curl "https://api.apscan.io/coin_balances_rank?and=(move_resource_generic_type_params.eq.%5B%220x1%3A%3Aaptos_coin%3A%3AAptosCoin%22%5D,balance.gt.0,balance.lt.10000000)" -I \
  -H "Range-Unit: items" \
  -H "Prefer: count=exact"
Тут стоит отметить, что баланс мы указываем в Octa, 1 APT это 100000000 Octa

Можно много чего делать, например за один запрос узнавать балансы сразу для N адресов и для этого примера не нужен curl, так как не нужно передавать лишних заголовков, можно просто в браузере открыть

https://api.apscan.io/accounts?select=address,aptos_coin_balance&address=in.(0xbb34008eb3c68094c279e2fdee340d81c567695b8b72e7c4ad98d353249d4058,0xc68aa5ed8dfe45d81859e025f682a28b3aea8208a443dbc0532a25c18379fcca,0x8cdb04af2769251bd51c61b90de0289472d2189bce4537ab6ad73257005b95a5,0x313a05d610acfd91e333611f5d7f9c76a3e437936e9daa223de93c0890ff25de,0x4983b25cec6ab661fcb4566230252be5109aa74481c7d0d9ff879663ebdf29a)


Ну а теперь таблицы и графики:

Данные на 28 сентября 2023
Данные на 28 сентября 2023



Report Page