PoW vs PoS 1

CZLG...NkUj
14 Jan 2024
52

Bu yazı sevgili @tobbykitty tarafından kaleme alınmıştır.

Bu yazı blokzincirlerde kullanılan Proof-of Work ve Proof-of Stake mekanizmalarını derinlemesine analiz etmektedir. Yazıda verilen bilgilerin birçoğu blokzincir literatürüne girmiş ve kabul edilmiş bilgiler olup, ara ara kişisel gözlem, araştırma ve yorumlara dayalı yerler tarafsız bir şekilde irdelenmektedir. Bütün PoW ve PoS sistem yapıları temelden alınacak ve detaylı bir şekilde incelenecektir. Bu kılavuz niteliğindeki yazı PoW ve PoS sistemlerin anlaşılmasında Türkçe veya yabancı kaynaklar içerisinde en kapsamlı örneklerden biridir.
Tobby Kitty

Yazının içeriği

  1. Blokzincir temeli ve bloklar nedir?
  2. PoW nedir? Neden PoW var?
  3. PoS nedir? Neden PoS var?
  4. İlk blokzincirlerde neden PoS yoktu ve PoS atak vektörleri nelerdir?
  5. Farklı uygulanan PoS sistemler.
  6. PoW vs PoS.
  7. Ethereum’un PoS yolculuğu.
  8. PoW ve PoS hakkında yanlış bilinenler.
  9. Son sözlerim ve yorumlarım.

