Все обмены внутри приложения проходят через один адрес — 0x00000000…4e3010e2. Это самая показательная точка всей инфраструктуры: по ней видно, что покупают и продают на самом деле, сколько людей это делает и какой у приложения оборот. Ниже — окно в 30 суток, пересчитывается ежедневно.
Столбцы — приходы токенов за сутки, линия — сколько разных адресов их отправило. Две шкалы намеренно: величины отличаются в разы, на общей линия легла бы в пол.
Оценка идёт по самой ликвидной паре каждого токена. Непокрытое не домысливается — доля оценённого стоит в карточке выше, и прочитать эту сумму как полный оборот нельзя.
Верхние токены по числу приходов. Колонка «отправителей» важнее количества: один адрес, гоняющий токен туда-сюда, и сотня разных людей — это разные вещи, а по объёму они неразличимы.
Это не пользователи, а расчётные контракты, через которые исполняется обмен: агрегаторы маршрутизируют сделку по пулам и отдают результат маршрутизатору. Подпись есть не у всех — ставим её только там, где адрес опознан, а не угадан.
Символ в цепочке ничем не защищён: его выбирает автор контракта, и совпадения никто не запрещает. В нашем окне больше двух сотен символов принадлежат нескольким разным контрактам сразу.
Это не теория. Первый замер складывал по символу, и «UNI» показал оборот 14,85 млн долларов, которого не существует: настоящий UNI дал 2 540. Остальное пришлось на однодневные подделки с тем же именем. Поэтому здесь всё считается по адресу контракта, а символ — только подпись для показа, и у каждой строки таблицы адрес открывается в обозревателе.
Маршрутизатор принимает и то, что пользователь отдаёт, и то, что возвращается из пула. Разделить одно от другого можно только по встречному движению в той же транзакции, и здесь это не делается. Число приходов — мера активности, а не объёма покупок.
В колонке «адресов-отправителей» стоят контракты пулов и агрегаторов. Сколько за ними живых пользователей, из цепочки не видно: один человек за одну сделку может задеть несколько пулов, и наоборот.
Цена есть не у всякого токена: у однодневных выпусков ликвидности нет вовсе. Такие строки помечены «без цены» и в сумму не входят — подставлять им ноль значило бы занизить оборот незаметно.
Пересчитывается ежедневно. Отдаётся как /api/router.json. Чтение идёт окнами ровно в сутки: при окнах по четыре дня каждое упиралось в потолок Etherscan в 10 000 записей — молча, без единой ошибки. Цены спрашиваются по одному адресу за запрос по той же причине: источник отдаёт не больше 30 пар на ответ независимо от того, сколько адресов спросили.