zk-STARK nedir?

Başlamadan:

Yazı içerisinde yer yer matematik formüllerine ve Polinomlara yer verilmiştir. STARK’lar olabildiğince basit metodoloji ile anlatılacaktır. Ancak öncelikle daha iyi ve etkin anlatım için zkSNARK yazımın okunması gerekiyor.

zk-SNARK Teknolojisinin en basit anlatımlarından biri yukarıda yazmış olduğum yazıdır. STARK’lara SNARK’ların kuzeni diyebiliriz. Metot olarak SNARK ve STARK Teknolojileri benzer özellikler taşırlar. STARK’lar da tıpkı SNARK’lar gibi “kanıt” sunarlar ve her ikisi de “zk” olarak adlandırılan zero-knowledge teknolojisidir. SNARK’ların kullanılabildiği hemen her yere STARK’lar da kullanılabilmektedir. Bu yazı STARK’ları anlatmakla kalmayıp, SNARK’lar ile STARK’ların arasındaki farka değinecektir. Yazının sonuna doğru, benim de içerisinde bulunduğum STARK’ları kullanan StarkNet ekosistemi hakkında hap bilgiler içerecektir. STARK’lar hakkında çok fazla bilgi olmadığı doğrudur, çünkü SNARK’lara göre STARK’lar çok daha yenidir. Bu yazı STARK’lar hakkında yeterli ve işe yarayan bilgileri vermeyi amaçlamaktadır.

STARKLAR

SNARK – STARK ayrımı

SNARK’ları anlatırken “SNARK”ın aslında bir kısaltmadan ibaret olduğunu söylemiştim.

zk: Zero-knowledge
S: Succinct
N: Non-interactive
AR: ARgument
K: of Knowledge.

“STARK” da bir kısaltmadır ve SNARK’tan tek harfi farklı olmasına rağmen aslında S harfi SNARK’taki “Succinct”in kısaltması değildir.

zk: Zero-knowledge
S: Scalable
T: Transparent
AR: ARgument
K: of Knowledge.

Görüldüğü üzere STARK’lar SNARK’lardan iki kısımda ayrılıyor:
Scalable (Ölçeklenebilir) ve Transparent (Şeffaf)

STARK’lar işte bu iki farktan dolayı SNARK’lardan ayrılmaktadır. Aradaki fark iki kelimeye sığmayacak kadar devasadır, ancak bu farklar biri diğerinden daha iyi anlamına gelmemelidir. STARK’lar ve SNARK’lar iki ayrı teknoloji olup her ikisinin de kullanım yerleri ihtiyaca göre ortaklık gösterebilir. Birbirlerine karşı farklı üstünlükleri mevcuttur. Bu yazıda bu farklardan bahsedilecek olup, bu farkların mevcut sistemler üzerindeki yan etkilerine de değinilecektir.

1. Scalability (Ölçeklenebilirlik)

Scalable – Transparent – Argument of Knowledge

“Ölçeklenebilirlik” kelimesi aslında her sistem için farklı anlamlar ifade eder. Örneğin “Consensus” için “ölçeklenebilirlik”ten bahsediyorsak bu o konsensustaki karar mekanizmasına katılacak bilgisayar (node) çoğunluğunu ifade eder, diğer bir deyişle, bir konsensus ne kadar iyi ölçeklenebiliyorsa o konsensusta o kadar fazla node kurulabileceği anlamına gelir.

Örneğin Bitcoin’deki Nakamoto Konsensus şu an yeryüzündeki en ölçeklenebilir konsensustur. Çünkü Nakamoto konsensus milyonlarca bilgisayarın birlikte çalışabilmesine olanak tanımaktadır. Ancak Tendermint Konsensus’u birkaç bin validator node’u geçememektedir. Dolayısı ile Nakamoto Konsensus Tendermint Konsensus’undan daha ölçeklenebilirdir.

