Hard Fork ve Soft Fork Nedir?
İçindekiler
Giriş
Bir blockchain ağında kararlar kimin tarafından verilir?
Fork (çatallanma) nedir?
Hard fork ve soft fork'ların farkı
Hard fork ve soft fork'tan hangisi daha iyidir?
Son düşünceler
Hard Fork ve Soft Fork Nedir?
Ana sayfaMakaleler
Hard Fork ve Soft Fork Nedir?

Hard Fork ve Soft Fork Nedir?

Orta Seviye
Published Nov 29, 2018Updated Aug 24, 2021
8m


İçerik


Giriş

Sizden akıllı telefonunuzdaki dijital bankacılık uygulamasını güncellemeniz istendiğinde muhtemelen bunu hemen yaparsınız. Hatta telefonunuz, siz farkında bile olmadan otomatik güncelleme yapıyor olabilir. Bu gerekli bir süreçtir. En nihayetinde, yazılımın en güncel versiyonunu kurmazsanız hizmete erişiminizin reddedilmesi riskiyle karşı karşıya kalırsınız.

Açık kaynak kripto paralarda işler bambaşkadır. Bitcoin’i kullanmak için, onu oluşturan her bir kod satırını okumanız gerekmez, ama bunu yapma seçeneğine de sahipsinizdir. Burada hiyerarşik bir düzen yoktur ve güncelleme yapmayı zorunlu kılan ya da keyfi düzenlemeler yapan bir banka yoktur. Sonuç olarak, blockchain ağlarına yeni özellikler eklemek zorlayıcı bir süreç olabilir.
Bu makalede kripto para ağlarında, merkezi bir otorite olmamasına rağmen nasıl yükseltme yapılacağını inceleyeceğiz. Bunu yapmak için iki farkı mekanizma bulunur: hard fork’lar (sert/mecburi çatallanma) ve soft fork’lar (yumuşak/geriye uyumlu çatallanma). 


Bir blockchain ağında kararlar kimin tarafından verilir?

Çatallanmaların nasıl çalıştığını anlamak için öncelikle ağın karar verme süreçlerine (ya da yönetimine) dahil olan katılımcıları anlamak önemlidir.
Bitcoin’de, katılımcılar genel anlamda üç alt gruba ayrılabilir – geliştiriciler, madenciler ve tam node kullanıcıları. Bunlar, ağa gerçek anlamda katkıda bulunabilen taraflardır. Hafif node’lar (yani telefonunuzdaki cüzdanlar, dizüstü bilgisayarlar, vb.) yoğun olarak kullanılsalar da ağ dikkate alındığında “katılımcı” olarak kabul edilmezler.


Geliştiriciler

Geliştiriciler, kodun yaratılmasından ve güncellenmesinden sorumludur. Tipik bir coinde, herhangi biri bu sürece katkıda bulunabilir. Kod herkese açıktır, dolayısıyla geliştiriciler de diğer geliştiricilerin değerlendirmesi için değişiklik önerisi sunabilir. 


Madenciler

Madenciler, ağı güvende tutan kişilerdir. Kripto paranın kodunu çalıştırır ve kaynaklarını blockchaine yeni bloklar eklemeye tahsis ederler. Örneğin Bitcoin ağında, bunu Proof of Work (iş ispatı) aracılığıyla yaparlar. Çabalarının karşılığında bir blok ödülü alırlar.


Tam node kullanıcıları

Tam node’lar kripto para ağının belkemiğidir. Blokları ve işlemleri doğrular, gönderir ve alır, aynı zamanda blockchainin bir kopyasını da tutarlar.


Bu kategorilerde kesişimlere sıkça rastlayabilirsiniz. Örneğin, aynı zamanda bir geliştirici ve tam node kullanıcısı ya da bir madenci ve tam node kullanıcısı olabilirsiniz. Hepsi ya da hiçbiri de olabilirsiniz. Aslında, kripto para kullanıcısı olarak değerlendirdiğimiz birçok kişi bu rollerin hiçbirini üstlenmez. Bunun yerine, hafif node’ları ya da merkezi hizmetleri kullanmayı tercih eder.

Yukarıdaki tanımlara baktığınızda, geliştiricilerin ve madencilerin ağ adına karar vermesinin doğru olduğunu düşünebilirsiniz. Geliştiriciler kodu yaratır – onlar olmadan çalıştırılacak bir yazılım olmaz, yazılım hatalarını kimse düzeltmez ya da yeni özellikler eklemez. Madenciler de ağı güvenli hale getirir – sağlıklı bir madencilik rekabeti olmadan zincir başkalarının eline geçebilir ya da durma noktasına gelebilir.
Fakat eğer bu iki grup, ağın geri kalanını kendi isteklerini takip etmeye zorlarsa iyi bir sonla karşılaşmak mümkün olmayacaktır. Birçok kişiye göre, gerçek güç tam node’larda toplanmıştır. Bu ağın büyük oranda tercihe bağlı bir fonksiyonudur, yani kullanıcılar hangi yazılımı çalıştıracaklarını seçebilir. 

Geliştiriciler evinize gelip sizi silah zoruyla Bitcoin Core ikili kodlarını indirmeye zorlamaz. Madencilerin, kullanıcıları istemedikleri bir değişikliği yapmaya zorlaması ve “ya kabul et ya terket” yaklaşımını benimsemesi durumunda kullanıcılar ağı terk etmeyi seçecektir. 

Bu taraflar tüm gücü elinde tutan yöneticiler değildir – yalnızca hizmet sağlayıcılardır. İnsanlar ağı kullanmamaya karar verirse coin değer kaybeder. Değer kaybı ise doğrudan madencileri etkiler (aldıkları ödüller dolar bazında daha düşük bir değere sahip olur). Geliştiriciler de, kullanıcılar tarafından göz ardı edilebilir.
Gördüğünüz gibi yazılım kimseye ait değildir. İstediğiniz herhangi bir değişikliği yapabilirsiniz ve diğerleri de sizin değiştirilmiş yazılımınızı kullanmaya başlarsa aranızda iletişim kurabilirsiniz. Bu bağlamda, yazılımda bir çatallanma yaratmış ve süreç içinde yeni bir ağ yaratmış olursunuz.


Fork (çatallanma) nedir?

Bir yazılım çatallanması, yazılımın kopyalandığı ve değiştirildiği noktada gerçekleşir. Orijinal proje hayatına devam eder, ama yeni bir yön alan yeni projeden artık ayrılmıştır. Favori kripto para web sitenizin arkasındaki ekibin işlere nasıl devam edileceği konusunda büyük bir anlaşmazlık yaşadığını varsayın. Ekibin bir bölümü, farklı bir alan adında sitenin bir kopyasını oluşturabilir. Fakat ilerleyen zamanlarda, orijinal siteye kıyasla farklı içerik türleri paylaşmaya başlayabilir.

Projeler aynı altyapıdan gelir ve ortak bir geçmişe sahiptir. Fakat, aynı bir yolun ikiye ayrılması gibi artık yolları kalıcı olarak ayrılmıştır.

Bu tür şeyler açık kaynak projelerde sıkça yaşanır ve Bitcoin ya da Ethereum’un ortaya çıkmasından çok daha uzun bir süre öncesinden bu yana görülmektedir. Fakat, sert çatallanma ve yumuşak çatallanma arasında fark neredeyse yalnızca blockchain dünyasına özgüdür. Şimdi bunlardan biraz daha ayrıntılı bahsedelim.



Hard fork ve soft fork'ların farkı

Benzer isimlere sahip olsalar ve temelde aynı amaca hizmet etseler de hard fork (sert çatallanma) ve soft fork’lar (yumuşak çatallanma) büyük oranda farklılık gösterir.


Hard fork (sert çatallanma) nedir?

Hard fork’lar geriye uyumlu olmayan yazılım güncellemeleridir. Bunlar genellikle node’ların, eksi node’ların kurallarıyla bir şekilde çelişen yeni kurallar eklemesiyle ortaya çıkar. Yeni node’lar, yalnızca yeni versiyonu kullanan node’larla iletişim kurabilir. Sonuç olarak blockchain ayrılır ve iki farklı ağ ortaya çıkar: eski kuralları kullanan bir ağ ve yeni kuralları kullanan bir ağ.


Node’lar güncelleme yaptıklarında maviye döner. Eski sarı node’lar yeni node’ları reddeder, fakat maviler kendi arasında bağlantı kurar.


Bu durumda artık paralel olarak çalışan iki ağ vardır. Her ikisi de bloklar ve işlemler üzerinde çalışmaya devam eder, ama artık aynı blockchain üzerinde çalışmazlar. Çatallanma olana kadar tüm node’lar aynı blockchaine sahiptir (ve bu geçmiş varlığını sürdürür), ama çatallanmanın ardından farklı bloklara ve işlemlere sahip olurlar.



