Saya mengira makna sebuah transaksi itu tetap sejak byte-ubyanya sudah ada: dekode sekali, dapatkan jawaban yang sama di mana pun. Log perubahan milik Dusk untuk peningkatan Boreas (Rusk changelog) memperlakukan hal itu sebagai sesuatu yang harus direkayasa, bukan dianggap pasti.

Boreas menambahkan dekode transaksi yang peka versi, terikat pada hardfork tertentu, serta pemilihan format yang dikendalikan hardfork untuk bagaimana blok-blok lama di-replay. Basis kode kini memiliki dua tipe yang secara eksplisit dipisahkan, CanonicalTransaction dan LedgerTransaction, yang memisahkan representasi transaksi di memori dari format yang sebenarnya dipersistensikan di ledger. Bahkan ada pengujian regresi khusus untuk memastikan transaksi pra-era Aegis didekodekan dengan benar saat serialisasi blok.

Semua itu baru menjadi perlu ketika dekode transaksi harus memperhitungkan berbagai era protokol dan tahap pemrosesan: baru saja diterima dari jaringan oleh sebuah klien, tersimpan di memori sebagai objek kanonik, lalu di-replay dari sebuah blok yang mendahului aturan saat ini.

Artinya, peningkatan protokol tidak aman hanya karena transaksi baru bekerja di bawah aturan yang baru. Hanya aman jika aturan baru itu tidak diam-diam merusak kemampuan untuk mereplay kondisi ledger lama dengan benar sesuai aturan yang menghasilkan kondisi tersebut. Kegagalan karena ketidakcocokan versi seperti itulah yang dicegah oleh kompatibilitas historical-replay dan dekode yang dibatasi hardfork.

"Sebuah transaksi hanya dapat diandalkan jika setiap tahap yang menyentuhnya sepakat tentang maknanya."

Yang sebenarnya ingin saya lihat: sebuah replay blok pra-Aegis pada node saat ini tanpa mengubah bagaimana transaksi historisnya didekodekan sesuai aturan yang berlaku, bukan sekadar pengujian regresi yang lolos secara terpisah.

#dusk $DUSK @Dusk