1. Blokzincir temeli ve bloklar nedir?

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.
Kısaca DLT dediğimiz teknoloji sistem üzerindeki bütün kayıtları birçok kişiye dağıtmaya yarayan ve herkesin bu kayıtları saklayıp verilerin güvenliğini temin etmesi prensibine dayanan teknolojidir. Blokzincirler ise bu DLT denilen teknoloji ailesinin bir üyesidir.
Blokzincirler aslında birer bilgisayar programından ibarettir, herkes bu bilgisayar programını bilgisayarına indirip içerisindeki verilerin güvenliğini, değiştirilemezliğini ve doğruluğunu sistemdeki diğer kişilerle birlikte teyit ederler.
Her blokzincir merkeziyetsiz değildir, hatta bugün kriptoda birçok proje merkeziyetsizlik ten bir hayli uzaktır. “Blokzincirler merkeziyetsizdir.” cümlesi kesinlikle yanlıştır. Daha doğru ifade edecek olursak, “Blokzincirler merkezi olabilirler” çünkü bir blokzincire merkeziyetsiz demek için o blokzincire rahatlıkla katılım (yani yukarıda anlattığım blokzincir verilerinin herkes tarafından indirilmesinin kolay olması) gerekmektedir.
Diğer bir ifade ile, Blokzincirlerin merkeziyetsizliği, o blokzincirin kişilerin kolaylıkla blokzincir üzerindeki verileri indirmesi ve bunların güvenliğinin ve doğruluğunun teyit etmesi ile ölçülür. Eğer bir blokzincirde rahatlıkla bu işlemleri yapamıyorsanız (bahsettiğim duruma “node” kurma diyoruz.) o blokzincir merkezidir. Sadece bununla da kalmıyor, blokzincirler sürekli büyüdükleri için (yazıda detaylandıracağım) blokzincirlerin büyüme hızı da artarsa (örneğin blokları büyütmek) bu verileri başta indirmek kolay olsa da ileride zorlaşarak ve merkezi bir hal alıyor.
Blokzincirleri anladım, bunlar birer dağıtık defter teknolojisi ve herkesin bilgisayarına indirip merkeziyetsizlik sağladığı bir veri tabanından ibaret. Peki bu “blok” ve “zincir” nereden geliyor?
Blok ve zincir kelimeleri blokzincirlerin verileri nasıl işlediği ile alakalı bir durum. Blokzincirler yukarıda anlattığım verileri “blok” adı verilen minik veri paketleri içinde saklıyor. Yani blokzincir üzerinde yapılan her transfer, üretilen her NFT, yapılan en ufak işlem veri içermektedir ve bu veriler blok adı verilen bilgi paketçikleri içinde saklanmaktadır. Örneğin bu veri paketleri Bitcoin’de 10 dakikada blokzincire eklenmektedir. İşte “zincir” meselesi de buradan geliyor. Bu veri paketleri denilen “bloklar” birbiri ardına eklenerek, benzetecek olursak “ip gibi” diziliyor.
Belki neden bloklara ihtiyaç var veya neden her blok belli bir süre ile çıkıyor gibi bir soru sorulabilir. (Bu soruya bayılıyorum. :)) Cevabı aslında çok güzel. Dünya üzerinde Türkiye’de benim blokzincir üzerindeki yaptığım işlemleri Papua Yeni Gine’de node kuran adamın bilgisayarına indirmesi gerekiyor. Dolayısı ile bu minik bilgi paketlerinin Dünya’daki diğer bilgisayarlara (node’lara) dağılmasını bekliyoruz.
Örneğin 1 MB’lık bir Bitcoin bloğu Dünyada Bitcoin node’u kuran herkesin bilgisayarına gidiyor ve bu bilgi indiriliyor. Blok süresini 10 dakika değil de, 1 saniye yapsak ve 1 MB yerine 100 MB yapsaydık bu bilgisayarlar çok kısa bir süre içerisinde bu kadar büyük bilgilerini indiremeyecekti. Gördünüz mü, işte blokzincirler bu yüzden ölçeklenemiyor, belli bir zamanda sadece belli büyüklükte minik bilgi paketlerini gönderebiliyoruz. 🙂 Bloklar hızlı veya büyük çıkarsa bu node’lar blokzinciri yakalayamayacak, sadece bilgisayarı ve interneti çok hızlı olan bilgisayarlar bu verileri indirebilecek, böylelikle yukarıda dediğim gibi node kurmak zorlaşacak ve sadece belirli kişiler node kurabilecek ve merkeziyetsizlik bozulmuş olacak.
Neyse, devam edelim.. Blokların eklenme meselesinde çıkaracağımız ilk şey, BLOKZİNCİRLER SONSUZDUR. ÇÜNKÜ İŞLEM YAPILDIKÇA BLOK EKLENECEKTİR. Unutmayın, bloklar içerisinde veri saklayan minik paketçiklerdir. Blokzincirde işlem yapıldıkça bu paketler eklenmeye devam edecektir. Bitcoin, Ethereum vs. blokzincir teknolojisini kullanan her kripto para, işlem yapıldıkça sonsuza kadar blok çıkaracaktır ve bu bloklar blokzincire eklenmeye devam edecektir. Hani Bitcoin 21 Milyonda sınırlıydı diye sorabilirsiniz, sınırlı olan BLOK BAŞINA VERİLEN ÖDÜLDÜR. (Bu kısma geleceğiz.) Tekrar ediyorum, bloklar sonsuzdur.
Özet, blokzincirler dağıtık veri tabanlarından ibaret sistemler olup, prensibi herkesin bilgisayarına indirip, bu veri tabanındaki verileri doğrulamasına ve saklamasına dayanmaktadır. Bloklar minik veri paketleridir, blokzincirlerde işlem yapıldıkça sonsuza kadar eklenmeye devam edeceklerdir. Her blok bir öncekine eklenip devam ettiği için zincir diyoruz. Bu kadar.
Şimdi yazının bütün seyrini değiştirecek ve ana konuya odaklanacağımız soru geliyor:
BU BLOKLARI KİM EKLİYOR?
O zaman sansasyonel bir cümle ile başlayalım: BLOKLARIN EKLENMESİ İÇİN MADENCİLİĞE DE STAKING YAPMAYA DA GEREK YOKTUR. Blokzincirlere herkes blok ekleyebilir. Bu sistemi anlamak için bizim öncelikle blokzincirdeki blokların anatomisini ve fizyolojisini bilmemiz gerekiyor.
Ethereum’da bir bloğun anatomisi aşağıdaki gibidir, ancak ben bunu anlaşılması kolay olsun diye sadeleştirdim.
Aşağıda çok fazla sadeleştirerek bir bloğun anatomisini çizmeye çalıştım. Kısacası blok gövdesi, blokzincir üzerindeki transferlerin bilgisini içerirken, blok başlığı bir nevi özetler ve belirli hash fonksiyonları içeriyor.
“TC kimlik numarası” yazdım, bunlar aslında bloğa ait Hash değerleridir, her blok için tektir. Her bloğun hash değeri farklıdır. Aynı TC kimlik numarası gibi. Bu bilgiyi unutmayın. İleride kullanacağız. 🙂
Blok gövdesindeki transferler, hepimizin blokzincir üzerinde yaptığı işlemlerdir. Bu işlemler MEMPOOL adı verilen bir yerde birikir. Blokzincirde yukarıda bahsettiğim bilgisayarına blokzinciri indiren kişiler yani node’lar bu Mempool adı verilen yerde bekleyen transferleri blokların içerisine doldurup blokzincire eklerler. Her blok da bir sonrakinin TC kimlik numarasını teyit ederek zincire eklenir ve node’lar bir sonraki bloğu eklemek için transferleri tekrardan bloklara eklemeye ve zincire takmaya devam ederler.
İşte blokzincir budur. Blok eklemek için madenciye, staking’e gerek var mıymış? HAYIR.
Şimdi konuya giriyoruz. 🙂 Yukarıda şöyle bir cümle kullandım, Papua Yeni Gine’deki adam da ben de node kuruyorum. Dünyadaki herkes ile gelen bloktaki bilgileri paylaşıp yola devam ediyoruz.
Peki, şöyle bir durumda ne olacak? 5 blok içeren bir blokzincirde 6. bloğu eklemek için ben ve Papua Yeni Gine’deki adam mempool’daki transferleri yeni eklenecek bloğun içerisine dolduruyor olsun. Birbirinden haberdar olmayan bu iki kişi 6. bloğu aynı anda blokzincire eklesin. (İkisi de dürüst kişiler doğru transferleri blok içerisine koydular, hiçbir üç kağıt yok diyelim.) 5. bloğa iki adet blok eklenecektir. Ve şöyle bir görüntü ortaya çıkacaktır:
İki blokta doğru, her iki blokta Blok 5’in TC kimlik numarasına uygun. (Yukarıdaki örneği hatırlayın) yukarıda blokzincirler ip gibi dizilir demedik mi? O zaman bu ne ayak? Hangisini kabul edeceğiz? Ya da olayı daha da karıştırayım. Benim bloğumu ilk görüp kabul eden Dünya’daki diğer adamlar ile Papua Yeni Gine’linin bloğunu ilk görüp kabul eden adamlar blok eklemeye devam etmesi durumunda şöyle bir senaryo ile karşılaşacağız:
Yukarıdaki gibi bir senaryo durumunda ne yapacağız? Hatta Blok 9 üçkağıt çevirerek belki de kafasına göre olmayan transfer bilgilerini gerçekmiş gibi blokzincire yazmış olabilir. (Kırmızı bloklar zincirdeki üç kağıtçı ve doğru bilgileri içermeyen blokları temsil ediyor.) Hatta mevzu çatallanan yerlerin birinde dahi çatallanmaya yol açabilir. Unutmayın merkeziyetsiz blokzincirler tamamen “Permissionless”tır isteyen her kişi kimseden izin almadan istediği şekilde blokzincire katılabilmektedir. Bu tip durumlarda ne yapacağız?
Kim doğru? Nasıl bir karar vereceğiz? Blokzincir masum veya art niyetli kişiler fark etmeksizin çatallanırsa (yukarıdaki örnekte 6. bloktaki çatallanma gibi) hangisini izleyeceğiz? Kırmızı bloklardan sonra doğru bloklar eklenirse bu kırmızı blokları sistem dışına nasıl çıkaracağız? Tamamen bağımsız çalışan ve merkeziyetsiz olan bu blokzincirde doğruluğu ve güveni nasıl sağlayacağız?
Satoshi Nakamoto sohbete katıldı:

