Garis yang mengubah seluruh fitur bagi saya tidak ada di sirkuit bukti. Itu ada di dokumen bantuan. Midnight mengatakan pathForLeaf() lebih disukai karena findPathForLeaf() membutuhkan pemindaian O(n). Itu terdengar kecil sampai Anda menyadari apa artinya untuk aplikasi nyata. Di Midnight, alur keanggotaan pribadi dapat tetap benar secara kriptografis dan tetap menjadi lebih berat setiap kali aplikasi lupa di mana awalnya menempatkan daun.
Itu bukan detail sampingan. Itu adalah bagian dari produk.
Dokumen Midnight menjelaskan mekanisme dengan cukup jelas. Kontrak Kompak dapat menggunakan MerkleTreePath untuk membuktikan keanggotaan dalam MerkleTree tanpa mengungkapkan entri mana yang cocok. Target JavaScript kemudian memberikan pembangun dua cara berbeda untuk memulihkan jalur dari objek status: pathForLeaf() dan findPathForLeaf(). Dokumen mengatakan pathForLeaf() lebih baik jika memungkinkan. Alasannya sangat jelas. findPathForLeaf() harus mencari, dan pencarian itu adalah O(n). Masalahnya adalah pathForLeaf() hanya berfungsi jika aplikasi masih tahu di mana item itu awalnya dimasukkan.
Itu adalah bagian yang saya rasa tidak cukup orang akan mempertimbangkan.
Banyak tulisan kripto memperlakukan privasi seperti bukti adalah seluruh pertarungan. Midnight membuat itu terlalu sederhana. Ya, pengguna dapat membuktikan keanggotaan secara pribadi. Ya, kontrak dapat memverifikasinya tanpa mengungkapkan daun mana yang cocok. Tapi itu hanya setengah dari fitur. Setengah lainnya adalah pengambilan. Aplikasi masih perlu menghasilkan jalur. Jika ia menjaga ingatan penempatan atau pengindeksan yang baik, aliran pribadi tetap bersih. Jika tidak, fitur mulai bergantung pada pencarian.
Buktinya tetap elegan. Produk menjadi lebih berat.
Cara paling bersih untuk melihatnya adalah dengan daftar izin pribadi. Bayangkan aplikasi Midnight yang memungkinkan pengguna yang disetujui mengakses sesuatu tanpa mengungkapkan entri daftar izin mana yang tepat adalah milik mereka. Di atas kertas, itu terdengar seperti kemenangan privasi yang rapi. Dalam praktiknya, aplikasi harus memulihkan jalur Merkle setiap kali pengguna perlu membuktikan keanggotaan. Jika sistem menyimpan posisi daun dengan hati-hati, aliran itu tetap ketat. Jika tidak, aplikasi harus mencari daun itu lagi. Sekarang fitur privasi bukan lagi hanya sistem bukti. Ini adalah masalah disiplin memori.
Itu adalah beban yang sangat berbeda dari apa yang diharapkan kebanyakan orang.
Di rantai publik, kita terbiasa bertanya apakah status terlihat dan apakah buktinya valid. Midnight menambahkan pertanyaan lain. Apakah aplikasi ingat cukup tentang status pribadinya sendiri untuk membuat pengambilan bukti murah? Di situlah sudut ini menjadi jauh lebih dari sekadar catatan kinerja. Midnight dapat menyembunyikan anggota mana yang cocok. Namun, ia tetap tidak dapat menyelamatkan aplikasi yang ceroboh dari melupakan di mana ia menempatkan anggota itu sejak awal.
Pertukaran ini nyata. Privasi berbasis Merkle Midnight memberi pembangun cara untuk menyimpan entri yang cocok tersembunyi. Itulah keuntungannya. Harganya adalah bahwa aplikasi mungkin perlu mempertahankan struktur tambahan di sekitar data pribadi jika ingin fitur tersebut terasa mulus. Dokumen tidak mengatakan privasi gagal jika aplikasi melupakan daun. Mereka mengatakan pemulihan menjadi lebih mahal. Perbedaan itu penting. Sistem masih berfungsi. Tetapi “masih berfungsi” tidak sama dengan “masih terasa cukup baik untuk digunakan berulang kali.”
Itu adalah tempat di mana pembangun dapat terjebak.
Sebuah tim dapat melihat sisi Kompak, melihat bukti keanggotaan yang valid, dan berpikir fitur privasi sudah selesai. Itu belum selesai. Tidak jika objek status sisi JS masih harus memulihkan jalur dengan efisien. Tidak jika produk mengharapkan pemeriksaan pribadi terjadi sering. Tidak jika pohon tumbuh cukup besar sehingga pemindaian berhenti terasa tidak berbahaya. Pada titik itu, apa yang terlihat seperti fitur privasi yang bersih mulai bergantung pada apakah seseorang memperlakukan penempatan daun sebagai status aplikasi yang tahan lama alih-alih sampah implementasi sementara.
Biaya itu tidak jatuh secara merata.
Pembuat membayar terlebih dahulu, karena mereka perlu memutuskan apakah lokasi daun adalah bagian dari model aplikasi yang sebenarnya. Tim infrastruktur membayar berikutnya, karena mereka perlu pengambilan tetap cukup cepat sehingga keanggotaan pribadi masih berfungsi seperti fitur dan bukan seperti solusi lambat. Pengguna membayar terakhir, karena mereka tidak peduli apakah penundaan berasal dari logika Merkle yang elegan atau pengindeksan yang lemah. Mereka hanya melihat bahwa tindakan pribadi terasa lebih berat daripada seharusnya.
Itu sebabnya saya tidak berpikir “bukti memverifikasi” adalah standar ulasan lengkap untuk aplikasi Midnight. Saya ingin tahu bagaimana jalur dipulihkan. Saya ingin tahu apakah aplikasi dibangun di sekitar pathForLeaf() atau apakah ia diam-diam bergantung pada findPathForLeaf() dan menerima biaya pemindaian sebagai bagian normal dari fitur. Itu bukan pilihan implementasi kosmetik. Mereka membentuk apakah privasi Merkle tetap praktis setelah aplikasi meninggalkan tahap demo.
Pandangan saya sekarang sederhana. Di Midnight, keanggotaan pribadi tidak hanya bergantung pada kerahasiaan. Itu bergantung pada penempatan yang diingat. Pohon menyembunyikan anggota. Aplikasi masih harus menemukannya. Jika aplikasi berhenti melacak daun dengan baik, sistem bukti tidak runtuh. Sesuatu yang lebih mengganggu terjadi. Privasi berubah menjadi pencarian, dan pengguna mulai membayar untuk masalah memori yang tidak pernah seharusnya mereka lihat.
@MidnightNetwork $NIGHT #night

