Blok zincirde çatal ya da İngilizcesiyle fork kavramını duydunuz mu?
Bir mobil uygulamayı güncellemek çok kolaydır. Güncelleme, uygulamayı çıkaran şirketin geliştiricileri tarafından hazırlanıp yayınlanır; son kullanıcılar ise bu güncellemeyi uygular. Ancak Bitcoin (BTC) ya da Ethereum (ETH) gibi merkeziyetsiz blok zincirlerde güncellemeler böyle yapılmaz.
Merkeziyetsiz, açık kaynaklı blok zincirlerde merkezi bir yönetim organı bulunmaz. Blok zincirin kodları ise dileyen herkes tarafından görüntülenebilir. Böyle bir yapıda herkes, yani ağın tüm katılımcıları güncelleme önerisinde bulunabilir. Bu öneri topluluk içinde tartışılır ve kabul edilirse uygulanır. Kabul edilmediği takdirde ise ortaya yeni bir blok zincir çıkabilir. Böylece bir çatal (fork) oluşur. Çatallanma mekanizması sert çatal (hard fork) ve yumuşak çatal (soft fork) olarak ikiye ayrılır.
Bu makalemizde sert çatal ve yumuşak çatal mekanizmalarına bakacağız. Fakat önce çatallanmanın ne olduğuna kısaca değinelim.
Çatallanma (fork) nedir?
Bir blok zincir çatallanması, en basit tanımıyla, blok zincir ağındaki bir bölünmeyi ifade eder. Yukarıda da belirttiğimiz üzere, çoğu blok zincir ağı açık kaynaklı yazılımlardır. Bu da kodlarının serbestçe kullanılabileceği anlamına gelir. Böylece geliştirici, madenci, düğüm olarak ağa katılanlar blok zincirde iyileştirmeler ve güncellemeler önerebilir.
Çatallanma, blok zincir ağının yazılımı kopyalandığında ya da değiştirildiğinde gerçekleşir. Çatallanmayla beraber yeni bir proje ortaya çıkar. Mevcut blok zincir çalışmaya devam eder ancak bu yeni proje, artık ondan ayrılmıştır. Bir araba konvoyu aynı yolda giderken, konvoyda bir anlaşmazlık yaşandığını ve yol ikiye çatallanınca konvoydaki bir arabanın diğer yolu tercih ettiğini düşünün. Blok zincir çatallanması da bunun gibidir. Çoğu zaman bir proje içinde yaşanan bir anlaşmazlık (bunlar genelde bir güncellemenin yapılıp yapılmaması ya da içeriği ile ilgilidir) çatallanma ile sonuçlanır. Ana projeden ayrılan proje de ilgi çekerse, kendi topluluğunu oluşturur ve böylece yoluna devam eder. Bitcoin Cash (BCH) bunun güzel bir örneğidir. Bitcoin Cash ve diğer Bitcoin (BTC) çatalları ile ilgili daha detaylı bilgi almak için ilgili makalemizi buraya tıklayarak okuyabilirsiniz.
Tabii, çatallanma sonucunda yeni bir proje ortaya çıkabileceği gibi, mevcut bir blok zincir yazılımı yeni bir proje ortaya çıkmadan da güncellenebilir. Bu, Bitcoin (BTC) ve Ethereum (ETH) blok zincirlerinde birkaç kez yaşanmıştır. Bu durumda yapılacak güncelleme için madenciler ya da düğümler arasında bir mutabakat var demektir.
Hard fork ve soft fork nedir?
Blok zincirde yaşanan neredeyse tüm sapmalar çatallanma olarak kabul edilir. Ancak çatallanmalar da kendi içinde hard fork (sert çatal) ve soft fork (yumuşak çatal) olarak ikiye ayrılır. Soft fork için “isteğe bağlı çatal türü” denilebilir. Hard fork ise isteğe bağlı değildir. Peki bu ne anlama geliyor? Gelin, hard fork ve soft fork kavramlarına yakından bakalım.
Hard fork (sert çatal) nedir?
En basit tanımıyla bir hard fork, geriye uyumlu olmayan bir blok zincir yazılım güncellemesidir. Bu, köklü bir değişikliktir. Bir hard fork genelde, ağdaki düğümlerin eski düğümlerin kurallarıyla çelişen yeni kurallar ortaya koymasıyla gerçekleşir. Böyle bir durumda yeni düğümler, yani güncellenmiş düğümler, yalnızca bu yeni versiyonu kullanan düğümlerle iletişim kurabilir. Bir başka deyişle, yazılımın önceki sürümünde çalışan düğümler, yeni sürümde çalışmaz. Peki bu durumda ne olur? Güncelleme, yani yeni sürüm için topluluk mutabakata varamadıysa birtakım düğümler hard fork güncellemesini uygulamaz. Güncellemeyi uygulayan düğümler, aynı blok zincirin bir versiyonu yeni bir blok zincir oluştururlar. Bitcoin Cash, böyle oluşmuş bir blok zincirdir. Bitcoin blok zincirindeki blok boyutlarını artırma önerisi topluluk tarafından kabul edilmeyince, blok boyutunu artırmayı savunanlar Bitcoin Cash’i kurmuştur.
Demek ki hard fork, ortaya aynı blok zincir yazılımının farklı sürümlerini kullanan iki ayrı ağ çıkarabilir. Peki bu durumda coinlere ne olur? Düşünün: Bir Bitcoin madencisisiniz ve 10 BTC’niz var. Ancak 500.000’inci blokta bir hard fork gerçekleşti ve Bitcoin Cash ortaya çıktı. Her iki ağ, aynı geçmişe sahiptir; bu durumda iki blok zincirde de harcayabileceğiniz 10 BTC var demektir. Her iki blok zincirin de 500.001’inci bloğunda BTC’lerinizi harcayabilirsiniz.
Soft fork (yumuşak çatal) nedir?
Soft fork, hard fork’un aksine geriye uyumlu blok zincir güncellemelerine denir. Yani güncellemeyle gelen kurallar, eski kurallar ile çelişmez. Böylece bir soft fork gerçekleştiğinde yükseltilmiş düğümler, eski düğümler ile iletişim kurmaya devam edebilir. Tabii bu durumda, güncellemeyi benimseyen ya da benimsemeyen düğümlerin yeni bir blok zincir oluşturması da söz konusu olmaz.
Bitcoin Cash çatallanmasından hemen sonra Bitcoin’de gerçekleşen Segregated Witness (SegWit) güncellemesi en bilinen soft fork örneklerinden biridir. Yukarıda da bahsettiğimiz gibi, Bitcoin Cash çatallanması, Bitcoin’in blok boyutlarıyla ilgili bir anlaşmazlık sonucunda gerçekleşmiştir. Blok boyutunu artırarak ağdaki işlem hızlarını artırmayı savunanlar, Bitcoin Cash blok zincirini kurmuştur. Bu çatallanmadan sonra klasik Bitcoin ağında ise işlem hızları bir sorun olarak kalmaya devam etmiştir. Kullanıcı sayısı arttıkça ağın ölçeklenebilirliğinin azalması, doğal olarak işlem hızlarının düşmesi ve maliyetinin artması nasıl çözülecektir? Bitcoin topluluğu bunun için SegWit soft fork’u üzerinde anlaşmıştır. SegWit, imza verilerini Bitcoin işlemlerinden ayırır, bu verileri her blokta daha verimli bir şekilde yeniden düzenler ve işlem hızını artırır. Ancak SegWit’i uygulamak ya da uygulamamak katılımcıların kararıdır. SegWit’i reddeden düğümler de Bitcoin blok zincirinde faaliyet göstermeye devam edebilir. Bu nedenle SegWit güncellemesi bir soft fork, yani yumuşak çatal olarak adlandırılır.