ZK programlama dilini tartışan bir makale

Sıfır bilgi kanıtı (ZKP), giriş verilerinin gizliliğini korurken hesaplamaların doğruluğunu doğrulayabilen güçlü bir şifreleme aracıdır. Bu kritik altyapının ayrılmaz bir parçası olan alana özgü diller (DSL'ler), ZKP devrelerinin geliştirme ve doğrulama sürecinin basitleştirilmesinde hayati bir rol oynamaktadır. Soyut kavramları, sistemi kanıtlamak için gereken hassas devre gösterimlerine bağlamada önemli bir rol oynarlar ve ikisi arasında önemli bir köprü görevi görürler.

Sistemlerin kanıtlanmasındaki en önemli zorluklardan biri soyut üst düzey kavramları gerçek devrelere dönüştürmektir. Ancak DSL'lerin ortaya çıkışı, bu soyut kavramların yapılandırılmış ifadesini daha somut ve ulaşılabilir bir şekilde kolaylaştırarak bu zorluğun üstesinden gelmektedir.

Geçtiğimiz on yılda DSL'lerin sayısında ve çeşitliliğinde önemli bir artışa tanık olduk. Bu alandaki faaliyet, Noir, Leo, Çinko vb. dahil olmak üzere çeşitli devre dillerinin geliştirilmesine yansır. İster Circom gibi genel amaçlı bir seçeneğe, ister Kahire gibi belirli bir platform için özelleştirilmiş bir çözüme ihtiyacınız olsun, ZKP devrelerini yazmak için çok çeşitli diller ve çerçeveler arasından seçim yapabilirsiniz.

Bu yazıda geliştiricilerin aktif olarak kullandığı ana ZK programlama dillerini inceleyeceğiz ve her dilin en iyi özelliklerini analiz edeceğiz.

TLDR;

*ZK programlama dilini tartışan bir makale

Kahire StarkWare tarafından

STARK kanıtlarını destekleyen genel amaçlı bilgi işlem programlarının temel dili olan Kahire, Ethereum ana ağındaki uygulamaların ölçeklenebilirliğini artırarak StarkNet ve StarkEx'in başarısında önemli bir rol oynadı. Kahire'nin dYdX, Sorare, Immutable X vb. dahil olmak üzere çeşitli uygulamaların desteklenmesinde önemli bir rol oynadığını belirtmekte fayda var. "Kahire" adı "CPU Cebirsel Orta Düzey Gösterimi" kısaltmasından gelmektedir. Sıfır bilgi kanıtları alanında, montaj diline benzer bir rol oynayarak C, C++ veya Solidity gibi düşük seviyeli programlama dillerine aşina olan geliştiricilerin başlamasını kolaylaştırır.

Rust'tan ilham alan Cairo, geliştiricilere güvenlik ve kullanıcı dostu geliştirmeye odaklanarak Starknet akıllı sözleşmeleri oluşturma yetkisi veriyor. Cairo, ZK devrelerinin oluşturulmasını kolaylaştıran ve kullanıcıların Kahire programları içerisinde çeşitli görevleri gerçekleştirmesine olanak tanıyan güçlü bir sözdizimine sahiptir. Ayrıca, Kahire'nin önemli bir avantajı, yeni özelliklerin ve yeteneklerin esnek bir şekilde sunulmasına olanak tanıyan genişletilebilirliğidir.

ZK sistemlerinde verimlilik ve ölçeklenebilirlik çok önemli faktörlerdir ve Kahire, bu iki hususu vurgulayarak bu gereksinimi karşılamaktadır. Dil, genellikle ZK devreleriyle ilişkili hesaplama yükünü hafifletmek için kısıtlama azaltma ve döngü ortadan kaldırma dahil olmak üzere optimizasyon stratejilerini entegre eder. Kahire'nin devre tasarımının optimizasyonu, daha hızlı kanıt oluşturma ve doğrulamayla sonuçlanır, bu da onu yüksek verim ve minimum gecikme gerektiren uygulamalar için ideal kılar.

Kahire'nin genişlemesi etkileyici oldu; son iki yılda tam zamanlı geliştiricilerin sayısında olağanüstü bir artış yaşandı. Bu artış Kahire'nin uyarlanabilirliğini vurguluyor çünkü Kahire'nin kullanımları blockchain ile sınırlı değil, hesaplamalı doğrulamanın gerekli olduğu her bağlamda önem taşıyor. Sonuç olarak, geliştiricilerin Kahire'yi benimsemesinde önemli bir artış bekleyebiliriz.

28 Eylül 2023'te Starknet, programlama dili Cairo v2.3.0'da önemli bir yükseltme başlattı. Bu sürüm, yeni özellikler, depolama seçenekleri ve etkinlik yönetimi sunarak akıllı sözleşmelerin potansiyelini artırarak sözleşmeleri daha modüler hale getirme konusunda büyük bir adıma işaret ediyor. Bu bileşenlerin entegrasyonu, sözleşme işlevselliğini genişletmek için esnek bir yol sağlayarak üçüncü taraf modüllerin sözleşmenin işlevselliğini geliştirmesine olanak tanır.

ZkSync'ten Çinko

Çinko, zkSync platformunda akıllı sözleşmeler ve SNARK devreleri oluşturmak için tasarlanmış bir programlama dilidir. Rust sözdizimini kullanır, Solidity öğelerini içerir ve benzersiz özellikler sunar.

Çinko'yu benzersiz kılan, kullanıcı dostu olmasıdır. Güvenli kod yazmak için birinci dereceden kısıtlama sistemlerinin (R1CS) tüm karmaşık ayrıntılarını anlamanıza gerek yoktur. Çinko değişmezliği vurgulayarak onu doğası gereği işlevsel kılar. Bu, değişmez verilere ve işlev değerlendirmesine öncelik verdiği, böylece yan etkileri azalttığı ve daha temiz, hataya daha az eğilimli akıllı sözleşme kodu yazmayı teşvik ettiği anlamına gelir.

Ayrıca Çinko, potansiyel taşmaların önlenmesi için güvenli matematiksel işlemler içerir ve tüm operasyonların güvenliğini sağlar. Sonsuz döngü ve özyineleme olmaması gibi bazı sınırlamaları olsa da Zinc, konsol günlük izleme yoluyla hata ayıklama sürecini basitleştirir. Bu izler, test ağı veya ana ağdaki sorunları izleme ve çözme sürecini basitleştirerek hata ayıklama deneyimini geliştirir.

Aztek'ten Noir

Noir, Aztec tarafından Rust'a dayalı olarak geliştirilen, derinlemesine kriptografi bilgisi olmadan ZK devrelerinin ve ZK programlarının oluşturulmasını kolaylaştırmak için tasarlanmış açık kaynaklı bir DSL'dir. Başlaması en kolay dillerden biri olarak kabul edilir ve herhangi bir kanıt sistemiyle uyumlu ZK uygulamaları yazmaya uygundur. Noir güvenlik, basitlik ve performansa odaklanır. Yüksek performansı korurken, kriptografik güvenliği soyutlayan ve temel kriptografik temel öğelerin kullanımını basitleştiren, yüksek düzeyde Rust benzeri bir sözdizimi sağlar.

Noir, ZKP tarafından sağlanan gizlilik koruma özelliklerinden yararlanabilecek uygulama yelpazesini genişletme ve böylece gizlilik ve doğrulama verimliliğini artırma konusunda önemli avantajlara sahiptir. Noir, Soyut Devre Ara Temsili (Acer) adı verilen bir ara temsil halinde derlenir ve bu daha sonra R1CS'ye derlenebilir. Arka uç kanıt sistemini dilin kendisinden ayırmak, Noir'ın Aztec Brettenberg, Turbo Plonk gibi çeşitli kanıt sistemlerini ve Groth16 ve Halo2 gibi gelecekteki potansiyel entegrasyonları desteklemesine olanak tanır.

Dil, SHA-256 (sabit boyutlu bir çıktı üreten bir şifreleme karma işlevi) ve Pedersen-Merkle kontrolleri (veri bütünlüğünü ve tutarlılık şifrelemesini sağlamak için Pedersen taahhütlerini ve Merkle ağaçlarını kullanan bir yöntem) gibi etkili özellikleri içeren standart bir kitaplık sağlar. doğrulama teknolojisi). Noir'ın tasarımı Rust'a benzer ve işlevler, alt modüller, kullanıcı tanımlı türler (yapılar), koşullar, döngüler ve genel sabitler gibi uygulama geliştiricilerinin aşina olduğu özellikleri içerir. Ayrıca, Noir'in ifade yeteneklerini daha da geliştirmek amacıyla jenerik ve birinci sınıf işlevler geliştirmek için sürekli çaba sarf edilmektedir.

