#dusk $DUSK

Сегодня продолжаю смотреть обновление Boreas для @Dusk . Больше всего меня волнует не то, что Phoenix уходит в отставку, и не то, что появилось ещё несколько fork rule.

А более фундаментальный вопрос:

После обновления протокола, почему прошлые транзакции всё ещё могут сохранять одно и то же значение?

Звучит как банальность.

Но после хардфорка ноды уже работают по новым правилам, в то время как в исторических блоках всё ещё лежат транзакции старых версий, старые verifier'ы и старые execution semantics.

Если сегодня нода будет заново интерпретировать те же bytes по нынешнему набору правил, то исторический replay может пойти не так.

Поэтому в этот раз Boreas делает границу версий для обработки транзакций гораздо более чёткой.

Live ingress идёт по текущим правилам протокола.

Старый envelope можно распознать на входе и normalize.

А уже перед тем, как попасть в ledger, он превращается в canonical transaction.

А вот исторические блоки — продолжают декодироваться и replay'иться по правилам того времени.

Я думаю, что здесь по-настоящему важное — не «унификация формата».

Важно другое:

у транзакции есть не только содержимое, но и протокольная эпоха, к которой она относится.

Aegis — это правила Aegis.

Boreas — это правила Boreas.

Хардфорк может изменить будущее, но нельзя заодно переосмыслить прошлое.

Вот почему, когда я сейчас смотрю на апгрейд цепочки, я не думаю лишь о том, «что добавили».

Меня больше волнует другое:

после запуска новой версии сможет ли сегодняшняя нода корректно понять, что именно происходило на той цепочке несколько лет назад.

Для сети, которая должна обеспечивать regulated market infrastructure, такая историческая непрерывность — в сущности базовая вещь.

Можно обновлять учётную книгу.

Но прошлое внутри учётной книги не должно обновляться вместе с ней.