
Настоящее должно доказывать прошлое
Может ли блокчейн проверить своё текущее состояние, не воспроизводя всю историю исполнения от genesis?Новой ноде можно передать полностью корректный snapshot блокчейна. Каждая запись будет корректно декодироваться. Все commitments будут соответствовать данным. По всем очевидным признакам данные будут внутренне согласованы.Но это не отвечает на главный вопрос:Почему это состояние следует принять как результат работы цепочки?У Bitcoin ответ простой: самостоятельно восстановить состояние. Нода начинает с genesis, проверяет цепочку, исполняет каждую транзакцию и получает текущий набор UTXO.Доказательство настоящего находится в прошлом.Snapshots могут ускорить этот процесс. Checkpoints могут перенести его начальную точку. Специализированная инфраструктура может выполнить историческую работу в другом месте и передать результат.Но ни один из этих подходов не меняет саму зависимость. Состояние перед вами по-прежнему не доказывает, что было получено из genesis через валидную последовательность переходов.Именно это я решил изменить.Вопрос был не просто в том, можно ли сжать историю блокчейна в рекурсивное доказательство. Он звучал иначе:Что, если консенсус будет переносить вперёд саму валидность текущего состояния?Тогда новая нода сможет получить текущее состояние вместе с доказательством валидного пути, который к нему привёл. Чтобы понять, почему настоящее валидно, ей не придётся заново исполнять всю историю работы сети.Трудоёмкость проверки состояния больше не будет расти лишь потому, что цепочка становится старше. Чтобы удостовериться в подлинности настоящего, ноде нужно будет работать с тем, что существует сейчас, а не со всеми транзакциями за всю жизнь сети. Читать далее