Eğer blokzincir ölçeklenebilirliğinden bahsediliyorsa, yanlış bilinenin aksine bu o blokzincirin ne kadar TPS (saniyedeki transfer sayısı) bastığı değildir. Ne kadar TPS’yi ne kadar maliyete oranla bastığıdır. Örneğin, bloklar büyütülerek veya hızlandırılarak bir blokzincir ölçeklenemez. Çünkü bloklar büyürse, o blokzinciri onaylamak için gerekli donanım gereksinimi artacaktır. Bu da merkeziyetsizliği bozacaktır.

Peki SNARK veya STARK’ların ölçeklenebilirliğinden kasıt nedir? STARK’lar “Scalable” ise SNARK’lar arasındaki bu ölçeklenebilirlik farkı nedir? Bu sorular önemlidir.

Bilindiği üzere SNARK’lar birer KANITTIR tıpkı STARK’lar gibi. Eğer kriptoda “kanıtların” ölçeklenebilirliğinden bahsediliyorsa bu o kanıtın oluşturulma zamanıdır. Hem SNARK hem STARK kanıtlar belli matematik formülleri ve denklemleri ile oluşturulmaktadır. (İlerleyen kısımda buna biraz da olsa değinilecektir.) Dolayısı ile bir kanıt sistemi ölçeklenebiliyor diyorsak işte bu kanıtın oluşturulma süresi ne kadar kısa ise o kanıt sistemi o kadar ölçeklenebilir demektir.

Yukarıdaki hareketli görsel aslında güzel bir örnektir. “Computation” kısmı çeşitli sayıları ve formülleri hesaplayarak bir kanıt oluşturur. SNARK yazısındaki Prover ile Verifier arasındaki tavşanın yerini ispatlayan oyunu düşünün.

Prover: Tavşanın yerini ispatlamaya çalışan siz.
Verifier: Tavşanın yerini doğru bildiğinizi onaylayan ben idim.

İşte bir kanıtın ölçeklenebilirliğinden bahsediyorsak, tavşanın yerini ispatlamaya çalışan siz “Prover”ların bu ispatı ne kadar çabuk oluşturabilmenizi konuşuyoruz demektir. Yani bir kanıta (SNARK, STARK veya Bulletproof fark etmez) ölçeklenebilir diyorsak, bu onun oluşturulma süresinin o kadar hızlı ve kısa sürede olmasını ifade eder. (Prover time)

Yukarıdaki görsel STARK’ların Prove zamanının SNARK’lara göre ne kadar hızlı olduğunu gösteriyor. Görseldeki y-ekseni mevcut kanıtın oluşturulma hızını (süresini), x-ekseni ise verilen hesaplama gücünün karışıklığını göstermektedir. Görüldüğü üzere hesaplama karışıklığı arttıkça SNARK kanıtlarının oluşması STARK kanıtlardan çok daha uzun sürmektedir. Hatta bir karışıklığın çok fazla artırıldığı noktada (Level 6) SNARK kanıtı 100 bin saniyenin çok daha üzerine çıkmaktadır ve yüksek seviyede bir karışıklıkta SNARK kanıtları oluşturmak çok uzun süreler alırken STARK kanıtları oluşturmak yine mümkün olmaktadır.

Bu görsel ise oluşturulan kanıtın onaylanma süresini göstermektedir. (Verify) y-ekseni saniyeler olarak geçen süreyi, x-ekseni hesaplama karmaşıklığını gösteriyor. Görüldüğü üzere hesaplama karışıklığı arttıkça SNARK’lar (Mavi), STARK (Turuncu)’lardan çok daha uzun sürede onay alıyor.

STARK’ların S’sindeki “Scalable (Ölçeklenebilir)” kelimesi işte buradan geliyor. STARK’lar çok daha zor ve karışık hesaplamalarda SNARK’lardan çok daha hızlı kanıt oluşturabilmekte ve bu kanıtları onaylayabilmektedir. (Prove – Verify STARK’larda çok daha hızlıdır.) Ancak unutulmaması gerekir, Groth16 gibi uygulama-spesifik circuit SNARK’lar STARK’lardan biraz daha hızlı Verify yapabilirler, ancak aradaki fark işlemler kompleksleştiğinde STARK’lar buna rağmen çok daha hızlıdır.

