Hard Fork, Soft Fork, BIP Kavramları ve Bitcoin Protokolünde Kural Değişimleri
Başta Bitcoin olmak üzere Kripto paralara olan ilgi artmaya devam ediyor. Yıllardır yakında takip ettiğim Blockchain teknolojisi artık her zamankinden daha popüler. Ne yazık ki, Bitcoin dünyasına katılmak isteyen yeni kesimin büyük bir kısmı, sadece hızlı bir şekilde para kazanma hevesiyle geliyor. Gerçek anlamda bu teknolojinin ne getirdiğini anlayan veya anlamak isteyen çok az kişi var.
Tüm bunlar olurken, basın, artan bu ilgiden payını alabilmek için genellikle magazinsel, spekülatif ve hiçbir teknik değeri olmayan haberler yapıyor. Bunun bir sebebi de Fintech dediğimiz kavramın artık başlı başına bir uzmanlık alanı olduğunun farkına varamamış olmaları. Bu alanda haber yapmak için ya ekonomi programlarındaki yorumcularına danışıyorlar, ya da teknoloji köşelerindeki yazarlarına birkaç kelime karalatıyorlar . Sonuçta ortaya, "komik" denecek haberler çıkıyor. Tabi bu şimdilik bir soruna yol açmıyor, hatta oldukça da ilgi görüyorlar. Çünkü gerçek anlamda konuya hakim kişi sayısı bir elin parmaklarını geçmiyor. Umuyorum bu durum zamanla düzelecektir. Tek korkum o zamana kadar birçok kişinin bu haberler doğrultusunda yanlış yatırımlar ile büyük paralar kaybetmeleri. Öyle ki, bazı kaynaklarda "Bitcoin rakipleri" tarzı haberlere denk geldim ve listelerine "IOTA", "Ripple" ve "Ethereum" eklemkten çekinmemişler. Bu alandaki her proje dışarıdan bir kripto para gibi gözükse de, aslında öyle değil. Bazısı daha fazlası (Ethereum), bazısı çok daha azıdır (IOTA). Blockchain teknoloisi kullanan her projeyi bir kripto para zannetmek, internet kullanan her projeyi e-mail zannetmek gibidir. Yazımın amacından çıkmak istemiyorum, fakat medyanın bu haberleri yapan çalışanlarına ya bir uzmandan yardım almalarını tavisye etmesi veya önce "Cryptocurrency", "Platform" ve "Token" kavramları arasındaki farkları araştırmlarını söylemesi gerekiyor. Litecoin veya Dash için Bitcoin'e potansiyel rakip diyebiliriz, fakat IOTA için rakip demek elma ile muzu karşılaştırmak gibidir. Düzeltecek çok şey var ama şimdilik burada bırakıp gerçek Blockchain teknoloisi meraklıları için konumuza gelelim. Hard Fork, Soft Fork, BIP kavramları ve Bitcoin protokolünde kural değişimleri...
![https_%2F%2Fcdn.evbuc.com%2Fimages%2F37275735%2F174035551397%2F1%2Foriginal.jpg](https://steemitimages.com/640x0/https://steemitimages.com/DQmf2ppXDjQzWGzupzT2v8UX82857ND3Yvw5z9w7mFvqdVB/https_%252F%252Fcdn.evbuc.com%252Fimages%252F37275735%252F174035551397%252F1%252Foriginal.jpg)
Bitcoin'de HardFork ve SoftFork kavramlarını 2017 yılı boyunca defalarca duyduk. Bu konuda daha önce paylaştığım birkaç yazıda sizlere genel anlamıyla Bitcoin zinciri (Blockchain) üzerindeki çatallanma olayını anlatmaya çalıştım. Bu kez meraklıları için detaylı bir açıklama ile hem nasıl gerçekleştiklerini hem de teknik yönlerini açıklayacağım.
HardFork ve SoftFork, temel olarak Bitcoin protokolü üzerinde yenileme veya değişiklik yapmak için kullanılan yöntemlerin adıdır. Bu işlemler, Miner'lar veya ağ üzerindeki "Full Node" dediğimiz kullanıcılar tarafından gerçekleştirilebilir. Full Node, Bitcoin ağına bağlı her bilgisayar için kullanılan bir terim. Görevleri, protokol kurallarının (Consensus Rules) doğru bir şekilde uygulandığını denetlemek ve böylece Blockchain güvenliğini sağlamaktır. Örneğin, yeni bulunan bir blok için kaç Bitcoin ödül verileceği (50- 25 - 12,5 vs.), harcanmak istenen bir Bitcoin için doğru imzanın olduğu veya blok boyutlarının en fazla kaç MB olacağı Full Node tarafından kontrol edilir ve mevcut protokole göre onaylanır. Eğer bir işlem yazılım üzerindeki kurallardan birini veya daha fazlasını ihlal ederse Node'lar tarafından reddedilir ve ağdan dışlanır. Bu noktada, "Miner" ile "Full Node" kavramlarını birbiri ile karıştırmayın. Miner'lar yani Bitcoin kazma işini yapanlar Full Node olanların alt kümesi gibidir. Her miner aynı zamanda bir Full Node'dur fakat tersi söz konusu değildir. Buna rağmen devasa boyutlara ulaşan Blockchain büyüklüğü nedeniyle, genelde Miner'lar ve Cüzdan servisi sağlayan şirketler Full Node görevini üstleniyor. Sizde denemek istiyorsanız, Bitcoin Full Node son versiyonunu (Latest version: 0.15.1) https://bitcoin.org/en/download adresinden indirebilirsiniz.
![bitcoin-overview.png](https://steemitimages.com/DQmUhwyLwGHhWjLgAA2LEo78Wm3344c2fUeGLK7Tyk5aBQB/bitcoin-overview.png)
Hem HardFork'lar hem de SoftFork'lar, kurallar arasında güvenli geçişler sağlamak için bir koordinasyon gerektirir. HardFork, belirlenen zaman içerisinde tüm kullanıcılar yazılımlarını güncellemezse zincir üzerinde bir bölünme yaratır ve kendi yolunda devam eder. SoftFork'lar bu konuda daha töleranslı bir sistem uygulamaktadır. Öyle ki tüm kullanıcılara güncelleme zorunluluğu getirmez ve bölünmeleri engellemek için bir takım önlemlere sahiptir.
SOFTFORK
SoftFork, Bitcoin yazılım protokolü üzerinde, eski yazılıma da uyumlu olarak bir yenilik yapma işlemine deniyor. Yazılım üzerindeki değişiklikler bazı kullanıcılar tarafından kabul ediliyor fakat uymak istemeyenler eski kurallar ile işlem yapmaya devam edebiliyor. Bu işlem genelde "Consensus Rules" dediğimiz yazılım protokolüne, eskileri ile çakışmayacak şekilde yeni kurallar eklemek için kullanılıyor. SoftFork'un özelliği Blockchain zinciri üzerinde bir çatallanma oluşturmaması (yeni bir coin oluşmaz) ve "Backward Compatible" denilen eski yazılım ile uyumlu bir sisteme sahip olması. Bunu daha iyi anlamak için bir örnek ile inceleyelim.
![softfork.png](https://steemitimages.com/640x0/https://steemitimages.com/DQmWQYPpte4HFx9LbW3f3TLagZHiGSHYWXeLByLqtxDiRhJ/softfork.png)
Segwit dediğimiz yenilik, bir Soft Fork örneğidir. Segwit projesini destekleyen kullanıcılar bu yazılım ile işlem yapmaya başladılar ve blok boyutunu doğrudan arttırmadan, blok yapısında bazı düzenlemeler yaparak 1 MB'lık blokların içine eski yazılıma göre daha fazla işlem sığdırmayı başardılar. Bu öneriyi desteklemeyenler ise eski sistem ile işlemlerine devam ettiler. Eski Miner'lar, Segwit destekleyen Miner'lara oranla daha az işlem onayladılar ama temel olarak aynı işlemleri yapmaya devam ettiler. Bu arada, SegWit kullanıcılarının daha fazla işleme sahip bloklarını 1MB büyüklüğünü geçmediği için desteklemeye devam ettiler.
Bitcoin Improvement Proposal (BIP)
Bildiğiniz üzere Bitcoin merkezi olmayan bir sistem. Bu nedenle Satoshi'nin en başta belirlediği kurallar üzerinde (Consensus Rules) bir değişiklik yapmak için görüşülecek kişi veya kurum yok. Bu sorunu çözmek için BIP (Bitcoin Improvement Proposal) denilen bir yöntem kullanılıyor. Eğer bir yenilik veya değişiklik yapılmak istenirse, bunun için BIP kullanılıyor. Herkes Bitcoin'in gelişimi içi BIP önerisinde bulunabilir. Burada önemli olan Node'ların bu öneriyi benimseyip benimsemeyecekleri. Şimdiye kadar yapılan önerilerin listesini ve detaylarını https://github.com/bitcoin/bips/blob/master/README.mediawiki adresinden inceleyebilirsiniz.
Bu teknoloji Pieter Wuille tarafından geliştirilen "Version Bit" ile birlikte (BIP9) Blochcain sistemlerinde kullanılmaya başlandı. Daha önceler sadece tek bir değişiklik üzerinde çalışabilen kullanıcılar. BIP9 ile birlikte aynı anda birden fazla SoftFork üzerinde ne düşündüklerini ağ üzerinde gösterebildi. Peki Miner'lar yazılım üzerindeki bir değişiklik teklifini destekleyip desteklemediklerini nasıl bildiriyorlar? Bunun için Version bit denilen 32-bit büyüklüğündeki veriyi "Coinbase Transaction" dediğimiz işlemin içine ekliyorlar.
"Coinbase Transaction", sadece Miner'lar tarafından yazılabilen özel bir transfer işleminin adıdır. Bu transfer işleminin özelliği herhangi bir "input" verisine sahip olmamasıdır ve her blokta yanlızca bir tane bulunmasıdır. Bunu, bloğu bulan Miner'ın ödülünü alabilmek için kendisine bir çek yazması gibi düşünebilirsiniz. "Bana hiçkimseden(input yok), ödül olara 12,5 Btc ekle" demesi gibidir.
İşte bu Coinbase transaction dediğimiz transferlerin başında 32 bit büyüklüğünde bir veri bulunur. Bu veri içerisindeki sayı seçimleri, Miner'ın hangi BIP'leri destekleyip hangilerini desteklemediklerini ağ ile paylaşır. Bunu aşağıdaki basit görsele bir göz atarak daha iyi anlayabilirsiniz (örnektir, gerçek verileri içermez).
![BIP.png](https://steemitimages.com/DQmf92t3XoQKCGk3MeCegBruDZQaEjDY7N4MduQCx5z4qyd/BIP.png)
Miner'lar, Version Bit kullanarak neyi destekleyip neyi desteklemediklerini yayınlayabiliyorlar. Eğer Bitcoin protokolü için bir fikriniz veya sistemdeki sorunlar için bir çözüm planınız varsa bunun için sizde BIP hazırlayabiliyorsunuz. Burada bazı standartlar var. Bunlardan bazıları, ismini belirleme, daha önce kullanılmaya bir version bit seçme ve başlangıç tarihi (genelde yazılımınız yayınlandıkta birkaç hafta sonra). Bu tarihten itibaren önerinizin 1 yılı oluyor. Bu, tüm BIP'ler için standart bir prosedür.
Örneğin bir SoftFork için Miner'lar öncelikle ne düşündüklerini ağ ile paylaşıyorlar. Değişiklik için verilen destek %75'e ulaştığında teklif aktif hale geliyor ve %95'e ulaştığında ağın tamamı tarafından benimseniyor. Buna bir anlamda kısa süreli bir bölünme de diyebiliriz. Süre bittiğinde, istenen çoğunluk sağlanırsa SoftFork gerçekleşiyor, sağlanamazsa reddediliyor.
HARDFORK
HardFork, Bitcoin protokolündeki kurallar üzerinde köklü değişiklikler yapmak için kullanılan bir yöntem. Bir HardFork sonrası daha önce geçerli olmayan bloklar, artık kabul edilir hale gelir ve bu nedenle ağdaki kullanıcıların tamamının yeni yazılımı benimsemesi gerekir. Eğer bu adaptasyon tüm Miner'lar tarafından benimsenmezse yeni kullanıcılar ve eski kullanıcılar ağın bölünmesine sebep olur ve zincir iki farklı yoldan devam eder (yeni coin oluşur).
![hardfork.png](https://steemitimages.com/640x0/https://steemitimages.com/DQmYetKEiMdvXhUM6Ua36fVKm8c7mFL2S3shqa9E1EdRXpw/hardfork.png)
Bunu Bitcoin Cash HardFork'u ile daha kolay anlayabiliriz. BCH destekçileri, Bitcoin'in yüksek işlem ücretleri ve bekleme sürelerine çözüm olarak blok boyutlarını 1MB'dan 8MB'a yükseltme kararı aldı ve gerekli yazılımı hazırladı. Bunun için önceden bir tarih belirleyen ekip (genelde gelecekten bir blok sayısı seçilir), destekçilerine o blok sonrası için yeni yazılımı kullanmalarını söyledi. İşte bu noktadan sonra zincir bölündü ve birbirinin aynısı olan (sadece o blok numarasına kadar) iki yeni blok oluştu.
NOT: YAZININ TAMAMININ VEYA BIR KISMININ IZIN ALINMADAN KULLANILMASI VEYA BASKA BIR PLATFORMDA PAYLASILMASI YASAKTIR.
Kaynaklar:
https://bitcoin.org/bitcoin.pdf
https://en.bitcoin.it/wiki/Softfork
https://en.bitcoin.it/wiki/Bitcoin_Improvement_Proposals
https://github.com/bitcoin/bips/blob/master/bip-0009.mediawiki
https://en.bitcoin.it/wiki/Transaction
https://bravenewcoin.com/news/uasf-bitcoins-emergency-plan-to-enact-segwit/
https://github.com/bitcoin/bips/blob/master/README.mediawiki
Değerli bilgiler, büyük bir dikkatle okudum. Elinize sağlık.
This post has received a 2.82 % upvote from @drotto thanks to: @nomad88.
This post has received a 100.00 % upvote from @steemdiffuser thanks to: @nomad88. Steem on my friend!
Remember, above average bids get additional upvotes from our trail members!
Get Upvotes, Join Our Trail, or Delegate Some SP
This post has received a 1.07 % upvote from @buildawhale thanks to: @nomad88. Send at least 1 SBD to @buildawhale with a post link in the memo field for a portion of the next vote.
To support our daily curation initiative, please vote on my owner, @themarkymark, as a Steem Witness
This post received a 38.93% upvote from @randofish thanks to @nomad88!
For more information, click here!
Thank you for a up vote I've already paid it forward I just happen to like this last post
great
Thank you for vote. I'm like follow you