Aleo Kurulum Törenine İlişkin Teknik Bir Açıklama

Elyaz Aliverdiyev
8 min readSep 19, 2022

Errol Drummond Tarafından

Bu yazıda, Aleo topluluğunun kurulum törenimize yaptığı katkıların neden bu kadar değerli olduğunu açıklamak için zaman ayırmak istedik. “Powers of Tau” olarak bilinen bu Çok Taraflı Hesaplama (MPC), ispat sistemlerimizin temel güvenlik dayanaklarından birini sağlayan teknik omurgadır. Bu güvenlik kriptografi üzerine inşa edilmiştir, bu nedenle biraz matematik olacağı konusunda uyarılmalıdır — ancak ilgili daha derin fikirleri açıklamaya çalışırken herhangi bir karmaşık notasyon minimumda tutulacaktır.

Aleo kurulum seremonisi şu anda bir önceki rekor olan Tornado Cash’in seremonisinin 1114 katkısından daha fazla katkıya sahip!

Sıfır Bilgi Kanıtları

Aleo, gizlilik ve ölçeklenebilirlik elde etmek için sıfır bilgi kanıtları (ZKP’ler) kullanır. Aleo zincirindeki yerel bir işlem bir ZKP’dir. Aleo özellikle zkSNARK (açılımı sıfır-bilgi Özlü Etkileşimsiz Bilgi Kanıtı) adı verilen bir ZKP türü kullanır. Tamamen güvenilmez olmak için, zkSNARK’ımız bir kanıtın üretimi sırasında rastgele bir sayı kullanmalıdır.

Bu sayının rastgele olması çok önemlidir; kullanıcılar sayıya ihtiyaç duyulduğu andan önce mantık yürütebilirlerse (çünkü rastgelelik yerine mantık tarafından belirlenmiştir), kanıtları taklit edebilir ve güvenliği tehlikeye atabilirler.

İnsanlar genellikle rastgeleliğin “güvenilir bir üçüncü taraf” tarafından sağlandığını kabul ederler. Ama ya güvenilir değillerse? Powers of Tau bu belirsizliği ortadan kaldırıyor. Aleo’nun düzeni tek bir tarafa güvenmek yerine herkese açıktır ve birden fazla, bağımsız katılımcıyı teşvik eder. İçlerinden herhangi biri dürüstse, üretilen sayı(lar)ın rastgele olduğu garanti edilir.

Tören tamamlandığında, parametreleri ispat sistemlerimizde kullanmaya başlayabilir ve güvenli ispatlar üretebiliriz. Bu, mainnet’e giden yolda çok önemli bir kilometre taşıdır.

Bağlılık Programları

zkSNARK’lar çeşitli nedenlerden dolayı bu rastgeleliği gerektirir. Örneğin, sıfır bilgi kanıtlarındaki işlemler, bir “taahhüt şeması” veya sistemin seçilen bir değere söz konusu değeri açıklamadan taahhüt etmesine olanak tanıyan iki aşamalı bir protokol gerektirir. Çeşitli türleri olmasına rağmen, bizim taahhüt şemamız bir polinom (f(x)=x²+x+3 gibi tüm kuvvetleri tam, pozitif sayı olan bir x fonksiyonu) kullanır çünkü 2 polinom farklıysa, doğru koşullar altında aynı değere değerlendirilme olasılıkları gerçekçi olmayacak kadar düşüktür. Bu polinom taahhüt şemasını aşağıda açıklıyoruz.

Herhangi bir kriptografik taahhüt şeması iki özelliğe ihtiyaç duyar. Birincisi, bir kez taahhüt edilen polinom “kilitli” olmalıdır — yani kanıtlayıcı veya diğer taraflar bunu değiştirememelidir, aksi takdirde girdilerini doğru gibi göstermek için polinomu kolayca değiştirebilirler. Buna bağlayıcılık özelliği denir. İkinci olarak, taahhüt polinom hakkında hiçbir bilgi vermemelidir ve hiç kimse polinom hakkında herhangi bir şey bulmak için taahhüdü kullanamamalıdır. Buna gizleme özelliği denir.

ZkSNARK’larda uygulanan polinom taahhütler, doğru çıktılara sahip birinin doğru girdilere de sahip olması gerektiğini neredeyse garanti eder.

O halde, polinom taahhüdünün hile yapılamayacak bir şekilde oluşturulmasının çok önemli olduğunu unutmayın. Bunu yapmak için, çözüm rastgelelik kullanmayı gerektirir. Ancak bu yine bir sorun ortaya çıkarır: polinomun rastgele bir noktada değerlendirildiğine nasıl güvenebiliriz? Örneğin, bir kanıtlayıcının yapması gereken ilk şey gizli tutmak istediği bir polinomu taahhüt etmekse ne olur? Bu noktada rastgele olabilecek tek şey oluşturdukları polinomdur ve rastgeleliği oluşturmak için bunu kullanırlarsa bize polinomu göstermeleri gerekir ki bu da tam olarak kaçınmaya çalıştığımız şeydir.