2. Transparency (Şeffaflık)

Scalable – Transparent – Argument of Knowledge

Diğer bir farklı kısım ise STARK’ların “şeffaf” olduğu kısımdır ki, bu kısım karışıktır, ancak olabildiğince basit anlatmaya çalışacağım.

Hemen başlayalım; SNARK’lar TRUSTED SETUP’a ihtiyaç duyarlar. Bu “Trusted Setup” bir çok kişi tarafından duyulmuştur ancak ne işe yaradığı çok kurcalanmamıştır, genelde “Trusted Setup kötüdür.” diye bilinir. Nitekim doğrudur, Trusted Setuplar istenmeyen çocuktur ve STARK’lar Trusted Setup’a ihtiyaç duymazlar. Peki nedir bu Trusted Setup?

Yine kelimeleri çözerek ilerleyelim, “Trusted” ne demektir veya “Trustless” ne demektir? “Trustless” bir sistem demek, o sistemin çalışması için kişilerin birbirlerini tanımasına veya güvenmesine gerek olmadığı anlamına gelmektedir. Diğer bir ifade ile bir sistem “Trustless” ise o sistemi kullanmak için kimseye güvenmeye ihtiyaç olmadığı gibi mevcut sistem içerisindeki doğru olmayan kişilikler sistemin durmasına veya aksamasına neden olmazlar.

Örneğin; Merkezi sistemler “trustless” değildir. Çünkü yapacağınız işlemler ve bunların doğruluğu için merkezi otoriteye güvenirsiniz. Her merkeziyetsiz sistem de Trustless değildir. Örneğin Ethereum üzerindeki bir akıllı kontrat köprü olan Fantom Bridge trustless değildir, tek kişi kontrol etmez ancak köprünün işlevini sürdürebilmesi için çoğunluğun dürüst olması gerekir.

Bitcoin veya Ethereum “trustless” mıdır? Bu blokzincirlerde yaptığımız transferlerde neticede blokzincirin kendisine güveniyoruz. Blokzincirler aslında birer “güven makinesidir” ve bu güveni bizler sağlamaktayız. Ve bundan dolayı blokzincirlerde kurulan her “node” “trustless” olmaya atılan adımdır. Her yeni node sisteme duyulan güveni minimize eder. Bu yüzden “Don’t trust, verify” mottosu buradan gelmektedir. Her neyse, node kurun. 🙂

Kısacası bir sistem trustless ise o sistem içerisinde kimseye güvenmeye, bel bağlamaya gerek yoktur. Demek ki, “Trusted” Setuplarda birilerine duyulan güven vardır. Şimdi bu Trusted Setup’ı inceleyelim ve daha sonra içerisindeki “Trusted” olan mekanizmayı ele alalım.

Daha önceden bahsettiğimiz gibi SNARK’lar minik (succinct) kanıtlardan ibaretti. SNARK kanıtlarının oluşabilmesi için Trusted Setup denilen sistemler gereklidir ve bahsedilen Trusted Setup yukarıda çizdiğim gibi bir sistemdir. Eğer herhangi bir datanın, örneğin; transfer bilgisi, blok bilgisi SNARK’lanması gerekiyorsa, bu Trusted Setup içerisindeki kişiler tarafından yapılır, girilen veri unutulur ve geriye sadece SNARK kanıtı kalır.

İlk Trusted Setup örnekleri 2016’da zCash ile birlikte ortaya çıktığında Trusted Setup içerisinde toplam 6 kişi SNARK kanıtları oluşturuyordu. Bu 6 kişinin tek birinin doğru olması, doğru SNARK kanıtları oluşturmaya yetse de, neticede 6 kişinin sözünün geçmesi tam olarak “Trustless” bir sisteme ters durumdur.