2. PoW nedir? Neden PoW var?

Yukarıdaki yazı Satoshi Nakamoto tarafından yazılmış, tüm Dünya’ya nüfuz eden yepyeni ve devrim yaratan buluş olan Bitcoin’in white-paper’daki özet kısmıdır. Satoshi Nakamoto yukarıda bahsettiğimiz blokların doğruluğu ve blokzincirlerin “çatallanma” sorununu Adam Back’in “Hashcash” adı verilen projesinde kullanmış olduğu Proof-of-work adı verilen sistem ile kökünden çözmüştür. Peki nedir bu Proof-of-work, yukarıdaki sorunu nasıl çözdü birlikte inceleyelim.
Satoshi Nakamoto Bitcoin blokzincirinde blokzincirin doğruluğu için çok basit bir kural getirmiştir. Bu kural yukarıda altını çizdiğim “Longest Chain” kuralıdır. Bu kural şunu der: UZUN OLAN ZİNCİR DOĞRU ZİNCİRDİR. UZUN ZİNCİRİ TAKİP ET. Yani gelen bloklar en uzun olan zinciri tercih etmelidir. Böylelikle zincirin çatallanması engellenmiş olur.
Peki, kötü niyetli kişiler zincire çok hızlı kötü bloklar ekleyip daha uzun bir zincir yapsa ne olurdu? Örneğin;
Bu durumda yeni gelen blok 6’dan 9’a kadar olan kötü niyetli bloklara katılacaktır. Böylelikle blokzincirdeki güvenirlilik sarsılacaktır. Bundan dolayı Satoshi Nakamoto bir kural daha getirmiştir. Bu da üstte yazmaktadır. Satoshi blok basmak için CPU gücünü esas almıştır. İşte bu CPU gücü Proof-of-work’ün temelini oluşturmaktadır. Diğer bir deyişle, CPU gücü fazla olan kişinin blok üretme şansı diğerlerine göre daha fazladır. İşte CPU gücüne göre blok üreten bu kişilere madenci diyoruz. 2 adet madencinin eşit CPU gücüne sahip olduğu bir blokzincirde her ikisinin de blok üretme şansı %50 – 50%’dir. Madencilerden biri blok çıkarmak için maden cihazlarına ek olarak birkaç cihaz daha eklerse daha fazla blok çıkarabilme şansı kazanmış olur.
Yukarıdaki görselde Bitcoin’in ilk zamanlarında blok kazmak için gereken ilk ASIC madenci cihazlarını görüyorsunuz. Daha çok blok kazmak için madenciler yarışa girmeye başlamış, ellerindeki madenci cihazlarını artırmaya başlamış ve neticede aşağıdaki gibi devasa madencilik şirketlerinin yönettiği maden cihazları kullanılmaya başlanmıştır.
Kısacası, MADENCİ denilen kişiler işte Satoshi’nin koyduğu CPU gücü daha fazla olan blok üretsin kuralını bilip bu kurala göre hareket eden Bitcoin blokzincirindeki YENİ BLOKLARI EKLEYEN KİŞİLERDİR. Eğer CPU gücüne göre blok ekleme kuralı olmasaydı, herkes rahatlıkla blok ekleyebilseydi, “uzun zinciri takip et” kuralı manipüle edilmiş olacaktı. Çünkü CPU gücü kısıtlı ve aynı zamanda maliyetli bir işlemdir. (Hem donanım, hem elektrik)
Hazır yeri gelmişken bunu da eklemek gerekir, madem CPU gücü fazla olan blok ekleyebiliyorsa, üç kağıtçı insanlar CPU gücünün büyük kısmını ele geçirince kötü blok ekleyemezler mi sorusu akla gelir.
Bu sorunun da cevabı, evettir. Hemen hemen herkesin konuştuğu %51 atak işte bu ataktır. %51 atak, sistemdeki CPU gücünün %51’inden fazlasının tek kötü niyetli adam elinde olması durumudur. Bu durumda %51 ve fazla CPU gücü olan adam kötü blokları sisteme ekleyebilecektir. Ölümcül bir atak değildir, ancak blokzincire duyulan güveni ciddi anlamda baltalamaktadır. %51 ataklardan da sıyrılabiliriz. Ancak zaten uzun olan bu yazıyı ciddi anlamda uzatacağı için bu kısmı atlıyorum. Twitter’da ufak bir %51 atak flood’u yazmıştım onu okuyabilirsiniz. 🙂


