Bukti Pengetahuan Nol (ZKP) adalah teknik kriptografi yang pertama kali diusulkan oleh S. Goldwasser, S. Micali, dan C. Rackoff pada awal tahun 1980-an dalam sebuah makalah berjudulKompleksitas Pengetahuan dari Sistem Bukti InteraktifDalam makalah tersebut, konsep ini dikonseptualisasikan sebagai model teoritis untuk memecahkan masalah memverifikasi pernyataan matematika tanpa mengungkapkan bukti. Konsep ini telah menarik perhatian luas di kalangan akademisi karena menantang batas-batas teknik kriptografi tradisional dan memberikan metode baru untuk memproses informasi sensitif.
Seiring waktu, ZKP telah berkembang dari konsep teoritis abstrak menjadi protokol konkret yang dapat diintegrasikan ke dalam berbagai aplikasi. Pada tahun 2010, Groth mempublikasikan sebuah makalah berjudul “Bukti Nol Interaktif Berbasis Pasangan yang Pendek", yang menjadi tonggak teoritis untuk zk-SNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge), solusi penting dalam ZKP. Kemajuan paling penting dalam penerapan bukti pengetahuan nol adalah sistem bukti pengetahuan nol yang digunakan oleh Z-cash pada tahun 2015, yang memberikan perlindungan privasi untuk transaksi dan jumlah. Selanjutnya, zk-SNARK dikombinasikan dengan kontrak pintar, memperluas aplikasinya ke berbagai skenario aplikasi yang lebih luas.
ZKP tradisional mematuhi tiga prinsip:
Prinsip ZKP dapat dipahami melalui contoh sederhana: Jika saya perlu membuktikan kepada A bahwa saya memiliki nomor telepon B, saya tidak perlu langsung mengungkapkan nomor telepon B. Sebaliknya, saya bisa langsung menelepon nomor telepon B dan membuktikan bahwa saya memang memiliki nomor telepon B setelah berhasil terhubung. Proses ini tidak akan bocor nomor telepon B.
zk-SNARK lebih meningkatkan prinsip-prinsip ini dengan karakteristik berikut:
Dalam makalah Groth, dia mengusulkan metode bukti pengetahuan nol-interaktif berbasis pasangan untuk mengubah masalah komputasi menjadi Program Aritmetika Kuadrat (QAP). Metode ini menggunakan kriptografi kurva eliptik dan fungsi hash untuk membuat bukti yang efektif. Desain zk-SNARK berikutnya umumnya melibatkan empat langkah.
Untuk menjelaskan dengan contoh sederhana, misalkan Anda memiliki peta harta karun yang dapat membimbing Anda ke lokasi tepat harta karun yang terkubur. Anda ingin membuktikan kepada seseorang bahwa Anda tahu lokasi harta karun, tetapi Anda tidak ingin mengungkapkan isi peta harta karun atau lokasi sebenarnya dari harta karun. Jika Anda menggunakan teknologi zk-SNARK, Anda perlu membuat teka-teki yang kompleks dari peta harta karun. Anda memilih potongan kecil dari teka-teki penting (bukti) dan menunjukkannya kepada orang lain, meyakinkan mereka bahwa Anda tahu bagaimana seluruh teka-teki, yaitu lokasi harta karun, cocok bersama tanpa mengungkapkan seluruh teka-teki. Namun, untuk melakukan ini, Anda perlu mendapatkan beberapa tanda khusus dari percetakan terpercaya, yang digunakan untuk membuktikan keaslian potongan teka-teki Anda.
Diskusi sebelumnya menyebutkan bahwa zk-SNARK memungkinkan pengaturan string referensi umum, yang berarti kendala dapat ditetapkan pada sirkuit yang berjalan. Mengambil cadangan Gate.io sebagai contoh, ia menetapkan lima kendala inti dalam sirkuit, seperti yang ditunjukkan di bawah ini:
(1) Sebelum memasukkan aset bersih pengguna ke pohon Merkle, node yang sesuai dengan ID pengguna kosong.
② Hitung total aset/kewajiban pengguna berdasarkan daftar aset pengguna dan harga masing-masing aset. Total aset harus lebih besar dari total kewajiban.
③ Tambahkan aset/kewajiban pengguna ke aset/kewajiban pertukaran.
④ Hitung hash status pengguna menggunakan ID pengguna, total aset/liabilitas, dan daftar aset. Sisipkan status pengguna ke dalam pohon Merkle untuk mendapatkan Merkle Root baru.
(5) Nilai hash dari simpul akar pohon sebelum pengguna sebelumnya membuat operasi pengguna harus sama dengan nilai hash setelah pengguna berikutnya membuat operasi pengguna.
(Operasi ① dapat menghindari data node menjadi palsu, operasi ② dapat menghindari akun saldo negatif, dan operasi ⑤ dapat memastikan bahwa data pengguna tidak berubah sebelum dan sesudah operasi.)
Ini memastikan penyelesaian masalah saldo negatif. Data pertukaran hanya perlu melewati sirkuit untuk secara otomatis melakukan pemeriksaan kendala dan mendapatkan jumlah aset. Namun, solusi ini memerlukan daya komputasi dan kondisi perangkat keras tertentu. Dibutuhkan 15 hari untuk menghitung bukti aset dari 10 juta pengguna pada mesin 32-core dengan RAM 128GB. Perhitungan Proof of Reserves dapat diparalelkan. Jika ada 10 mesin, hanya dibutuhkan 1,5 hari.
Dengan menetapkan kendala yang relevan, zk-SNARK dapat menghindari terjadinya masalah nilai negatif dan lebih baik melindungi privasi dan keamanan pengguna. Proof of Reserves Gate.io sekarang dapat membuktikan rasio cadangan untuk 100+ koin, dan pengguna dapat melihatnya dengan hanya mengklik tombol.taut. Dalam pelajaran berikutnya, kami akan membawa Anda untuk memverifikasi keamanan aset Anda dalam waktu 3 menit.
Bukti Pengetahuan Nol (ZKP) adalah teknik kriptografi yang pertama kali diusulkan oleh S. Goldwasser, S. Micali, dan C. Rackoff pada awal tahun 1980-an dalam sebuah makalah berjudulKompleksitas Pengetahuan dari Sistem Bukti InteraktifDalam makalah tersebut, konsep ini dikonseptualisasikan sebagai model teoritis untuk memecahkan masalah memverifikasi pernyataan matematika tanpa mengungkapkan bukti. Konsep ini telah menarik perhatian luas di kalangan akademisi karena menantang batas-batas teknik kriptografi tradisional dan memberikan metode baru untuk memproses informasi sensitif.
Seiring waktu, ZKP telah berkembang dari konsep teoritis abstrak menjadi protokol konkret yang dapat diintegrasikan ke dalam berbagai aplikasi. Pada tahun 2010, Groth mempublikasikan sebuah makalah berjudul “Bukti Nol Interaktif Berbasis Pasangan yang Pendek", yang menjadi tonggak teoritis untuk zk-SNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge), solusi penting dalam ZKP. Kemajuan paling penting dalam penerapan bukti pengetahuan nol adalah sistem bukti pengetahuan nol yang digunakan oleh Z-cash pada tahun 2015, yang memberikan perlindungan privasi untuk transaksi dan jumlah. Selanjutnya, zk-SNARK dikombinasikan dengan kontrak pintar, memperluas aplikasinya ke berbagai skenario aplikasi yang lebih luas.
ZKP tradisional mematuhi tiga prinsip:
Prinsip ZKP dapat dipahami melalui contoh sederhana: Jika saya perlu membuktikan kepada A bahwa saya memiliki nomor telepon B, saya tidak perlu langsung mengungkapkan nomor telepon B. Sebaliknya, saya bisa langsung menelepon nomor telepon B dan membuktikan bahwa saya memang memiliki nomor telepon B setelah berhasil terhubung. Proses ini tidak akan bocor nomor telepon B.
zk-SNARK lebih meningkatkan prinsip-prinsip ini dengan karakteristik berikut:
Dalam makalah Groth, dia mengusulkan metode bukti pengetahuan nol-interaktif berbasis pasangan untuk mengubah masalah komputasi menjadi Program Aritmetika Kuadrat (QAP). Metode ini menggunakan kriptografi kurva eliptik dan fungsi hash untuk membuat bukti yang efektif. Desain zk-SNARK berikutnya umumnya melibatkan empat langkah.
Untuk menjelaskan dengan contoh sederhana, misalkan Anda memiliki peta harta karun yang dapat membimbing Anda ke lokasi tepat harta karun yang terkubur. Anda ingin membuktikan kepada seseorang bahwa Anda tahu lokasi harta karun, tetapi Anda tidak ingin mengungkapkan isi peta harta karun atau lokasi sebenarnya dari harta karun. Jika Anda menggunakan teknologi zk-SNARK, Anda perlu membuat teka-teki yang kompleks dari peta harta karun. Anda memilih potongan kecil dari teka-teki penting (bukti) dan menunjukkannya kepada orang lain, meyakinkan mereka bahwa Anda tahu bagaimana seluruh teka-teki, yaitu lokasi harta karun, cocok bersama tanpa mengungkapkan seluruh teka-teki. Namun, untuk melakukan ini, Anda perlu mendapatkan beberapa tanda khusus dari percetakan terpercaya, yang digunakan untuk membuktikan keaslian potongan teka-teki Anda.
Diskusi sebelumnya menyebutkan bahwa zk-SNARK memungkinkan pengaturan string referensi umum, yang berarti kendala dapat ditetapkan pada sirkuit yang berjalan. Mengambil cadangan Gate.io sebagai contoh, ia menetapkan lima kendala inti dalam sirkuit, seperti yang ditunjukkan di bawah ini:
(1) Sebelum memasukkan aset bersih pengguna ke pohon Merkle, node yang sesuai dengan ID pengguna kosong.
② Hitung total aset/kewajiban pengguna berdasarkan daftar aset pengguna dan harga masing-masing aset. Total aset harus lebih besar dari total kewajiban.
③ Tambahkan aset/kewajiban pengguna ke aset/kewajiban pertukaran.
④ Hitung hash status pengguna menggunakan ID pengguna, total aset/liabilitas, dan daftar aset. Sisipkan status pengguna ke dalam pohon Merkle untuk mendapatkan Merkle Root baru.
(5) Nilai hash dari simpul akar pohon sebelum pengguna sebelumnya membuat operasi pengguna harus sama dengan nilai hash setelah pengguna berikutnya membuat operasi pengguna.
(Operasi ① dapat menghindari data node menjadi palsu, operasi ② dapat menghindari akun saldo negatif, dan operasi ⑤ dapat memastikan bahwa data pengguna tidak berubah sebelum dan sesudah operasi.)
Ini memastikan penyelesaian masalah saldo negatif. Data pertukaran hanya perlu melewati sirkuit untuk secara otomatis melakukan pemeriksaan kendala dan mendapatkan jumlah aset. Namun, solusi ini memerlukan daya komputasi dan kondisi perangkat keras tertentu. Dibutuhkan 15 hari untuk menghitung bukti aset dari 10 juta pengguna pada mesin 32-core dengan RAM 128GB. Perhitungan Proof of Reserves dapat diparalelkan. Jika ada 10 mesin, hanya dibutuhkan 1,5 hari.
Dengan menetapkan kendala yang relevan, zk-SNARK dapat menghindari terjadinya masalah nilai negatif dan lebih baik melindungi privasi dan keamanan pengguna. Proof of Reserves Gate.io sekarang dapat membuktikan rasio cadangan untuk 100+ koin, dan pengguna dapat melihatnya dengan hanya mengklik tombol.taut. Dalam pelajaran berikutnya, kami akan membawa Anda untuk memverifikasi keamanan aset Anda dalam waktu 3 menit.