Sıfır bilgi ispatları (ZKP'ler), merkezi olmayan sistemler için giderek daha önemli hale geliyor. ZK, ilk olarak ZCash gibi projelerdeki başarısıyla kamuoyunun dikkatini çekti, ancak bugün ZK, Ethereum için bir ölçeklendirme çözümü olarak biliniyor.
Rollup'lar olarak da bilinen ZK, Katman 2'den (ör. Scroll ve Polygon) yararlanarak, zkEVM'ler (zk Ethereum Sanal Makinesi) geliştiriliyor. Bu zkEVM'ler bir grup işlemi işler ve küçük bir kanıt (kilobayt cinsinden) oluşturur. Bu kanıtlama, tüm ağa işlem grubunun geçerli ve doğru olduğunu doğrulamak için kullanılabilir.
Ancak, kullanımları burada bitmiyor. ZK, çeşitli ilginç uygulamalara izin verir.
Özel Katman 1 – Örneğin Mina, blok zincirindeki işlemlerin ve verilerin ayrıntılarını gizleyerek, kullanıcıların işlemin ayrıntılarını açıklamadan yalnızca işlemlerinin geçerliliğini kanıtlamalarına olanak tanır. neptune.cash ve Aleo da çok ilginç projeler.
Merkezi olmayan bulut platformu - FedML ve together.xyz, makine öğrenimi (ML) modellerinin merkezi olmayan bir şekilde eğitilmesine, hesaplamaların ağa dış kaynak sağlanmasına ve ZKP kullanarak hesaplamaların doğruluğunun doğrulanmasına olanak tanır. Druglike, benzer teknolojileri kullanarak daha açık bir ilaç keşif platformu inşa ediyor.
Merkezi Olmayan Depolama - Filecoin, bulut depolamada devrim yaratıyor ve ZK, depolama sağlayıcılarının belirli bir süre boyunca doğru verileri depoladıklarını kanıtlamalarına olanak tanıyor.
OYUN - Darkforest'ın gerçek zamanlı kanıt gerektiren daha gelişmiş bir sürümü görünebilir. ZK ayrıca hile olasılığını azaltmak için oyunu genişletebilir. Belki de oyunun kendi barındırma için ödeme yapmasını sağlamak için merkezi olmayan bir bulut platformuyla da çalışın!
Kimlik - Merkezi olmayan kimlik doğrulama artık ZK aracılığıyla da mümkün. Bu fikir etrafında bir dizi ilginç proje inşa ediliyor. Örneğin, not defteri ve zkemail (hakkında bilgi edinmeniz önerilir).
ZK ve merkezi olmayan sistemlerin etkisi çok büyük, ancak hikayenin gelişimi mükemmel değil ve bugün hala birçok engel ve zorluk var. İspat üretme süreci çok kaynak yoğundur ve birçok karmaşık matematiksel işlem gerektirir. Geliştiriciler, hem kanıt oluşturma hem de doğrulama süreçleri için ZK teknolojisini kullanarak daha iddialı ve karmaşık protokoller ve sistemler oluşturmaya çalışırken, geliştiriciler daha küçük kanıt boyutları, daha hızlı performans ve daha iyi optimizasyonlar talep ediyor.
Bu makalede, donanım hızlandırmanın mevcut durumunu ve ZK'nın benimsenmesinde nasıl önemli bir rol oynayacağını keşfedeceğiz.
Snark, Stark'a Karşı
Günümüzde iki popüler sıfır bilgi tekniği vardır, zk-STARK ve zk-SNARK (bu makalede Bulletproofs'u görmezden geldik).
Yukarıda bahsedildiği gibi, ikisi arasında farklılıklar ve ödünleşimler vardır. En önemli nokta, zk-SNARK tabanlı bir sistemin güvenilir kurulumunun, güvenilir kurulum sürecine dahil olan en az bir dürüst katılımcıya ve sürecin sonunda anahtarlarının imha edilmesine dayanmasıdır. Zincir üstü doğrulama açısından, zk-SNARK'lar gaz ücretleri açısından çok daha ucuzdur. Buna ek olarak, zk-SNARK'ların kanıtları da önemli ölçüde daha küçüktür ve bu da onları zincir üzerinde saklamayı daha ucuz hale getirir.
Şu anda zk-SNARK'lar, zk-STARK'lardan daha popülerdir. Bunun en olası nedeni, zk-SNARK'ların çok daha uzun bir geçmişe sahip olmasıdır. Diğer bir olası neden de, ilk ZK blok zincirlerinden biri olan Zcash'in zk-SNARK'ları kullanmasıdır, bu nedenle mevcut geliştirme araçlarının ve belgelerinin çoğu zk-SNARK ekosistemi etrafında dönmektedir.
ZK Uygulaması Nasıl Oluşturulur
Geliştiriciler, bir ZK uygulamasının geliştirilmesini tamamlamak için iki bileşene ihtiyaç duyabilir
ZK dostu bir ifade hesaplama yöntemi (DSL veya düşük seviyeli kitaplık).
İki işlevi uygulayan bir kanıtlama sistemi: Kanıtla ve Doğrula.
DSL'ler (etki alanına özgü dil) ve alt düzey kitaplıklar
DSL'ler söz konusu olduğunda, Circom, Halo2, Noir ve çok daha fazlası gibi birçok seçenek vardır. Circom muhtemelen şu anda en popüler olanıdır.
Düşük seviyeli kütüphaneler söz konusu olduğunda, popüler bir örnek Arkworks'tür; Bir CUDA hızlandırma kütüphanesi olan ICICLE gibi geliştirilmekte olan kütüphaneler de vardır.
Bu DSL'ler, sınırlı sistemlerin çıktısını almak için tasarlanmıştır. Genellikle x:= y *z şeklinde değerlendirilen normal programın aksine, kısıtlı formdaki aynı program daha çok xy * z = 0'a benziyor. Programı bir kısıtlamalar sistemi olarak temsil ederek, toplama veya çarpma gibi işlemlerin tek bir kısıtlama ile temsil edilebileceğini buluruz. Ancak, bit işlemleri gibi daha karmaşık işlemler yüzlerce kısıtlama gerektirebilir!
Sonuç olarak, bazı hash fonksiyonlarını ZK dostu programlar olarak uygulamak karmaşık hale gelir. Sıfır bilgi ispatlarında, hash fonksiyonları genellikle verilerin bütünlüğünü sağlamak ve/veya verilerin belirli özelliklerini doğrulamak için kullanılır, ancak bit işlemlerinin çok sayıda kısıtlaması nedeniyle, bazı hash fonksiyonlarının sıfır bilgi ispatlarının ortamına uyarlanması zordur. Bu karmaşıklık, kanıt oluşturma ve doğrulamanın verimliliğini etkileyebilir ve bu nedenle geliştiricilerin ZK tabanlı uygulamalar oluştururken göz önünde bulundurması ve çözmesi gereken bir sorun haline gelebilir
Sonuç olarak, ZK dostu olmak için bazı hash fonksiyonlarını uygulamak karmaşık hale gelir.
Kanıtlanması
Bir ispat sistemi, iki ana görevi yerine getiren bir yazılım parçasına benzetilebilir: ispat üretmek ve ispatları doğrulamak. Prova sistemleri tipik olarak devre, kanıt ve genel/özel parametreleri girdi olarak kabul eder.
En popüler iki prova sistemi Groth16 ve PLONK serisidir (Plonk, HyperPlonk, UltraPlonk)
| | | | | | |
| --- | --- | --- | --- | --- | --- |
| | Güvenilir Kurulum | Prova boyutu | Kanıtlayıcı Karmaşıklığı | Doğrulayıcı Karmaşıklığı | Esneklik |
| Et suyu16 | Devreye özel | küçük | Düşük | Düşük | Düşük |
| Plonk | Evrensel | Büyük | Yüksek | 常数 | Yüksek |
表2:Groth16, Plonk'a karşı
Tablo 2'de gösterildiği gibi, Groth16 güvenilir bir kurulum süreci gerektirir, ancak Groth16 bize daha hızlı kanıt ve doğrulama sürelerinin yanı sıra sabit bir kanıt boyutu sağlar.
Plonk, her prova oluşturulduğunda çalıştırdığınız devre için bir ön işleme aşaması gerçekleştiren genel bir kurulum sağlar. Birçok devreyi desteklemesine rağmen, Plonk'un doğrulama süresi sabittir.
İkisi arasında kısıtlamalar açısından da farklılıklar vardır. Groth16, kısıtlama boyutu açısından doğrusal olarak büyür ve esneklikten yoksundur, Plonk ise daha esnektir.
Genel olarak, performansın ZK uygulamanızdaki kısıtlamaların sayısıyla doğrudan ilişkili olduğunu anlayın. Ne kadar çok kısıtlama olursa, kanıtlayıcının hesaplaması gereken o kadar fazla işlem vardır.
Darboğaz
İspat sistemi iki ana matematiksel işlemden oluşur: çok skaler çarpma (MSM) ve hızlı Fourier dönüşümü (FFT). Bugün, her ikisinin de var olduğu, MSM'nin çalışma zamanının yaklaşık %60'ını kaplayabildiği, FFT'nin ise yaklaşık %30'unu kaplayabileceği sistemleri keşfedeceğiz.
MSM, çoğu durumda makinede çok fazla bellek tüketen ve aynı zamanda birçok skaler çarpma işlemi gerçekleştiren çok fazla bellek erişimi gerektirir.
FFT algoritmaları, dönüşümleri gerçekleştirmek için genellikle giriş verilerinin belirli bir sıraya göre yeniden düzenlenmesini gerektirir. Bu, çok fazla veri hareketi gerektirebilir ve özellikle büyük giriş boyutları için bir darboğaz olabilir. Önbellek kullanımı, bellek erişim desenleri önbellek hiyerarşisine uymuyorsa da bir sorun olabilir.
**Bu durumda, ZKP'nin performansını tam olarak optimize etmenin tek yolu donanım hızlandırmasıdır. **
Donanım Hızlandırma
Donanım hızlandırma söz konusu olduğunda, bize ASIC'lerin ve GPU'ların Bitcoin ve Ethereum madenciliğine nasıl hakim olduğunu hatırlatıyor.
Yazılım optimizasyonları eşit derecede önemli ve değerli olsa da, sınırlamaları vardır. Öte yandan donanım optimizasyonu, iş parçacığı senkronizasyonunu veya vektörleştirmeyi azaltmak gibi birden çok işlem birimine sahip FPGA'lar tasarlayarak paralelliği iyileştirebilir. Bellek erişimi, bellek hiyerarşileri ve erişim düzenleri iyileştirilerek daha verimli bir şekilde optimize edilebilir.
Şimdi ZKP alanında, ana eğilim değişmiş gibi görünüyor: GPU'lar ve FPGA'lar.
Kısa vadede, GPU'lar, özellikle ETH'nin hisse ispatına (POS) geçmesinden ve çok sayıda GPU madencisini boşta ve beklemede bıraktıktan sonra fiyat açısından bir avantaja sahiptir. Ek olarak, GPU'lar kısa geliştirme döngüleri avantajına sahiptir ve geliştiricilere çok sayıda "tak ve çalıştır" paralelliği sağlar.
Bununla birlikte, FPGA'lar, özellikle form faktörlerini ve güç tüketimini karşılaştırırken yetişmelidir. FPGA'lar ayrıca yüksek hızlı veri akışları için daha düşük gecikme süresi sağlar. Birden çok FPGA birlikte kümelendiğinde, GPU kümelerine kıyasla daha iyi performans sağlarlar.
GPU VE FPGA
GPU:
Geliştirme süresi: GPU'lar hızlı geliştirme süresi sağlar. CUDA ve OpenCL gibi çerçeveler için geliştirici belgeleri iyi geliştirilmiş ve popülerdir.
Güç tüketimi: GPU'lar çok "güç tüketir". Geliştiriciler veri düzeyinde paralellik ve iş parçacığı düzeyinde paralellikten yararlansa bile, GPU'lar yine de çok fazla güç tüketir.
Kullanılabilirlik: Tüketici sınıfı GPU'lar ucuzdur ve şu anda kolayca temin edilebilir.
FPGA:
Geliştirme döngüsü: FPGA'lar daha karmaşık bir geliştirme döngüsüne sahiptir ve daha uzman mühendisler gerektirir. FPGA'lar, mühendislerin GPU'ların yapamayacağı birçok "düşük düzeyli" optimizasyon elde etmesine olanak tanır.
Gecikme süresi: FPGA'lar, özellikle büyük veri akışlarını işlerken daha düşük gecikme süresi sağlar.
Maliyet ve Kullanılabilirlik: FPGA'lar GPU'lardan daha pahalıdır ve GPU'lar kadar kolay bulunmaz.
ZPRIZE
Günümüzde, donanım optimizasyonu ve ZKP darboğazı söz konusu olduğunda, kaçınılması mümkün olmayan bir rekabet var - ZPRIZE
ZPrize şu anda ZK alanındaki en önemli girişimlerden biri. ZPrize, ekipleri ZKP'nin temel darboğazları (ör. MSM, NTT, Poseidon vb.) için birden fazla platformda (ör. FPGA'lar, GPU'lar, mobil cihazlar ve tarayıcılar) gecikme, verim ve verimliliğe dayalı donanım hızlandırma geliştirmeye teşvik eden bir yarışmadır.
Sonuç çok ilginçti. Örneğin, GPU iyileştirmeleri çok büyük:
2^26'daki MSM, 5.86 saniyeden 2.52 saniyeye %131 arttı. Öte yandan, FPGA çözümleri, karşılaştırılacak önceki kıyaslamalara sahip olan GPU sonuçlarına kıyasla herhangi bir kıyaslamaya sahip olma eğilimindedir ve çoğu FPGA çözümü, gelecekte iyileştirilmesi beklenen bu tür algoritmalarla ilk kez açık kaynaklıdır.
Bu sonuçlar, çoğu geliştiricinin donanım hızlandırma çözümlerini geliştirmede kendilerini rahat hissettikleri yönü göstermektedir. Birçok takım GPU kategorisi için yarışır, ancak yalnızca küçük bir yüzdesi FPGA kategorisi için yarışır. FPGA'lar için geliştirme yaparken deneyim eksikliğinden mi yoksa çoğu FPGA şirketinin/ekibinin çözümlerini ticari olarak satmak için gizlice geliştirmeyi mi seçtiğinden emin değilim.
ZPrize, topluluğa çok ilginç araştırmalar sağladı. ZPrize'ın daha fazla turu başladıkça, giderek daha ilginç çözümler ve sorunların ortaya çıktığını göreceğiz.
Donanım hızlandırmanın pratik örnekleri
Örnek olarak Groth16'yı ele alırsak, Groth16 için rapidsnark uygulamasını incelersek, iki ana işlemin gerçekleştirildiğini gözlemleyebiliriz: FFT (Hızlı Fourier Dönüşümü) ve MSM (Çok Skaler Çarpma); Bu iki temel işlem birçok ispat sisteminde ortaktır. Yürütme süreleri, devredeki kısıtlamaların sayısı ile doğrudan ilgilidir. Doğal olarak, daha karmaşık devreler yazıldıkça kısıtlamaların sayısı artar.
FFT ve MSM işlemlerinin hesaplama açısından ne kadar yoğun olduğunu anlamak için Ingonyama'nın Groth16 devresi (Filecoin'in 32 GB'lık bir sektörde gerçekleştirilen Vanilla C2 işlemi) kıyaslamasına göz atabiliriz ve sonuçlar aşağıdaki gibidir
Yukarıdaki şekilde gösterildiği gibi, MSM (Çok Skaler Çarpma) zaman alıcı olabilir ve birçok kanıtlayıcı için ciddi bir performans darboğazı olabilir, bu da MSM'yi hızlandırılması gereken en önemli şifreleme operatörlerinden biri haline getirir.
Peki, MSM, diğer ZK kanıt sistemlerinde kanıtlayıcı için ne kadar hesaplama yapar? Bu, aşağıdaki şekilde gösterilmiştir
Plonk'ta MSM, Ingonyama'nın en son makalesi Pipe MSM'de gösterildiği gibi, genel giderlerin %85'inden fazlasını oluşturuyor. **
Peki donanım hızlandırma MSM'yi nasıl hızlandırmalı? **
MSM
MSM'nin nasıl hızlandırılacağı hakkında konuşmadan önce, MSM'nin ne olduğunu anlamamız gerekiyor
Çok Skaler Çarpma (MSM), aşağıdaki formda çoklu skaler çarpımların toplamını hesaplamak için kullanılan bir algoritmadır
burada G eliptik eğri grubundaki bir noktadır, a bir skalerdir ve MSM'nin sonucu da bir eliptik eğri noktası olacaktır
MSM'yi iki ana alt bileşene ayırabiliriz:
Modüler Çarpma
Eliptik Eğri Noktası Eklemeleri
Naif bir P+Q işlemi gerçekleştirmek için örnek olarak Affine(x,y)'yi ele alalım.
P + Q = R'yi hesaplamak istediğimizde, k ve P,Q'nun apsisi ile bir k değeri hesaplamamız gerekir.
R'nin koordinatlarını alın. Hesaplama işlemi yukarıdaki gibidir, bu işlemde 2 çarpım, 1 kare işlemi, 1 ters işlem ve birkaç kez toplama ve çıkarma işlemleri yapıyoruz. Yukarıdaki işlemlerin sonlu bir alanda, yani mod P altında gerçekleştirildiğini belirtmekte fayda var. Gerçekte, P çok büyük olacaktır. **
Yukarıdaki işlemin maliyeti, çarpma >> ****> **** karesini bulmaktır ve toplama ve çıkarma maliyeti ihmal edilebilir düzeydedir.
Bu yüzden mümkün olduğunca terslerden kaçınmak istiyoruz, çünkü tek bir ters çevirmenin maliyeti en az yüz kat çarpmadır. Bunu, koordinat sistemini genişleterek, ancak Jacobian koordinatları gibi süreçteki çarpma sayısını artırma pahasına: XYZ += XYZ ve toplama algoritmasına bağlı olarak 10 kattan fazla çarparak yapabiliriz. **
GPU VE FPGA Hızlandırılmış MSM
Bu bölümde, PipeMSM'nin FPGA'larda ve Sppark'ın GPU'larda uygulandığı iki önde gelen MSM uygulaması olan PipeMSM ve Sppark karşılaştırılmaktadır.
Sppark ve PipeMSM, kova algoritması olarak da bilinen MSM'yi uygulamak için son teknoloji Pippenger algoritmasını kullanır; **
Sppark, CUDA kullanılarak uygulanır; Sürümleri son derece paralelliklidir ve en yeni GPU'larda çalışırken etkileyici sonuçlar elde etmiştir.
Bununla birlikte, PipeMSM yalnızca algoritmayı optimize etmekle kalmaz, aynı zamanda Modüler Çarpma ve EC Toplama'nın matematiksel ilkelleri için optimizasyonlar sağlar. PipeMSM, MSM'yi donanım için daha uygun hale getirmeyi amaçlayan bir dizi matematiksel hile ve optimizasyon uygulayarak ve paralelleştirmeye odaklanarak gecikmeyi azaltmak için tasarlanmış bir donanım tasarımı tasarlayarak tüm "MSM yığınını" yönetir.
PipeMSM uygulamasının hızlı bir özetini alalım.
Düşük Gecikme Süresi
PipeMSM, çok sayıda girişte birden çok MSM yürütürken düşük gecikme süresi sağlamak üzere tasarlanmıştır. GPU'lar, dinamik frekans ölçeklendirme nedeniyle deterministik düşük gecikme süresi sunmaz ve GPU'lar saat hızlarını iş yüklerine göre ayarlar.
Ancak optimize edilmiş donanım tasarımı sayesinde FPGA uygulamaları, belirli iş yükleri için deterministik performans ve gecikme süresi sağlayabilir.
EC Ekleme Uygulaması
Eliptik Eğri Noktası Ekleme (EC Ekleme), düşük gecikme süreli, yüksek oranda paralel ve tam bir formül olarak uygulanır (tam, eliptik eğri grubundaki herhangi iki noktanın toplamını doğru hesapladığı anlamına gelir). Eliptik eğri noktası ekleme, gecikmeyi azaltmak için EC ekleme modülünde ardışık düzende kullanılır.
Koordinatları projektif koordinatlar olarak temsil etmeyi seçtik ve toplama algoritmasında Tam eliptik eğri noktası toplama formülü kullanıyoruz. En büyük avantajı, uç durumlarla uğraşmak zorunda olmamamızdır. Tam formüller;
Bu toplama formülünü ardışık ve paralel bir şekilde uyguladık ve FPGA eliptik eğri toplayıcı devremiz yalnızca 12 çarpmaya, 17 toplama toplamına ihtiyaç duydu ve bu formül yürütüldü. Orijinal formül 15 modulo çarpma ve 13 toplama gerektirir. FPGA tasarımı aşağıdaki gibidir
Çoklu mod
Barrett Reduction ve Karatsuba algoritmalarından faydalandık.
Barrett Reduction, r≡ab mod p'yi (p'nin sabit olduğu yerde) verimli bir şekilde hesaplayan bir algoritmadır. Barrett Reduction, bölmeyi (pahalı bir işlem) yaklaşık bölme ile değiştirmeye çalışır. Doğru sonucu aradığımız aralığı tanımlamak için bir hata toleransı seçilebilir. Büyük hata toleransının daha küçük indirgeme sabitlerinin kullanılmasına izin verdiğini bulduk; Bu, modulo indirgeme işlemlerinde kullanılan ara değerlerin boyutunu azaltır ve bu da nihai sonucu hesaplamak için gereken çarpma sayısını azaltır.
Aşağıdaki mavi kutuda, yüksek hata toleransımız nedeniyle doğru bir sonuç bulmak için birden fazla kontrol yapmamız gerektiğini görebiliriz.
Özetle, Barrett Reduction'da gerçekleştirdiğimiz çarpma işlemini optimize etmek için Karatsuba algoritması kullanılır. Karatsuba'nın algoritması, iki n-basamağın çarpımını üç n/2-basamağın çarpımına basitleştirir; Bu çarpımlar, basamak sayısını doğrudan donanım tarafından hesaplanabilecek kadar daraltacak şekilde basitleştirebilir. Ayrıntılar Ingo'nun makalesinde okunabilir: Pipe MSM
Yukarıdaki işleçleri kullanarak düşük gecikme süreli, yüksek oranda paralel bir MSM uygulaması geliştirdik.
Temel fikir, tüm MSM'yi bir kerede hesaplamak yerine, her bir parçanın paralel olarak EC toplayıcısına geçirilmesidir. EC toplayıcının sonuçları nihai MSM'de toplanır.
Sonuç Sonucu****
Yukarıdaki şema Sppark ve PipeMSM arasındaki karşılaştırmayı göstermektedir.
En belirgin olanı, FPGA'ların sunduğu ve gelecekteki büyük ölçekli kanıt oluşturma operasyonları için son derece önemli olabilecek önemli enerji tasarruflarıdır. Uygulamamızın @125MHz altında prototiplendiğini ve kıyaslandığını ve saat hızını @500MHz'ye çıkarmanın hesaplama süresini 4 kat veya daha fazla artırabileceğini belirtmekte fayda var.
FPGA'larımızı kullanmanın bir diğer avantajı da daha az enerji tükettikleri ve daha az ısı ürettikleri için küçük kasalı sunuculara kurulabilmeleridir.
ZKP için FPGA mühendisliğinin ilk aşamalarındayız ve algoritmalarda daha fazla iyileştirme beklemeliyiz. Ek olarak, FPGA, CPU boştayken MSM'yi hesaplıyor ve FPGA'yı sistem kaynakları (CPU/GPU) ile birlikte kullanarak daha hızlı süreler elde etmek mümkün olabilir.
Özet
ZKP, dağıtık sistemler için önemli bir teknoloji haline gelmiştir.
ZKP'nin uygulanması, Ethereum seviyesini genişletmenin çok ötesine geçecek ve hesaplamanın güvenilmeyen üçüncü taraflara dış kaynak kullanımına izin verecek ve dağıtılmış bulut bilişim, kimlik sistemleri ve daha fazlası gibi daha önce imkansız olan sistemlerin geliştirilmesine izin verecektir.
Geleneksel olarak, ZKP optimizasyonları yazılım düzeyinde iyileştirmelere odaklanmıştır, ancak daha üstün performansa olan talep arttıkça, hem donanım hem de yazılımı içeren daha gelişmiş hızlandırma çözümleri göreceğiz.
Şu anda, gördüğümüz hızlandırma çözümleri esas olarak GPU'ları kullanıyor, çünkü CUDA kullanan geliştirme süresi kısa ve mevcut tüketici GPU'ları çok ucuz ve bol miktarda bulunuyor. GPU ayrıca inanılmaz bir performans sunar. Dolayısıyla GPU'ların yakın zamanda bu alandan kaybolması pek olası değil.
Daha karmaşık geliştirme ekipleri alana girdikçe, FPGA'ların güç verimliliği ve performans açısından öncülük ettiğini görmemiz muhtemeldir. GPU'larla karşılaştırıldığında, FPGA'lar daha düşük seviyeli özelleştirmenin yanı sıra daha fazla yapılandırma seçeneği sunar. FPGA'lar, ASIC'lerden daha hızlı geliştirme hızı ve esnekliği sunar. ZKP dünyasının hızla gelişmesiyle birlikte, FPGA'lar farklı sistemlere ve güncelleme çözümlerine uyum sağlamak için farklı programlarla yeniden başlatılabilir.
Bununla birlikte, gerçek zamanlıya yakın kanıtlar oluşturmak için, kanıtları oluşturduğumuz sisteme bağlı olarak GPU/FPGA/ASIC yapılandırmalarını birleştirmek gerekebilir.
ZPU'nun ayrıca büyük ölçekli prova jeneratörleri ve düşük güçlü cihazlar için son derece verimli çözümler sağlayacak şekilde gelişmesi muhtemeldir (ayrıntılar için önceki makaleye bakın).
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.
Donanım hızlandırma ile yönlendirilen yeni bir ZK çağı
Şimdiye kadarki hikaye
Sıfır bilgi ispatları (ZKP'ler), merkezi olmayan sistemler için giderek daha önemli hale geliyor. ZK, ilk olarak ZCash gibi projelerdeki başarısıyla kamuoyunun dikkatini çekti, ancak bugün ZK, Ethereum için bir ölçeklendirme çözümü olarak biliniyor.
Rollup'lar olarak da bilinen ZK, Katman 2'den (ör. Scroll ve Polygon) yararlanarak, zkEVM'ler (zk Ethereum Sanal Makinesi) geliştiriliyor. Bu zkEVM'ler bir grup işlemi işler ve küçük bir kanıt (kilobayt cinsinden) oluşturur. Bu kanıtlama, tüm ağa işlem grubunun geçerli ve doğru olduğunu doğrulamak için kullanılabilir.
Ancak, kullanımları burada bitmiyor. ZK, çeşitli ilginç uygulamalara izin verir.
Özel Katman 1 – Örneğin Mina, blok zincirindeki işlemlerin ve verilerin ayrıntılarını gizleyerek, kullanıcıların işlemin ayrıntılarını açıklamadan yalnızca işlemlerinin geçerliliğini kanıtlamalarına olanak tanır. neptune.cash ve Aleo da çok ilginç projeler.
Merkezi olmayan bulut platformu - FedML ve together.xyz, makine öğrenimi (ML) modellerinin merkezi olmayan bir şekilde eğitilmesine, hesaplamaların ağa dış kaynak sağlanmasına ve ZKP kullanarak hesaplamaların doğruluğunun doğrulanmasına olanak tanır. Druglike, benzer teknolojileri kullanarak daha açık bir ilaç keşif platformu inşa ediyor.
Merkezi Olmayan Depolama - Filecoin, bulut depolamada devrim yaratıyor ve ZK, depolama sağlayıcılarının belirli bir süre boyunca doğru verileri depoladıklarını kanıtlamalarına olanak tanıyor.
OYUN - Darkforest'ın gerçek zamanlı kanıt gerektiren daha gelişmiş bir sürümü görünebilir. ZK ayrıca hile olasılığını azaltmak için oyunu genişletebilir. Belki de oyunun kendi barındırma için ödeme yapmasını sağlamak için merkezi olmayan bir bulut platformuyla da çalışın!
Kimlik - Merkezi olmayan kimlik doğrulama artık ZK aracılığıyla da mümkün. Bu fikir etrafında bir dizi ilginç proje inşa ediliyor. Örneğin, not defteri ve zkemail (hakkında bilgi edinmeniz önerilir).
ZK ve merkezi olmayan sistemlerin etkisi çok büyük, ancak hikayenin gelişimi mükemmel değil ve bugün hala birçok engel ve zorluk var. İspat üretme süreci çok kaynak yoğundur ve birçok karmaşık matematiksel işlem gerektirir. Geliştiriciler, hem kanıt oluşturma hem de doğrulama süreçleri için ZK teknolojisini kullanarak daha iddialı ve karmaşık protokoller ve sistemler oluşturmaya çalışırken, geliştiriciler daha küçük kanıt boyutları, daha hızlı performans ve daha iyi optimizasyonlar talep ediyor.
Bu makalede, donanım hızlandırmanın mevcut durumunu ve ZK'nın benimsenmesinde nasıl önemli bir rol oynayacağını keşfedeceğiz.
Snark, Stark'a Karşı
Günümüzde iki popüler sıfır bilgi tekniği vardır, zk-STARK ve zk-SNARK (bu makalede Bulletproofs'u görmezden geldik).
| | | | | --- | --- | --- | | zk-STARK | zk-SNARK | | | Karmaşıklık - Kanıtlayıcı | O(N * poli-log(N)) | O(N * log(N)) | | Karmaşıklık - Doğrulayıcı | O(poli-log(N)) | O(1) | | Prova boyutu | 45KB-200KB | ~ 288 bayt | | 抗量子 | Evet (hash fonksiyonuna dayalı) | Hayır | | Güvenilir kurulum | Hayır | Evet | | Sıfır Bilgi | Evet | Evet | | Etkileşim | Etkileşimli veya etkileşimli olmayan | İnteraktif olmayan | | Geliştirici Belgeleri | Sınırlı, ancak genişleyen İyi |
表1:Snark, Stark'a Karşı
Yukarıda bahsedildiği gibi, ikisi arasında farklılıklar ve ödünleşimler vardır. En önemli nokta, zk-SNARK tabanlı bir sistemin güvenilir kurulumunun, güvenilir kurulum sürecine dahil olan en az bir dürüst katılımcıya ve sürecin sonunda anahtarlarının imha edilmesine dayanmasıdır. Zincir üstü doğrulama açısından, zk-SNARK'lar gaz ücretleri açısından çok daha ucuzdur. Buna ek olarak, zk-SNARK'ların kanıtları da önemli ölçüde daha küçüktür ve bu da onları zincir üzerinde saklamayı daha ucuz hale getirir.
Şu anda zk-SNARK'lar, zk-STARK'lardan daha popülerdir. Bunun en olası nedeni, zk-SNARK'ların çok daha uzun bir geçmişe sahip olmasıdır. Diğer bir olası neden de, ilk ZK blok zincirlerinden biri olan Zcash'in zk-SNARK'ları kullanmasıdır, bu nedenle mevcut geliştirme araçlarının ve belgelerinin çoğu zk-SNARK ekosistemi etrafında dönmektedir.
ZK Uygulaması Nasıl Oluşturulur
Geliştiriciler, bir ZK uygulamasının geliştirilmesini tamamlamak için iki bileşene ihtiyaç duyabilir
ZK dostu bir ifade hesaplama yöntemi (DSL veya düşük seviyeli kitaplık).
İki işlevi uygulayan bir kanıtlama sistemi: Kanıtla ve Doğrula.
DSL'ler (etki alanına özgü dil) ve alt düzey kitaplıklar
DSL'ler söz konusu olduğunda, Circom, Halo2, Noir ve çok daha fazlası gibi birçok seçenek vardır. Circom muhtemelen şu anda en popüler olanıdır.
Düşük seviyeli kütüphaneler söz konusu olduğunda, popüler bir örnek Arkworks'tür; Bir CUDA hızlandırma kütüphanesi olan ICICLE gibi geliştirilmekte olan kütüphaneler de vardır.
Bu DSL'ler, sınırlı sistemlerin çıktısını almak için tasarlanmıştır. Genellikle x:= y *z şeklinde değerlendirilen normal programın aksine, kısıtlı formdaki aynı program daha çok xy * z = 0'a benziyor. Programı bir kısıtlamalar sistemi olarak temsil ederek, toplama veya çarpma gibi işlemlerin tek bir kısıtlama ile temsil edilebileceğini buluruz. Ancak, bit işlemleri gibi daha karmaşık işlemler yüzlerce kısıtlama gerektirebilir!
Sonuç olarak, bazı hash fonksiyonlarını ZK dostu programlar olarak uygulamak karmaşık hale gelir. Sıfır bilgi ispatlarında, hash fonksiyonları genellikle verilerin bütünlüğünü sağlamak ve/veya verilerin belirli özelliklerini doğrulamak için kullanılır, ancak bit işlemlerinin çok sayıda kısıtlaması nedeniyle, bazı hash fonksiyonlarının sıfır bilgi ispatlarının ortamına uyarlanması zordur. Bu karmaşıklık, kanıt oluşturma ve doğrulamanın verimliliğini etkileyebilir ve bu nedenle geliştiricilerin ZK tabanlı uygulamalar oluştururken göz önünde bulundurması ve çözmesi gereken bir sorun haline gelebilir
Sonuç olarak, ZK dostu olmak için bazı hash fonksiyonlarını uygulamak karmaşık hale gelir.
Kanıtlanması
Bir ispat sistemi, iki ana görevi yerine getiren bir yazılım parçasına benzetilebilir: ispat üretmek ve ispatları doğrulamak. Prova sistemleri tipik olarak devre, kanıt ve genel/özel parametreleri girdi olarak kabul eder.
En popüler iki prova sistemi Groth16 ve PLONK serisidir (Plonk, HyperPlonk, UltraPlonk)
| | | | | | | | --- | --- | --- | --- | --- | --- | | | Güvenilir Kurulum | Prova boyutu | Kanıtlayıcı Karmaşıklığı | Doğrulayıcı Karmaşıklığı | Esneklik | | Et suyu16 | Devreye özel | küçük | Düşük | Düşük | Düşük | | Plonk | Evrensel | Büyük | Yüksek | 常数 | Yüksek |
表2:Groth16, Plonk'a karşı
Tablo 2'de gösterildiği gibi, Groth16 güvenilir bir kurulum süreci gerektirir, ancak Groth16 bize daha hızlı kanıt ve doğrulama sürelerinin yanı sıra sabit bir kanıt boyutu sağlar.
Plonk, her prova oluşturulduğunda çalıştırdığınız devre için bir ön işleme aşaması gerçekleştiren genel bir kurulum sağlar. Birçok devreyi desteklemesine rağmen, Plonk'un doğrulama süresi sabittir.
İkisi arasında kısıtlamalar açısından da farklılıklar vardır. Groth16, kısıtlama boyutu açısından doğrusal olarak büyür ve esneklikten yoksundur, Plonk ise daha esnektir.
Genel olarak, performansın ZK uygulamanızdaki kısıtlamaların sayısıyla doğrudan ilişkili olduğunu anlayın. Ne kadar çok kısıtlama olursa, kanıtlayıcının hesaplaması gereken o kadar fazla işlem vardır.
Darboğaz
İspat sistemi iki ana matematiksel işlemden oluşur: çok skaler çarpma (MSM) ve hızlı Fourier dönüşümü (FFT). Bugün, her ikisinin de var olduğu, MSM'nin çalışma zamanının yaklaşık %60'ını kaplayabildiği, FFT'nin ise yaklaşık %30'unu kaplayabileceği sistemleri keşfedeceğiz.
MSM, çoğu durumda makinede çok fazla bellek tüketen ve aynı zamanda birçok skaler çarpma işlemi gerçekleştiren çok fazla bellek erişimi gerektirir.
FFT algoritmaları, dönüşümleri gerçekleştirmek için genellikle giriş verilerinin belirli bir sıraya göre yeniden düzenlenmesini gerektirir. Bu, çok fazla veri hareketi gerektirebilir ve özellikle büyük giriş boyutları için bir darboğaz olabilir. Önbellek kullanımı, bellek erişim desenleri önbellek hiyerarşisine uymuyorsa da bir sorun olabilir.
**Bu durumda, ZKP'nin performansını tam olarak optimize etmenin tek yolu donanım hızlandırmasıdır. **
Donanım Hızlandırma
Donanım hızlandırma söz konusu olduğunda, bize ASIC'lerin ve GPU'ların Bitcoin ve Ethereum madenciliğine nasıl hakim olduğunu hatırlatıyor.
Yazılım optimizasyonları eşit derecede önemli ve değerli olsa da, sınırlamaları vardır. Öte yandan donanım optimizasyonu, iş parçacığı senkronizasyonunu veya vektörleştirmeyi azaltmak gibi birden çok işlem birimine sahip FPGA'lar tasarlayarak paralelliği iyileştirebilir. Bellek erişimi, bellek hiyerarşileri ve erişim düzenleri iyileştirilerek daha verimli bir şekilde optimize edilebilir.
Şimdi ZKP alanında, ana eğilim değişmiş gibi görünüyor: GPU'lar ve FPGA'lar.
Kısa vadede, GPU'lar, özellikle ETH'nin hisse ispatına (POS) geçmesinden ve çok sayıda GPU madencisini boşta ve beklemede bıraktıktan sonra fiyat açısından bir avantaja sahiptir. Ek olarak, GPU'lar kısa geliştirme döngüleri avantajına sahiptir ve geliştiricilere çok sayıda "tak ve çalıştır" paralelliği sağlar.
Bununla birlikte, FPGA'lar, özellikle form faktörlerini ve güç tüketimini karşılaştırırken yetişmelidir. FPGA'lar ayrıca yüksek hızlı veri akışları için daha düşük gecikme süresi sağlar. Birden çok FPGA birlikte kümelendiğinde, GPU kümelerine kıyasla daha iyi performans sağlarlar.
GPU VE FPGA
GPU:
Geliştirme süresi: GPU'lar hızlı geliştirme süresi sağlar. CUDA ve OpenCL gibi çerçeveler için geliştirici belgeleri iyi geliştirilmiş ve popülerdir.
Güç tüketimi: GPU'lar çok "güç tüketir". Geliştiriciler veri düzeyinde paralellik ve iş parçacığı düzeyinde paralellikten yararlansa bile, GPU'lar yine de çok fazla güç tüketir.
Kullanılabilirlik: Tüketici sınıfı GPU'lar ucuzdur ve şu anda kolayca temin edilebilir.
FPGA:
Geliştirme döngüsü: FPGA'lar daha karmaşık bir geliştirme döngüsüne sahiptir ve daha uzman mühendisler gerektirir. FPGA'lar, mühendislerin GPU'ların yapamayacağı birçok "düşük düzeyli" optimizasyon elde etmesine olanak tanır.
Gecikme süresi: FPGA'lar, özellikle büyük veri akışlarını işlerken daha düşük gecikme süresi sağlar.
Maliyet ve Kullanılabilirlik: FPGA'lar GPU'lardan daha pahalıdır ve GPU'lar kadar kolay bulunmaz.
ZPRIZE
Günümüzde, donanım optimizasyonu ve ZKP darboğazı söz konusu olduğunda, kaçınılması mümkün olmayan bir rekabet var - ZPRIZE
ZPrize şu anda ZK alanındaki en önemli girişimlerden biri. ZPrize, ekipleri ZKP'nin temel darboğazları (ör. MSM, NTT, Poseidon vb.) için birden fazla platformda (ör. FPGA'lar, GPU'lar, mobil cihazlar ve tarayıcılar) gecikme, verim ve verimliliğe dayalı donanım hızlandırma geliştirmeye teşvik eden bir yarışmadır.
Sonuç çok ilginçti. Örneğin, GPU iyileştirmeleri çok büyük:
2^26'daki MSM, 5.86 saniyeden 2.52 saniyeye %131 arttı. Öte yandan, FPGA çözümleri, karşılaştırılacak önceki kıyaslamalara sahip olan GPU sonuçlarına kıyasla herhangi bir kıyaslamaya sahip olma eğilimindedir ve çoğu FPGA çözümü, gelecekte iyileştirilmesi beklenen bu tür algoritmalarla ilk kez açık kaynaklıdır.
Bu sonuçlar, çoğu geliştiricinin donanım hızlandırma çözümlerini geliştirmede kendilerini rahat hissettikleri yönü göstermektedir. Birçok takım GPU kategorisi için yarışır, ancak yalnızca küçük bir yüzdesi FPGA kategorisi için yarışır. FPGA'lar için geliştirme yaparken deneyim eksikliğinden mi yoksa çoğu FPGA şirketinin/ekibinin çözümlerini ticari olarak satmak için gizlice geliştirmeyi mi seçtiğinden emin değilim.
ZPrize, topluluğa çok ilginç araştırmalar sağladı. ZPrize'ın daha fazla turu başladıkça, giderek daha ilginç çözümler ve sorunların ortaya çıktığını göreceğiz.
Donanım hızlandırmanın pratik örnekleri
Örnek olarak Groth16'yı ele alırsak, Groth16 için rapidsnark uygulamasını incelersek, iki ana işlemin gerçekleştirildiğini gözlemleyebiliriz: FFT (Hızlı Fourier Dönüşümü) ve MSM (Çok Skaler Çarpma); Bu iki temel işlem birçok ispat sisteminde ortaktır. Yürütme süreleri, devredeki kısıtlamaların sayısı ile doğrudan ilgilidir. Doğal olarak, daha karmaşık devreler yazıldıkça kısıtlamaların sayısı artar.
FFT ve MSM işlemlerinin hesaplama açısından ne kadar yoğun olduğunu anlamak için Ingonyama'nın Groth16 devresi (Filecoin'in 32 GB'lık bir sektörde gerçekleştirilen Vanilla C2 işlemi) kıyaslamasına göz atabiliriz ve sonuçlar aşağıdaki gibidir
Yukarıdaki şekilde gösterildiği gibi, MSM (Çok Skaler Çarpma) zaman alıcı olabilir ve birçok kanıtlayıcı için ciddi bir performans darboğazı olabilir, bu da MSM'yi hızlandırılması gereken en önemli şifreleme operatörlerinden biri haline getirir.
Peki, MSM, diğer ZK kanıt sistemlerinde kanıtlayıcı için ne kadar hesaplama yapar? Bu, aşağıdaki şekilde gösterilmiştir
Plonk'ta MSM, Ingonyama'nın en son makalesi Pipe MSM'de gösterildiği gibi, genel giderlerin %85'inden fazlasını oluşturuyor. **
Peki donanım hızlandırma MSM'yi nasıl hızlandırmalı? **
MSM
MSM'nin nasıl hızlandırılacağı hakkında konuşmadan önce, MSM'nin ne olduğunu anlamamız gerekiyor
Çok Skaler Çarpma (MSM), aşağıdaki formda çoklu skaler çarpımların toplamını hesaplamak için kullanılan bir algoritmadır
burada G eliptik eğri grubundaki bir noktadır, a bir skalerdir ve MSM'nin sonucu da bir eliptik eğri noktası olacaktır
MSM'yi iki ana alt bileşene ayırabiliriz:
Modüler Çarpma
Eliptik Eğri Noktası Eklemeleri
Naif bir P+Q işlemi gerçekleştirmek için örnek olarak Affine(x,y)'yi ele alalım.
P + Q = R'yi hesaplamak istediğimizde, k ve P,Q'nun apsisi ile bir k değeri hesaplamamız gerekir.
R'nin koordinatlarını alın. Hesaplama işlemi yukarıdaki gibidir, bu işlemde 2 çarpım, 1 kare işlemi, 1 ters işlem ve birkaç kez toplama ve çıkarma işlemleri yapıyoruz. Yukarıdaki işlemlerin sonlu bir alanda, yani mod P altında gerçekleştirildiğini belirtmekte fayda var. Gerçekte, P çok büyük olacaktır. **
Yukarıdaki işlemin maliyeti, çarpma >> ****> **** karesini bulmaktır ve toplama ve çıkarma maliyeti ihmal edilebilir düzeydedir.
Bu yüzden mümkün olduğunca terslerden kaçınmak istiyoruz, çünkü tek bir ters çevirmenin maliyeti en az yüz kat çarpmadır. Bunu, koordinat sistemini genişleterek, ancak Jacobian koordinatları gibi süreçteki çarpma sayısını artırma pahasına: XYZ += XYZ ve toplama algoritmasına bağlı olarak 10 kattan fazla çarparak yapabiliriz. **
GPU VE FPGA Hızlandırılmış MSM
Bu bölümde, PipeMSM'nin FPGA'larda ve Sppark'ın GPU'larda uygulandığı iki önde gelen MSM uygulaması olan PipeMSM ve Sppark karşılaştırılmaktadır.
Sppark ve PipeMSM, kova algoritması olarak da bilinen MSM'yi uygulamak için son teknoloji Pippenger algoritmasını kullanır; **
Sppark, CUDA kullanılarak uygulanır; Sürümleri son derece paralelliklidir ve en yeni GPU'larda çalışırken etkileyici sonuçlar elde etmiştir.
Bununla birlikte, PipeMSM yalnızca algoritmayı optimize etmekle kalmaz, aynı zamanda Modüler Çarpma ve EC Toplama'nın matematiksel ilkelleri için optimizasyonlar sağlar. PipeMSM, MSM'yi donanım için daha uygun hale getirmeyi amaçlayan bir dizi matematiksel hile ve optimizasyon uygulayarak ve paralelleştirmeye odaklanarak gecikmeyi azaltmak için tasarlanmış bir donanım tasarımı tasarlayarak tüm "MSM yığınını" yönetir.
PipeMSM uygulamasının hızlı bir özetini alalım.
Düşük Gecikme Süresi
PipeMSM, çok sayıda girişte birden çok MSM yürütürken düşük gecikme süresi sağlamak üzere tasarlanmıştır. GPU'lar, dinamik frekans ölçeklendirme nedeniyle deterministik düşük gecikme süresi sunmaz ve GPU'lar saat hızlarını iş yüklerine göre ayarlar.
Ancak optimize edilmiş donanım tasarımı sayesinde FPGA uygulamaları, belirli iş yükleri için deterministik performans ve gecikme süresi sağlayabilir.
EC Ekleme Uygulaması
Eliptik Eğri Noktası Ekleme (EC Ekleme), düşük gecikme süreli, yüksek oranda paralel ve tam bir formül olarak uygulanır (tam, eliptik eğri grubundaki herhangi iki noktanın toplamını doğru hesapladığı anlamına gelir). Eliptik eğri noktası ekleme, gecikmeyi azaltmak için EC ekleme modülünde ardışık düzende kullanılır.
Koordinatları projektif koordinatlar olarak temsil etmeyi seçtik ve toplama algoritmasında Tam eliptik eğri noktası toplama formülü kullanıyoruz. En büyük avantajı, uç durumlarla uğraşmak zorunda olmamamızdır. Tam formüller;
Bu toplama formülünü ardışık ve paralel bir şekilde uyguladık ve FPGA eliptik eğri toplayıcı devremiz yalnızca 12 çarpmaya, 17 toplama toplamına ihtiyaç duydu ve bu formül yürütüldü. Orijinal formül 15 modulo çarpma ve 13 toplama gerektirir. FPGA tasarımı aşağıdaki gibidir
Çoklu mod
Barrett Reduction ve Karatsuba algoritmalarından faydalandık.
Barrett Reduction, r≡ab mod p'yi (p'nin sabit olduğu yerde) verimli bir şekilde hesaplayan bir algoritmadır. Barrett Reduction, bölmeyi (pahalı bir işlem) yaklaşık bölme ile değiştirmeye çalışır. Doğru sonucu aradığımız aralığı tanımlamak için bir hata toleransı seçilebilir. Büyük hata toleransının daha küçük indirgeme sabitlerinin kullanılmasına izin verdiğini bulduk; Bu, modulo indirgeme işlemlerinde kullanılan ara değerlerin boyutunu azaltır ve bu da nihai sonucu hesaplamak için gereken çarpma sayısını azaltır.
Aşağıdaki mavi kutuda, yüksek hata toleransımız nedeniyle doğru bir sonuç bulmak için birden fazla kontrol yapmamız gerektiğini görebiliriz.
Özetle, Barrett Reduction'da gerçekleştirdiğimiz çarpma işlemini optimize etmek için Karatsuba algoritması kullanılır. Karatsuba'nın algoritması, iki n-basamağın çarpımını üç n/2-basamağın çarpımına basitleştirir; Bu çarpımlar, basamak sayısını doğrudan donanım tarafından hesaplanabilecek kadar daraltacak şekilde basitleştirebilir. Ayrıntılar Ingo'nun makalesinde okunabilir: Pipe MSM
Yukarıdaki işleçleri kullanarak düşük gecikme süreli, yüksek oranda paralel bir MSM uygulaması geliştirdik.
Temel fikir, tüm MSM'yi bir kerede hesaplamak yerine, her bir parçanın paralel olarak EC toplayıcısına geçirilmesidir. EC toplayıcının sonuçları nihai MSM'de toplanır.
Sonuç Sonucu****
Yukarıdaki şema Sppark ve PipeMSM arasındaki karşılaştırmayı göstermektedir.
En belirgin olanı, FPGA'ların sunduğu ve gelecekteki büyük ölçekli kanıt oluşturma operasyonları için son derece önemli olabilecek önemli enerji tasarruflarıdır. Uygulamamızın @125MHz altında prototiplendiğini ve kıyaslandığını ve saat hızını @500MHz'ye çıkarmanın hesaplama süresini 4 kat veya daha fazla artırabileceğini belirtmekte fayda var.
FPGA'larımızı kullanmanın bir diğer avantajı da daha az enerji tükettikleri ve daha az ısı ürettikleri için küçük kasalı sunuculara kurulabilmeleridir.
ZKP için FPGA mühendisliğinin ilk aşamalarındayız ve algoritmalarda daha fazla iyileştirme beklemeliyiz. Ek olarak, FPGA, CPU boştayken MSM'yi hesaplıyor ve FPGA'yı sistem kaynakları (CPU/GPU) ile birlikte kullanarak daha hızlı süreler elde etmek mümkün olabilir.
Özet
ZKP, dağıtık sistemler için önemli bir teknoloji haline gelmiştir.
ZKP'nin uygulanması, Ethereum seviyesini genişletmenin çok ötesine geçecek ve hesaplamanın güvenilmeyen üçüncü taraflara dış kaynak kullanımına izin verecek ve dağıtılmış bulut bilişim, kimlik sistemleri ve daha fazlası gibi daha önce imkansız olan sistemlerin geliştirilmesine izin verecektir.
Geleneksel olarak, ZKP optimizasyonları yazılım düzeyinde iyileştirmelere odaklanmıştır, ancak daha üstün performansa olan talep arttıkça, hem donanım hem de yazılımı içeren daha gelişmiş hızlandırma çözümleri göreceğiz.
Şu anda, gördüğümüz hızlandırma çözümleri esas olarak GPU'ları kullanıyor, çünkü CUDA kullanan geliştirme süresi kısa ve mevcut tüketici GPU'ları çok ucuz ve bol miktarda bulunuyor. GPU ayrıca inanılmaz bir performans sunar. Dolayısıyla GPU'ların yakın zamanda bu alandan kaybolması pek olası değil.
Daha karmaşık geliştirme ekipleri alana girdikçe, FPGA'ların güç verimliliği ve performans açısından öncülük ettiğini görmemiz muhtemeldir. GPU'larla karşılaştırıldığında, FPGA'lar daha düşük seviyeli özelleştirmenin yanı sıra daha fazla yapılandırma seçeneği sunar. FPGA'lar, ASIC'lerden daha hızlı geliştirme hızı ve esnekliği sunar. ZKP dünyasının hızla gelişmesiyle birlikte, FPGA'lar farklı sistemlere ve güncelleme çözümlerine uyum sağlamak için farklı programlarla yeniden başlatılabilir.
Bununla birlikte, gerçek zamanlıya yakın kanıtlar oluşturmak için, kanıtları oluşturduğumuz sisteme bağlı olarak GPU/FPGA/ASIC yapılandırmalarını birleştirmek gerekebilir.
ZPU'nun ayrıca büyük ölçekli prova jeneratörleri ve düşük güçlü cihazlar için son derece verimli çözümler sağlayacak şekilde gelişmesi muhtemeldir (ayrıntılar için önceki makaleye bakın).