Noir'ın hala devam eden bir çalışma olduğunu ve bazı sınırlamalar ve potansiyel hatalar olabileceğini unutmamak gerekir. Ancak geliştirme ekibi dili sürekli olarak iyileştirmeye ve optimize etmeye kararlıdır.

o1js by 0(1) Labs

Eskiden SnarkyJS olarak bilinen o1js, SNARK programlama dilini kullanarak akıllı sözleşmeler oluşturmak için 0(1)Labs tarafından geliştirilen bir Tür kütüphanesidir. Geliştiricilere kolay erişim ve kullanım kolaylığı sağlamak için Node.js gibi yerleşik teknolojilerden ve tarayıcı uyumluluğundan yararlanır.

o1js, Java ve TypeScript kitaplıkları ve araçlarıyla sorunsuz bir şekilde bütünleşerek geliştiricilere güçlü bir ekosistem ve kapsamlı topluluk desteği sağlayabilir. Bu entegrasyon, geliştirme sürecini basitleştirir ve yeni bir geliştirme ortamının benimsenmesiyle ilişkili öğrenme eğrisini azaltır. Buna ek olarak, geliştiricilerin geliştirme deneyimini geliştirmek için kod tamamlama, sözdizimi vurgulama ve hata ayıklama gibi özelliklerden tam olarak yararlanmasına olanak tanıyan, yaygın olarak kullanılan bir kod düzenleyicisi olan Visual Studio Code'u (VS Code) tam olarak destekler.