Dolayısı ile “Trusted Setuplar” girilen (gizli de olabilir) verileri alıp bunları “Succinct” kanıtlara dönüştürüp minik bir çıktı yaratıp daha sonra girilen verileri unutan bir sistemdir. Ve bu sistem içerisindeki kişi sayısı sınırlı olup ve sistemin çalışması için en az bir kişiye güven gerektirdiğinden “Trustless” değildir.

Her “Trusted Setup” modeli aynı değildir. Yukarıda Vitalik’in çizimini yaptığı, benim çizimimden farklı olan “powers-of-tau setup” modeli artık günümüzdeki daha modern olan “Trusted Setup” modeline örnektir. Bu modelde “Trust” modeli 100’lerce insana dağıtılmaktadır. Yukarıdaki gibi birkaç katılımcı yoktur. Böylelikle “Trust” 100″lerce insana dağıtılarak minimalize edilmeye çalışılmıştır. Günümüzdeki SNARK projelerinin hemen hepsi bu sistem ile “Trusted Setup” sorununu aşmıştır ve önceden bilinen birkaç kişilik modeli 100’lere hatta 1000’lere çıkaran “Universal Trust Ceremony” modeline getirmiştir.

İşte STARK’lardaki “Transparency” bu Trusted Setup’ın tamamen ortadan kaldırılması ile elde edilmiştir. STARK’larda Trusted Setup yoktur ve oluşturulan STARK kanıtı sistemdeki tüm Verify’lara randomize olarak dağıtılmaktadır. (Prover’ın sunduğu kanıtlar Verify’lara dağıtılıyor. Prover – Verify oyununu hatırlayın.) Bunu anlayabilmek için Matematikten özellikle de Polinomlardan yardım almak gerekiyor. Çünkü hem SNARK’lar hem de STARK’lar aslında polinomlardan ibarettir.
Uyarı: Minik matematik.

Polinomlar birer fonksiyondur. P(x) = x^2 + 5 için x yerine 0 yazdığınızda size 5 sonucunu verecektir. STARK kanıtları da neticede bu polinomlardan oluşmaktadır.

y = P(x) = x^2
Polinomunda P(x) polinomunun kendisini ve çıkacak sonucu herkes bilmektedir. Burada bilinmeyen şey x değerinin ne olduğudur. P(x) polinomunda x değerini hesaplayan ve çıktısını çıkaran kişi Prover’dır ve çıkan sonucu onaylayan kişi Verfier’dır hemen bir örnek yapalım:

Yukarıdaki kırmızı eğri P(x) = x^3 grafiğidir. Verifier x^3 polinomunu bilmektedir. Bu polinomda x değerinin ne olduğu bilinmemesine rağmen Prover herhangi bir x değerini bu polinoma koyarak 1 sonucunu Verifier’a iletir. Verifier bu polinom sonucunun 1 olması için x yerine 1 yazılması gerektiğini bilip Prover’ın doğru işlem yaptığını onaylamış olacaktır. İşte Prover bu kanıtı, Interactive Oracle Proofs ve Public Randomness ile rastgele bir şekilde çeşitli Verifier’lara sunar ve onay alır.

Özetle, STARK sistemler “Transparency” dediğimiz şeffaflığı çıkan sonucu rastgele seçtiği kişilere sorarak onaylatmaktadır. Bu onay süreci Hash Fonksiyonları ile sağlanmaktadır.

Elbette sistem bu kadar basit değildir. Son derece karışık Polinomlar ve Hash fonksiyonları kullanılmaktadır. Mevcut “Statement” denilen veriler Polinomlar ve Hash fonksiyonları ile sürekli katlanarak ilerlemektedir. Mevcut sistemleri basitleştirmek şu an beni de aşacağı için daha doğru ve açıklayıcı anlatım için Vitalik’in bloguna göz gezdirebilirsiniz.

