zkSTARK nedir?
zkSTARK’lar,
Zero-Knowledge
Scalable
Transparent
ARgument of
Knowledge terimlerinin baş harflerinden oluşan bir sıfır bilgi kanıt türüdür.
STARK’lar, yanlış bilinenin aksine SNARK’lardan çok da farklı değildir. STARK ile SNARK’ların teknolojileri benzer özellikler taşımaktadır. STARK’lar da tıpkı SNARK’lar gibi “kanıt” sunar ve her ikisi de “zk” olarak adlandırılan zero-knowledge teknolojisini kullanır. SNARK’ların kullanılabildiği hemen her yerde STARK’lar da kullanılabilmektedir.
STARK’lar SNARK’lardan iki kısımda ayrılıyor:
Scalable (Ölçeklenebilir) ve Transparent (Şeffaf)
1. Scalability (Ölçeklenebilirlik)
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. 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)
Diğer bir farklı kısım ise STARK’ların “şeffaf” olduğu kısımdır.
SNARK’lar TRUSTED SETUP’a ihtiyaç duyarlar. Peki nedir bu Trusted Setup?
Bir sistem trustless ise o sistem içerisinde kimseye güvenmeye gerek yoktur. Ancak, “Trusted” Setuplarda birilerine duyulan güven vardır.
SNARK’lar minik (succinct) kanıtlardan ibaretti. SNARK kanıtlarının oluşabilmesi için Trusted Setup denilen sistemler gereklidir. 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.
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.
Hem SNARK’lar hem de STARK’lar aslında polinomlardan ibarettir. Polinomlar birer fonksiyondur. P(x) = x² + 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² 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.
Yukarıdaki kırmızı eğri P(x) = x³ grafiğidir. Verifier x³ 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” denilen şeffaflığı çıkan sonucu rastgele seçtiği kişilere sorarak onaylatmaktadır. Bu onay süreci Hash Fonksiyonları ile sağlanmaktadır.
Özetle, STARK’lar Trusted Setup’a ihtiyaç duymazlar çünkü STARK kanıtları rastgele bir şekilde sistemdeki Verifier’lara sorulur ve bunlardan onay alır.
Ethereum’un ölçeklenmesinde 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.
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.
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.