o1js aslında ZK kanıtları oluşturmak için ihtiyaç duyduğunuz temel araçları sağlayan çok yönlü bir ZK çerçevesidir. Temel aritmetik, karma, imzalar, Boolean işlemleri, karşılaştırmalar ve daha fazlasını içeren çeşitli yerleşik kanıtlanabilir işlemleri kapsayan çeşitli ZK programlarının oluşturulmasını destekler. o1js çerçevesiyle Mina Protokolü üzerinde zkApp'ler, istemci tarafında yürütülen ve özel girişlere sahip akıllı sözleşmeler oluşturabilirsiniz.

Eylül 2023'ün başlarında 0(1)Labs ekibinin SnarkyJS'den o1js'ye geçeceğini duyurduğunu ve performansı iyileştirme konusundaki kararlılıklarını vurguladığını belirtmekte fayda var. Ana iş parçacığını engelleyebilen bir işlem olan o1js'yi içe aktarmak için gereken süreye karşılık gelen kitaplık yükleme süresinde 3-4 kat azalma elde etmeleri özellikle dikkat çekicidir. Web uygulamaları için yükleme süresi, hem Java yürütme zamanlaması hem de tüm sayfanın oluşturulması açısından büyük önem taşır. Ekip ayrıca kullanıcı arayüzü oluşturma deneyimini geliştirmek için Mina zkApp CLI'yi güncelledi ve güvenilirliğini ve netliğini artırmak için Archive Node API'sinde daha fazla iyileştirme yapıldığını duyurdu.

Leo Aleo'dan