Özetle, STARK’lar Trusted Setup’a ihtiyaç duymazlar çünkü STARK kanıtları rastgele bir şekilde sistemdeki Verifier’lara sorulur ve bunlardan onay alır. Bu özelliğin bizim için çok önemli bir kısmı daha var: STARK kanıtları Hash fonksiyonlarından oluştuğu için STARK’lar Quantum Bilgisayarlara dirençlidir. SNARK kanıtları Quantum dirençli değildir. Yani Quantum bilgisayarlar Trusted Setup veya Universal Ceremony’de oluşturulan kanıtları kırabilme yeteneğine sahiptir.

Özetle:

  • STARK’lar SNARK’lardan çok daha ölçeklenebilirdir. (Prove Time’ları çok kısadır.)
  • STARK’lar Trusted Setup gerektirmezler.
  • STARK’lar Quantum Bilgisayarlara dirençlidir.

Her şey mükemmel mi? Hayır.

STARK’ların SNARK’lardan çok daha hızlı kanıt oluşturduğu, Trusted Setup gerektirmediği ve Quantum Dirençli olduğu doğrudur. Çünkü STARK’lar Hash Fonksiyonlarından ibarettir ve SNARK’lar kadar küçük değildir. Yani SNARK’lardaki “Succinct” özellik, STARK’larda mevcut değildir. SNARK kanıtlar birkaç Kilobyte (hatta Byte) veriden ibaret iken STARK kanıtlar 40-100 Kilobyte arası Data büyüklüğü içermektedir. Yani STARK’lar Succinct değildir. Bu kanıtlar büyük yer kaplamaktadır.

(Yukarıdaki resimdeki Bulletproofs’lar Monero’da kullanılan kanıtlardır. Ek olarak Verification time STARK’larda 4-6 kişilik Trusted Setup olmayan (yukarıda anlattığım Universal Ceremony) SNARK’lardan daha hızlıdır.)

Neticede STARK’lar birçok yönden üstün olsalar da SNARK’lar kadar minik değillerdir. Şimdi gelelim bu bilgilerin kullanıldığı alanlara.. Daha çok işimize yarayan kısımlara.


L2’lerdeki STARK’lar

Ethereum’un ölçeklenmesinde SNARK kanıtı sunan Rollup projeleri olduğu gibi (zkSync, Loopring vs.) STARK kanıtı sunan Rollup projeleri de vardır. En meşhuru FRI-STARK’ların mucidi olan StarkNet’tir. Bunun yanında Polygon Miden da STARK kanıtlar kullanarak Ethereum’u ölçeklemeye çalışan Rollup’lardan biridir.

Şimdi yukarıdaki bilgilerimizi kullanarak bu projeleri inceleyelim. İlk akla gelen soru şu olacaktır, Rollup’lar neticede bu SNARK veya STARK kanıtları Ethereum’a sunuyor. Acaba örneğin StarkNet, zkSync’den daha mı pahalı olacak?

Evet, ama hayır. Yukarıda ne demiştik, hesaplama gücünün artmasına rağmen Prove zamanı STARK’larda çok değişmezken SNARK süresi uzuyor. Dolayısı ile SNARK kanıtlarının içerisine çok fazla transfer sokmak bu kanıtların oluşma hızını azaltsa da STARK’larda bu durum söz konusu değildir. Yani bir STARK kanıtının içine çok daha fazla transferi geciktirmeden ekleyebiliriz. STARK kanıtının içerisine ne kadar transfer girerse her transfer o kadar ucuzlayacağından büyük kanıtları Ethereum’a yollamak transfer ücretini amorti edecektir. Örnek ile açıklayalım:

