Супер-мега-статистика по Aptos
РазнорабочийУ меня получилось найти кучу полезных данных по Аптосу, но тут интересны не только сами данные, но и способ которым я их получил.
Решил дать вам и рыбу и удочку.
Я начал изучать https запросы сканов, в надежде найти что-то интересное в api. Попробовал открыть в браузере https://api.apscan.io и увидел вот такую картину.

Это конфиг swagger, описывающий структуру rest api, такие штуки не часто выкладывают в продакшен, чаще используют на тестовых серверах для удобства разработчиков.
Попробуем вставить этот конфиг на эту страницу https://petstore.swagger.io/, чтобы визуализировать доступные эндпоинты, которые мы можем вызывать.

Обратите внимание, на 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, так как не нужно передавать лишних заголовков, можно просто в браузере открыть
Ну а теперь таблицы и графики:

