#dusk $DUSK
今日は引き続き、@Dusk の Boreas のアップデートを見ています。私が一番気になっているのは、Phoenix の退役でも、fork rule が増えたことでもありません。
それよりも、もっと根本的な問題です:
プロトコルのアップグレード後、過去のある取引が、なぜずっと同じ意味を保てるのか?
これは馬鹿げた話に聞こえるかもしれません。
しかしハードフォークの後、ノードは新しいルールで動いているのに、歴史のブロックの中には旧バージョンの transaction、旧 verifier、旧 execution semantics がそのまま残っています。
もし今日のノードが今のルールで以前の bytes を改めて解釈すれば、歴史のリプレイに問題が起き得ます。
だからこそ Boreas は、今回 transaction handling のバージョン境界をより明確にしました。
Live ingress は現在のプロトコルルールに従う。
古い envelope は入口で識別され、normalize される。
ledger に入る直前で canonical transaction に変換される。
一方で、過去のブロックは当時のルールのままデコードし、リプレイし続ける。
私はここで本当に重要なのは「フォーマットの統一」ではないと思います。
重要なのは:
取引には、内容だけでなく、それが属するプロトコルの時代があること。
Aegis は Aegis のルール。
Boreas は Boreas のルール。
ハードフォークは未来を変えられても、ついでに過去を再解釈してしまうわけにはいかない。
だからこそ今、私はチェーンのアップグレードを見るとき、「何が追加されたか」だけを重視していません。
むしろ気にしているのは、
新バージョンが公開された後、今日のノードが何年も前のその取引が、実際に何を起こしていたのかを正確に理解できるのか。
regulated market infrastructure を提供するネットワークにとって、このような歴史の連続性は実はとても基礎的です。
台帳はアップグレードできる。
でも台帳の中の過去は、アップグレードに一緒に引きずられてはならない。
今日は引き続き、@Dusk の Boreas のアップデートを見ています。私が一番気になっているのは、Phoenix の退役でも、fork rule が増えたことでもありません。
それよりも、もっと根本的な問題です:
プロトコルのアップグレード後、過去のある取引が、なぜずっと同じ意味を保てるのか?
これは馬鹿げた話に聞こえるかもしれません。
しかしハードフォークの後、ノードは新しいルールで動いているのに、歴史のブロックの中には旧バージョンの transaction、旧 verifier、旧 execution semantics がそのまま残っています。
もし今日のノードが今のルールで以前の bytes を改めて解釈すれば、歴史のリプレイに問題が起き得ます。
だからこそ Boreas は、今回 transaction handling のバージョン境界をより明確にしました。
Live ingress は現在のプロトコルルールに従う。
古い envelope は入口で識別され、normalize される。
ledger に入る直前で canonical transaction に変換される。
一方で、過去のブロックは当時のルールのままデコードし、リプレイし続ける。
私はここで本当に重要なのは「フォーマットの統一」ではないと思います。
重要なのは:
取引には、内容だけでなく、それが属するプロトコルの時代があること。
Aegis は Aegis のルール。
Boreas は Boreas のルール。
ハードフォークは未来を変えられても、ついでに過去を再解釈してしまうわけにはいかない。
だからこそ今、私はチェーンのアップグレードを見るとき、「何が追加されたか」だけを重視していません。
むしろ気にしているのは、
新バージョンが公開された後、今日のノードが何年も前のその取引が、実際に何を起こしていたのかを正確に理解できるのか。
regulated market infrastructure を提供するネットワークにとって、このような歴史の連続性は実はとても基礎的です。
台帳はアップグレードできる。
でも台帳の中の過去は、アップグレードに一緒に引きずられてはならない。