Блоки
Arc фиксирует блок примерно раз в полсекунды, и у каждого есть своя страница — доступная по высоте или по хешу и окончательная с момента появления.
Два способа добраться до блока#
И высота, и 32-байтовый хеш блока ведут на одну и ту же страницу — этого EIP-3091 и требует от обозревателя. Каноническое написание — высота: её выдаёт каждая ссылка в Arcscan, а URL с хешем указывает своим каноническим тегом обратно на высоту, поэтому два написания никогда не считаются двумя страницами.
https://arc-scan.io/en/block/14852000 https://arc-scan.io/en/block/0xb6a8c3b65b23486cb3b99ac35d60b68009f43daa768a43c16b296cf2c7466968
Всё, что не является ни десятичными цифрами, ни 0x с 64 шестнадцатеричными символами, — это 404 без обращения к данным. Корректно построенный хеш, который никогда не был зафиксирован, — тоже 404, но решает это только цепь, поэтому он стоит одного запроса. Чтобы выбрать блок глазами, начните со списка блоковОткроется в новой вкладке.
Что показывает страница блока#
Три группы подписанных строк, а за ними — раскрывающийся блок с заголовочными полями для совместимости. Имена полей ниже — те же, что напечатаны на странице, поэтому одно можно читать рядом с другим.
Обзор#
| Поле | Что это значит в Arc |
|---|---|
| Высота блока | Положение блока в цепи. Стрелки рядом с числом переводят к предыдущему и следующему блоку и останавливаются на генезисе и на самом новом блоке, который мы видели. |
| Статус | Всегда Финализирован. Arc сообщает "finality": "instant", поэтому пережидать нечего и счётчик подтверждений на странице не появляется никогда. |
| Метка времени | Когда блок был зафиксирован, с точностью до секунды — поэтому два блока, разделённые половиной секунды, часто несут одну и ту же метку времени. |
| Транзакции | Сколько транзакций нёс блок, со ссылкой на вкладку Транзакции. Число внутренних транзакций добавляется в то же предложение только тогда, когда оно известно. |
| Предложил | Адрес валидатора, предложившего блок. Это не майнер, и строки с наградой за блок здесь нет, поэтому ничто на странице не намекает, что награда выплачивалась. |
| Уплачено комиссий | Суммарные комиссии транзакций в блоке, в USDC. |
| Размер | Размер сериализованного блока, в байтах. |
| Действия транзакций | По одному квадрату на транзакцию, в порядке блока, окрашенному по тому, что эта транзакция сделала. Это вычисляется по нашему индексу, поэтому в установке без индекса строка отсутствует, а не пуста. |
| Использовано газа | Газ, израсходованный транзакциями блока, его доля от лимита в процентах и шкала. Шкала одного цвета при любом соотношении: почти полный блок Arc — это норма, а не неисправность. |
| Лимит газа | Наибольший газ, который этому блоку было позволено израсходовать. |
| Базовая комиссия за газ | Цена газа для этого блока как сумма в USDC, с величиной в Gwei, повторённой рядом. |
| Сожжённые комиссии | Сожжённая часть уплаченных комиссий — часть величины Уплачено комиссий выше и никогда не больше неё. |
| Доп. данные | Не текст. В Arc extraData — это восьмибайтовая базовая комиссия с прямым порядком байтов, поэтому сырой hex показан рядом с декодированным значением, а не пропущен через UTF-8, который дал бы кракозябры. |
Декодирование extraData стоит увидеть один раз, потому что это поле чаще прочих читают неверно инструменты, написанные под Ethereum. На головном блоке основной сети мы измерили:
extra_data.raw 0x00000004a817c800 0x00000004a817c800 = 20000000000 wei base_fee_gwei 20
Подробности#
За переключателем Подробности лежат заголовочные поля, которые Arc несёт ради совместимости с клиентами. Они здесь для того, чтобы читатель мог скопировать корень в верификатор, а не потому, что говорят что-то об Arc.
| Поле | Значение |
|---|---|
| Хеш | Хеш заголовка этого блока. |
| Хеш родителя | Хеш предыдущего блока со ссылкой на него. |
| StateRoot | Корень дерева состояния после этого блока. |
| ReceiptsRoot | Корень дерева квитанций этого блока. |
| TransactionsRoot | Корень дерева транзакций этого блока. |
| Nonce | Несётся для того, чтобы продолжали работать инструменты Ethereum. На каждом блоке из нашей выборки он был 0x0000000000000000 и никакого смысла для консенсуса здесь не имеет. |
| Исходный заголовок | Остальная часть заголовка в форме Ethereum — difficulty, sha3Uncles, logsBloom, mixHash, withdrawalsRoot, поля blob-газа. Каждое значение настоящее и копируется; ни одно из них ничего не значит в Arc. |
Одно заголовочное поле намеренно не показывается
parentBeaconBlockRoot побайтово совпадает с хешем родителя на каждом блоке Arc из нашей выборки. Отдельная строка для него завела бы второй, иначе названный указатель на родителя, который читателю потом пришлось бы сводить с первым, — поэтому страница его опускает и показывает хеш родителя один раз.
Три вкладки#
Обзор — это карточка выше. Транзакции перечисляет транзакции блока в порядке позиций и несёт их число прямо в своей подписи — а когда число неизвестно, не несёт никакого. Участники ранжирует отправившие их адреса по уплаченным комиссиям.
Полсекунды — и окончателен по прибытии#
Измерено через /v1/chain сегодня: 506 мс на блок в основной сети и 536 мс в тестовой. Обе величины — измерения, о которых сообщает API, а не константы протокола, поэтому читайте их там, а не зашивайте в код ни ту, ни другую. Финальность в обеих сетях — instant: зафиксированный блок нельзя откатить, реорганизаций нет, и страница блока поэтому остаётся верной навсегда с момента отрисовки.
Пустой блок — это норма
Arc фиксирует блок по расписанию независимо от того, прислал ли кто-нибудь что-нибудь. Высоты 1, 14 000 000 и 14 852 000 в основной сети несли по нулю транзакций при полностью доступных телах — это простаивающая цепь, а не пропуск в наших данных, и страница прямо об этом говорит, вместо того чтобы выглядеть сломанной.
Комиссии и газ — это USDC#
Газ в Arc оплачивается в USDC, поэтому строки с комиссиями на странице блока уже являются долларовыми суммами: ни оракула, ни пересчёта. Нативная валюта несёт 18 знаков, а USDC в форме ERC-20 по адресу 0x3600000000000000000000000000000000000000 — 6. На сайте встречаются оба масштаба, поэтому, читая сырую сумму, никогда не предполагайте один из них.
block 14,852,345 Fees Paid 0.0009989545 USDC
Burnt Fees 0.00092926 USDC
Base Fee 20 GweiНеизвестно — это не ноль#
Когда нода больше не держит тело блока, его заголовок всё ещё полон — высота, метка времени, предложивший, израсходованный газ, размер и все корни настоящие, — но числа, получаемые из тела, пропали. API сообщает об этом на блоке, а страница печатает Недоступно там, где стояло бы число, над баннером с заголовком Транзакции и комиссии этого блока неизвестны, а не равны нулю. Вкладки Транзакции и Участники несут тот же баннер, а не сообщают о пустом блоке.
Почему это различие — жёсткое правило
API возвращает tx_count: 0 для обрезанного блока, потому что вернуть другое число неоткуда. Отрисовать этот ноль значило бы заявить на пяти языках, что блок не нёс транзакций, тогда как никто не может знать, что он нёс. Смотреть стоит на блок 30 000 000 тестовой сети: gas_used у него равен 1 015 512 — значит, что-то определённо произошло, — а его тело помечено как pruned.
Arcscan убирает число и ссылку на список транзакций вместе: вкладка, которая не может их перечислить, — не то место, куда стоит отправлять читателя. На это поведение есть регрессионные тесты, и оно действует везде, а не только здесь.
Насколько далеко назад идут блоки#
Странице блока нужна цепь для заголовка и наш индекс для всего вычисляемого. Две сети начинаются в разных местах, и лишь одна из них — с генезиса.
| Сеть | Проиндексировано с | Что это значит |
|---|---|---|
| Основная сеть Arc (5042) | блока 0 | Проиндексирована непрерывно с генезиса, поэтому страница есть у каждого блока основной сети. |
| Arc Testnet (5042002) | блока 53 500 000 | Ничего ниже этой высоты в нашем индексе нет вообще. Пустой ответ оттуда — это наша недостающая история, а не история цепи. |
Верхняя граница сдвигается примерно дважды в секунду в обеих сетях, поэтому никакой её величины здесь не напечатано — читайте её вживую из /v1/chain или в обозревателе. Об одном пропуске стоит знать, читая страницу блока: поток индекса traces сейчас не содержит ни одного блока ни в одной из сетей, и именно поэтому число внутренних транзакций блока обычно отсутствует в строке Транзакции. Опять же — отсутствует, а не равно нулю.