#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, такая историческая непрерывность — в сущности базовая вещь.
Можно обновлять учётную книгу.
Но прошлое внутри учётной книги не должно обновляться вместе с ней.
Сегодня продолжаю смотреть обновление 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, такая историческая непрерывность — в сущности базовая вещь.
Можно обновлять учётную книгу.
Но прошлое внутри учётной книги не должно обновляться вместе с ней.