Что означает детерминированная финальность, когда вы читаете страницу
Короткий ответ на вопрос «сколько подтверждений нужно ждать» — ни одного. Этот вопрос к данной цепи неприменим, и счётчик, который на него отвечал бы, сознательно отсутствует на всех страницах этого сайта.
Вероятностное против детерминированного
В сети на proof-of-work или на proof-of-stake с правилом самой длинной цепи блок постоянен лишь вероятно. Конкурирующая цепь может его перестроить, и блок, на который вы смотрите, может быть вытеснен реорганизацией. Уверенность растёт по мере накопления блоков сверху — именно это измеряет счётчик подтверждений: не состояние, а вероятность, которая так и не достигает единицы. Поэтому биржи и заставляют ждать.
Arc использует Malachite, консенсус класса BFT. Предлагающий предлагает блок, валидаторы голосуют, и когда более двух третей голосующей силы отдали precommit, блок зафиксирован. Зафиксирован — значит финален, а не «финален с высокой вероятностью». Проигрывать здесь нечему: конфликтующий блок потребовал бы, чтобы более трети набора валидаторов подписали две противоречащие друг другу вещи, а это обнаружимое и атрибутируемое нарушение протокола, а не гонка, которую можно выиграть железом.
На практике финальность наступает меньше чем за секунду — в тот же момент, когда блок становится виден.
Что это меняет на этом сайте
- Нет счётчика подтверждений. У транзакции есть Успех или Ошибка, а у её блока — Финализирован. Никакого растущего числа нет, потому что растущее число подразумевало бы порог безопасности, к которому вы движетесь, — а вы к нему не движетесь.
- Нет реорганизаций, осиротевших и форкнутых блоков. Здесь нет ни списка дядюшкиных блоков, ни страницы «форкнутых блоков», потому что такие артефакты не могут возникнуть.
- Любая страница, привязанная к высоте, постоянна. Страница блока или транзакции никогда не изменится после отрисовки, поэтому Arcscan кеширует их навсегда, а не перепроверяет. Именно поэтому сайт быстрый — это не столько оптимизация, сколько свойство цепи.
- Ничто прочитанное здесь нельзя «отчитать» обратно. Перевод, видимый на этом сайте, произошёл — навсегда. Никто — ни мы, ни валидатор, ни эмитент — не может его отменить.
Честная оговорка
Финальность цепи — это не то же самое, что наш взгляд на цепь. Arcscan читает с ноды, нода может отставать, а некоторые страницы строятся из индекса, который может отставать ещё сильнее. Поэтому недавняя транзакция может быть финальной в Arc и на мгновение невидимой здесь.
Поэтому эксплорер разводит эти два понятия везде, где может: страница, отдаваемая из индекса, сообщает об этом и указывает своё покрытие, а страница состояния сети публикует нашу высоту головы, её возраст и то, насколько индекс от неё отстаёт. «Пока не найдено, наша нода на блоке N» — честный ответ. «В ожидании» им не было бы.
Одна вещь, ради которой Arcscan остановится: Arc не может реорганизоваться, поэтому если полученный нами заголовок блока не сцепляется с предыдущим, дело не в задержке, а в чём-то серьёзно сломанном. Это состояние считается, публикуется на странице состояния и выводит сервис из ротации, вместо того чтобы позволить ему отдавать историю цепи, которая может быть ложной.