Pratikte, bağlı kalmamız gereken bir polinomumuz olacak,

Derecesi n olan genel bir polinom

Taahhüt şeması f(𝜏)P’nin bulunmasını içerir; bu taahhüt olacaktır. 𝜏 bilinmeyen bir değer olacaktır. Yani uygulamadaki rastgelelik, f(x)’i bilinmeyen bir değerde değerlendirmektir. Hiç kimse 𝜏’yu bilmeden f(𝜏)P’yi nasıl bulabiliriz?

Çözüm Tau’nun Güçleri seremonisidir.

Seremoniye daha fazla girmeden önce, üzerinde durmaya değer birkaç fikir daha var.

Ayrık Logaritma Varsayımı

Blok zincirlerimizin ve ispat sistemlerimizin çalışmak için genellikle eliptik eğrilerden yararlandığını muhtemelen görmüşsünüzdür. Bu açıklamanın amaçları doğrultusunda, aşağıda açıklanan bir ayrıntı dışında, bu eğrilerin iç işleyişi önemsizdir.

Diyelim ki eliptik eğrimiz üzerinde bir P noktamız var. P noktasını kendisine ekleyebilir ve 2P’yi geri alabiliriz. Bunu nasıl yaptığımıza dair bir görseli aşağıda görebilirsiniz (P’ye bir teğet çizin, eğriyi kestiği diğer yere dikkat edin ve sonra x ekseni boyunca yansıtın).

Eliptik eğri noktasını ikiye katlama

P’yi 2P’ye eklersek 3P elde ederiz. Aşağıda farklı noktaları nasıl eklediğimizi gösteren bir görsel görebilirsiniz (iki nokta arasına bir çizgi çizin, bu çizginin eğriyi kestiği üçüncü konuma dikkat edin ve ardından x ekseninde yansıtın).

İki farklı eliptik eğri noktasını, P ve Q, R yapmak için bir araya getirme

Bir k için kP elde etmek üzere P’yi kendisine eklemeye devam edebiliriz. Şimdi birinin size 27P’ye eşit olduğunu söylediği bir R noktası ile geldiğini düşünün. 27P’yi hesaplayabilir ve eşit olup olmadığını kontrol edebilirsiniz. Ancak önemli olan, R’yi aldıysanız ve oraya ulaşmak için P’nin ne ile çarpıldığını bulmak istiyorsanız, bunu yapmanın kolay bir yolu olmayacaktır. Esasen, 2P’yi hesaplamanız ve karşılaştırmanız, sonra 3P’yi, sonra 4P’yi ve bu şekilde devam etmeniz gerekir.

Buna Ayrık Logaritma Varsayımı (DLA) denir. k ve P’den kP’yi hesaplamak kolaydır, ancak kP’den k’yi bulmak aslında olağanüstü zordur.

Bu sorunu kolaylaştırmanın bir yolu vardır. Eğer k 1 ile 100 arasında herhangi bir yerde olabiliyorsa, hesaplamayı 1 ile 10 arasında bir k’ bulma problemine indirgeyebiliriz (ancak simetriden yalnızca bir kez yararlanabileceğimiz için bunu yalnızca bir kez küçültebiliriz).

Spesifik olarak, eğer n üst sınır ise, bunu n’nin kareköküne indirgeyebiliriz. Yani eğer size k’nin 1 ile 10.000 arasında bir yerde olduğu bir R=kP sunulursa, bunu k’’nin 1 ile kaç arasında olduğu bir probleme indirgeyebiliriz?

Belki de bu rastgelelik yöntemi sizi ikna etmedi ve insanlar k’nın değerini hesaplayabilecek gibi görünüyor. Bunun gerçekte ne kadar yanlış olduğunu göstermek için bir örnek verelim.

Aleo’da BLS12–377 eğrisini kullanırız; burada k değeri 1 ile p arasında herhangi bir değer olabilir.

p=8444461749428370424248824938781546531375899335154063827935233455917409239041,

yani p’ yaklaşık 91893752504881257701523279626832445440, yani yaklaşık 1⁰³⁸. Şimdi saniyede bir milyon olasılığı kontrol edebildiğinizi düşünün, 1⁰⁶, ki bu oldukça hızlıdır. Olasılıkların yarısını kontrol etmenin ne kadar süreceğini görelim.

(1⁰³⁸÷2)÷(1⁰⁶)÷(60×60×24×365) ≈ 1⁰²⁴yıl.

