zkDocs: Berbagi Informasi Tanpa Pengetahuan PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

zkDocs: Berbagi Informasi Tanpa Pengetahuan

Mayoritas transaksi blockchain bersifat publik berdasarkan desain, tersedia bagi siapa saja yang ingin memeriksanya. Meskipun sangat baik untuk kemampuan audit, ini membuat mereka menjadi pilihan yang kurang jelas untuk menyampaikan informasi pribadi. Anda tidak ingin memasukkan nomor jaminan sosial Anda ke blockchain Ethereum, misalnya. Namun, kita dapat menggunakan bukti tanpa pengetahuan (yang memungkinkan kami membuktikan fakta secara kriptografis tentang informasi tanpa mengungkapkan informasi) untuk tidak hanya melindungi privasi, tetapi juga meningkatkan alur kerja berbagi informasi dan verifikasi tradisional saat ini.

Misalnya, banyak organisasi dan institusi bergantung pada berbagi informasi pribadi dengan hati-hati dan memverifikasi keasliannya untuk aplikasi dari pinjaman hipotek hingga penerimaan perguruan tinggi. Namun dalam praktiknya, alur kerja perlindungan privasi ini melibatkan serangkaian konfirmasi akses subjektif saat manusia menanyakan manusia lain. Mereka sering kali rawan kesalahan, tidak efisien, dan proses bocor yang memaparkan informasi yang tidak perlu, dan mungkin tidak cocok untuk menangani data kami yang paling sensitif.

Di sini kami mendemonstrasikan bagaimana beberapa primitif kriptografi yang dikembangkan dan dipopulerkan oleh gerakan web3 dapat meningkatkan alur kerja verifikasi informasi, sambil menjaga privasi dan desentralisasi, melalui rilis baru kami repo zkDocs. Ini adalah alat untuk membuat "dokumen tanpa pengetahuan" yang memungkinkan berbagai pihak dalam alur kerja tertentu untuk berbagi dan memverifikasi informasi, dan memastikannya memenuhi kriteria tertentu โ€” tanpa perlu mengeksposnya.

[Embedded content]

Tapi pertama-tama: cara kerjanya, mekanisme kunci, dan banyak lagi

Mari kita mulai dengan ikhtisar singkat tentang tiga aktor penting dalam alur kerja zkDocs, dan bagaimana mereka dapat berinteraksi untuk mengajukan dan menyetujui hipotek.

  • Pemverifikasi: Admin atau pembuat skema zkDoc. Dalam contoh kita, verifikator adalah pemberi pinjaman hipotek.
  • Pengirim: Individu atau individu yang ingin memiliki data yang diverifikasi oleh skema. Ini adalah pemohon pinjaman atau pembeli rumah potensial.
  • Penyokong kebenaran: Individu atau institusi tepercaya yang dapat membuktikan kebenaran dari satu atau lebih bidang pengirim. Ini mungkin majikan atau penilai rumah.

Biasanya, aplikasi hipotek memulai alur kerja verifikasi di mana pemberi pinjaman hipotek (verifikator) melibatkan lembaga tepercaya lainnya untuk mengonfirmasi pemohon (pengirim) memenuhi persyaratan mereka. Setelah aplikasi terpental dari satu lembaga ke lembaga (attestors), pemberi pinjaman asli dapat menyetujui pinjaman.

Arsitektur yang kami susun memungkinkan pemverifikasi untuk menentukan skema bidang dan attestor tepercaya, dan kemudian tentukan beberapa batasan pada bidang tersebut. Dalam kasus aplikasi hipotek, pemberi pinjaman mungkin menentukan bahwa jumlah nilai agunan pemohon lebih besar dari hutang mereka.

zkDocs juga mengizinkan pengirim untuk hanya berbagi informasi terkait dengan setiap pemberi atestor. Majikan mungkin hanya dapat membuktikan gaji pelamar dan status pekerjaan, misalnya, tanpa melihat rincian keuangan yang tidak perlu. 

Pengirim kemudian dapat menghasilkan bukti tanpa pengetahuan yang menunjukkan bahwa skema telah diisi dengan benar โ€” dan bahwa setiap bidang telah dibuktikan dengan benar โ€” tanpa mengungkapkan data yang mendasarinya. Pihak mana pun (termasuk pemverifikasi) dapat memvalidasi bukti tanpa pengetahuan melalui perhitungan ringan.

Ada dua mekanisme utama yang perlu diperhatikan: pengesahan dan bukti tanpa pengetahuan.

Menggunakan blockchain untuk pengesahan

Blockchain publik memiliki sejumlah properti yang membuatnya ideal untuk pengesahan: ketahanan sensor, ketersediaan data publik, kemampuan audit, dan kunci penandatanganan rahasia. Attestor dapat menggunakan kunci pribadi mereka untuk menandatangani semua transaksi yang dikirim ke blockchain, memastikan pengesahan tidak dapat dipalsukan atau dipalsukan.

