İki hafta önce iki arkadaşımla (
Yunus Gürlek ve
Yaman Can) birlikte ETH Prag hackathon'una katıldık. Bu yazıda, temel bir soruna bulduğumuz ve birçok kişiye blockchain'e yaklaşımlarını değiştirmeleri için ilham verebileceğini umduğumuz tuhaf bir çözümü paylaşmak istiyo
ruz. Çözdüğümüz bir sorun ya da inşa ettiğimiz bir ürün değil, ama tasarladığımız konsept (biraz cesurca olsa da Consensus of Conflicts olarak adlandırıyoruz), merkezi olmayan sistemlere benzersiz bir yaklaşım ve blockchain teknolojisinin her türlü formda nasıl var olabileceğinin doğru bir açıklaması olduğuna inanıyoruz.
Dört hafta önce Türkiye, nüfusun %90'ına yakınının seçime giren iki adaydan birini seçmek için oy kullandığı büyük bir ulusal seçim yaşadı. Bu büyük oy oranından da anlaşılacağı üzere, seçim sonuçları nüfusun çoğunluğu için çok önemliydi. Bununla birlikte, ne yazık ki seçimin izlenebilirliği çok yetersizdi. Çeşitli basın kuruluşları tarafından yayınlanan sonuçlar, sayım sürecinde ve farklı coğrafi bölgelerden gelen sonuçları yayınlamak için seçtikleri zamanda önemli ölçüde farklılık gösterdi. Bu durum, söz konusu kuruluşların siyasi taraflarına bağlı olarak farklı niyetler taşımalarından kaynaklanıyordu. Sorun yönetimle ilgili değildi, zira sonuçlar resmi komite tarafından açıklandıktan sonra herhangi bir karışıklık yaşanmadı. Ancak bu açıklama ertesi sabaha kadar yapılmadı ve insanlar o zamana kadar güvenilir bilgiye ulaşamadı.
Aynı sorun 2019 Türkiye Yerel Seçimlerinde de yaşanmıştı. (https://www.dw.com/en/turkeys-state-news-agency-goes-silent-during-elections/a-48189141)
Bu da seçimde karşılaştığımız ek bir durum. (https://www.duvarenglish.com/many-ballot-box-results-incorrectly-recorded-into-turkish-election-councils-database-news-62422)
Blockchain topluluğunda oylama ve demokrasi büyük ilgi gören ve geliştirilen bir konudur. Bununla birlikte, ekosistemdeki mevcut çözümlerin neredeyse tamamı yalnızca oylama sürecinde gizliliği artırmaya ve toplumsal baskıları azaltmaya, böylece objektif oylamayı teşvik etmeye odaklanmaktadır. Ürünümüz mevcut çözümlere kıyasla farklı bir yaklaşım benimsemektedir. Demokrasiyi bir sistem olarak benimsemekle birlikte, bazı ülkelerin kültürel olarak demokrasiye uyum sağlamakta zorlanabileceğini ve bunun da seçim süreçlerinde zorluklara yol açabileceğini kabul etmektedir. Yukarıdaki son örnekte de görüldüğü üzere, oy sayımı aşamasında objektifliğin olmaması ve sonuçların kamuoyu ile paylaşılması için birkaç kuruma güvenilmesi başlıca zorluklardan biridir.
Önerimiz, seçim sonuçlarının izlenebilirliğini artırmak için blockchain üzerinde bir ürüne sahip olmaktı. Denetçilerin sandık sonuçlarını doğrulayabileceği ve sisteme kaydedebileceği bir web uygulaması tasarladık. Aynı sandıktan sorumlu olan denetçiler sonuçlar üzerinde uzlaşmaya varırsa, bu sonuçlar web uygulaması üzerinden kamuya açıklanacaktı. Taraflar arasında bir fikir birliği olmaması durumunda, bu anlaşmazlık da blockchain üzerine kaydedilecek ve kamunun hangi sandıkların henüz sonuçlara eklenmediğini takip etmesine olanak sağlayacaktır. Bu, merkezi bir yayın kuruluşuna sahip olma ihtiyacını (sonuçta sonuçları değiştirebilir ve önyargıya sahip olabilir) ortadan kaldıracak ve yayınlanan tüm bilgilerin güvenilir olmasını sağlayacaktır. Bu web sitesi sayesinde kamuoyu doğru bilgiye zamanında ulaşabilecektir.
Sistemin temel görünümü
İlk başta çözümün uygulanması oldukça kolay görünüyordu. Zaten farkında olmadan bu ürünü bekleyen dev bir kitlemiz vardı. Ayrıca mükemmel bir denetçi grubumuz vardı, çünkü Türkiye'de tüm büyük partilerin her seçim merkezinde, sayım sürecinde sonuçları onaylayan bazı resmi gönüllüleri vardır. Bu kişiler resmi seçim kurulu tarafından yetkilendirilir ve çalıştıkları merkezin sonucuna itiraz etme hakları vardır. Sonuç olarak, bu gönüllülerin mutabakatıyla ortaya çıkan sonucun güvenilir bir bilgi olduğundan eminiz.
Ancak pratikte bu tasarım temelden kusurluydu. Her şeyden önce, bir seçim merkezindeki tüm denetçilerin kendi görüşlerini bir blockchain sistemi üzerinde paylaşmalarını sağlamak mümkün değildi. Dahası, bu mümkün olsaydı ve tüm denetçileri ürünümüze kaydedebilseydik bile, her seçim merkezinde tam bir fikir birliğine varmak için yine de büyük miktarda işlem ve önemli miktarda zaman gerekirdi. Gönüllü olan ve parti tarafından güvenilen herkes seçimler sırasında denetçi olabilir, bu nedenle tasarımımızın karmaşıklığı gönüllü sayısına bağlı olacaktır ki bu sayı deneyimlerden de bilindiği üzere oldukça hızlı artabilmektedir. Bu da ürünümüzün gerçek anlamda ölçeklenemeyeceği ya da doğru bilgiyi zamanında halka ulaştıramayacağı anlamına geliyordu. Ve işte sihrin gerçekleştiği yer burası :)
Bizim durumumuzun iki önemli özelliği vardır: Birincisi, tüm denetçilerin (seçim sonuçlarının onaylayıcıları olarak da adlandırılabilir) açık bir amacı vardır. Hepsi temsil ettikleri siyasi taraf tarafından seçilmiştir ve dolayısıyla hepsi kendi taraflarının kazanmasını ummaktadır. Bu durum, tüm tarafların kazanmaya ve sonuçları kendileri için optimize etmeye çalıştığı mükemmel bir oyun teorisi modeli yaratmaktadır. Dahası, bizim durumumuzda sadece iki taraf vardır, bu nedenle sadece iki farklı doğrulayıcı grubu vardır. Bu iki koşul, kullanım durumumuzu iki tarafın kazanmak için birbirlerine karşı oynadığı mükemmel bir ikili oyun haline getirmiştir.
Fırtına öncesi sessizlik :D
Mükemmel ikili oyunların çok temel bir özelliği vardır: Eğer iki karşıt taraf oyunun nasıl bittiği konusunda aynı fikre sahipse, sonuç doğru olmalıdır. Hiçbir tarafın kaybetme niyeti olmadığından, kaybeden tarafın oyunun nasıl bittiği konusunda yalan söylemesi için bir neden yoktur. Yani basitçe söylemek gerekirse, oyunu kaybettiğini söyleyen birine her zaman güvenebilirsiniz :)
Bu iki özel varsayımla, tasarımımız "consensus of conflicts" adı verilen özel bir mutabakat mekanizması sunmaktadır. Bu sistemde, sonuçları onaylamak için fikir birliğine ihtiyaç duymak yerine, her seçim merkezi için aynı sonucu onaylamak için yalnızca iki karşıt onaylayıcıya ihtiyacımız var. Bilinmeyen sayıda onaylayıcıya sahip olmak yerine, sonuçların doğru olduğunu (%100 kesinlikle) kanıtlamak için sadece iki tanesi yeterlidir.
Resmi denetçiler seçimden önce siyasi partiler tarafından yayınlanır, bu nedenle onları gruplandırmak ve seçim sırasında hangi partiye ait olduklarını bilmek kolaydır. Zincir üzerinde sadece bir merkle ağacı kök hash'ine sahip olarak (ki bu temelde bir sayıdır), bir işlemin bir yetkili tarafından yapıldığını kanıtlayabilir ve onun seçimdeki tarafını çıkarabiliriz. Böylece iddia edilen her bir sonuca ilişkin onay sayısını saymak mümkündür. Son olarak sözleşme, her bir karşı tarafın 1'den fazla onayı (bu sayı sistem detaylarına bağlı olarak değişebilir) olan sonuçları geçerli olarak etiketler ve gösterir, verileri anında kamuoyuna yayınlar. Ayrıca, bir doğrulayıcının kendi tarafı tarafından zaten doğrulanmamış bir şeyi doğrulayıp doğrulamayacağını görmek için ek bir kontrol ekleyebilir ve zincire herhangi bir yeni bilgi sağlamazsa işlemini göndermeyerek, ihtiyaç duyulan işlem sayısını da önemli miktarda azaltabiliriz.
Bizim için en etkileyici kısım, bu tür bir durumun pek çok durumda mevcut olmasıdır. Temel olarak, iki karşıt tarafça onaylanan (konsensüs tarafından rakip olarak kabul edilen) ve işlem sonucunda taraflardan birinin diğerine karşı kaybettiği herhangi bir işlemin, herhangi bir ekstra doğrulamaya gerek kalmadan doğrulayıcıların geri kalanı tarafından kolayca doğru olarak kabul edilebileceğini öneriyoruz. Elbette bu, gerçek hayattaki bir çözümün oldukça basit bir modelidir. Bununla birlikte, ihtiyaç duyulan doğrulama sayısını azaltmak ve işlem hızını artırmak için birbiriyle çelişen doğrulayıcı gruplarına sahip olma fikri oldukça geçerli olmaya devam etmektedir. Sonuçta blok zinciri makinelerle değil, teknolojinin kendilerine söylediklerine inanan insanlarla ilgilidir. Ve oyunu kaybettiğinizi söylediğinizde kimse tartışamaz :)
Sonuç olarak söylemek istediğimiz, her kullanım durumunun benzersiz olduğu ve farklı durumlar için farklı yaklaşımların mevcut olabileceğidir. Bu nedenle, doğrulayıcıların nasıl hareket edebileceğine dair her zaman aynı temel varsayımları korumak yerine, kendi teorinizi bulmaya çalışın. Kendi varsayımlarınızı oluşturun ve probleminiz için daha kısıtlı bir alana sahip olmaya çalışın. Tüm geliştiricilerin bildiği gibi, bir problemi daha da spesifikleştirmek sadece bir sistemin karmaşıklığını artırabilir ve çoğu durumda tamamen yeni ve daha iyi bir çözümle sonuçlanabilir. Ve dünyanın daha iyi çözümlere ihtiyacı olduğunu biliyoruz.