Diğer bir soru da şu olacaktır. Peki her iki chain’de eşit şekilde uzarsa ne olur? Aynı anda üst üste blok bulunduğu ve her bloğun da dürüst olduğu durumda ne olacaktır? Görselden gidelim:
Yukarıdaki zincirde bütün bloklar doğrudur. Şans eseri bu şekilde bir çatallanma gerçekleşmiş ve 10. blok 5’er adet bloktan oluşan bu çatallardan birini tercih edecektir. Hangisini tercih ederse etsin. Herhangi birisini tercih etmesi durumunda 6 bloktan sonra diğer taraftaki bloklar “Orphan” Blok olarak nitelendirilir ve blokzincir tarafından yok sayılır.
Alttaki çataldaki bloklar Orphan (Yetim) blok olmuştur. Artık blokzincir için muteber kabul edilmezler. Bu blokları bulan madencilere de ödül verilmez. Bitcoin için Orphan olma durumu 6 bloktur. Ve bu yüzden Bitcoin’de “Finality” 1 saattir diyoruz. Yani işlemlerin kesinlikle blokzincirde kayıtlı olup geri döndürme ihtimalinin çok düşük olması durumu 6 blok sonradır. (Her blok 10 dakika, dolayısı ile 1 saat)
(Diğer blokzincirlerde yapısal değişiklikler vardır, örneğin, Ethereum’da Uncle Block terimi vardır teker teker yazmak yazıyı çok fazla uzatacağından geçiyorum.)
PoW özetle gelen blokların CPU gücü baz alınarak oluşturulmasıdır. Bu yüzden “madenci” “madenci cihazları” gibi terimler türemiştir. PoW için bir konsensus mekanizması mıdır, Sybil koruması mıdır (üçkağıtçılara karşı sistemi koruyan mekanizma) sorusu yöneltilebilir. Açıkçası bunun hiçbir önemi yoktur. Her ikisidir, her ikisi de değildir denebilir. “Uzun zinciri takip et” bir konsensus mekanizmasıdır, çünkü sistemin karar almasını sağlar. “CPU gücü olan blok üretsin” kuralı ise Sybil korumasıdır çünkü herkesin üç kağıtçı blok üretmesinin önüne geçer. PoW konsensus mekanizmasıdır derseniz sizi ayıplayacak değiliz. 🙂 Ben PoW için fork-choice rule’dur diyorum. (Yani çatallardan hangisinin doğru olduğuna karar veren kural) Yazının ileri kısımlarında neden böyle dediğimi daha da açacağım.
Madenciliğin iki temel gideri var. CPU donanım gücü ve elektrik masrafı. İşte bu iki masrafı karşılayabilmek için dürüst olan madenciler yukarıda bahsettiğim TC kimlik numaralarını doğru eşleştirip blokzincire eklediği her bloktan blok ödülü alıyor ve blok gövdesi içindeki transferlerin ücretlerini de cebine atıyor.
Kısacası PoW’te madenciler, transferleri blokların içerisine ekliyor, bu blokları blokzincire takıyor ve bunun için CPU ve elektrik harcıyor ve bütün bu işlemler için Bitcoin ödülü alıyor.
PoW’u anladık. Diğer soru geliyor peki PoS nedir?

Get fast shipping, movies & more with Amazon Prime

Start free trial

Enjoy this blog? Subscribe to riomexes

1 Comment