Namun, salah satu kelemahan memposting pengesahan ke blockchain adalah bahwa nilai-nilai yang mendasarinya dapat dilihat oleh publik. zkDocs memecahkan ini dengan menyiarkan komitmen kriptografi untuk nilai-nilai bukan nilai-nilai teks yang jelas. Komitmen ini tetap tersedia untuk umum, tetapi nilai-nilai yang mendasarinya tidak terlihat.

Apa itu komitmen kriptografi?

Komitmen kriptografi memungkinkan satu pihak untuk menghasilkan komitmen terhadap beberapa data pribadi. Nantinya committer bisa membuka komitmen untuk mengungkapkan data yang sudah di-commit. 

Skema komitmen harus (1) bersembunyi, artinya komitmen tidak mengungkapkan apa pun tentang data, dan (2) mengikat, artinya pembuat komitmen tidak dapat menemukan komitmen yang dapat dibuka dengan dua cara berbeda. 

Skema komitmen paling sederhana dibangun dari fungsi hash kriptografi โ€” misalnya, hash Poseidon. Untuk melakukan commit ke beberapa data, committer menghitung: komitmen poseidon (data, duta paus), dimana duta paus adalah string 512-bit acak. Untuk membuka komitmen nanti, komitter mengungkapkan data dan duta paus. Siapa pun dapat memverifikasi bahwa komitmen dibuka dengan benar.

Memverifikasi data pribadi melalui bukti tanpa pengetahuan

Bukti tanpa pengetahuan adalah metode untuk membuktikan fakta tentang data tanpa mengungkapkan apa pun tentang data yang mendasarinya. Dengan zkDocs, pengirim dapat membuat bukti tanpa pengetahuan bahwa semua data telah dikomit dan memenuhi batasan yang diperlukan. Pihak ketiga mana pun dapat menjalankan perhitungan verifikasi tanpa mengetahui, atau informasi tentang, data yang mendasarinya.

Hasilnya adalah bahwa data yang diperlukan untuk memverifikasi pengiriman skema zkDoc tersedia untuk umum, dan dapat diaudit sepenuhnya, namun tetap bersifat pribadi.

Secara khusus, pengirim menghasilkan bukti tanpa pengetahuan bahwa ia mengetahui array (nilai, duta paus) berpasangan sehingga:

  • poseidon(value[i], nonce[i]) == prior_commitment[i], dan
  • value[0], โ€ฆ, value[n] memenuhi kendala

Pengirim dapat menghasilkan bukti tanpa pengetahuan menggunakan sirkuit ini dan menyiarkannya ke pihak mana pun yang tertarik untuk memverifikasi data mereka. Siapa pun dapat menjalankan bukti dan mengonfirmasi validitas bidang dalam skema.

Untuk mendemonstrasikannya, mari kita lihat dua studi kasus singkat.

Contoh: aplikasi hipotek

Pertama, mari kembali ke aplikasi hipotek, contoh bagus dari alur kerja pengesahan informasi yang dapat ditingkatkan dengan zkDocs.

Pemberi pinjaman hipotek (pemverifikasi, dalam hal ini) akan membuat skema untuk zkDoc sebagai berikut:


{
  "fields": [
    {
      "field_name": "salary"
    },
    {
      "field_name": "401k_income"
    },
    {
      "field_name": "bank_account_balance"
    },
    {
      "field_name": "property_value"
    },
    {
      "field_name": "loan_value"
    }
  ],
  "constraints": [
    {
      "fieldA": "bank_account_balance",
      "fieldB": "property_value",
      "op": "ADD",
      "constraint": "GT",
      "fieldCompare": "loan_value"
    },
    {
      "fieldA": "salary",
      "fieldB": "401k_income",
      "op": "ADD",
      "constraint": "GT",
      "constant": 65000
    }
  ],
  "trusted_institutions": [
    {
      "human_name": "Employer",
      "address": "0xabcd..."
    },
    {
      "human_name": "Home Appraiser",
      "address": "0xabcd..."
    },
    {
      "human_name": "401k Provider",
      "address": "0xabcd..."
    },
    {
      "human_name": "Checking Account Provider",
      "address": "0xabcd..."
    },
    {
      "human_name": "Creditor",
      "address": "0xabcd..."
    }
  ]
}

Pertama, skema menentukan beberapa bidang yang diminati pemberi pinjaman: gaji, pendapatan 401(k), saldo rekening giro, nilai properti, dan nilai pinjaman. 

Kemudian dua kendala atas bidang-bidang itu: 

  1. Jumlah nilai properti dan saldo rekening bank lebih besar dari nilai pinjaman
  2. Jumlah pendapatan dan gaji 401(k) lebih besar dari $65,000 per tahun

