zk Teknolojisi 1...
Evet arkadaşlar bugün biraz daha kriptonun teknolojisinin içlerine yolculuk edelim ve bilgi birikimimizi artıralım, iyi okumalar;
zero-knowledge, zkRollup, zkSNARK, zCash, zkSTARK, zkTobby, zk, zk, zk… Gelin bu yazıda temelden alıp bu teknolojiyi öğrenmeye çalışalım.
DLT (Distributed Ledger Technology, Dağıtık Defter Teknolojisi) çeşitli verilerin (transferler, hesap ekstreleri vs.) merkeziyetsiz kişiler tarafından yazılıp, kayıt edilerek herkes tarafından erişilebilir, güncellenebilir, doğrulanabilir olmasına imkan sağlayan teknolojilerdir.
Blokzincir Teknolojisi ise işte bu DLT teknolojilerinden biridir. Her blokzincir bir DLT’dir, ancak her DLT bir blokzincir değildir. Blokzincir teknolojisi DLT adı verilen yukarıda bahsettiğim işlemlerin kaydını güvenli bir şekilde tutmaya yarayan bir sistemden ibarettir.
Bugün kripto Dünyasında blokzincirler hemen hemen bütün alana yayılmış durumda olsalar da, aslında CoinGecko‘da görüdüğünüz her kripto para blokzincir teknolojisini kullanmıyor. Örneğin Hedera yukarıda bahsettiğim DLT teknolojisindeki dataları Blokzincire değil, Hashgraph adında başka bir sisteme kaydetmektedir.
Dolayısı ile nasıl blokzincir tamamlayıcı bir teknoloji ise, yani bu teknolojiyi kullanmak tercihe bağlı ise (yani her kripto para için blokzincirlere ihtiyaç yoktur. Blokzincirler merkezi de olabilirler) zk Teknolojisi de aynı böyle tamamlayıcı bir teknolojidir.
Blokzincirler aslında Bitcoin ile ortaya çıkmadılar. 1982 yılında David Chaum verilerin bilgi paketçikleri (bloklar) şeklinde saklanabileceği fikrini ortaya atmıştı, ancak 2008 yılında Satoshi Nakamoto Bitcoin’i merkeziyetsiz bir DLT olarak hazırladığında blokzincir teknolojisini kullanmıştı. Dolayısı ile pratikte blokzincir teknolojisinin Bitcoin ile ortaya çıktığını varsayarsak, blokzincirler DLT Dünyasında nasıl devrim yaratmış bir teknoloji ise, zk Teknolojileri de benim düşünceme göre günümüzdeki teknolojilerin üzerine eklenip devrim yaratabilecek teknolojilerin başında gelmektedir.
Anlattığına göre bu zk güzel bir teknoloji, peki bu neye benziyor?
Blokzincirleri anlatırken yukarıda bir benzetme yaptım, dedim ki blokzincirler verileri bilgi paketçikleri halinde (bloklar) tutan veri saklamaya yarayan DLT teknolojileridir. Adından da anlaşılacağı üzere BLOK – ZİNCİR blokların veri taşıdığı ve her bloğun bir önceki bloğu onaylayarak uzayıp ilerlediği “zincir” şeklindeki yapılardan ibarettir.Kısacası isimler aslında bir şeyi anlama konusunda bize çok yol gösterir.
“zk” zero-knowledge’ın kısaltmasıdır. Aslında zero-knowledge da zero-knowledge proof’un kısaltmasıdır. 🙂 Açıkçası bu tip kısaltmalar hem karizmatik oluyor, hem de birazdan zkSNARK’ları anlattığımda aslında “zk – zero knowledge – zero knowledge proof” kısaltmalarının da aynı zkSNARK’ların çalışma prensibi gibi olduğunu fark edeceksiniz.
Yani tanımlamamız gereken şey “sıfır bilgi ispatı”. Sıfır bilgi ispatını adından yola çıkarak tanımlayalım:
Bu yazıyı yazmadan önce Twitter’da sizlere bir fotoğraf paylaşmıştım. Fotoğraf içerisinde farklı renklerde ve boylarda olan kedilerin içerisindeki tek tavşanı bulmanızı istedim. (Fotoğrafın içerisinde sadece tek bir tavşan vardı. Ancak bir çok yanlış cevap aldım.)
Aslında resimde tek beyaz bir tavşan var. Resimde fareleri tavşan sananlar oldu. Kesin bulduğuna emin olanlar oldu. Ancak yanlıştı. Elbette doğru cevaplayanlar da oldu.
Soruyu sordum ve bana tavşanın yerini ispatlamaya çalıştınız. Doğru bilenler oklar ile aşağıdaki tavşanı bana gösterdiler. Ben de evet bu kişi doğru buldu çünkü bana tavşanın yerini gösterdi dedim. Kısacası bu bilmecede
SİZ: İSPATLAMAYA ÇALIŞAN KİŞİ (Prover)
BEN: ONAYLAYAN KİŞİ (Verifier) idim.
Bu ispat ve onay oyununda ben sadece bana net bir şekilde tavşanın yerini kanıt olarak gösteren kişilere inandım. Peki bu ispat oyununda bana tavşanın yerini “sıfır bilgi” ile ispatlayabilir miydiniz?
Evet ispatlayabilirdiniz, eğer tavşanı resim üzerinde oklar ile göstermek yerine tavşanın konumunu resim üzerinde gizleyip bana direkt tavşanın fotoğrafını karanlıklar içerisinde gösterseydiniz, tavşanı gördüğünüzü bana kanıtlamış olacaktınız, ben bu tavşanın yerinin sizin tarafınızdan bilindiğine emin olacaktım ve başka birisi bu tavşanın nerede olduğunu bilmeyecekti.
Sıfır Bilgi (resime göre konum diyelim) ispatı ile tavşanın yerini bildiğinizi ispatlayan fotoğraf.
Örneğin yukarıdaki gibi bir fotoğrafı bana atsaydınız, ben evet bu kişi tavşanın yerini biliyor diyecektim ve dışarıdan tavşanı göremeyen ve arayan birisi BU ADAM TAVŞANI GÖRMÜŞ AMA BEN YERİNİ BULAMIYORUM diyecekti.
Kısacası tavşanın yerini biliyorsunuz ve bana sıfır bilgi ispatı ile bunu gösteriyorsunuz. Ben sunduğunuz kanıtı onaylıyorum ancak attığınız fotoğrafa bakarak tavşanın tam konumunu bilmek imkansız. (Devasa bir resim düşünün.)
İşte “Sıfır Bilgi İspatı” denilen şey budur. Tavşanın yerini İSPATLAMAYA ÇALIŞAN (PROVER) ile ONAYLAYAN (VERIFIER) arasında şüpheye yer kalmadan ve dışarıya diğer bilgileri (tavşanın konumunu) açık vermeden sunulan kanıttır.
zk kısmını anladım peki bu zkSNARK ne?
SNARK aslında bir çok kelimenin kısaltılmış halidir. zk’nin zero-knowledge-proof’un kısaltılması olduğu gibi.
zk: Zero-knowledge
S: Succinct
N: Non-interactive
AR: ARgument
K: of Knowledge
Yukarıda söylediğim gibi yine kelimelerin anlamlarından tanımlama yapalım..
Zero-knowledge: Yukarıda öğrendiğimiz gibi “sıfır bilgi”.
Succinct: İngilizce kısa ve öz demek. Yani sunduğumuz sıfır bilgi boyut olarak çok küçük. Yani kocaman resimde oklarla tavşanı göstermek yerine minicik tavşanı gösteriyoruz.
Non-interactive: Hatırlarsanız yukarıdaki Prover ile Verifier arasında sürekli soru sorma muhabbeti yoktu, Prover olan siz bana o küçük tavşanı gösterdiğiniz andan itibaren size daha fazla soru sormama gerek kalmadan yerini bana ispatlamış oldunuz. Yani interaktif bir iletişim yok. Bana kanıtı sunuyorsunuz, ben de onaylayıp geçiyorum.
Argument: Bana sunmış olduğunuz delil, argümanın kendisi. Yani tavşanın yukarıdaki sıfır bilgi ispat fotoğrafı ve bu ispatın kriptografik ve matematiksel olarak yazılması (Kriptodaki SNARK’lar birer matematiksel işlemlerin sonucudur).
of Knowledge: Prover yani siz, tavşanın yerini biliyorsunuz, bana ispatlıyorsunuz. Yani bu “bilgiye” sahipsiniz.
Yani zkSNARK’ları özetleyecek olursak: (Yazının en baba yeri geliyor)
- Küçük ve özler (Blokzincirdeki büyük kanıtların boyutlarını düşürüyorlar).
- Sürekli iletişim kurmaya gerek kalmıyor (Ağdaki trafiği azaltıyorlar).
- Dışarıya bilgi göstermiyorlar (Gizlilik sağlıyorlar veya bunun için kullanılabiliyorlar).
- Bilgilerin ispatlarını taşıyorlar (Yapılan transferi herkese kanıtlamış oluyor).
Tamam anladık, peki bunu neden yapıyoruz, devrimsel özelliği ne, hangi proje zkSNARK’ları kullanıyor?
Yukarıda blokzincirler için şöyle bir cümle kullanmıştım. “bu teknolojiyi kullanmak tercihe bağlı” bir kripto para yapabilmek için blokzincire ihtiyaç yok. Blokzincir teknolojisini kullanan kripto paralar var. Aynısı bu zkSNARK’lar için de geçerli. Bu bir teknoloji. Sıfırdan bu teknolojiyi kullanarak bir kripto para yapılabilir, mevcut olan kripto paraya bu teknoloji entegre edilebilir veyahut bu teknoloji kullanılmayadabilir.
Ancak zkSNARK’lar hemen hemen bir çok yerde; Rollup’larda (zkSync, Polygon Zero), sıfırdan yapılan blokzincir teknolojilerinde (zCash, Mina Protocol) veyahut mevcut blokzincir teknolojilerine entegre (zkEVM, Single secret leader election) kullanılabilmektedir. Yazının bundan sonraki kısmında bu teknolojinin kullanılma yerleri ve şekillerini, gelecekte olası kullanım alanlarını ve SNARK’ların eksik ve tamamlanması gereken yerlerinden bahsedeceğim.
Rollup’larda zkSNARK
ZK-Rollup terminolojisinden benim takipçilerim bıkmıştır. ZK-Rollup’lar aslında sadece zkSNARK teknolojisini kullanmıyorlar. zkSTARK dediğimiz ayrı yapılar da Rollup mimarilerinde kullanılabiliyor (zkSTARK’lar ayrı bir yazı konusu, ancak prensip olarak SNARK’lara çok ama çok benzerler). Ancak yukarıda öğrendiğimiz zkSNARK’lar bu sistemlerin yardımına koşuyorlar. Eğer Rollup’lar nedir bilmiyorsanız, aşağıdaki yazımı mutlaka okuyun, sonra bu yazıya devam edin.
Ethereum ve Rollup Teknolojileri
Rollup’ların temel mantığı Ethereum zincirinde büyük boyutlu ve ağı tıkayan işlemlerin zincir dışında yapılıp bu işlemlerin yapıldığına dair KANITIN zincire sunulmasına dayanmaktadır. Böylelikle Ethereum ağındaki merkeziyetsizliği ve güvenliği, Rollup’lardaki hızı ve ucuzluğu almış oluyorsunuz. Yukarıda “kanıt” kelimesini kullandım, işte zkSNARK’lar burada ZK-Rollup’lar için devreye giriyor.
zkSNARK’lar zaten küçük ve öz kanıtlar değil miydi? İşte Rollup’lardaki işlemlerin zkSNARK’lanıp minik hale getirilip zincire bu “Succinct” kanıtların sunulması ZK-Rollup teknolojisinin temel mantığıdır. ZK-Rollup’lar için şöyle bir cümle de kullanmıştım, işlem yapıldıkça ucuzlarlar. Bu da SNARK’ların yapısı ile alakalı.
Örneğin, 10 adet işlemi SNARK’lamak ile 100 adet işlemi SNARK’lamak aynı boyuttur. Boyut değişmiyor ise, aynı boyuttaki 100 işlem 10 işleme göre işlem başına çok daha ucuz maliyette olacaktır.
zkSNARK’lar bize işlem yapıldıkça Rollup’larda daha fazla ucuzluk sağlıyor. Faydası bitmedi; SNARK’lardaki “Non-interactive” kısmı da burada çok önemli bir avantaj sağlıyor. Non-interactive yapılarından dolayı sunulan kanıt tek seferlik oluyor ve ZK-Rollup’lardan > Ethereum ağına olan geçişler sadece birkaç saniye sürüyor. Unutulmamalıdır ki, Optimistic Rollup’larda bu süre 7 ile 14 gün arası sürmekteyken, ZK-Rollup’larda SNARK yapılarının “Non-interactive” olmasından dolayı birkaç dakikayı bulmaktadır. İşte bu yüzden Ethereum geliştiricileri ZK-Rollup’ların yani zkSN(T)ARK teknolojisini kullanan Rollup’ların geleceğin ölçeklenme metodu olduğunu düşünmektedir.
Baştan yapılan blokzincirlerde zkSNARK.
Evet arkadaşlar yazımıza burda ara verelim ve yarın devam edelim. Aslında bizim bunlarla ne işimiz olur bunlar teknik ayrıntılar diye düşünen arkadaşlara tavsiyem şudur ki ne kadar çok bilgiye sahip olursanız yapacağınız yatırımları seçme konusunda bir okadar avantajlı olursunuz, dolayısıyla aslında bunlar pekte ayrıntı değil tam tersine bu sistemde olan insanların bilmesi gerekenler. Her yazımızın sonun da olduğu gibi TobbyKitty abimize teşekkür ederiz.
Sağlıklı, mutlu ve huzurlu kalın...