Aleo blockchain akıllı sözleşmeler alanında benzersizdir ve gizliliğin korunmasını vurgular. Özünde, Rust'tan ilham alan statik olarak yazılmış bir dil olan Leo programlama dili bulunur. Özel uygulamalar geliştirmek için özel olarak tasarlanan Leo, güvenli ve özel, merkezi olmayan bir ekosistem oluşturmak isteyen yaratıcılara güç veriyor. Leo'yu gerçekten benzersiz kılan şey, genel amaçlı sıfır bilgi uygulamalarına yönelik kapsamlı bir araç seti sunmadaki öncü rolüdür. Bu araç seti bir test çerçevesi, paket kaydı, içe aktarma ayrıştırıcısı, uzak derleyici ve teorem oluşturucuyu içerir.

Leo, geliştiricilerin mahremiyet ve güvenliğe öncelik veren merkezi olmayan uygulamalar oluşturmasını sağlayacak bir teknoloji öngören Howard Wu liderliğindeki bir geliştirici ekibi tarafından tasarlandı. Leo'nun tasarımı Rust ilkelerinden yararlanırken, geliştirme sürecinde aşinalık ve rahatlığı artırmak için Java benzeri bazı unsurları da içeriyor. Ayrıca Leo, entegre bir test platformu, paket kaydı ve içe aktarma dönüştürücüsü sağlayarak geliştirmeyi hızlandırmayı ve geliştirme sürecini basitleştirmeyi hedefliyor. Bu entegrasyon, geliştiricilerin altyapı sorunlarından etkilenmeden uygulamalarının temel mantığına odaklanmasına olanak tanır.

Leo'nun çarpıcı bir özelliği, programları düşük seviyeli R1CS prova formatına dönüştüren derleyicisidir. Leo derleyicisi, sıkı resmi doğrulama süreci açısından benzersizdir. Bu doğrulama kritiktir çünkü güvenlik açıkları ilk programlamadan denetim ve derlemeye kadar birçok aşamada ortaya çıkabilir. Leo, derleyicinin programcının amacı ile tutarlı olmasını sağlamak için sıkı matematiksel kontroller gerçekleştirerek, özellikle L2 bağlamlarında, ZK toplamalarında veya Leo platformundaki özel programlarda tespit edilemeyen hatalar veya potansiyel güvenlik açıkları riskini azaltmayı amaçlamaktadır.

Circom by id3

ZK devre geliştirmesi için özel olarak tasarlanmış bir DSL olan Circom, Jordi Baylina ve iden3 ekibi arasındaki ortak çabanın sonucudur. Circom derleyicisi Rust'ta yazılmıştır ve ana görevi Circom dilinde yazılmış devreleri derlemektir. Özellikle Circom, Dark Forest ve Tornado Cash gibi olağanüstü gerçek dünya ZK uygulamaları için tercih edilen seçim haline geldi. Popülaritesi, optimize edilmiş WASM provaları aracılığıyla hızlı tarayıcı prova süreleri, Rapidsnark aracılığıyla verimli sunucu tarafı provaları ve etkili zincir üzerinde doğrulama dahil olmak üzere mükemmel performansından kaynaklanmaktadır.

Bununla birlikte, Circom'un işlevselliğinin öncelikli olarak ZK devre geliştirmeye odaklandığının farkına varmak önemlidir, bu da onu daha geniş bir yelpazedeki bilgi işlem görevlerini yerine getirmek için daha az uygun hale getirebilir. Daha geniş bir yelpazedeki geliştirme ihtiyaçlarını karşılayabilecek daha fazla özellik arayan geliştiriciler, Circom'un yeteneklerinin bir miktar sınırlı olduğunu görebilirler. Bu durumda geliştiricilerin daha geniş geliştirme ihtiyaçlarını karşılamak için diğer programlama dillerini veya çerçevelerini birleştirmeleri gerekebilir.

ZK programlama dilini tartışan bir makale Circom'dan resimler

Circom'un uyumluluğu esas olarak snarkjs ve libsnark gibi yaygın olarak kullanılan ZKP sistemlerine odaklanmıştır. Bu uyumluluk, yaygın olarak kullanılan sistemlerle kusursuz entegrasyonu sağlarken, aynı zamanda Circom devrelerinin bu bağımlılıklarla ilişkili belirli yetenekleri ve sınırlamaları devraldığı anlamına da gelir. Alternatif bir ZKP sistemini tercih eden veya buna ihtiyaç duyan geliştiriciler uyumluluk sorunlarıyla karşılaşabilir veya Circom tarafından üretilen devreleri tercih ettikleri sisteme uyarlamak ve entegre etmek için ek çalışmaya ihtiyaç duyabilir.