Dan akhirnya, lima lembaga yang dipercaya untuk membuktikan informasi ini:

  1. Majikan
  2. Penilai rumah
  3. 401(k) penyedia
  4. Memeriksa penyedia akun
  5. Kreditor

Untuk mengajukan hipotek, pemohon mengisi bidang yang tercantum di bagian "bidang" menggunakan UI zkDocs dan menerbitkan komitmen kriptografi on-chain untuk masing-masing bidang. Pemohon kemudian mengirimkan bidang cleartext yang relevan, bersama dengan nonces untuk setiap komitmen, ke masing-masing lembaga pengesahan (dari set yang tercantum di bawah trusted_institutions). UI zkDocs melakukan ini melalui hyperlink.

Setiap attestor memverifikasi informasi cleartext yang relevan dan membuktikan komitmen dengan menandatangani dengan kunci pribadi Ethereum mereka. Kemudian pemohon dapat mengirimkan transaksi ke blockchain termasuk bukti tanpa pengetahuan tentang validitas komitmen dan batasan, sehingga memenuhi syarat sebagai penerima hipotek yang valid. Lembaga hipotek yang memverifikasi tidak perlu melakukan verifikasi tambahan untuk mengkonfirmasi integritas aplikasi.

Contoh: Pinjaman ATM MakerDAO

MakerDAO adalah protokol peminjaman yang, hingga saat ini, telah diterbitkan $6 miliar dalam bentuk pinjaman dalam mata uang DAI (token yang dipatok USD). Divisi Aset Dunia Nyata (RWA) Maker sedang bekerja untuk memberikan pinjaman dalam mata uang DAI kepada pemberi pinjaman hilir, memungkinkan DAI untuk secara langsung mendorong pertumbuhan ekonomi dunia nyata. Tetapi Maker adalah DAO, yang token tata kelolanya dimiliki oleh sekitar 78,000 dompet unik, masing-masing dengan hak untuk berpartisipasi dalam proses tata kelola dan mengarahkan masa depan protokol. 

Sebagian besar keputusan Pembuat Besar, seperti mengambil sumber agunan baru, dibahas dalam forum publik. Tetapi institusi atau individu yang mengajukan pinjaman dari Maker mungkin tidak tertarik untuk membagikan keseluruhan keuangan mereka kepada publik karena sejumlah alasan, mulai dari privasi hingga rahasia dagang. Sebagai gantinya, Maker dapat memublikasikan zkDoc dengan skema yang mirip dengan berikut ini:


{
  "fields": [
    {
      "field_name": "custodian_name"
    }, 
    {
      "field_name""total_loan"
    },
    {
      "field_name": "total_collateral_value"
    },
    {
      "field_name": "amount_repaid"
    }
  ],
  "constraints": [
    {
      "fieldA": "total_loan",
      "fieldB": "amount_repaid",
      "op": "SUB",
      "constraint": "LT",
      "fieldCompare": "total_collateral_value"
    }
  ],
  "trusted_institutions": [
    {
      "address": "0xabcdโ€ฆ",
      "human_name": "Bob the Custodian"
    }
  ]
}

Skema ini akan memungkinkan peserta tata kelola untuk memastikan bahwa protokol tidak mengambil risiko yang tidak wajar, tanpa mengharuskan semua pemohon pinjaman ATMR melanggar privasi mereka.

***
zkDocs, seperti yang saat ini diterapkan, menggunakan:

  • Transaksi yang ditandatangani (atau rantai yang kompatibel dengan EVM) untuk memverifikasi keaslian pengesahan
  • Ruang blok publik untuk menyimpan komitmen dan pengesahan
  • Kontrak cerdas untuk memverifikasi bukti tanpa pengetahuan 

Di luar kemampuan audit dan properti privasi zkDoc, ada sumbu lain yang menarik: Setelah verifikasi informasi pribadi ditayangkan di blockchain publik, pengguna dan pengembang dapat menyusun informasi terverifikasi zkDoc dengan aplikasi mereka sendiri. Orang dapat membayangkan riwayat pinjaman memainkan reputasi DAO, pengajuan triwulanan yang diverifikasi komunitas untuk menyesuaikan parameter protokol, aplikasi perguruan tinggi instan, tarif protokol diskon untuk pengguna yang dipercaya dalam komunitas lain, dan banyak lagi.

Tujuan kami dalam membagikan bukti konsep ini adalah untuk menunjukkan bagaimana komputasi primitif baru ini dapat digunakan dalam produksi saat ini, dan untuk membantu mempercepat penerapannya dengan menghadirkan lebih banyak aplikasi online. Jika Anda berencana untuk menyebarkan zkDocs ke prod atau menggunakan skema serupa, jangan ragu untuk menghubungi Twitter.

Stempel Waktu:

Lebih dari Andreessen Horowitz