Bu bir milyon, milyar, milyar yıl eder. Evrenin yalnızca 13,8 milyar yıldır (1⁰¹⁰) var olduğunu göz önünde bulundurduğumuzda, k’ değerini bulmanın tüm niyet ve amaçlar için imkansız hale geldiğini görmeye başlarız.

DLA tabanlı bir taahhüt programı

Yukarıdaki iki fikri birleştirelim ve Kate (Kah-tay diye okunur) taahhüt şemasını tanıtalım.

Kanıtlayıcının taahhüt etmek istediği bir polinom, f(x)=x²+x+1, vardır. P=(𝜏²+𝜏+1)G eliptik eğri noktasını oluşturabilirler. Yukarıda tartışılan DLA ile, hiç kimse P’den 𝜏²+𝜏+1 değerini hesaplayamaz; bu nedenle gizleme özelliğine sahibiz. Ve P değeri yayınlandıktan sonra, görünüşe göre bağlama özelliğine sahibiz. Bu çok zarif bir şemadır ve bu özellik Marlin ispat sisteminde (Evrensel SNARK’ımız) de kullanılmaktadır.

İlginç olan şey, kanıtlayıcının kimseye 𝜏 bilgisini vermeden P=(𝜏²+𝜏+1)G oluşturabileceği bu senaryoyu yaratabilmemizdir; sadece G, 𝜏G ve 𝜏²G’nin ne olduğunu bilmeleri gerekir.

Bu son derece önemlidir, çünkü eğer insanlar 𝜏’yu bilselerdi, safça garanti edildiğini düşündüğümüz bağlayıcılık özelliğini mahvederlerdi. Muhakememizde nerede hata yaptık?

İspat sisteminin daha sonraki bir noktasında, kanıtlayıcının bir şey yapmak için f(x) kullanmasını isteyeceğiz ve P taahhüdü aracılığıyla gerçekten f(x) kullandıklarını kontrol edebiliriz. Ancak, kanıtlayıcı 𝜏’yu biliyorsa, başka bir polinom g(x) oluşturabilir ve bunu kullanabilir. g(𝜏) = f(𝜏) olduğu sürece, ispat hala geçerli olacaktır, bu da ispat sistemimizin güvenliğini yok eder.

Gördüğünüz gibi, P’yi oluşturarak f(x) polinomunu taahhüt ettiğimizi düşündük. Gerçekte, 𝜏 noktasında belirli bir değeri olan bir polinomu taahhüt ediyorduk. Eğer birisi 𝜏’nun ne olduğunu bilseydi, f(x) ile aynı değere sahip olması koşuluyla (yani g(𝜏) = f(𝜏)) istediği herhangi bir g(x) polinomunu kullanmakta özgür olurdu. Eğer 𝜏 değerini biliyorsanız, böyle bir g(x) polinomu oluşturmak aslında çok kolaydır.

Bu nedenle, insanların 𝜏’yu bilmediği, ancak 𝜏G’yi ve 𝜏²G’yi, 𝜏³G’yi vb. bildiği bir senaryoya ihtiyacımız var. Tau’nun Güçleri töreni tam olarak bunun içindir.

Not: Yukarıda kullandığımız örnek polinomda, f(x)=x²+x+1, en yüksek güç x²’dir. En yüksek güç x³⁰ olsaydı, 𝜏G ve 𝜏²G, …, 𝜏³⁰G’yi bilmemiz gerekirdi. Gerçekte, sahip olmayı beklediğimiz en yüksek 𝜏 gücü 250 milyon civarında olacaktır, bu nedenle kurulum seremonisi buna kadar gidecektir.

Araya girelim: Rastgelelik türü

Burada rastgelelik açısından ilginç bir durumla karşı karşıyayız ve yorum yapmaktan kendimizi alamadık. Normal senaryolar altında, 1 ile 100 arasında rastgele bir sayı isteyebilir ve 50 yanıtını alabiliriz; ancak 50 yanıtı bir kez verildiğinde, rastgele olmaktan çıkacağı için bir daha kullanamayız.

Ancak, 𝜏’nun aslında belirli bir sayı olduğuna ve asla değişmediğine dikkat edin. Yine de f(𝜏)G’yi her hesapladığımızda, bu aslında f(x)’in rastgele bir noktadaki değerini hesaplamaya eşdeğerdir, çünkü kimse 𝜏’yu bilmez. Böylece rastgelelik yarattık, ancak garip nedenlerden dolayı onu kullanmaya devam edebiliriz.

Çok Taraflı Hesaplama

Not: 𝜏 kullanımından x kullanımına geçiyoruz çünkü bu daha yaygın bir gösterimdir.