Günümüzde 1000 adet transfer içeren bir STARK kanıtını Ethereum’a göndermek 3 milyon Gas iken, bu kanıt içerisine x1000 daha transfer sokunca kanıt sadece 2 kat büyüyor. Dolayısı ile 1 milyon adet transfer için 6 milyon Gas gerekiyor. Yazının hazırlandığı tarihte 1 Gas yaklaşık 0,00006 Dolardır. Bu da StarkNet üzerinde yapılacak bir transfer ücretinin 0.00036 Dolar olması anlamına gelmektedir. Evet, STARK kanıtlar büyüktür, ancak içerisine çok daha fazla transferi alabilmektedir. Yani SNARK ile STARK L2’ler arasında fiyat farkı yoktur.

Öte yandan bilinmesi gerekir, zkSync 2.0 PLONK adı verilen yukarıda anlattığım Universal Trusted Setup modeli kullanan SNARK L2 olarak çıkacaktır. Ancak zkSync’i geliştiren MatterLabs ileride STARK kanıtlar oluşturan L2’ye geçmeyi düşünmektedir ve bu STARK’lara RedShift deniliyor.

STARK’ların yüksek computationlara izin vermesi SHARP adı verilen güzel bir sistemin de önünü açmıştır. Bugün StarkEx’te veya StarkNet’te yapılan transferlerin tümü SHARP adı verilen ortak bir Prover’a yollanıp bütün transferlerin kanıtı Ethereum’a gönderilmektedir ki bu binlerce hatta milyonlarca transferi içerisine alan STARK’ın müthiş bir özelliğidir. Böylelikle tüm StarkNet ve StarkEx ekosistemindeki transferlerin STARK kanıtları Ethereum’a gönderilerek çok ucuz transfer yapabilme imkanı tanımaktadır.

STARK’ların Quantum dirençli olduğundan bahsetmiştik. Ancak söz konusu L2 olduğunda bunun şimdilik bir önemi yoktur. Çünkü Ethereum da şu an Quantum Bilgisayarlara dirençli değildir. L2 güvenliği Ethereum sorumluluğunda olduğu için Ethereum Quantum bilgisayarlara karşı dirençli olmadığı için StarkNet üzerindeki varlıklar da Quantum’a karşı dirençli değildir. Ancak bu durum Ethereum’un Quantum dirençli olmasıyla değişecektir. Bunu da eklemek gerekir.

StarkNet STARK’ların bu özelliklerini kullanan ilk L2 projesidir. StarkNet Alpha sürümünde olup, yakın zaman içerisinde herkesin kullanımına açık olacaktır.


Son sözlerim ve yorumlarım

Kendim StarkNetTR kurucularından biriyim. StarkNet ekosistemi için uğraşmaktayım. SNARK’ları da STARK’ları da seviyorum. Her ikisi de çok güzel teknolojiler olup birbirlerine karşı çeşitli üstünlükleri vardır. İkisinin sürekli karşılaştırılıp “bu daha iyidir” denmesine karşıyım. Her iki teknoloji de gelişmeye devam etmektedir. SNARK’lar Trusted Setup konusunda çok büyük yol kat etmiştir, STARK’lar da kanıt büyüklüğünü optimize etmeye devam etmektedir.

Benim fikrime göre, STARK’lar L2 için çok daha uygun. SNARK’lar ise L1 içerisinde kullanmak için daha optimize. Büyük Proofların çözümü L2’de tonlarca transfer eklemekle çözülebilir ancak L1 protokollerinde büyük prooflar sorun olacaktır. (Örn: Mina Protocol’ü zkSTARK’lamak blokzincirin boyutunu büyütecektir.)

StarkNet özelinde ise StarkNetTR co-founder olarak STARK ve Cairo alanında yetiştirmek üzere geliştiriciler arıyoruz. Henüz çok yeni bir oluşumuz, ileride StarkNet üzerinde büyük protokoller, imza projeler yapmak istiyoruz. StarkNet’i ciddi önemsemekle birlikte, üzerinde çalışmaya devam edeceğim.

Winter is coming.. 😉

Tobby Kitty

Yazılarım

%d bloggers like this: