#dusk $DUSK
今天繼續看 @Dusk 的 Boreas 更新,最讓我在意的不是 Phoenix 退役,也不是又多了幾個 fork rule。
而是一個更底層的問題:
協議升級以後,過去的一筆交易,爲什麼還能一直保持同一個含義?
這事聽起來像廢話。
但硬分叉之後,節點已經在跑新規則了,歷史區塊裏卻還躺着舊版本的 transaction、舊 verifier、舊 execution semantics。
如果今天的節點拿現在這套規則去重新解釋以前的 bytes,歷史 replay 就可能出問題。
所以 Boreas 這次把 transaction handling 的版本邊界做得更明確。
Live ingress 走當前協議規則。
舊 envelope 可以在入口被識別、normalize。
進入 ledger 之前再變成 canonical transaction。
而歷史區塊,則繼續按它當年的規則去 decode 和 replay。
我覺得這裏真正重要的不是“格式統一”。
而是:
交易除了內容,還有它所屬的協議時代。
Aegis 是 Aegis 的規則。
Boreas 是 Boreas 的規則。
硬分叉可以改變未來,但不能順手把過去重新解釋一遍。
這也是爲什麼我現在看鏈升級,不太只看“新增了什麼”。
我更關心的是:
新版本上線以後,今天的節點還能不能準確理解幾年前那條鏈到底發生過什麼。
對一個要做 regulated market infrastructure 的網絡來說,這種歷史連續性其實很基礎。
賬可以升級。
賬裏的過去不能跟着升級。
今天繼續看 @Dusk 的 Boreas 更新,最讓我在意的不是 Phoenix 退役,也不是又多了幾個 fork rule。
而是一個更底層的問題:
協議升級以後,過去的一筆交易,爲什麼還能一直保持同一個含義?
這事聽起來像廢話。
但硬分叉之後,節點已經在跑新規則了,歷史區塊裏卻還躺着舊版本的 transaction、舊 verifier、舊 execution semantics。
如果今天的節點拿現在這套規則去重新解釋以前的 bytes,歷史 replay 就可能出問題。
所以 Boreas 這次把 transaction handling 的版本邊界做得更明確。
Live ingress 走當前協議規則。
舊 envelope 可以在入口被識別、normalize。
進入 ledger 之前再變成 canonical transaction。
而歷史區塊,則繼續按它當年的規則去 decode 和 replay。
我覺得這裏真正重要的不是“格式統一”。
而是:
交易除了內容,還有它所屬的協議時代。
Aegis 是 Aegis 的規則。
Boreas 是 Boreas 的規則。
硬分叉可以改變未來,但不能順手把過去重新解釋一遍。
這也是爲什麼我現在看鏈升級,不太只看“新增了什麼”。
我更關心的是:
新版本上線以後,今天的節點還能不能準確理解幾年前那條鏈到底發生過什麼。
對一個要做 regulated market infrastructure 的網絡來說,這種歷史連續性其實很基礎。
賬可以升級。
賬裏的過去不能跟着升級。
