Artikel membahas tentang bahasa pemrograman ZK

Bukti tanpa pengetahuan (ZKP) adalah alat kriptografi canggih yang dapat memverifikasi kebenaran penghitungan sekaligus melindungi privasi data masukan. Sebagai bagian integral dari infrastruktur penting ini, bahasa khusus domain (DSL) memainkan peran penting dalam menyederhanakan proses pengembangan dan verifikasi sirkuit ZKP. Mereka memainkan peran penting dalam menghubungkan konsep-konsep abstrak dengan representasi rangkaian tepat yang diperlukan untuk membuktikan sistem, bertindak sebagai jembatan penting antara keduanya.

Salah satu tantangan utama dalam pembuktian sistem adalah menerjemahkan konsep abstrak tingkat tinggi ke dalam rangkaian nyata. Namun, kemunculan DSL menjawab tantangan ini dengan memfasilitasi ekspresi terstruktur dari konsep-konsep abstrak ini dengan cara yang lebih konkrit dan dapat dicapai.

Selama dekade terakhir, kita telah menyaksikan pertumbuhan signifikan dalam jumlah dan keragaman DSL. Kegiatan di bidang ini tercermin dari perkembangan berbagai bahasa sirkuit, antara lain Noir, Leo, Zinc, dll. Apakah Anda memerlukan opsi tujuan umum, seperti Circom, atau solusi yang disesuaikan untuk platform tertentu, seperti Kairo, Anda dapat memilih dari berbagai bahasa dan kerangka kerja untuk menulis sirkuit ZKP.

Pada artikel ini, kita akan menjelajahi bahasa pemrograman ZK utama yang secara aktif dimanfaatkan oleh pengembang dan menganalisis fitur terbaik dari setiap bahasa.

TLDR;

Artikel membahas bahasa pemrograman ZK

Kairo Oleh StarkWare

Kairo, bahasa inti untuk program komputasi tujuan umum yang mendukung bukti STARK, telah memainkan peran penting dalam keberhasilan StarkNet dan StarkEx, mendorong skalabilitas aplikasi di mainnet Ethereum. Perlu disebutkan bahwa Kairo telah memainkan peran penting dalam mendukung berbagai aplikasi, termasuk dYdX, Sorare, Immutable X, dll. Nama "Kairo" berasal dari singkatan "CPU Algebraic Intermediate Representation". Di bidang bukti tanpa pengetahuan, ini memainkan peran yang mirip dengan bahasa rakitan, sehingga memudahkan pengembang yang akrab dengan bahasa pemrograman tingkat rendah seperti C, C++, atau Solidity untuk memulai.

Terinspirasi oleh Rust, Cairo memberdayakan pengembang untuk membuat kontrak pintar Starknet, dengan fokus pada keamanan dan pengembangan yang ramah pengguna. Cairo memiliki sintaks yang kuat yang menyederhanakan pembuatan sirkuit ZK dan memungkinkan pengguna untuk melakukan berbagai tugas dalam program Kairo. Selain itu, keunggulan Kairo yang signifikan adalah kemampuannya yang dapat diperluas, sehingga memungkinkan pengenalan fitur dan kemampuan baru secara fleksibel.

Dalam sistem ZK, efisiensi dan skalabilitas merupakan faktor penting, dan Kairo memenuhi persyaratan ini dengan menekankan kedua aspek ini. Bahasa ini mengintegrasikan strategi optimasi, termasuk pengurangan kendala dan penghapusan loop, untuk meringankan beban komputasi yang biasanya terkait dengan sirkuit ZK. Optimalisasi desain sirkuit di Kairo menghasilkan pembuatan bukti dan verifikasi yang lebih cepat, sehingga ideal untuk aplikasi yang memerlukan throughput tinggi dan latensi minimal.

Ekspansi Kairo sangat mengesankan, dengan lonjakan luar biasa dalam jumlah pengembang penuh waktu selama dua tahun terakhir. Lonjakan ini menyoroti kemampuan Kairo untuk beradaptasi, karena penggunaan Kairo tidak terbatas pada blockchain namun sangat penting dalam konteks apa pun yang memerlukan verifikasi komputasi. Sebagai hasilnya, kita dapat mengharapkan pertumbuhan signifikan lebih lanjut dalam adopsi pengembang di Kairo.

Pada tanggal 28 September 2023, Starknet meluncurkan peningkatan penting pada bahasa pemrograman Cairo v2.3.0. Rilis ini menandai langkah maju yang besar dalam menjadikan kontrak lebih modular, meningkatkan potensi kontrak pintar dengan memperkenalkan fitur-fitur baru, opsi penyimpanan, dan manajemen acara. Integrasi komponen-komponen ini memberikan cara yang fleksibel untuk memperluas fungsionalitas kontrak, memungkinkan modul pihak ketiga untuk meningkatkan fungsionalitas kontrak.

