SegWit (Harici Şahitlik) Nedir?-banner-imageAkademi

SegWit (Harici Şahitlik) Nedir?

Bitcoin ve Ölçeklenebilirlik

Bitcoin'in ortaya çıkarılmasının ana nedeni, geleneksel para birimlerine bağımsız bir alternatif olarak kullanılabilecek tamamen dijital, merkezi olmayan bir ödeme yöntemi getirme arzusudur. Tüm kripto sektöründeki artan ilgi ve buna bağlı işlem hacimlerindeki artış, Bitcoin protokolünün en büyük zayıflıklarından birini de öne çıkarmış oldu: Ölçeklenebilirlik.

Ölçeklenebilirlik sorunu kısaca, gönderilen işlemlerin ağın kapasitesini aşması sonucu, işlemlerin geç gerçekleşmesi ve yüksek işlem ücretlerinin ödenmesi olarak tanımlanabilir. Bitcoin protokolünün blok boyutu ve blok üretiminin genel koşulları, ortalama blok oluşturma süresini 10 dakika, maksimum blok boyutunu ise 1 MB ile sınırlamaktadır. Bu nedenle Bitcoin, saniyede ortalama 7 işlemle (TPS) sınırlandırılmıştır. Tüm bu ölçeklenebilirlik sorunlarının çözümü için birçok yöntem ortaya atılmıştır.


Bitcoin Protokolündeki Çözüm Yöntemleri

Ölçeklenebilirlik sorununu çözmek için uygulanan ilk yöntem, ilk olarak 2015 yılında Joseph Poon ve Thaddeus Dryja tarafından ortaya atılan Lightning Network’dür. Lightning Network, Bitcoin blokzinciri üzerinde çalışan bir uygulamadır. 2. katman üzerinde, taraflar arasında ödeme kanalları oluşturulan Lightning Network’de, yalnızca ağa yüklenen ilk bakiyeler ve gerçekleştirilen tüm işlemler sonucu oluşan, son bakiyeler blokzincir ağına işlenmektedir. Sözleşme süresince Lightning Network ödeme kanalında gerçekleşen işlemler ise blokzincir ağına işlenmemektedir. Bu da ağın yoğunluğunu düşürmekte ve etkili bir şekilde işlemesine olanak sağlamaktadır.

Lightning Network hakkında daha fazla bilgi almak isterseniz buraya tıklayarak akademi yazımıza göz atabilirsiniz.

Bir başka yöntem ise 1 Ağustos 2017 tarihinde gerçekleştirilen Bitcoin Cash sert çatallanmasıdır (hard fork). Bitcoin’e kıyasla blok başına daha fazla işlemin sürece dahil edilmesini sağlayan Bitcoin Cash, blokların boyutunu 8 MB ile 32 MB arasında artırmıştır. Bunun yanı sıra, saniyede yaklaşık 61 işlem gerçekleştirebilir.

Bitcoin Cash hakkında daha fazla bilgi almak isterseniz buraya tıklayarak inceleme yazımıza göz atabilirsiniz.

Ağustos 2017'de, Bitcoin Cash sert çatallanmasından sadece 3 hafta sonra ise Bitcoin Çekirdek ekibinin geliştiricilerinden biri olan Pieter Wuille tarafından ortaya atılması sonucu Bitcoin protokolü içinde yumuşak çatallanma (soft fork) gerçekleştirilerek SegWit (Harici Şahitlik) ortaya çıkarılmıştır.


SegWit (Harici Şahitlik) Nedir?

Segregated Witness (Harici Şahitlik) veya kısaca SegWit, 2015 yılında geliştirilen ve 2017 yılında piyasaya sürülen bir protokol yükseltmesidir. Blokzincir ağlarının karşı karşıya olduğu ölçeklenebilirlik sorununa bir çözüm olarak tanıtılmıştır. SegWit’in ana fikri, blok verilerini yeniden organize etmektir, böylece şahit verileri (dijital imzalar) artık işlem verileriyle birlikte yerleştirilmez. Başka bir deyişle SegWit yükseltmesi, şahit verilerinin (dijital imzaların), işlem verilerinden ayrılmasını sağlamaktadır. Bu sayede, daha fazla işlemin tek bir blokta depolanmasına izin verilerek ağın işlem hacmi artırılmaktadır.