İki kişinin yukarıda açıklanan Kate taahhüt şeması için katsayılar üretmek istediğini düşünelim. 1. kişi rastgele bir x₁ seçecek ve x₁G’yi yayınlayacak ancak x₁’yi yayınlamayacaktır (ve unutmayın, DLA nedeniyle kimse x₁G’den x₁’yi hesaplayamaz). 2. Kişi daha sonra x₁G’yi alır ve x₂ kez kendisine ekleyerek x₁x₂G’yi elde eder ve bunu yayınlar. Şimdi herkes x₁x₂G=xG’yi görebilir, ancak x’i hesaplamanın tek yolu 1. veya 2. Kişinin xᵢ bilgisini diğeriyle paylaşmasıdır.

Eğer 1. ya da 2. Kişi dürüstse, xᵢ bilgisini artık gerekli olmadığı anda silecek ve böylece protokollerinin güvenliğini garanti altına alacaklardır.

İşte bu, törenin ana fikri budur; törendeki tek bir kişi bile dürüstse güvenlik garanti altına alınır. Her katılımcı kendi parçasına, xᵢ, katkıda bulunur ve daha sonra artık ihtiyaç duymadığı anda onu siler. Dürüst bir katılımcı olasılığını en üst düzeye çıkarmak için katılımcı sayısını en üst düzeye çıkarmak istiyoruz.

Bunu başarmak için töreni katılmak isteyen herkese açık hale getirdik.

Törende ne olacak?

  1. Kişi rastgele bir x₁ seçer ve yayınlar:

2. Kişi rastgele bir x₂ seçer ve yayınlar:

3.'ten (n-1)’e kadar olan kişiler: …

n kişisi rastgele bir xₙ seçer ve yayınlar:

Bu noktada işimiz bitmiştir ve x’i şu şekilde tanımlarız:

Katılımcılar üzerlerine düşeni yaptıktan sonra xᵢ parçalarını silerler. İçlerinden en az birinin bunu yapmış olması koşuluyla, herkes xᶦG güçlerini bilecek, ancak kimse x’i bilmeyecektir (ve DLA nedeniyle x’i makul bir şekilde bulamayacaktır). Katılımcıların işbirliği yaparak ve xᵢ’lerini birbirleriyle paylaşarak x’i oluşturma olasılığı, tek bir xᵢ silindiğinde imkansız hale gelir.

Dürüst olacaklar mı?

Düşünürseniz, kötü bir tarafın x’i bulmak istiyorsa törene katılması çok az mantıklıdır. x’in k parçaya bölüneceğini varsayalım. Kötü bir aktör törene katılırsa gerekli k anahtardan hiçbirini öğrenemeyecektir (katılarak yarattığı ekstra k+1 anahtarını öğrenecektir); öyleyse neden zahmet etsin ki?

Herhangi bir artan katılımcının dürüst olması daha olasıdır ve törene çok sayıda insan katılırsa, bunlardan tek birinin bile dürüst olmama ihtimali düşüktür.

Güncellenebilir

Oluşturulan parametreleri alıp töreni yeniden yapmak da mümkündür; yani daha önce k kişiden k lot xᵢ aldıysak, zaten orada olanları çıkarmadan m lot daha xᵢ ekleyebiliriz. Bu arzu edilen bir durum değildir, ancak insanlar gelecekte katılımcıların dürüstlüğünden endişe duyarlarsa, bu bir olasılık olarak kalır.

Neden bu kadar çok tören var?

Farklı ispat sistemleri, temel fikri nasıl kullandıklarına bağlı olarak farklı gereksinimlere sahiptir. Marlin’in evrensel bir referans dizisi vardır, bu da onun için üretilen Tau Güçlerinin Marlin’de inşa edilen herhangi bir devrede kullanılabileceği anlamına gelir. Buna karşılık, Groth16 her devre türü için benzersiz bir kurulum seremonisi gerektirir ve blok zincirimizde birkaç farklı özellik elde etmek için bu iki kanıt sisteminden de yararlanıyoruz.

Dahası, Aleo’nun kullandığı ZEXE modelinde, ek ölçeklenebilirlik ve işlevsel gizlilik için 1 derinlikli kanıt özyinelemesi kullanıyoruz. Tüm bunlar, bazılarını yapmak diğerlerinden daha kolay olan birkaç farklı kanıt sistemi kurmamız gerektiğini söylemenin uzun bir yoludur. Bu nedenle, kurulum seremonisini 3 bölüme ayırdık.

Her bir seremoninin ne için yapıldığı hakkında biraz daha fazla bilgi edinmek için lütfen buradaki yazımıza bakın ve seremoninin nasıl işlediğine dair birkaç ayrıntı daha görmek istiyorsanız bu yazıya göz atın. Kendinizi gerçekten maceracı hissediyorsanız, neden orijinal Powers of Tau kağıdına göz atmıyorsunuz!

--

--