Dalam melakukan verifikasi formal terhadap sistem zk-SNARKs, pengolahan subsistem memori adalah tantangan kunci. Berbeda dengan mesin virtual tradisional, zkVM menggunakan tabel eksekusi dan tabel pendukung untuk merepresentasikan status memori, yang memerlukan metode verifikasi khusus.
Sistem memori zkWasm terdiri dari tabel eksekusi dan tabel memori. Tabel eksekusi mencatat proses eksekusi instruksi, sedangkan tabel memori menyimpan semua riwayat akses memori. Untuk menyederhanakan pengembangan, zkWasm menyediakan lapisan abstraksi, melalui dua fungsi alloc_memory_table_lookup_write_cell dan alloc_memory_table_lookup_read_cell untuk mengoperasikan memori.
Dalam proses verifikasi, kami menganggap tabel memori sebagai struktur data yang dapat berubah, dengan membangun pemetaan data alamat melalui fungsi memory_at. Dengan cara ini, kami dapat membuktikan bahwa batasan yang dihasilkan oleh fungsi alloc setara dengan operasi set dan get yang dilakukan pada pemetaan, sehingga menyederhanakan verifikasi instruksi menjadi bentuk yang mirip dengan interpreter non-ZK.
Untuk mencegah penyerang memanipulasi tabel memori, zkWasm menggunakan mekanisme penghitung untuk melacak jumlah entri yang valid. Tabel eksekusi dan tabel memori masing-masing mempertahankan penghitung, dan memastikan konsistensi antara keduanya melalui pembatasan. Ini mengharuskan verifikasi yang lebih tepat, yang memerlukan bukti bahwa setiap instruksi sesuai dengan jumlah entri tabel memori yang benar.
Proses verifikasi dilakukan dengan pendekatan dari atas ke bawah, termasuk tiga langkah:
Jumlah entri yang diperkirakan harus dibuat oleh instruksi.
Jumlah entri dalam tabel bukti tidak lebih dari yang diharapkan
Buktikan melalui induksi bahwa cum_mops dan instructions_mops selalu konsisten dalam tabel.
Metode verifikasi yang rinci ini membantu mengidentifikasi kesalahan potensial, seperti masalah kunci dalam mekanisme penghitungan tabel lompat.
Untuk mencapai verifikasi modular, kami membagi sistem menjadi tiga bagian independen: verifikasi sirkuit instruksi, verifikasi tabel eksekusi, dan implementasi tabel memori. Struktur ini memungkinkan beberapa insinyur untuk bekerja secara paralel, meningkatkan efisiensi verifikasi.
Secara keseluruhan, meskipun zkVM memiliki perbedaan dalam menangani status dinamis, dengan mencocokkan lapisan abstraksi dalam implementasi, pendekatan modular yang mirip dengan verifikasi interpreter tradisional masih dapat diterapkan. Pendekatan ini meminimalkan dampak yang disebabkan oleh perbedaan, sehingga setiap instruksi dapat diverifikasi secara independen berdasarkan antarmuka get-set.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
15 Suka
Hadiah
15
7
Bagikan
Komentar
0/400
AltcoinHunter
· 07-04 16:51
wawasan berharga penuh Penambangan
Lihat AsliBalas0
PerpetualLonger
· 07-04 00:09
Manajemen memori sangat penting
Lihat AsliBalas0
MercilessHalal
· 07-03 12:25
Metode verifikasi sangat solid
Lihat AsliBalas0
BearHugger
· 07-02 01:45
Biaya sangat tinggi, tidak cocok untuk penggunaan komersial
Metode verifikasi memori untuk sistem zk-SNARKs: bagaimana zkWasm mengimplementasikan Verifikasi Formal
Verifikasi Formal zk-SNARKs: Metode Bukti Memori
Dalam melakukan verifikasi formal terhadap sistem zk-SNARKs, pengolahan subsistem memori adalah tantangan kunci. Berbeda dengan mesin virtual tradisional, zkVM menggunakan tabel eksekusi dan tabel pendukung untuk merepresentasikan status memori, yang memerlukan metode verifikasi khusus.
Sistem memori zkWasm terdiri dari tabel eksekusi dan tabel memori. Tabel eksekusi mencatat proses eksekusi instruksi, sedangkan tabel memori menyimpan semua riwayat akses memori. Untuk menyederhanakan pengembangan, zkWasm menyediakan lapisan abstraksi, melalui dua fungsi alloc_memory_table_lookup_write_cell dan alloc_memory_table_lookup_read_cell untuk mengoperasikan memori.
Dalam proses verifikasi, kami menganggap tabel memori sebagai struktur data yang dapat berubah, dengan membangun pemetaan data alamat melalui fungsi memory_at. Dengan cara ini, kami dapat membuktikan bahwa batasan yang dihasilkan oleh fungsi alloc setara dengan operasi set dan get yang dilakukan pada pemetaan, sehingga menyederhanakan verifikasi instruksi menjadi bentuk yang mirip dengan interpreter non-ZK.
Untuk mencegah penyerang memanipulasi tabel memori, zkWasm menggunakan mekanisme penghitung untuk melacak jumlah entri yang valid. Tabel eksekusi dan tabel memori masing-masing mempertahankan penghitung, dan memastikan konsistensi antara keduanya melalui pembatasan. Ini mengharuskan verifikasi yang lebih tepat, yang memerlukan bukti bahwa setiap instruksi sesuai dengan jumlah entri tabel memori yang benar.
Proses verifikasi dilakukan dengan pendekatan dari atas ke bawah, termasuk tiga langkah:
Metode verifikasi yang rinci ini membantu mengidentifikasi kesalahan potensial, seperti masalah kunci dalam mekanisme penghitungan tabel lompat.
Untuk mencapai verifikasi modular, kami membagi sistem menjadi tiga bagian independen: verifikasi sirkuit instruksi, verifikasi tabel eksekusi, dan implementasi tabel memori. Struktur ini memungkinkan beberapa insinyur untuk bekerja secara paralel, meningkatkan efisiensi verifikasi.
Secara keseluruhan, meskipun zkVM memiliki perbedaan dalam menangani status dinamis, dengan mencocokkan lapisan abstraksi dalam implementasi, pendekatan modular yang mirip dengan verifikasi interpreter tradisional masih dapat diterapkan. Pendekatan ini meminimalkan dampak yang disebabkan oleh perbedaan, sehingga setiap instruksi dapat diverifikasi secara independen berdasarkan antarmuka get-set.