Bitcoin Çatalı Nedir?

Bitcoin’in çatallanmasını anlatmak için tek bir yazı yetmez. Dolayısıyla bu yazı dizisi iki bölümden oluşacaktır.

Bitcoin’in çatallanmasını (forking) anlamak için öncelikle bitcoin’in bir para meselesi değil, bir matematik ve bilgisayar meselesi olduğu günlere geri dönmemizde fayda var.

Forking, yani çatallanma aslında açık kaynak kodlu yazılımlar dünyasından aşina olduğumuz bir kavram. Bir yazılımın açık kaynak kodlu olması, birden fazla geliştiricinin veya grubun aynı anda tek bir proje üzerinde farklı katkılarda bulunmasına izin veriyor.

Mesela, meşhur bir ofis yazılımı olan OpenOffice.org’u düşünelim. Libreoffice ve NEO Office yazılımları, bu yazılımdan çatallanmış kopyalardır, ve başka birer ekip tarafından yürütülürler. Kaldı ki, Openoffice.org da zamanında Staroffice adlı yazılımdan çatallanmıştır. Daha sonraki yıllarda Staroffice ile Openoffice.org tekrar birleşmiştir. (Yani yazılım dünyasında bu çatallanmaların daha sonra tekrar birleşmeleri gayet mümkündür. Ancak Bitcoin’de değildir. Blok zincirine sonradan müdahele kriptografik olarak imkânsız olduğundan, bitcoin’in çatallanması geri döndürülemez.)

“Çatallanma” aslında yazılım dünyasına ait bir kavram ve son derece normal bir olay.
Bitcoin Bir Zamanlar Sadece Bir Yazılımdı

Satoshi, bitcoin’i ilk olarak GitHub üzerinde bir yazılım projesi olarak oluşturmuştu. Açık kaynak kodlu olan bu yazılım o dönem yalnızca Satoshi tarafından güncelleniyordu ve üretilen Bitcoin’lerin bir parasal karşılığı bulunmuyordu. Aslında amaç sadece bir deney yapmaktı. Deneyin amacı ise, bilgisayarların işlemci gücünü kullanarak taklit edilmesi ve sahtesinin üretilmesi imkânsız olan, kriptografik anlamda güvenli ve bir o kadar pratik bir parasal düzenin olabileceğini kanıtlamaktı. Bu deneyin başarılı olması durumunda, çok daha ileri düzeyde özelliklere izin veren başka coin’lerin çıkması her daim mümkündü, ki öyle de oldu. Ancak ilk başta tahmin edilemeyen bir şey daha gerçekleşti: Sonradan üretilen ve ilkine göre teknik anlamda üstünlükleri bulunan bu alternatif coin’ler, hiç bir zaman Satoshi’nin orijinal Bitcoin’i kadar tutulmadılar.

GitHub üzerinde oluşturulan bu yazılımın ilk fork’u da Litecoin oldu. Litecoin, Bitcoin’in maksimum coin sayısını dörde katlarken, blok oluşturulma süresini de dörtte birine indiriyordu. Böylece çok daha hızlı konfirmasyonlar ve çok daha düşük gönderme/alma komisyonları ile işlem yapmak mümkün oluyordu. Zaten Litecoin’in ismi de tam olarak buradan geliyordu. Yazılım dünyasında bir yazılımın fazla ağırlaşması durumunda aynı işi daha az sistem kaynağı kullanarak yapmaya çalışan sadeleştirilmiş yazılımlara “Lite” unvanı verilir. Eskilerin hatırlayacağı Kazaalite, Adobe Flash Lite, veya cep telefonundan internete girmenin hem pahalı hem de yavaş olduğu günlerde çok iş yapan Facebook Lite’ın isimleri de buradan gelir. İşte Litecoin de Bitcoin’in “hafifletilmiş ve hızlandırılmış” çatalıydı.

Çatallanınca Ne Oluyor?

Şuradaki infografik çalışmamda, sizlere blok zincirinin nasıl çalıştığını anlatmıştım. Blok zinciri üzerinde aslında tek bir kayıt türü bulunur. Yani blok zinciri, bir muhasebe defteridir. Bu defterde, kimin kime ne zaman ne kadar coin yolladığının kaydı tutulur. Defter herkese açıktır. İsteyen herkes blok zinciri dosyasını bilgisayarına indirebilir.

İsteyen herkesin blok zinciri dosyasını bilgisayarına indirebilmesi demek, isteyen herkesin de belirli bir andan itibaren ayrı bir kayıt tutabilmesi ve onunla birlikte hareket eden diğer insanların da kayıtları bu yeni defter üzerinden sürdürebilmesi anlamına gelir.

Yani Ali, Ayşe’ye 3 TL gönderdi şeklinde kayıtlardan oluşan bir defter var elimizde. Bu deftere belli kurallara göre yeni olayları yazıyoruz. (her 10 dakikada bir yeni bir blok oluşturuyoruz, her blokta en fazla 1 MB veri yazıyoruz.) Ben herkese açık olan bu defteri alır, “bundan sonra her 2 dakikada bir yazacağız ve ayrıca her yazışta 2 MB yazabiliriz” dersem ne olur? Bitcoin’i “çatallamış” olurum. Yeni oluşturduğum coin’e “atcoin” adını verebilirim. Bu atcoin’in defteri belirli bir yere kadar bitcoin ile aynı olmuş olur. Yani, o tarihten önceki atcoin cüzdanlarında, o sırada ellerinde bulunan bitcoin kadar atcoin olur.

