Tiga representasi
State mesinpasar · akun · posisi · order book · lembaga kliringbertahan lintas blok · rekonstruksi
Working set blokharga mark · akun tersentuh · eksekusi · outputhidup satu blok · sebuah jurnal
State on-chainkey-value berversi, terautentikasi Merkleotoritasnya
Kegagalan yang dicegahMesin yang salinan in-memory-nya menyimpang dari apa yang terkomit terus menyajikan jawaban, dan setiap jawaban itu salah dengan cara yang baru terlihat saat penyelesaian.
state mesin harus bisa diturunkan dari catatan terkomit, tidak pernah sebaliknya
Key
State on-chain dialamatkan lewat key. State trading dikelompokkan ke dalam namespace bernama yang diberi versi secara eksplisit — misalnya konfigurasi biaya, indeks perpetual, tabel tier leverage, dan daftar peran administratif. Sufiks versi bukan hiasan. Ketika bentuk konfigurasi berubah, konfigurasi itu pindah ke versi baru dari key-nya, dan key sebelumnya dipertahankan agar state yang ditulis dengan skema lama tetap bisa dibaca selama migrasi. Pembaca yang meng-hard-code satu versi dan tidak pernah memeriksa ulang akan diam-diam membaca konfigurasi usang setelah migrasi; pembaca yang me-resolve key yang sedang berlaku tidak akan begitu.Inilah sebabnya konfigurasi harus dibaca dari chain, bukan dikunci di kode klien. Layanan tier biaya membaca konfigurasi biaya yang sedang berlaku pada setiap siklus persis karena alasan ini — tabel tier yang ditanam di dalam klien adalah tabel yang cepat atau lambat akan berbeda dari tabel yang sedang diterapkan jaringan.
Versi
Setiap blok yang terkomit menaikkan satu versi. Nilai state disimpan terhadap versi saat nilai itu ditulis, yang berarti store-nya bukan sekadar “state saat ini” melainkan “state pada versi mana pun”. Properti itulah yang sekaligus memungkinkan beberapa hal:- Bukti dapat dihasilkan terhadap versi tertentu, bukan hanya terhadap keadaan sekarang.
- Replay dapat dimulai dari versi mana pun, bukan hanya dari genesis.
- Pembacaan bisa bersifat historis — indexer yang merekonstruksi riwayat posisi sedang meminta versi lama, bukan memindai log.
- Pruning menjadi keputusan kebijakan tentang seberapa jauh ke belakang data disimpan, bukan batasan struktural.
Apa yang akhirnya terkomit
Eksekusi kernel menghasilkan dua hal per blok. Setiap transaksi membawa penulisan dan event-nya sendiri, terikat padanya. Efek yang bukan milik satu transaksi pengguna mana pun — aliran funding, pergerakan dana asuransi, penghitung di tingkat blok — masuk ke kanal sistem tersendiri. Di antara keduanya, tidak ada yang hilang. Tidak ada efek eksekusi di dalam kernel yang tidak muncul di output transaksi maupun di kanal sistem. Kelengkapan itulah yang membuat catatan terkomit bisa diperlakukan sebagai cerita utuh, bukan ringkasannya, dan itu pula alasan event bisa dilacak balik ke transaksi penyebabnya bahkan ketika matching berjalan secara batch.Ke mana selanjutnya
Penyimpanan dan bukti
Bagaimana state yang terkomit disimpan secara fisik, diautentikasi, dan di-prune.
Sinkronisasi state
Bagaimana node yang belum pernah melihat chain menyusul sampai ke posisi terkini.
IntentionKernel
Tempat state mesin dan working set blok berada.
Indexer
Mengubah state yang terkomit menjadi sesuatu yang bisa di-query.