Bitcoin ve Litecoin dahil olmak üzere birkaç kripto para projesinin de kullandığı SegWit, iyileştirilmiş işlem hızı ve blok kapasitesi gibi birçok fayda sağlamaktadır. Bu yazının yazıldığı tarih itibariyle (15 Mayıs 2021), Litecoin ağındaki SegWit işlemlerinin yüzdesi 77 iken, Bitcoin ağındaki SegWit işlemlerinin yüzdesi 57’dir.

Screenshot_2.png

Kaynak: Blockchair

SegWit Nasıl Çalışır? Ne İşe Yarar?

Her Bitcoin işlemi içerisinde şunlar bulunur:

  • Alıcının (çıktı) açık anahtarı (public key)
  • Gönderenin (girdi) açık anahtarı (public key)
  • Gönderenin, işlemi gerçekleştirmesini sağladığı dijital imzası (private key).

Dijital imza, işlemi imzalamak ve onaylamak için kullanılır, dolayısıyla "şahit (witness)” olarak da anılır. Şahitlerin;

  1. İşlemin geçerliliğini doğrulaması ve,
  2. İş İspatı (Proof of Work) madencilik algoritması için kriptografik hash formülünde kullanılması gerekir.

İşlemler için çok önemli olan dijital imzalar, bir işlemin dosya boyutunun çoğunu kaplar. Kısaca bahsetmek gerekirse, SegWit tanıtılmadan önce dijital imza, işlem veri yapısının ortasında bulunmaktadır. SegWit dijital imzayı, merkezi bir yapıdan çıkararak veri yapısının sonuna yerleştirmektedir. Bu sayede, farklı doğrulayıcılar tarafından doğrulanan ve şahit verilerinin bulunmadığı benzersiz işlem kimlikleri oluşturulur.

SegWit, Şahit Verilerini (Dijital İmzaları) Neden Ayırmıştır?

Bitcoin blokzincirinde, bir işlem henüz onaylanmadan, dijital imzaların değiştirilmesinin mümkün olduğu ortaya çıkmıştır. Dijital imza değişikliği, üzerinde matematiksel bir kontrol çalıştırdığınızda ağ tarafından hala geçerli olacak şekilde yapılır. Ancak üzerinde bir hash algoritması çalıştırdığınızda, farklı bir sonuç verir.

Basit bir örnekle açıklamak gerekirse; Dijital imza değerinin “3” olduğunu, ancak “3” yerine “03” veya “3 + 7-7" yazarak değiştirdiğimizi varsayalım. Matematiksel olarak, bu hala aynı değere sahip olduğu için geçerli bir imzadır, ancak bu farklı sürümlere hash algoritmasını uygularsak farklı sonuçlar elde ederiz çünkü hash değeri, değerin kendisine değil, değeri nasıl yazdığınıza bağlıdır.

Görsel1.jpg

Hash değeri, işlemin blokzincirdeki kimliği olduğundan, bu durum, herhangi bir işlem kimliğinin etkin bir şekilde farklı bir kimliğe değiştirebileceği ve yine de geçerli olacağı anlamına gelebilmektedir. Bu nedenle mevcut bir işlem için yeni bir işlem kimliği oluşturmak sorun çıkarabilir.

Daha da basitleştirmek için, birinin bu sorundan nasıl yararlanabileceğine dair bir örnek verelim. A kişisinin, B kişisine henüz doğrulanmamış olan X işleminde ödeme yaptığını düşünelim. Sonrasında B kişisinin, C kişisinden bir ürün almak için bu doğrulanmamış ödemeyi kullandığını varsayalım (Y işlemi). C kişisinin ise, Y işlemiyle ilgili herhangi bir doğrulama beklemeden, B kişisine ürününü gönderdiğini düşünelim.

Görsel2.jpg

Şimdi de B kişisinin, A kişisinden gelen işlemi farklı bir işlem kimliği ile onayladığını düşünelim. Y işlemi artık X işleminin orijinal olmayan işlem kimliğine dayandığı için geçersiz duruma gelir. Böylelikle C kişisine ödeme yapılmamıştır ve ürünü çoktan teslim etmiştir.

Görsel3.jpg

Yani, B kişisinin ağdaki en az bir doğrulayıcı üzerinde bile kontrol sahibi olması durumunda, sistemi bu şekilde kandırabilir. Aslında B kişisi bu doğrulayıcı yardımıyla ağda aynı işlemi başlatır, ancak farklı bir işlem kimliği ile. B kişisi eğer şanslı olursa, ağ önce işlemini kaydedecek ve böylece geçerli kılacaktır. Gönderilen para, B kişisinin, A kişisinin hakkında hiçbir fikri olmayan diğer cüzdanına gönderilecektir. Böylelikle B kişisi, parayı hiç almadığından şikayet ederse A kişisi, orijinal işlem kimliğini görmek için blokzinciri kontrol ederse, onu bulamayacak ve parayı bir kez daha gönderecektir. Böylece, A kişisi ve ağın geri kalanı belirsizlik içinde kalırken B kişisi iki kat kâr elde etmiş olacak, aynı zamanda C kişisinin gönderdiği ürünü de elinde bulundurmuş olacaktır.