Basındaki bitcoin çatallanması haberlerinde gördüğünüz “herkese ücretsiz olarak elindeki bitcoin kadar yeni coinden verilecek” muhabbetinin aslı budur. Kimseye ücretsiz coin verildiği falan yok. Blockchain dosyasını kopyalayıp yeni bir zincir ile devam ediyoruz. Dolayısıyla iki zinciri birbirinden ayırdığımız noktada, eski cüzdanlardaki coinler iki zincirde de bulunuyor.

Peki oluşturduğumuz yeni “atcoin” in değeri ne olacak? İşte burası da tıpkı bitcoin’in orijinali gibi tamamen piyasa tarafından belirleniyor. Piyasadaki atcoin arzı ve talebine göre, atcoin’in değeri ortaya çıkıyor. İnsanlar o andan itibaren bitcoin’in bir işe yaramayacağını, asıl mevzunun atcoin olduğunu düşünürlerse, artık atcoin para eder. Ama bunun için, atcoin’in önemli bir sorunu çözüyor olması lazım.

Madencilerin Çatallanmadaki Söz Hakkı Nedir?

Satoshi, ilk bitcoin yazılımını ve dolayısıyla blok zinciri dosyasını tasarlarken çok mantıklı bir iş yapmıştı: Sistem üzerindeki söz hakkı, işlemci gücüne göre belirleniyordu. Yani blok zinciri dosyasının akıbeti, madencilerin belirlediği şekilde oluyordu. Kural açıktı: Halk ne isterse, bitcoin onu yapar.

Bu arada kriptografik detaylara boğulmadan şunu da ekleyelim: Bitcoin’in (ve diğer tüm kripto paraların) yapısı gereği, zaten sık sık minik çatallanmalar yaşanır. Yani, birden fazla madenci ve bu madencileri takip eden node’lar aynı anda blok zinciri problemine farklı geçerli çözümler bulurlar. (Matematikte bir sorunun birden fazla doğru cevabı olması gibi düşünebilirsiniz.) Daha sonra kısa bir süre boyunca bu iki farklı blok zinciri üzerinde farklı madenci grupları çalışırlar. Ancak hangi tarafın toplam işlemci gücü daha fazla ise, o tarafın kurduğu zincir geçerli olur, diğer zincir ise boşa gider. Blok zinciri iliminde bu boşa giden bloğa, “yetim blok” (orphan block) adı verilir. Bir blokluk yetim bloklar sık sık yaşanır, üst üste iki bloğun yetim olması ise çok nadir görülen bir durumdur. Ethereum’un blok süreleri çok kısa olduğundan, yetim bloklar sık sık görülür. Hatta o kadar sık görüldüğü için, ethereum  networkünde bu bloklara “amca blok” (uncle block) adı verilir ve “hayalet protokolü” (ghost protocol) denen bir sistem üzerinden bu bloklar için de madencilere ödeme yapılır. Evet, kriptografik detaylara boğulmadan açıklanmış hali buydu. 🙂

Bitcoin, ilk başlarda sadece bir yazılımdı. Zaten yazılımın ismiydi “Bitcoin”

Bu durum, beraberinde bitcoin’in güncellenmesi için gereken en önemli unsuru da getiriyordu: Madenci gücünün %51’ini elinde bulundurmak. Yani bitcoin ile ilgili bir değişiklik yapılması teklif edildiğinde, işlemci gücünün %51’lik kısmı bu değişikliği kabul ederse, geri kalan kısmın ürettiği bloklar haliyle “yetim blok” olarak adlandırılıyor, tarihin serin sularına gömülüyordu. Böylece, bitcoin’in kimsenin merkezi otoritesine bağlı olmaksızın güncellenebilmesi de mümkün oluyordu.

15 Ağustos 2010: Bitcoin Hack Girişimi

15 Ağustos 2010’da da tam olarak buna benzer bir şey yaşandı. Bir hacker, Bitcoin’in 0.8 versiyonunu hackledi ve 184 milyar bitcoin üreterek kendi adresine gönderdi. (Bitcoin networkünün izin verdiği toplam bitcoin sayısı 21 milyondur.) Bugün Bitcoin Core’un önemli developerlarından biri olan Jeff Garzik, olayı fark etti ve şu şekilde bir mesaj gönderdi. Yaklaşık beş saat içinde bitcoin yazılımı üzerinde gerekli güncellemeler yapılarak kullanıma sunuldu. Bitcoin kullanıcıları hemen yeni versiyonu indirerek, bu hatalı işlemden önceki işlemi baz alan yeni bir zincir üzerinden devam ettiler. (Yani, “hacker kendisine 184 milyar gönderdi” yazılı kayıttan bir önceki sayfaya giderek defteri kopyaladılar ve bu yeni defter üzerinden devam ettiler.) Hacker’ın ürettiği kayıt üzerinden giden “kötü” defter üzerinde devam eden madenciler de oldu tabii. (olaydan habersiz, yazılımını update etmeyen madenciler, bu kayıt üzerinden devam ederek hacker’ın elini güçlendirdiler) Ancak birkaç saat içerisinde güncellenen tarafın işlemci gücü daha fazla oldu ve sorun çözülmüş oldu.

