0)Son Twitter floodunda Random Function'lardan bahsetmiştim. Peki protokoller bu Random Function'lara neden ihtiyaç duyuyor?
Sharding
1)Sharding'de her Shard'ı ayrı bir Blockchain gibi düşünebilirsiniz. Fakat bu Blockchain'lerin hepsinin aynı Coin'in ekosistemine dahil olmasını ve aynı güvenlik seviyesinde olmasını istiyoruz. Bunun için de bu Blockchain'lerin tamamından aynı Validator'ler sorumlu olmalı.
2)Onlarca Blockchain'in tamamından aynı Validator'lerin sorumlu olması, üzerlerindeki yükü çok arttıracağı için genelde yapılacak işler Validator'lere paylaştırılır. Dağıtımlar kötü niyetli Validator'ler tek bir Shard'da toplanıp orada at koşturmasınlar diye random yapılıyor.
3)Bu random dağıtımlar sürekli tekrarlanıyor fakat aslında bu random dağıtımlar tek başına manasızdır.
Çünkü kötü niyetli Validator'ler yeterince beklediklerinde bu Random dağıtımlar sonucunda eninde sonunda bir dağıtımda bir Shard'da çoğunluk olabileceklerdir.
4)Dolasıyla bu ilk Random atama kötü niyetli Validator'lerin herhangi bir zamanda bir Shard'ı bozmasını engellemeye tek başına yetmiyor.
Peki kötü niyetli Validator'lerin bir Shard'da çoğunluk olmasını neden istemiyoruz?
5)Blockchain Sanal Makinesi = State Machine
Hesabındaki bakiyenin 0'dan 100'e çıkması = State transition
Bu State değişikliğini de herkesin bilgisayarında uygulamamız = State Machine Replication(SMR) = Blockchain
6)Hesabındaki bakiye ne zaman 0'dan 100'e çıkmalı?
Birisi sana 100 coin gönderdiği zaman.
Eğer birisi sana 100 coin gönderdiyse ve bakiyen 0'dan 100'e çıktıysa bu Valid yani geçerli bir State Transition'dur.
Kimse sana coin göndermeden bakiyen artarsa bu da Invalid'dir.
7)Kötü niyetli Validator'lerin Shard'lar Invalid State Transition yapmasının anlamı budur. Yani bir Shard'da çoğunluğu ele geçirdim. Kendime milyonlarca coin bastım. Bu bir Invalid State Transition oluyor ve bunun olmasını istemiyoruz.
O zaman ne yapılması gerekiyor?
8)Akla gelen ilk şey birinin bu geçersiz işlemi diğer Validator'lere bildirmesidir. Bunu yapması için geçersiz işlemin olduğu bütün block'u tekrar hesaplayıp göstermesi gerekmiyor. Sadece geçersiz işlemin olduğu kısmı gösterip yapılan hesaplamanın yanlış olduğunu ispatlayabilir.
İlk akla gelen yöntem Fraud Proof bulunmasını ödüllendirerek teşvik etmek. Sahtekarlığı yapan da cezalandırılacağı için (Slashing) bize bunun ekstra bir maliyeti de olmaz.
10)Bu şekilde ödül vaadi için Fraud Proof bulmaya çalışanlara Fisherman yani Balıkçı denir. Çünkü ancak oltalarına bir sahtekar takılırsa evlerine yemek götürebilirler. Bu da aslında sıkıntılı bir durumdur.
11)Fisherman'ların varolma sebebi sahtekarlığın engellenmesidir. Fakat bu gerçekleştiğinde ve kimse sahtekarlık yapmadığında Fisherman'lar hiçbir ödül kazanamıyor.
12)Bir sahtekarlık bulmadıklarında dahi ödüllendirmek istenirse bu sefer aslında sahtekarlık aramayan ancak bu ödülden faydalanmak için yaptığını söyleyenler çıkacaktır. Gerçekten yapıp yapmadıklarını ise bu şekilde anlama şansımız yok.
13)Fisherman'leri doğru şekilde ödüllendirmek zor bir iş. Bu soruna Verifier's Dilemma deniyor. Bunu çözmeden Fisherman koydum deyip geçen çok proje var. Bence çözümü var fakat çoğu projede göremiyoruz. Buarada Verifier's Dilemma sorunu Optimistic Rollup'lar için de geçerli.
14)Fraud Proof kontrolünü bu şekilde teşvik etmek yerine bu kontrolü de Validator'lere yaptırabilirsin. Dışardan Fisherman bulmaya çalışmaktan daha sağlıklı bir yöntemdir. İkinci defa Random Validator seçimi yaparsın.
15)İlk seçilen Validator'ler sonrasında kimin seçileceğini bilmediği için çoğunluk olduysa dahi geçersiz işlem yapmaya çalışmaz. Bu yönteme Secondary Checkers yani ikincil kontrolcüler deniyor. Polkadot Fisherman kullanmayı bırakıp bu yönteme geçmiştir.
16)Bu yöntemde de Fraud Proof arayan Validator'lerin tembellik yapması Verifier's Dilemma kapsamına girer ve çözmek istenebilir. Fakat tembellik yapanları da kötü niyetli kabul edersek çoğunluğun iyi niyetli kabul edildiği senaryolarda sorunu çözmüş oluruz.
17)Daha iyisi için Verifier's Dilemma çözümlerine geri dönmek gerekiyor. Bu konunun çözümündeki farklı yaklaşımlar için @Truebitprotocol, @flow_blockchain, @arbitrum gibi projelere bakılabilir.
18)Gelelim ZK STARK ve SNARK'lara. Bu teknolojilerle yapılan State Transition'ın Valid yani geçerli bir değişim olduğunu ufak ve hızlı doğrulanabilir bir kanıt ile ispatlayabiliyoruz. Bu kanıta da Validity Proof deniyor.
19)Validity Proof'lar ile ikincil kontrolcü gerekmediği için Verifier's Dilemma ile uğraşmayız fakat sürekli oluşturulan bu kanıtların hesaplama maliyeti yüksektir. Altyapısını kurmak çok zordur. İyi yanı ise tek bir kişinin hesaplaması yeterlidir.
20)İşi sadece ne yaptığına indirgersek biraz büyülü durabilir. Yapılan hesaplamanın doğru olduğunu garanti ediyor. Bu şekilde bakıldığında anlatması da kolaydır. Arkaplanda ne yapıldığı ise oldukça karmaşıktır.
21)Fraud Proof'larda ise göz önünde olan tarafı epey komplex olsa da arkaplanda kullanılan teknolojilerin uygulanması oldukça basittir. Vitalik bu ikisinden Encapsulated vs Systemic Complexity olarak bahsediyor. vitalik.ca/general/2022/0…
22)Örnek olarak da tam bu konuyu vermiş. Kısaca ZK'lerin karmaşıklığı izole edilmiş ve ZK geliştiricilerine yüklenmiş bir karmaşıklık. Geliştiriciler bu sorunları çözüp bu çözümleri bir standarta oturttukça sistemlerin karmaşıklığında ciddi rahatlamalar olacak.
23)ZK tabanlı bu Validity Proof'ların mantıksal temellerini bir miktar anlamak için aşağıdaki flooduma da göz atabilirsiniz.
24)Bu floodu @DoganNear'ın bu konuyu açması sebebiyle yazmıştım. Anlaşılmıştır umarım.
Buarada Telegram grubumuzun yanına bir de Twitter Community'si ekledik. Bu konulara ilgiliyseniz sorularınızı sorup aynı ilgi alanındakilerle sohbet edebilirsiniz. twitter.com/i/communities/…
Twitler silindiği için ekran görüntüsü atmak istemedim fakat arkaplan anlaşılsın diye yazayım. Kısaca konu Near'ın videosu, Invalid State Transition, Fisherman ve ZK Snark idi.
Bahse konu gizemli twitler
• • •
Missing some Tweet in this thread? You can try to
force a refresh
0)Block Hash'lerini Randomness kaynağı olarak kullanma fikri yeni değil. Hatta ilk akla gelen fikir denebilir. Burda Hash'i mevcut block değil de bir sonraki block'un Hash'i olarak kullanmak sadece non-miner aktörler için önleyici bir tedbir.
1)Fakat biz minerların nötral aktörler olmadığını biliyoruz. Eğer kendilerine avantaj sağlayacak bir durum olursa bunu değerlendiriyorlar. Buna da MEV diyoruz. Bir sonraki block'un Hash numarasını kullanmak neden güvenli değil?Çünkü block'u üreten Hash değerini manipüle edebilir.
2)Bazı zincirler değiştirilmesi zor Randomness üretiyor. Örneğin Polkadot'da VRF çalıştırılıyor fakat bunun Gambling için kullanılmasını önermiyorlar. Kendi işleyiş mekanızmaları için yeterli bir Randomness kullanıyorlar fakat Gambling için yeterli değil.
0)Ethereum'un bütün geleceğini Rollup'lara bağlıyorsun ama Rollup'lar kolay bir şekilde Code Execute edemiyor. 40 takla atıp EVM içinde VM içinde WASM içinde GETH çalıştırıyorlar.
1)Ana zincirle aynı kodu çalıştırmaya çalışan sistemlere bir zahmet protokol seviyesinde yardımcı olun. Mantıklı olan budur yani. Ethereum'a bu kadar yakın bir ekibin düzgün bir Rollup yapabilmek için bu kadar kıvrandırılması alkışlanacak bir şey değil.
2)Mühendislik açısından başarılı olsa da sosyal kordinasyon olarak bir faciadır. Başkalarının çözmesi gereken bir problemi arkadan dolana dolana çözmek zorunda kalıyorlar. Bu arkadan dolanma ise beraberinde bir çok güvenlik riski getiriyor.
0)Bridge'ler gerçekten tehlikeli yapılar. Doğru şekilde işlemeleri için platformların beraber çalışıp ortak çözümler üretmeleri gerekiyor. Bridge'ler, birbirine bağladığı ekosistemlerin ortak sorumluluğunda olmalı ve bir sorun olduğunda ortak şekilde çözülmeli.
1)Tam da bu sebeple Ethereum böyle bir geleceğin parçası olamaz. Çünkü Ethereum The DAO olayından beri sorumluluk almaya tövbe etmiş bir ekosistem. Bundan sonra da böyle olmaya devam edecek gibi duruyor. Halbuki pasifistler ETC tarafında kalmalıydı.
2)Mevcut durumlarına bakıp bunu defacto kabul ettikten sonra Cross-chain'i toptan reddetmeleri bunu doğruluyor. İçine kapalı yapıları hiçbir zaman sevmedim. Bu izolasyon ilerde kendi sonlarını getirirse üzülmem.
0)Konumuz %100 ve %99.9999... olasılık arasındaki devasa fark.
1)Bir sistemde %100 kesinlik sağlayan bir garanti yerine %99.9999... garantiyi hedeflemek yazılan algoritmada verimlilik anlamında devasa farklara sebep olabilir. Bu probabilistic garantilerin gücünden kaynaklanır.
2)Bu farkı cryptoda kullanan 2 güzel örnek
A)Avalanche Consensus
B)Zero Knowledge'lar
Peki bu aradaki ufacık fark pratikte neden devasa ölçek farkı oluşturuyor?
Kriptopara'lar doğaya zarar veriyormuş da ondan karşılarmış. Yalan. Anca kendilerini kandırırlar bunlarla.
Dışarıdan bakanlar diyor ki bu Kripto'ya girenlerin hepsi zengin oldu. Bir şey yaptıkları da yoktu bunların. Aslında hak etmiyorlardı. Fakat ben kazanamadım.
Bu benim gerizekalılığımdan olamaz. Onlar haksız kazanç elde etmiştir. Ben de çok ahlaklı bir insan olduğum için bu haksız para kazanma olayına karşıyım. Ne kadar da fakir ama gururluyum(!) Enerji tüketimi, doğa vs olayları bu sözde ahlaklarına kılıf.
Kripto'dan ve ondan para kazananlardan nefret ediyorlar. Yanlışlarını düzelteceklerine yasaklansın istiyorlar. Adeta unutmak istedikleri kötü bir anı. Neden zamanında Kripto'ya girmedim diye kendi kendilerini yiyip bitiriyorlar.
Ye’sin bulanık rûhunu zerk etmeye baktı;
Mel’un aşı bir nesli uyuşturdu, bıraktı!
«Devlet batacak! » çığlığı beyninde öter de,
Millette bekà hissi ezilmez mi ki? Nerde!
«Devlet batacak! » İşte bu öldürdü şebâbı;
Git yokla da bak, var mı kımıldanmaya tâbı?
Âfâkına yüklense de binlerce mehâlik,
Batmazdı bu devlet, «batacaktır! » demeyeydik.
Batmazdı, hayır batmadı, hem batmayacaktır;
Tek sen uluyan ye’si gebert, azmi uyandır.
Kâfî ona can vermeye bir nefha-i îman;
Davransın ümîdin, bu ne haybet, bu ne hirman?