Seng oleh ZkSync

Zinc adalah bahasa pemrograman yang dirancang untuk membuat kontrak pintar dan sirkuit SNARK pada platform zkSync. Ia menggunakan sintaks Rust, menggabungkan elemen Soliditas, dan menyediakan fitur unik.

Apa yang membuat Zinc unik adalah kemudahan penggunaannya. Anda tidak perlu memahami semua detail rumit sistem batasan orde pertama (R1CS) untuk menulis kode aman. Seng menekankan kekekalan, menjadikannya fungsional secara inheren. Artinya, ini memprioritaskan data yang tidak dapat diubah dan evaluasi fungsi, sehingga mengurangi efek samping dan mendorong penulisan kode kontrak pintar yang lebih bersih dan tidak rawan kesalahan.

Selain itu, Zinc mencakup operasi matematika yang aman untuk mencegah potensi luapan, sehingga memastikan keamanan semua operasi. Meskipun memiliki beberapa keterbatasan, seperti tidak adanya loop tak terbatas dan rekursi, Zinc menyederhanakan proses debugging melalui penelusuran log konsol. Jejak ini meningkatkan pengalaman debugging dengan menyederhanakan proses pelacakan dan penyelesaian masalah pada jaringan pengujian atau jaringan utama.

Noir Oleh Aztec

Noir adalah DSL sumber terbuka yang dikembangkan oleh Aztec, berdasarkan Rust, dirancang untuk menyederhanakan pembuatan sirkuit ZK dan program ZK tanpa pengetahuan kriptografi yang mendalam. Ini dianggap sebagai salah satu bahasa termudah untuk memulai dan cocok untuk menulis aplikasi ZK yang kompatibel dengan sistem pembuktian apa pun. Noir berfokus pada keamanan, kesederhanaan, dan kinerja. Ini menyediakan sintaksis seperti Rust tingkat tinggi yang mengabstraksi keamanan kriptografi dan menyederhanakan penggunaan primitif kriptografi dasar sambil mempertahankan kinerja tinggi.

Noir memiliki keunggulan signifikan dalam memperluas jangkauan aplikasi yang dapat memanfaatkan kemampuan perlindungan privasi yang disediakan oleh ZKP, sehingga meningkatkan efisiensi privasi dan verifikasi. Noir dikompilasi menjadi representasi perantara yang disebut Representasi Menengah Sirkuit Abstrak (Acer), yang kemudian dapat dikompilasi lebih lanjut menjadi R1CS. Memisahkan sistem pembuktian backend dari bahasa itu sendiri memungkinkan Noir mendukung berbagai sistem pembuktian, termasuk Aztec Brettenberg, Turbo Plonk, dan potensi integrasi di masa depan seperti Groth16 dan Halo2.

Bahasa ini menyediakan perpustakaan standar yang mencakup fitur efisien seperti SHA-256 (fungsi hash kriptografi yang menghasilkan keluaran berukuran tetap) dan pemeriksaan Pedersen-Merkle (metode yang menggunakan komitmen Pedersen dan pohon Merkle untuk memastikan integritas data dan enkripsi konsistensi teknologi verifikasi). Desain Noir mirip dengan Rust dan mencakup fitur-fitur yang familiar bagi pengembang aplikasi, seperti fungsi, submodul, tipe yang ditentukan pengguna (struct), kondisional, loop, dan konstanta global. Selain itu, upaya berkelanjutan sedang dilakukan untuk mengembangkan fungsi generik dan kelas satu untuk lebih meningkatkan kemampuan ekspresif Noir.

Perlu dicatat bahwa Noir masih dalam proses dan mungkin ada beberapa keterbatasan dan potensi bug. Namun tim pengembangan berkomitmen untuk terus meningkatkan dan mengoptimalkan bahasa tersebut.

o1js oleh 0(1) Lab

o1js, sebelumnya dikenal sebagai SnarkyJS, adalah pustaka Tipe yang dikembangkan oleh 0(1)Labs untuk membuat kontrak pintar menggunakan bahasa pemrograman SNARK. Ini memanfaatkan teknologi yang sudah ada seperti Node.js dan kompatibilitas browser untuk memastikan akses mudah dan kemudahan penggunaan bagi pengembang.

o1js dapat berintegrasi secara mulus dengan pustaka dan alat Java dan TypeScript, memberikan pengembang ekosistem yang kuat dan dukungan komunitas yang luas. Integrasi ini menyederhanakan proses pembangunan dan mengurangi kurva pembelajaran yang terkait dengan adopsi lingkungan pembangunan baru. Selain itu, ia sepenuhnya mendukung Visual Studio Code (VS Code), editor kode yang banyak digunakan yang memungkinkan pengembang memanfaatkan sepenuhnya fitur-fitur seperti penyelesaian kode, penyorotan sintaksis, dan debugging untuk meningkatkan pengalaman pengembangan.