Ethereum ve Ethereum Classic

Bitcoin’in çatallanma mevzularını daha iyi anlayabilmek için, biraz ara verelim ve Ethereum’a dönelim. Ethereum’un tarihinde yaşanan çok önemli bir çatallanma var, ve bu çatallanma aslında bize önümüzdeki bitcoin çatallanmalarında yaşanabilecekler açısından çok önemli fikirler veriyor.

The DAO: Merkezsiz, otonom bir organizasyon

Ethereum’un olayı yalnızca bir para birimi olmaması, aynı zamanda bir sanal bilgisayar olarak çalışabilmesidir. Bu sayede Ethereum ile birçok finansal işlemi otomatik olarak yürütebilmek mümkündür.

The DAO’da, Ethereum’un bu özelliğinden yararlanarak tamamen merkezsiz ve otonom bir organizasyon oluşturmayı hedefliyordu. Yani insanlar paralarını bir sanal bilgisayara gönderecekler, bu sanal bilgisayarın ne yapacağı üzerinde paraları nispetinde söz sahibi olacaklardı. Sanal bilgisayar da oluşturulan bu fon ile artık insanlara borç mu veriyor, hisse senedi mi basıyor, tahvil mi oluşturuyor, ne gerekiyorsa yapabilecekti. Yani içinde memurların çalışmadığı, devlete vergi ödemeyen, üstelik soyulamayan “ideal” bir banka oluşturulmuş olacaktı.

Lakin işler istendiği gibi gitmedi. Bir hacker, DAO’nun kodunda bazı açıklıklar bularak 3,6 milyon ETH çaldı. (O zamanın parasıyla 60 milyon dolar, şimdinin parasıyla ben diyim Ağrı siz diyin Everest.) Tabii bu durum hem ethereum’un, hem de genel olarak tüm kripto para birimlerinin güvenilirliğine ciddi bir gölge düşürmüş oldu. Bunun üzerine sivilceli Vitalik abimizin önderliğinde Ethereum Foundation yetkilileri derhal toplandılar.

Vitalik Buterin (Ethereum’un Kurucusu olan genç arkadaşımız) Bu noktada kendisini anmadan geçemedim.

Toplantıdan, Ethereum’u hard fork yöntemiyle güncelleme kararı çıktı. Yani DAO’nun soyulmasından önceki sayfaya giderek, işlemlere oradan devam edelim dediler.

Ancak sene artık 2010 değildi, ve herkes onları dinlemedi. Ethereum Foundation içerisindeki başka bir grup, bu yapılanın ethereum’un felsefesine son derece aykırı olduğunu söylüyorlardı. Onlara göre, bu paranın çalınmış olması da oyunun kuralları içerisindeydi. Bir yandan da haklıydılar, çünkü aslında olayda Ethereum’un hiç bir suçu yoktu. Paraları çalan hacker, güvenlik açığını Ethereum’da bulmamıştı. Hatalı olan the DAO’nun kodlarıydı ve hacker bu kodlardan yararlanarak çalmıştı paraları. Dolayısıyla olay DAO’nun suçuydu ve sorumluluğu üstlenmesi, insanlara paralarını nasıl geri vereceklerini düşünmesi gerekenler DAO’yu kodlayan yazılımcılardı. (Aslında bir insan değil, sanal bir bilgisayar olan the DAO’nun bu konudaki kendi fikri nedir, ben asıl onu merak ediyorum. Ve bir gün bunu öğrenebileceğimizi düşünüyorum.)

İşte bu ikinci grup da, “kusura bakmayın, sizin paraları çaldırmış olmanız bizi ilgilendirmiyor, biz eski defterden devam ediyoruz kayıtlara” diyerek, işlemci gücünün daha küçük bir kısmına sahip oldukları halde eski zincir üzerinde kayıt tutmaya devam ettiler. Yeni oluşan “güncellenmiş” kaydın işlemci gücü daha fazla olduğu için “Ethereum” ismini kullanmaya onlar hak kazandı. Aslında eski kaydı hiç bozmadan devam eden ekip ise “Ethereum Classic” ismini aldı. (Tabii aslında bunun böyle olmaması, güncellemeyi yapanların yeni bir isim alması gerekiyordu denebilir. Bu noktada kripto para borsalarının da ciddi etkileri  ve söz hakları var, ama burada kitap değil blog postu yazıyorum, dolayısıyla o kadarını da sonra anlatmak zorundayım.)

İkinci bölümde, bitcoin’in bu yaz yaşanan yumuşak çatalını (Segwit) ve yaşanması halen muhtemel olan sert çatalı (Segwit2x) anlatacağız.