Адреса
У каждого 40-символьного шестнадцатеричного аккаунта в Arc есть страница — его баланс USDC, токены, которые он держит, всё, что он сделал, и, если это контракт, его код.
Что показывает страница адреса#
В шапке — полный адрес с контрольной суммой, кнопка копирования и QR-код, а также по пилюле на каждое свойство адреса: Контракт, Прокси или стандарт токена. Под ней три карточки, а затем полоса вкладок. Ничему на странице не нужен аккаунт — у Arcscan его нет, поэтому здесь нигде нет и приватных именных меток. Публичные метки живут в облаке меток и в каталоге.
| Карточка | Что содержит |
|---|---|
| Обзор | «Баланс USDC», «Стоимость в USDC» и «Токены на балансе». Каждая величина на карточке прочитана на одной высоте блока, и эта высота названа в подсказке к балансу. |
| Подробнее | «Разрешения токенов», создатель и транзакция развёртывания для контракта, ссылка на токен-трекер, когда адрес сам является контрактом токена, первая и последняя транзакция этого адреса и то, откуда он был впервые пополнен. |
| Мультичейн | Одна исходящая ссылка на DeBank и подсказка о том, что DeBank не индексирует Arc, — значит, ничего из Arc там не появится. Это ссылка, а не итог по портфелю. |
Полоса вкладок несёт ещё и меню фильтра, которое открывает расширенный фильтр, заранее заполненный этим адресом, и кнопку API, указывающую на эндпоинты, стоящие за страницей.
Балансы#
Нативный баланс USDC#
Arc оплачивает газ в USDC, поэтому нативный баланс — это уже доллары: баланс и его стоимость — одно и то же число, а не пересчёт по курсу. Нативная единица несёт 18 знаков. Интерфейс ERC-20 для USDC по адресу 0x3600000000000000000000000000000000000000 сообщает те же деньги, усечённые до 6 знаков; страница адреса показывает один баланс USDC, а не оба.
Баланс без высоты нельзя проверить
Arc выпускает блок примерно раз в полсекунды — при измерении 506 мс в основной сети и 536 мс в тестовой, — поэтому два чтения «latest» попадают на разные высоты. Arcscan называет блок, на котором он прочитал баланс, и каждая величина на карточке «Обзор» прочитана на той же высоте, чтобы числа сходились друг с другом.Токены на балансе#
«Токены на балансе» перечисляют баланс по каждому токену, который этот адрес отправлял или получал внутри проиндексированного диапазона. Суммы точны, но каждая из них вычислена — просуммирована по логам переводов токена, а не прочитана обратно из контракта, — поэтому токен, перемещающий стоимость без выпуска перевода, может отличаться. Список — это нижняя оценка, а не опись: токен, который ни разу не выпустил перевода с участием этого адреса, обнаружить таким способом невозможно.
Долларовые величины появляются только там, где Arcscan готов назвать цену, а он делает это лишь тогда, когда хотя бы один пул токена держит не менее 10 000 USDC настоящей ликвидности: более тонкий пул сдвигается одной сделкой, поэтому названная им величина ценой не является. Позиция без цены так и говорит; нулём она не становится никогда. Поэтому подытог — это сумма только оценённых позиций, и он сообщает, сколько позиций в него не попало.
Это не итог по портфелю
Неизвестными здесь могут быть две разные вещи, и ни одна из них не «ничего»: токен, цену которого Arcscan назвать не станет, и токен, баланс которого установить не удалось вовсе. Обе указываются как неизвестные, а не пишутся как 0.Вкладки активности#
У обычного аккаунта четыре вкладки, у контракта — пятая. Каждая из четырёх лент листается курсором, доходящим до всей истории, которую держит Arcscan, и из каждой можно скачать в CSV уже загруженные строки.
| Вкладка | Что перечисляет | Откуда берётся |
|---|---|---|
| Транзакции | Транзакции, отправленные или полученные этим адресом, сначала новые. | Индекс «адрес → транзакция». |
| Внутренние транзакции | Нативные USDC, перемещённые внутри вызова, а не как транзакция верхнего уровня. | Логи событий, публикуемые системным зеркальным контрактом, — не trace_filter. |
| Переводы токенов | Перемещения токенов, стороной которых был этот адрес. | Тот же индекс адресов, поверх таблицы переводов. |
| Логи | События, выпущенные этим адресом. | Индекс логов, отфильтрованный по выпустившему адресу. |
| Контракт | Байткод, ABI, код создания, аргументы конструктора и исходник, когда он у Arcscan есть. Только для контрактов. | Цепь плюс Sourcify там, где верификация существует. |
Внутренние транзакции в Arc берутся не из трассировок
Восстановление внутренних перемещений черезtrace_filter ограничило бы эту вкладку окном примерно в сотню блоков — меньше минуты цепи. Этого и не требуется: каждое чистое нативное перемещение публикуется логом, поэтому вкладка читает всю историю без единого трассировочного вызова. Именно поэтому поток индекса трассировок не содержит ни одного блока ни в одной из сетей, а вкладка при этом работает.Что проиндексировано, а что нет#
В обеих сетях есть индекс «адрес → транзакция» и индекс держателей, поэтому списки выше — это чтения из индекса, а не сканирования. В остальном сети несимметричны, и различия меняют то, на что страница адреса может ответить.
| Основная сеть — 5042 | Тестовая сеть — 5042002 | |
|---|---|---|
| Индекс транзакций | Да | Да |
| Индекс держателей | Да | Да |
| Индекс начинается с блока | 0 — первый блок цепи | 53 500 000, не генезис |
| Историческое состояние (архив) | Доступно | Недоступно |
| Индекс трассировок | Ни одного проиндексированного блока | Ни одного проиндексированного блока |
| Верификация контрактов | Сегодня невозможна | Доступна через Sourcify |
Историю тестовой сети ниже блока 53 500 000 мы не храним
Индекс тестовой сети в Arcscan начинается с блока 53 500 000. Адрес, вся активность которого лежит ниже этой высоты, покажет пустую страницу, и эта пустота — недостающая история Arcscan, а не цепи. Основная сеть проиндексирована с блока 0.Arcscan не публикует число транзакций адреса: API не возвращает итога, и вкладка не показывает бейдж с числом, вместо того чтобы показать число из неполного обхода. Единственный верный итог на странице — это nonce аккаунта, показанный как то, что этот адрес отправил: он берётся из состояния аккаунта, поэтому точен даже для транзакций, которые Arcscan пока не может перечислить. Насколько далеко достаёт каждый индекс прямо сейчас — в разделе Полнота данных.
Исходный код контракта#
У адреса контракта появляется вкладка «Контракт» с разделами Код, Чтение контракта и Запись в контракт. Байты, которые держит цепь, — развёрнутый байткод, код создания и аргументы конструктора — есть всегда и в обеих сетях, потому что им ничьё разрешение не нужно. Исходный код — дело другое, и здесь две сети различаются полностью.
Тестовая сеть — верификация через Sourcify#
Sourcify числит сеть 5042002, поэтому контракт тестовой сети можно верифицировать, и его исходник можно показать здесь. То, что держит Arcscan, — это кеш: он забирает исходник контракта в первый раз, когда его кто-нибудь запросит. Поэтому число контрактов, исходники которых есть у Arcscan, — это размер кеша, и оно много меньше числа верифицированных: контракт, который ещё никто не открывал, будет получен тогда, когда его откроют. Отправка идёт через Верификацию контракта, а то, что уже прошло, перечислено в разделе Верифицированные контракты.
Основная сеть — верификации не существует#
Цитата из того, что сам сервис основной сети сообщает о собственных возможностях:
Это не то, что придерживает Arcscan
Sourcify не числит сеть 5042, поэтому сегодня ни один контракт в этой сети не может быть верифицирован — ни через Arcscan, ни через любой другой клиент Sourcify. Ничто здесь не ждёт Arcscan; оно ждёт, когда сеть добавят на стороне Sourcify.На практике: в основной сети вкладка «Контракт» никогда не показывает исходник и никогда не показывает галочку верификации, потому что заслужить её нечему. Форма отправки по-прежнему загружается и прямо сообщает, что отправка будет отклонена. Читайте байткод как байткод — не считайте, что он соответствует исходнику, который вам показали где-то ещё.
Те же данные в виде JSON#
Всё, что показывает страница адреса, читается и через REST API. У обзора, у списка токенов и у каждой ленты есть собственный эндпоинт — эти три отвечали 200 в основной сети на момент написания страницы:
curl -s https://api.arc-scan.io/v1/address/0xe8FdCA9547985c2Fb8bE4A3E509fe9fE77ecf61e curl -s https://api.arc-scan.io/v1/address/0xe8FdCA9547985c2Fb8bE4A3E509fe9fE77ecf61e/tokens curl -s https://api.arc-scan.io/v1/address/0xe8FdCA9547985c2Fb8bE4A3E509fe9fE77ecf61e/txs