Saya punya kebiasaan yang mungkin memperlambat saya lebih banyak daripada yang seharusnya. Setiap kali saya membaca penjelasan teknis tentang sesuatu dan saya tidak bisa memahami masalah apa yang sebenarnya sedang diselesaikan, saya berhenti dan kembali ke bagian awal. Saya menolak untuk maju sampai masalahnya jelas. Karena jika saya tidak memahami apa yang rusak, saya tidak bisa menilai apakah perbaikannya benar-benar bekerja.
Jadi, izinkan saya melakukannya di sini dengan desain konsensus dua fase ala Newton. Masalahnya dulu. Lalu solusinya.
Masalah yang Tidak Dibicarakan Cukup
Ini sesuatu yang tidak saya pikirkan dengan jelas sampai saya mulai menggali bagaimana jaringan kebijakan terdistribusi sebenarnya bekerja. Ketika sebuah transaksi diperiksa terhadap data live sebelum transaksi tersebut diselesaikan, pemeriksaan itu tidak terjadi terhadap satu sumber kebenaran yang bersih dan tunggal. Pemeriksaan itu terjadi di seluruh jaringan operator, dan masing-masing operator mungkin melihat informasi yang sedikit berbeda pada saat yang sama.
Apa sebenarnya arti “data live” dalam praktik? Daftar sanksi diperbarui. Alamat dompet ditandai. Price feed bergerak. Pembaruan-pembaruan ini tidak mencapai setiap operator pada waktu yang persis sama. Satu operator mungkin memiliki daftar sanksi yang sudah diperbarui dua detik lebih cepat daripada operator lain. Mungkin ada yang menjalankan price feed yang sedikit tertinggal karena penundaan routing di suatu tempat dalam jaringan.
Sekarang sebuah transaksi masuk untuk dievaluasi. Operator A memeriksanya terhadap data yang mencakup pembaruan sanksi terbaru. Operator B memeriksa transaksi yang persis sama terhadap data yang belum memiliki pembaruan itu. Satu mengatakan transaksi lolos. Yang lain mengatakan blokir. Jaringan memiliki perbedaan pendapat, dan tidak ada orang yang membangun cara yang berprinsip untuk menyelesaikannya.
Saya ingin memperjelas sesuatu di sini karena saya rasa ini sering diabaikan. Ini bukan kasus tepi, atau skenario terburuk. Ini adalah kondisi normal dari sistem terdistribusi apa pun yang bekerja dengan data real-time. Data datang pada waktu yang berbeda ke node yang berbeda. Begitulah cara jaringan berperilaku. Pertanyaannya adalah apakah sistem Anda dirancang untuk menangani hal itu secara jujur, atau apakah sistem Anda diam-diam hanya berharap bahwa timing tidak pernah menjadi masalah.
Mengapa Data Keuangan Membuat Ini Lebih Sulit
Alasan saya merasa masalah ini khususnya tidak nyaman dalam konteks Newton adalah karena apa sebenarnya “data live” itu. Kita tidak sedang membicarakan data yang ketidakkonsistenannya dua detik itu tidak berbahaya. Kita membicarakan daftar sanksi, price feed, dan ambang batas risiko.
Daftar sanksi diperbarui tanpa pemberitahuan. Entitas baru muncul, dan sejak saat itu, setiap transaksi yang melibatkan entitas tersebut seharusnya diblokir. Jika satu operator memiliki pembaruan itu dan yang lain tidak, transaksi yang sama mungkin lolos di satu sisi jaringan dan diblokir di sisi lainnya. Itu bukan sekadar gangguan teknis. Itu adalah kegagalan kepatuhan.
Price feed bergerak cepat. Sebuah transaksi yang melewati ambang batas risiko berdasarkan harga saat itu mungkin terlihat baik jika dibandingkan dengan feed yang tertinggal tiga puluh detik. Angkanya berbeda. Keputusannya berbeda. Dan tidak ada pihak di luar sistem yang bisa tahu data operator yang mana yang benar.
Inilah yang terus saya temui ketika saya mencoba memahami apa yang sebenarnya diselesaikan oleh rancangan two-phase Newton. Ini bukan hanya soal membuat operator setuju secara umum. Ini tentang membuat mereka setuju secara spesifik mengenai data apa yang mereka gunakan ketika mengambil keputusan. Perbedaan ini sangat penting.
Apa yang Sebenarnya Dilakukan Two-Phase Consensus
Ketika akhirnya saya memahami rancangan ini, logikanya terasa jelas bila dilihat ke belakang. Biasanya itu tanda bahwa seseorang menyelesaikan sesuatu dengan benar.
Newton membagi proses evaluasi menjadi dua langkah terpisah, alih-alih menjalankannya sekaligus. Langkah pertama disebut fase Prepare. Langkah kedua disebut fase Evaluate.
Inilah yang membuat semuanya “klik” bagi saya. Fase Prepare tidak mengevaluasi apa pun. Ia hanya menyepakati. Sebelum siapa pun operator menyentuh pengecekan kebijakan yang sebenarnya, jaringan mencapai konsensus tentang data persis apa yang akan digunakan setiap operator untuk evaluasi. Bukan data yang kira-kira mirip. Bukan data apa pun yang masing-masing operator miliki secara lokal pada saat itu. Snapshot yang sama persis, disepakati dan “dikunci” sebelum evaluasi dimulai.
Satu langkah itu menghilangkan masalahnya. Ketidakkonsistenan antara operator muncul karena masing-masing operator mengevaluasi berdasarkan versi lokal data live mereka sendiri. Fase Prepare menggantikan semua tampilan lokal yang berbeda itu dengan satu snapshot yang sama, yang disepakati oleh setiap operator di jaringan.
Lalu fase Evaluate berjalan. Setiap operator memeriksa transaksi terhadap snapshot yang telah disepakati itu. Karena inputnya identik, hasilnya bisa dibandingkan. Jaringan bisa mencapai konsensus yang benar-benar nyata atas hasilnya karena tidak ada lagi perbedaan data yang mendasari keputusan.
Di Mana NATS Masuk ke Dalam Ini
Koordinasi antara operator di kedua fase berjalan melalui NATS. Ketika pertama kali saya menemui NATS dalam konteks ini, saya harus mencari referensinya karena saya mengaitkannya lebih dengan rekayasa infrastruktur ketimbang sistem on-chain. Asosiasi itu benar. NATS adalah sistem pesan yang dibangun untuk lingkungan terdistribusi berperforma tinggi. Ia telah digunakan di layanan keuangan dan platform cloud selama bertahun-tahun. Ia cepat, andal pada skala besar, dan dibangun khusus untuk situasi ketika banyak node perlu saling bertukar pesan dengan latensi minimal.
Dalam rancangan Newton, NATS adalah kanal yang dilalui fase Prepare. Operator menggunakannya untuk membentuk snapshot data bersama sebelum evaluasi dimulai. Koordinasinya cukup cepat sehingga tidak menambah keterlambatan yang berarti pada proses, tetapi strukturnya cukup rapi sehingga kesepakatannya bisa diverifikasi, bukan sekadar diasumsikan.
Yang saya hargai dari pilihan ini adalah hal yang sama yang saya hargai ketika Newton menggunakan Rego sebagai bahasa kebijakan. Ini infrastruktur yang terbukti, dengan rekam jejak di sistem produksi. Tidak ada yang diminta untuk mempercayai lapisan pesan khusus yang belum pernah diuji secara menyeluruh pada skala besar. NATS telah melakukannya.
Seperti Apa Ini Terlihat dari Sisi Luar
Dari luar, jika Anda hanya melihat sebuah transaksi dievaluasi, desain two-phase itu tidak terlihat. Transaksi masuk. Hasil kembali. Lolos atau diblokir.
Yang tidak bisa Anda lihat adalah bahwa sebelum pengecekan kebijakan dijalankan, seluruh jaringan sudah menyepakati data yang akan menjadi dasar pengecekan tersebut. Daftar sanksi, price feed, parameter risiko—semuanya dikunci pada satu snapshot di seluruh operator yang berpartisipasi. Hasil yang kembali bukanlah pandangan satu operator berdasarkan apa pun yang mereka miliki secara lokal. Ini adalah hasil konsensus berdasarkan input yang diverifikasi bersama oleh jaringan.
Mengapa Bagian Ini yang Membuat Kepatuhan Jadi Nyata
Saya terus kembali ke satu hal ketika memikirkan mengapa rancangan ini penting, melampaui keindahan teknisnya.
Pemeriksaan kepatuhan yang dapat menghasilkan hasil berbeda tergantung pada operator mana yang menjalankannya, sebenarnya bukanlah pemeriksaan kepatuhan. Itu lebih mirip tebakan dengan langkah tambahan. Jika output bervariasi tergantung node mana yang kebetulan memiliki data terbaru, maka output tersebut tidak berarti apa-apa yang konsisten. Anda tidak bisa menaruh komitmen regulasi pada sesuatu yang tidak konsisten.
Dengan menyelesaikan masalah kesepakatan data sebelum fase evaluasi dimulai, Newton membuat fase Evaluate sesuatu yang bisa benar-benar Anda andalkan. Hasilnya berarti hal yang sama apa pun operator yang Anda tanya, karena mereka semua menggunakan input yang sama. Konsistensi itulah yang mengubah pengecekan kebijakan pra-penyelesaian menjadi mekanisme kepatuhan yang nyata, bukan sekadar pertunjukan performa dari satu pihak.
Versi yang Sederhana
Dua operator seharusnya tidak bisa berbeda pendapat tentang sebuah transaksi karena satu operator punya daftar sanksi yang lebih baru daripada yang lain. Newton menyelesaikannya dengan membuat operator menyepakati data persis yang akan mereka gunakan sebelum evaluasi apa pun dijalankan. Fase Prepare mengunci datanya. Fase Evaluate menjalankan pengecekan. NATS menangani koordinasi di antaranya.
Hasilnya adalah pemeriksaan kepatuhan yang konsisten di seluruh jaringan, bukan hanya konsisten dengan siapa pun yang kebetulan menerima pembaruan terbaru terlebih dulu. Dalam sistem di mana keluaran akhirnya berupa bukti on-chain bahwa sebuah transaksi telah diverifikasi dengan benar, konsistensi ini bukan sesuatu yang sekadar “bagus kalau ada”. Itu adalah keseluruhan inti dari sistem.
#SKHynixSaysFundsEyeUpTo$7BInADRs #AsianPCBStockSlideOnNvidiaAIServerDelay #AsianPCBStockSlideOnNvidiaAIServerDelay #Newt $NEWT