Peki, SegWit Bu Durumu Nasıl Önlüyor?

SegWit, blok yapılandırılmasına ilişkin önerilen bir değişikliktir. Legacy Blocks olarak da bilinen eski bloklar, tüm blok verileri için toplam 1 MB alana sahiptir. SegWit blokları ise aslında bir “temel işlem bloğu” ve “genişletilmiş blok” ‘tan oluşan, daha büyük bloklardır ve 4 MB’ye kadar alana sahiptir.

Bir işlemin ilk bölümü gönderenin (girdi) ve alıcının (çıktı) açık anahtarlarını (public key) içerir ve ikinci bölüm dijital imzalarını (private key) içeren “şahit verilerini” içerir. SegWit blokları, dijital imzaları temel işlem bloğunun dışına taşır. Dijital imzalar yine de iletilecektir, ancak genişletilmiş bloğun içine yerleştirilir. Temel işlem bloğu, gönderen ve alıcı hakkındaki bilgileri içerir. Genişletilmiş blok (ek 3 MB), temel işlem bloğunda zorunlu olmayan tüm şahit verilerini içerir. Böylelikle SegWit, yeni blok formatıyla iki ana hedefe ulaşır:

  • Dijital imzayı temel işlem bloğunun dışına taşır. Bu şekilde, birisi işlemdeki imzayı değiştirirse, işlem kimliğini etkilemeyecektir. Bu aslında işlemin şekillendirilebilirlik (transaction malleability) sorununu çözer.
  • Temel işlem verilerini küçültür. Şahit verileri işlem boyutunun %65'ini kapladığından, onu temel işlem bloğunun dışına taşıyarak, daha fazla işlemin 1 MB'lik bir bloğun içine sığmasını sağlar.

görsel-4.jpg


SegWit’in Avantajları Nelerdir?

Ölçeklenebilirlik

  • Kapasite Artışı: SegWit'in en büyük faydalarından biri blok kapasitesindeki artıştır. İmza verilerini temel işlem bloğundan kaldırarak, tek bir blokta daha fazla işlemi bulundurabilir. Bu, etkili blok boyutunun 1 MB'den yaklaşık 4 MB'ye çıkmasına neden olur. Fakat, SegWit'in “gerçek” bir blok boyutu artışı sağlamadığını belirtebiliriz. Bunun yerine, blok boyutu sınırını artırmak zorunda kalmadan, etkili blok boyutunu artırmak için sunulan bir mühendislik çözümüdür, bu sebeple Bitcoin Cash sert çatallanmasından ayrılır. Daha spesifik olmak gerekirse, gerçek blok boyutu hala 1 MB'dir, ancak etkin blok boyutu sınırı 4 MB'dir.

  • İşlem Hızı Artışı: Daha fazla işlem depolayabilen bir blokla SegWit, blokzincirde hareket eden daha fazla miktarda işlem olabileceğinden işlem hızını artırma özelliğine de sahiptir. Bir bloğun kazılması aynı süreyi alsa da, içinde daha fazla işlem işlenmektedir, bu nedenle TPS (saniyede gerçekleşen işlem sayısı) oranı daha yüksektir. Artan işlem hızı, Bitcoin ağındaki işlem maliyetlerinin azaltılmasına da yardımcı olmuştur.

İşlem Şekillendirilebilirliği (Transaction Malleability)

Bitcoin ile ilgili diğer önemli bir sorun, dijital imzaları potansiyel olarak değiştirebilme yeteneğidir. Dijital imza değiştirildiğinde, iki taraf arasındaki işlem bozulabilmektedir. Blokzincirlerinde depolanan veriler neredeyse değişmez olduğundan, geçersiz işlemler blokzincirinde kalıcı olarak depolanmaktadır. SegWit ile dijital imzalar artık işlem verilerinin bir parçası değildir ve bu da bu verileri değiştirme olasılığını ortadan kaldırmıştır. Bu düzeltme, ikinci katman protokolleri ve akıllı sözleşmeler dahil olmak üzere blokzincir topluluğu için de daha fazla yeniliğe izin vermiştir.