o1js pada dasarnya adalah kerangka kerja ZK serbaguna yang memberi Anda alat utama yang Anda perlukan untuk membuat bukti ZK. Ini mendukung pembuatan beragam program ZK, yang mencakup berbagai operasi bawaan yang dapat dibuktikan, termasuk aritmatika dasar, hashing, tanda tangan, operasi Boolean, perbandingan, dan banyak lagi. Dengan kerangka o1js, Anda dapat membangun zkApps di Protokol Mina, kontrak pintar yang dijalankan di sisi klien dan memiliki masukan pribadi.

Perlu disebutkan bahwa pada awal September 2023, tim 0(1)Labs mengumumkan bahwa mereka akan melakukan transisi dari SnarkyJS ke o1js dan menekankan komitmen mereka untuk meningkatkan kinerja. Catatan khusus adalah mereka mencapai pengurangan waktu pemuatan perpustakaan sebesar 3-4x, yang mengacu pada waktu yang diperlukan untuk mengimpor o1js, sebuah proses yang dapat memblokir thread utama. Untuk aplikasi web, waktu pemuatan sangat penting bagi waktu eksekusi Java dan rendering seluruh halaman. Selain itu, tim juga memperbarui Mina zkApp CLI untuk meningkatkan pengalaman pembuatan antarmuka pengguna, dan mengumumkan peningkatan lebih lanjut pada Archive Node API untuk meningkatkan keandalan dan kejelasannya.

Leo oleh Aleo

Blockchain Aleo unik di bidang kontrak pintar dan menekankan perlindungan privasi. Intinya adalah bahasa pemrograman Leo, bahasa yang diketik secara statis yang terinspirasi oleh Rust. Dirancang khusus untuk mengembangkan aplikasi pribadi, Leo memberdayakan pencipta yang ingin membangun ekosistem terdesentralisasi yang aman dan pribadi. Apa yang benar-benar unik tentang Leo adalah peran perintisnya dalam memperkenalkan perangkat komprehensif untuk aplikasi tanpa pengetahuan untuk tujuan umum. Toolkit ini mencakup kerangka pengujian, registri paket, parser impor, kompiler jarak jauh, dan generator teorema.

Leo dirancang oleh tim pengembang yang dipimpin oleh Howard Wu yang membayangkan sebuah teknologi yang akan memberdayakan pengembang untuk membangun aplikasi terdesentralisasi yang memprioritaskan privasi dan keamanan. Desain Leo mengacu pada prinsip Rust sambil menggabungkan beberapa elemen mirip Java untuk meningkatkan keakraban dan kenyamanan selama proses pengembangan. Selain itu, Leo bertujuan untuk mempercepat pengembangan dan menyederhanakan proses pengembangan dengan menyediakan platform pengujian terintegrasi, registri paket, dan konverter impor. Integrasi ini memungkinkan pengembang untuk fokus pada logika inti aplikasi mereka tanpa terbebani oleh masalah infrastruktur.

Fitur yang mencolok dari Leo adalah kompilernya, yang mengubah program menjadi format bukti R1CS tingkat rendah. Kompiler Leo unik dalam proses verifikasi formalnya yang ketat. Verifikasi ini penting karena kerentanan dapat muncul pada berbagai tahap, mulai dari pemrograman awal hingga audit dan kompilasi. Dengan melakukan pemeriksaan matematis yang ketat untuk memastikan bahwa kompiler konsisten dengan maksud pemrogram, Leo bertujuan untuk mengurangi risiko kesalahan yang tidak terdeteksi atau potensi kerentanan, terutama dalam konteks L2, ZK-rollup, atau program pribadi pada platform Leo.

Circom oleh iden3

Circom, DSL yang dirancang khusus untuk pengembangan sirkuit ZK, merupakan hasil kerja sama antara Jordi Baylina dan tim iden3. Kompiler Circom ditulis dalam Rust, dan tugas utamanya adalah mengkompilasi sirkuit yang ditulis dalam bahasa Circom. Khususnya, Circom telah menjadi pilihan utama untuk aplikasi ZK dunia nyata yang luar biasa, seperti Dark Forest dan Tornado Cash. Popularitasnya disebabkan oleh kinerjanya yang luar biasa, termasuk waktu pemeriksaan browser yang cepat melalui bukti WASM yang dioptimalkan, bukti sisi server yang efisien melalui rapidsnark, dan verifikasi on-chain yang efisien.