Lurk Lab tarafından Lurk

Lurk, Scheme ve Common Lisp'ten etkilenen statik kapsamlı bir Lisp lehçesidir ve benzersiz bir özelliğe sahiptir: zk-SNARK'ları kullanarak program yürütme doğruluğunun doğrudan kanıtlanmasına olanak tanır, kompakt ve etkili doğrulamayı mümkün kılar.

Lurk'un ana kullanım alanları şunlardır:

  • Doğrulanabilir hesaplama: Lurk, sıfır bilgi koşulları altında ifadelerinin doğruluğunu kanıtlamanıza olanak tanıyarak hesaplama sonuçlarına olan güveni artırır.
  • Sıfır bilgi: Kullanıcılar, kamuya açık girdinin ötesinde belirli bilgileri açıklamadan bilgilerini kanıtlayabilir, böylece gizliliği koruyabilirler.
  • İçerik adreslenebilir veriler: Her Lurk programı, IPFS ve IPLD ile uyumlu olmasını sağlayan benzersiz bir içerik tanımlayıcı (CID) ile donatılmıştır.
  • Turing tamlığı: Lurk, keyfi hesaplamalı iddiaların oluşturulmasını ve kanıtlanmasını destekler.
  • Yüksek dereceli işlevler: Lurk işlevleri, işlevleri kabul edebilir ve geri döndürebilir, böylece anlamlı işlevsel programlamaya olanak sağlanır.
  • Özel verileri işleyen hesaplama: Lurk, gizlilikten ödün vermeden kanıtlanabilir şekilde doğru çıktı sağlarken özel verilerin işlenmesini mümkün kılar.

Lurk, genel amaçlı devreler oluştururken Lisp'in "eksileri" bellek ayırıcısının tüm avantajlarından yararlanır. Bu ayırıcı, ifadeleri birleştirir ve karmalar aracılığıyla referanslar üretir. Anahtar, iki ifadenin gerçekten de aynı referansa sahip olduğunu kanıtlamaktır. Bu doğrulama, Lurk'un snark devresi içerisinde hesaplamalar yapmasını sağlar.

Lurk, sonsuz özyineleme, döngüler, koşullu kontrol akışı ve Groth16, SnarkPack+ ve Nova gibi çoklu arka uç kanıtlama sistemleri desteği de dahil olmak üzere çok zengin özelliklere sahiptir. Bu çok yönlülük, doğrulama hesaplaması, özel veri işleme ve snark devreleri içerisinde Turing-complete programlarının yürütülmesi de dahil olmak üzere çeşitli uygulamaların kapısını açar.

Özetle

ZK uygulamalarının çeşitliliğinin artmasıyla birlikte DSL'in ZK alanında gelişme potansiyeli geniştir. Başarılı bir DSL'in anahtarı, geliştirici deneyimini zenginleştirecek gelişen bir topluluk ve zengin kütüphaneler oluşturmaktır. Mevcut kitaplıklarla uyumluluğa öncelik veren DSL'ler, daha geniş geliştirici topluluğunun bilgi ve kaynaklarından yararlanabilir. Bu yaklaşım daha sorunsuz entegrasyonu kolaylaştırır, geliştirmeyi hızlandırır ve ZK uygulamaları uygulanırken daha fazla esneklik sağlar. Bu işbirlikçi çaba, DSL'ler çevresinde daha sağlam bir ekosistemin geliştirilmesi, geliştiricilere somut faydalar sağlanması ve ZK teknolojisinin benimsenmesini ve etkinliğini daha da artırma açısından kritik öneme sahiptir.

View Original
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.
  • Reward
  • Comment
  • Share
Comment
0/400
No comments
  • Pin
Trade Crypto Anywhere Anytime
qrCode
Scan to download Gate app
Community
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)