Eksekusi closed-world
Menutup set instruksi hanyalah satu contoh dari langkah yang dilakukan kernel empat kali. Setiap kali, ruang tentang apa yang bisa terjadi dienumerasi lebih dulu, dan apa pun di luarnya ditolak alih-alih ditangani.Operasi
Payload yang bukan anggota himpunan terenumerasi — ditolak saat validasi, bukan saat runtime
Apa yang sebenarnya diminta
Kebenaran
Memperlakukan working set per blok sebagai otoritatif. Itu jurnal; sumbernya adalah state engine
Apa yang benar saat ini
Input
Apa pun yang bisa berbeda antara dua mesin: jam dinding, entropi, floating point, urutan hash
Apakah node lain mendapat byte yang sama
Kausalitas
Perubahan state tanpa pemilik. Efek yang bukan milik transaksi pengguna mana pun lewat kanal sistem, bukan lewat pengecualian
Mengapa perubahan ini terjadi
Ditutup
Ditolak
Sehingga ledger bisa menjawab
Empat penutupan, satu langkah: enumerasi ruangnya lebih dulu, lalu tolak apa pun yang jatuh di luarnya.
Set instruksi
Semua yang bisa dilakukan peserta atau validator adalah salah satu dari himpunan tetap operasi bertipe:
Transaksi yang muatannya bukan anggota himpunan ini ditolak pada tahap validasi. Himpunan ini hanya berubah lewat upgrade protokol, tidak pernah dengan men-deploy sesuatu yang baru.
Mengeksekusi blok
Eksekusi adalah barisan tahap yang tetap. Urutannya bukan detail implementasi — urutan itulah yang menentukan apakah likuidasi melihat harga yang memicunya, dan apakah pembatalan mendahului order agresif yang masuk.Hargatetapkan mark untuk blok
Muatserap akun dan order blok
Fundingselesaikan aliran funding
Risikodeleveraging vault → likuidasi → ADL
Matchpra-match → matching → pasca-match
Finalisasikumpulkan output, buang state mati
Setiap tahap di hilir menalar satu harga per instrumen, bukan harga yang bergerak
Diselesaikan terhadap posisi saat dimuat, bukan posisi akhirnya
Aliran paksa diselesaikan sebelum aliran diskresioner baru diterima
Berjalan setelah Risiko adalah alasan likuidasi tidak bisa didahului order di blok yang sama
Posisi bernilai nol dan akun kosong tidak bertahan
Satu blok, enam tahap
Yang ditentukan penempatannya
Order kondisional dipindai dan didorong maju di dalam barisan ini, sehingga pemicu dari mark blok ini berlaku di blok ini, bukan di blok berikutnya.
Likuidasi yang berjalan sebelum matching adalah alasan likuidasi tidak bisa didahului order di blok yang sama. Aliran likuidasi sudah terselesaikan pada saat order diskresioner dicocokkan.
Dua jenis state
Kernel menjaga pemisahan tegas antara apa yang persisten dan apa yang sekadar coretan kerja.selama blok dieksekusi
State enginepasar · akun · order book · posisi · lembaga kliringhidup lintas blok
Working set blokmark · akun tersentuh · eksekusi · output tertahanhidup satu blok saja
State chain terkomitberversi · terautentikasiotoritasnya
Pelacakan perubahan mudah disalahartikan sebagai otoritas. Apa yang berubah selama blok menyusun output deterministik — bukan tempat state berada.
otoritas tempat engine dibangun ulang
baca
terapkan
materialisasi
Mengapa hasilnya dapat direproduksi
Determinisme di sini ditegakkan, bukan diharapkan. Setiap node jujur yang mengeksekusi blok yang sama terhadap state sebelumnya yang sama menghasilkan hasil yang sama bit per bit, karena tidak ada apa pun di jalur eksekusi yang bisa membaca sesuatu yang berbeda antarnode:- Aritmetika fixed-point di sepanjang jalur. Matematika penyelesaian berjalan pada fixed-point integer dengan semantik pembulatan yang eksplisit — pembulatan ke atas pada eksponen negatif di margin, floor dan ceiling pada biaya. Tidak ada floating point di jalur penyelesaian, karena selisih pembulatan antara dua mesin adalah fork.
- Tanpa jam dinding. Pengurutan di dalam blok memakai posisi kanonis yang dikomit konsensus dan timestamp blok, tidak pernah waktu lokal.
- Tanpa keacakan runtime. Apa pun yang membutuhkan keacakan menurunkannya secara deterministik dari state on-chain.
- Iterasi deterministik. Setiap koleksi yang urutan iterasinya teramati di output diurutkan, bukan diacak oleh hash.
Formula risiko bersifat murni
Formula yang menentukan kebutuhan margin, harga likuidasi, pemilihan sasaran deleveraging, biaya, dan batas open interest diimplementasikan sebagai fungsi murni tanpa state. Fungsi-fungsi itu menerima nilai dan mengembalikan nilai; tidak membaca maupun mengubah state ledger. Perubahan state digerakkan semata-mata oleh lembaga kliring, yang memanggil fungsi-fungsi tersebut dan menerapkan hasilnya. Modul yang memegang state — akun, posisi, order book — menyimpan data dan menyediakan mutator, tetapi tidak menggerakkan alur bisnis sendiri. Ini batas yang disengaja. Artinya perhitungan margin bisa diperiksa terpisah terhadap tabel input dan output, dan artinya hanya ada satu jalur kode yang bisa mengubah saldo siapa pun.Output
Eksekusi menghasilkan tulisan state dan event, masing-masing terikat pada transaksi penyebabnya, ditambah satu kanal untuk efek tingkat sistem yang bukan milik transaksi pengguna mana pun — funding, perpindahan dana asuransi, penghitung blok. Semua itu menjadi output transaksi yang dikomit lapisan state dan disajikan indexer. Tidak ada yang terjadi di dalam kernel yang tak terlihat di hilir. Kalau sesuatu mengubah state, perubahan itu ada di output seseorang atau di kanal sistem.Ke mana selanjutnya
Matching
Order book, prioritas harga-waktu, dan bagaimana masa berlaku order serta pencegahan self-trade diselesaikan.
Lembaga Kliring
Satu-satunya jalur yang mengubah saldo, posisi, dan margin.
Model state
Apa yang terjadi pada output kernel setelah dikomit.
IntentionBFT
Dari mana urutan dan harga itu berasal.