Ağlar ortak bir geçmişe sahip olduğu için çatallanma öncesinde coin tutuyorsanız artık her iki ağda da coine sahip olursunuz. 600.000. Blokta bir çatallanma yapıldığı sırada 5 BTC’niz olduğunu varsayalım. Bu 5 BTC’yi eski zincirin 600.001. Bloğunda harcayabilirsiniz, ama bu 5 BTC yeni blockchainin 600.001. Bloğunda hala harcanmamış olur. Kriptografinin değişmediğini varsayarsak, özel anahtarınız çatallanmış ağda hala 5 BTC’ye sahip olacaktır. 
Hard Fork için bir örnek olarak 2017 yılında Bitcoin’i iki ayrı zincire ayıran çatallanma verilebilir - orijinal ağ olan Bitcoin (BTC) ve yeni ağ Bitcoin Cash (BCH). Çatallanma, ölçeklendirme için en iyi yaklaşımın ne olduğu konusunda uzun tartışmalar sonrasında yapılmıştır. Bitcoin Cash taraftarları blok büyüklüğünü artırmak isterken, Bitcoin taraftarları değişikliğe karşı çıkmıştır.
Blok büyüklüğünde bir artış kuralların değiştirilmesini gerektirir. Bu çatallanma SegWit soft fork’undan (bundan ileride bahsedeceğiz) yapılmıştır, dolayısıyla node’lar o dönemde yalnızca 1MB’den küçük blokları kabul edebilmektedir. Diğer açılardan geçerli olan fakat 2 MB’lik bir blok yaratırsanız, diğer node’lar bunu reddeder.

Bu bloklar, yazılımlarını 1MB’den büyük bloklara izin verecek şekilde değiştiren node’lar tarafından kontrol edilebilir. Tabi ki bunun sonucunda yeni yazılıma sahip node’lar eski versiyondaki node’larla uyumsuz hale gelir ve yalnızca aynı protokol değişikliğini yapan node’lar kendi arasında iletişim kurabilir.


Soft fork (yumuşak çatallanma) nedir?

Soft fork (yumuşak çatallanma) geriye uyumlu bir yükseltmedir, yani yükseltilmiş node’lar yükseltme yapmamış node’larla iletişim kurmaya devam edebilir. Soft fork’ta genellikle eski kurallarla çelişmeyen yeni bir kural eklenir.
Örneğin, bir soft fork aracılığıyla blok büyüklüğünde bir küçülme uygulamaya konabilir. Bunun için yine Bitcoin’den bir örnek verelim: Bitcoin’de bir bloğun ne kadar büyük olabileceğine yönelik bir sınırlama olsa da bloğun ne kadar küçük olabileceğine yönelik bir sınırlama yoktur. Yalnızca belli bir büyüklüğün altındaki blokları kabul etmek isterseniz, tek yapmanız gereken daha büyük olanları reddetmektir.

Fakat bunu yapmanız ağla bağlantınızı otomatik olarak koparmaz. Bu kuralı uygulamayan node’larla iletişim kurmaya devam edersiniz, ama size yönlendirdikleri bilgilerin bir kısmını filtrelersiniz.

Soft fork için gerçek hayattan iyi bir örnek, Bitcoin/Bitcoin Cash bölünmesinden hemen sonra gerçekleşen ve daha önce bahsettiğimiz Segregated Witness’tır (Ayrılmış Tanık - Segwit). SegWit blokların ve işlemlerin formatını değiştiren bir yükseltmedir, fakat zekice tasarlanmıştır. Eski node’lar işlemleri ve blokları doğrulamaya devam edebilir (yeni format eski hiçbir kuralı bozmaz), fakat bunların ne olduğunu anlayamaz. Bazı bölümler node’ların yeni yazılıma geçmesi durumunda okunabilir hale gelir, bu da node’ların ek verileri çözümleyebilmesine imkan tanır.



SegWit’in etkinleştirilmesinin üzerinden iki yıl geçmiş olsa da tüm node’lar yükseltmeyi yapmamıştır. Yükseltmeyi yapmak bazı avantajlar sunar, fakat ağı bölecek bir değişiklik olmadığı için değişikliğe yönelik aciliyet söz konusu değildir.


Hard fork ve soft fork'tan hangisi daha iyidir?

En temelde bu iki çatallanma türü de farklı amaçlara hizmet eder. Tartışmalı hard fork’lar topluluğu bölebilir, ama planlı olanlar herkesin fikir birliğine varmasıyla yazılımın değiştirilmesi özgürlüğünü sunar.

Soft fork’lar daha nazik seçeneklerdir. Genel anlamda, yeni değişikliklerin eski kurallarla çelişmemesi gerektiği için yapılabilecekler sınırlıdır. Bununla birlikte, güncelleme eskiyle uyumlu kalabilecek şekilde düzenlenebilirse ağı bölme konusunda kaygılanılmasına gerek kalmaz.


Son düşünceler

Hard fork ve soft fork’lar, blockchain ağlarının uzun vadeli başarısı için çok önemlidir. Merkeziyetsiz sistemlerde, merkezi bir otorite olmamasına rağmen değişikliklerin ve yükseltmelerin yapılabilmesine imkan tanır.

Çatallanmalar, blockchainlerin ve kripto paraların geliştirmelere devam ederken yeni özellikler entegre etmesini mümkün kılar. Bu mekanizmalar olmasaydı, yukarıdan aşağıya kontrol mekanizmasıyla çalışan merkezi sistemlere ihtiyaç duyardık ya da protokol hayatı boyunca aynı kuralları takip etmek zorunda kalırdı.