Namun, penting untuk disadari bahwa fungsi Circom terutama difokuskan pada pengembangan sirkuit ZK, yang mungkin membuatnya kurang cocok untuk menangani tugas komputasi yang lebih luas. Pengembang yang mencari lebih banyak fitur yang dapat memenuhi kebutuhan pengembangan yang lebih luas mungkin mendapati kemampuan Circom agak terbatas. Dalam hal ini, pengembang mungkin perlu menggabungkan bahasa atau kerangka pemrograman lain untuk memenuhi kebutuhan pengembangan yang lebih luas.

Artikel membahas bahasa pemrograman ZK Gambar dari Circom

Kompatibilitas Circom terutama difokuskan pada sistem ZKP yang banyak digunakan, seperti snarkjs dan libsnark. Meskipun kompatibilitas ini memastikan integrasi yang lancar dengan sistem yang banyak digunakan ini, hal ini juga berarti bahwa sirkuit Circom mewarisi kemampuan dan batasan spesifik yang terkait dengan ketergantungan ini. Pengembang yang lebih memilih atau membutuhkan sistem ZKP alternatif mungkin menghadapi tantangan kompatibilitas atau memerlukan pekerjaan tambahan untuk mengadaptasi dan mengintegrasikan sirkuit yang dihasilkan Circom ke dalam sistem pilihan mereka.

Mengintai oleh Lurk Lab

Lurk adalah dialek Lisp dengan cakupan statis yang dipengaruhi oleh Skema dan Common Lisp, dengan fitur unik: memungkinkan bukti langsung kebenaran eksekusi program menggunakan zk-SNARKs, memungkinkan verifikasi yang ringkas dan efisien.

Kegunaan utama Lurk meliputi:

  • Perhitungan yang dapat diverifikasi: Lurk memungkinkan Anda membuktikan kebenaran ekspresinya dalam kondisi tanpa pengetahuan, meningkatkan kepercayaan pada hasil perhitungan.
  • Tanpa pengetahuan: Pengguna dapat membuktikan pengetahuan tanpa mengungkapkan informasi spesifik di luar masukan publik, sehingga melindungi privasi.
  • Data yang dapat dialamatkan konten: Setiap program Lurk dilengkapi dengan pengidentifikasi konten unik (CID), sehingga kompatibel dengan IPFS dan IPLD.
  • Kelengkapan Turing: Lurk mendukung pembuatan dan pembuktian klaim komputasi yang sewenang-wenang.
  • Fungsi tingkat tinggi: Fungsi mengintai dapat menerima dan mengembalikan fungsi, memungkinkan pemrograman fungsional ekspresif.
  • Komputasi yang menangani data pribadi: Lurk memungkinkan untuk menangani data pribadi sambil memastikan keluaran yang benar tanpa mengorbankan privasi.

Lurk memanfaatkan sepenuhnya pengalokasi memori "kontra" Lisp saat membangun sirkuit tujuan umum. Pengalokasi ini menggabungkan ekspresi dan menghasilkan referensi melalui hash. Kuncinya adalah membuktikan bahwa kedua ekspresi tersebut memang memiliki hash pada referensi yang sama. Verifikasi ini memungkinkan Lurk untuk melakukan perhitungan dalam sirkuit snark.

Lurk sangat kaya fitur, termasuk dukungan untuk rekursi tak terbatas, loop, aliran kontrol bersyarat, dan beberapa sistem bukti backend, seperti Groth16, SnarkPack+ dan Nova. Fleksibilitas ini membuka pintu bagi berbagai aplikasi, termasuk komputasi verifikasi, pemrosesan data pribadi, dan mengeksekusi program lengkap Turing dalam sirkuit snark.

Ringkaslah

Dengan meningkatnya keragaman aplikasi ZK, DSL memiliki prospek yang luas untuk dikembangkan di bidang ZK. Kunci kesuksesan DSL adalah membangun komunitas yang berkembang dan perpustakaan yang kaya untuk memperkaya pengalaman pengembang. DSL yang memprioritaskan kompatibilitas dengan perpustakaan yang ada dapat memanfaatkan pengetahuan dan sumber daya komunitas pengembang yang lebih luas. Pendekatan ini memfasilitasi integrasi yang lebih lancar, mempercepat pengembangan, dan memberikan fleksibilitas yang lebih besar saat mengimplementasikan aplikasi ZK. Upaya kolaboratif ini sangat penting untuk mengembangkan ekosistem yang lebih kuat di sekitar DSL, memberikan manfaat nyata bagi pengembang dan selanjutnya akan mendorong adopsi dan efektivitas teknologi ZK.

Lihat Asli
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
  • Hadiah
  • Komentar
  • Bagikan
Komentar
0/400
Tidak ada komentar
  • Sematkan
Perdagangkan Kripto Di Mana Saja Kapan Saja
qrCode
Pindai untuk mengunduh aplikasi Gate
Komunitas
Bahasa Indonesia
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)