Segwitin ne demek olduğunu anlamak için önce bazı temel kavramları anlamamız gerekecek.

Bitcoin‘de işlemler nasıl işliyor?

Devam etmeden önce, açıklama için Profesör Donald J Patterson’ın Youtube kanalı “djp3“e teşekkür ediyoruz.

Ayşenin Ahmete belli sayıda bitcoin göndermek istediğini varsayalım. Bitcoin’deki işlem sistemi nasıl çalışır? Bitcoin işlemleri, fiat para işlemlerinden çok farklı. Eğer Ayşe Ahmete 2 dolar vermek isterse, fiziksel olarak cüzdanından 2 dolar alıp Ahmete verirdi. Fakat, işler Bitcoinde böyle işlemez. Fiziksel olarak hiçbir Bitcoin’e sahip değilsiniz, sahip olduğunuz şey Bitcoine sahip olduğunuzun kanıtıdır.

Bilmeniz gereken iki şey daha var:

  • Madenciler verilerinizi kazılacak blokların içine koyarak işlemlerinizi onaylar. Bu hizmeti vermek karşılığında, bir işlem ücreti talep ederler.
  • FIAT para birimi söz konusu olduğunda, o notun nereden ve nereden alındığının farkına varmazsınız. Örneğin, Cüzdanınızı şu an açın ve içindeki paraları çıkarın. Her birinin nereden geldiğini biliyor musun? Büyük bir ihtimalle bilmiyorsun. Bununla birlikte, her bir Bitcoinin işlem geçmişi not alınır.

Pekâlâ, şimdi Ayşe ile Ahmet arasındaki Bitcoin işleminin nasıl gerçekleştiği üzerine derin bir giriş yapalım. Bir aktarımda iki taraf vardır, Girdi ve Çıktı. Bu işlemin sonunda işlemin alacağı bir isim olacaktır. Şimdilik dinamiklerine bakalım.

İşlem Girdisi

Bu işlemi gerçekleştirebilmek için Ayşe, önceki işlemlerden gelen Bitcoinlere sahip olması gerekir. Unutmayın, daha önce de söylediğimiz gibi, Bitcoinde, her coin bir işlem geçmişi aracılığıyla izlenir.

Yani Ayşenin TX (0), TX (1) ve TX (2) olarak adlandıracağımız aşağıdaki işlemlerden Bitcoinleri çekmesi gerektiğini varsayalım. Bu üç işlem birlikte eklenecek ve size TX (Giriş) diyebileceğimiz giriş işlemini verecek.

Diyagramatik olarak şöyle görünecektir:

İşlem girdisi şeması

Yani, giriş tarafı bu şekilde, çıkış tarafının nasıl görüneceğini kontrol edelim.

Çıktı temel olarak, Ahmetin işlem sonrası sahip olacağı Bitcoinler ve kalanlar olarak ayrılır. Bu kalanlar Ayşeye geri gönderilecektir. Bu değişiklikten sonra kalanlar Ayşenin tüm gelecek işlemleri için girdi değeri haline gelir.

Çıktı tarafının resimli temsili şuna benzer:

İşlem şeması

Şimdi, bu sadece bir çıkışı olan (kalanlar dışında) çok basit bir işlemdir, çoklu çıkışlarında mümkün olduğu işlemler vardır.

Aktarımın temel düzeni buna benzerdir. Bununla birlikte, gerçekleşmesi gereken tüm şeylerin gerçekleşmesi için bazı şartların yerine getirilmesi gerekir.

Aktarımın koşulları
  • TX (Giriş)> TX (Çıkış). Giriş işlemi her zaman çıktı işleminden büyük olmalıdır. Herhangi bir işlemde, girdi ile çıktı arasındaki eksiklik (çıktı + değişim), madencilerin topladığı işlem ücretidir. Yani: İşlem ücretleri = TX (Giriş) – (TX (Çıkış) + Kalanlar)
  • Giriş tarafında: TX (0) + TX (1) + TX (2) = TX (Giriş). Ayşe, aktarımları gerçekleştirmek için gerekli fonlara sahip değilse, madenciler aktarımları basitçe reddedeceklerdir.
  • Ahmet, Bitcoinleri alabilmek için gereken kanıtı göstermek zorundadır. Ayşe aktarımı Ahmetin genel anahtarı üzerinden kilitleyecektir. Aktarımların kilidini açmak ve Bitcoinlerine erişmek için özel anahtarını üretmesi gerekecektir.
  • Ayşe, ilk önce Bitcoinleri göndermek için gerekli haklara sahip olduğunu doğrulamalıdır. Bunu, yaptığı aktarımları özel anahtarıyla imzalayarak yapar. Herkes bunu Ayşenin genel anahtarını kullanarak çözebilir ve aktarımı yapanın gerçekten Ayşe olduğunu doğrulayabilir. Bu kanıt “İmza verileri” olarak adlandırılır. Unutmayın, çünkü bu daha sonra çok önemli olacaktır.

Peki, tüm bu işlemin adı ne olacak?

Giriş (imza verileri de dahil olmak üzere) ve çıktı verileri birlikte eklenir ve SHA 256 algoritması kullanılarak şifrelenir. Çıktı karması(hash) bu işleme verilen addır.

Aktarım Ayrıntıları

İşlemin kod formunda bu şekilde gözükür. Alice’in Bob’a 0.0015 BTC göndermek istediğini ve bunu yapmak için 0.0015770 BTC değerinde girdi gönderdiğini varsayalım. İşlem ayrıntısı şu şekildedir:

aktarım ayrıntıları

Gördüğünüz ilk şey:

hash

Bu giriş ve çıkış değerlerinin karmasıdır.(hash)

Vin_sz, girdi verilerinin toplam sayısıdır. Ayşe sadece tek bir işlem gerçekleştirdiğinden bu sayı burada 1’dir.

Vout_sz 2’dir, çünkü tek çıktı Ahmete giden ve kalan miktardır.

Giriş verisi:

Giriş verisi

Vin_sz’de gördüğümüz gibi 1 adet girdi vardır bu sebeple giriş verisi de tektir. scriptSig yazan alttaki bölüm Ayşenin imzasıdır.

En altta çıktı verisi bulunur:

çıktı verisi

İlk bölüm Ahmetin 0.0015 BTC aldığını belirtir. İkinci bölüm ise kalan 0.00005120 BTC’nin Ayşeye geri döndüğünü belirtir.

Şimdi, giriş verisinin 0.0015770 BTC olduğunu hatırlıyor musun? Bu, (0.0015 + 0.00005120) değerinden büyük. Bu iki değerin açığı, madencilerin topladığı işlem ücretidir.

Yani, basit bir işlemin anatomisi bu şekildedir.

Devam etmeden önce, Coinbase işlemi diye bilinen özel bir işlem hakkında konuşalım. Temelde, bloğun ilk işlem verisidir ve madencilerin blok madenciliği yaptıkları için kazandıkları maden ödülünü ifade eder. Şu an itibariyle ödül 12.5 BTC. Bu işlemlerin girdi verileri yoktur ve yalnızca çıktı verisine sahiptir.Bunu unutmayın daha sonra önemli hale gelecektir.

Ölçeklenebilirlik sorunu nedir?

Unutmayın blok zincir(blockchain) üzerindeki bütün işlemler madencilerin bu işlemleri onaylayarak bloklara koyması sayesinde gerçekleşir. Fakat bir bloğa koyabileceğiniz işlemlerin bir sınırı vardır. Bitcoin ilk ortaya atıldığında blok sınırı yoktu.

Fakat, Bitcoinin kurucusu (yada kurucuları) olan Satoshi Nakamoto bir sınır eklemek zorunda kaldı çünkü hackerların blockchaine yapabileceği olası bir DDoS saldırısı öngörmüştü. Bu saldırı sayesinde blokları spam işlemlerle doldurabilirlerdi ve sistemi tıkamak için gereksiz yere büyük olabilecek blokların oluşmasını sağlayabilirlerdi. Sonuç olarak bloklara 1 MB boyut sınırı verildi.

Bu başlangıçta uygulanabilirdi ancak Bitcoinin popülaritesi gittikçe büyümeye devam ederken işlem sayısı da bununla orantılı olarak artmaya başladı. Bu grafik, ayda gerçekleşmekte olan işlemlerin sayısını göstermektedir:

işlem sayısı grafiği

Gördüğünüz gibi, aylık işlemlerin sayısı artmakta ve şu an 1mb blok boyut sınırıyla Bitcoin yalnızca saniyede 4.4 işlem gerçekleştirebilmektedir. İşlemlerin hantal olmasının ve bu kadar çok yer kaplamasının en büyük nedenlerinden biri, içindeki imza verisinden kaynaklanmaktadır (bunu akılda tutmanızı söylemiştik).

İşlem sayısı arttıkça sıçramalar ve bölgelerde arttı, buna orantılı olarak blokların doldurulma oranı da arttı. Çoğu zaman, insanlar işlemlerinin gerçekleşmesi için yeni bloklar oluşturulana kadar gerçek anlamda beklemek zorundaydılar. Bu sebeple işlemler birikmeye başladı, doğrusunu söylemek gerekirse işlemlerinizi öncelikli hale getirmenin tek yolu, madencileri işlemlerinize öncelik vermeye teşvik etmek ve teşvik etmek için yeterince yüksek bir işlem ücreti ödemek oldu.

Komisyonla Birlikte Değiştirme

Bu, “komisyonla birlikte değiştirme” sistemi başlattı. Temel olarak sistemi şu şekilde açıklayabiliriz. Ayşenin Ahmete 5 Bitcoin gönderdiğini varsayalım, ancak işlem bir bekleme listesi nedeniyle gerçekleşmiyor. Bir kere harcanan Bitcoinler asla geri gelemeyeceği için işlemi “silemez”. Bununla birlikte, Ahmete 5 Bitcoin içeren başka bir işlem yapabilir, ancak bu sefer, madencileri teşvik edecek kadar yüksek işlem ücreti ile. Madenciler, işlemlerini bloğa eklediğinde önceki işlemin üzerine yazacak ve onu geçersiz hale getirecektir.

“Komisyonla birlikte değiştirme” sistemi madenciler için karlı olsa da, kullanıcılar için rahatsızlık vericidir. Aşağıdaki, mümkün olan en düşük işlem ücretlerini ödemişlerse kullanıcının beklemesi gereken sürelerin bir grafiğidir:

onaylanma süresi grafiği

Mümkün olan en düşük işlem ücretini öderseniz, işleminizin gerçekleşmesi için 13 dakika süreyle beklemek zorunda kalacaksınız.

İşlemleri hızlandırabileceği düşünülen çözümlerden biri “Lightning Network”ün kurulmasıdır.

Fakat, Lightning Network’ün hayata geçebilmesi için yapılan işlemin bir “node” üzerinde tutulması gerekmektedir ve bu işlemin ağa duyurulabilmesi için her iki tarafında işlemi imzalaması gerekmektedir. Bu iki tarafında imzalama işlemi aktarımın(hash) belirtecine ihtiyaç duyar. Eğer bir sebeple hash yani aktarımın belirteci değişirse lightning network etkinleşemez.

Aktarımın belirtecini(hash) ne değiştirebilir diye düşünüyor olabilirsiniz. Bunun sebebi Bitcoinin kökünde yatan “Transaction Malleability” denilen bir hatadan kaynaklanmaktadır.

Transaction Malleability nedir?

Kısaca açıklamak gerekirse, girilen verinin uzunluğu ve biçimi ne olursa olsun hep aynı uzunlukta çıktı veren işleme “hashing” yani karmalama denir.

Transaction Malleability’nin ne olduğunu anlamanız için hashing ile alakalı bilmeniz gereken önemli bir özellik daha var. Girilen verideki en ufak değişiklik bile çıktının tamamen değişmesine sebep olur.

Aşağıda görebileceğiniz gibi tek bir harfin büyüklüğünün değişmesi hash üzerinde nasıl bir değişikliğe sebep oluyor.

hash denemesi

Blockchain (Blok Zinciri) ile alakalı en önemli özelliklerden biri, veri bir bloğa işlendikten sonra hiç kimse yada hiçbir şey tarafında değiştirilemeyecek olmasıdır. Bu özellik çok iyi bir güvenlik sağlasada hiç kimsenin geldiğini göremediği bir probleme sebep olur.

Veri bloğa işlenmeden önce değiştirilirse ne olur? İnsanlar bunu daha sonradan fark etseler bile yapabilecekleri hiçbir şey yoktur çünkü veri bir kere bloğa işlenirse bir daha değiştirilemez. Transaction Malleability’nin temelinde de bu problem yatmaktadır.

Transaction Malleability neden kaynaklanır?

Yapılan incelemeler sonucunda girdi verisinin içinde bulunan imzanın değiştirilebileceği ortaya çıkmıştır. Bunun değişmesi ise hash’in tamamen değişmesini sağlar. Bu sebeple sanki aktarım hiç gerçekleşmemiş gibi gözükür.

Ayşenin, Ahmete 3 BTC olduğunu varsayalım. Ayşe, Ahmete borcunu gönderir fakat aktarım imzası bloğa işlenmeden Ahmet tarafından bir saldırıyla değiştirildiğinden aktarım gerçekleşmemiş gibi gözükür. Ahmet bu durumu Ayşeye bildirir ve Ayşe 3 BTC daha yollar fakat ilk aktarımı da aldığı için Ahmet, Ayşeden toplamda 6 BTC almış olacaktır.

Transaction Malleability

Bunlar Bitcoin’deki 2015 malleability saldırısından elde edilen istatistikler. Kırmızı çizgiler kabaca saldırılmış aktarımları temsil ediyor.

Bu saldırılar gerçekleşebiliyordu çünkü imza verileri değiştirilebilirdi. Yani, imza verileri sadece bloklarda yer kaplamakla kalmıyor aynı zamanda bu saldırılara yol açarak büyük bir risk oluşturuyorlar.

Çözüm

2012 yılında Russell O’Connor, Gregory Maxwell, Luke Dashjr ve Dr. Adam Back gibi insanlar bunun çözümü için fikirler üretmeye çalışıyorlardı fakat bunun tek yolunun “hard fork”a gitmek olduğunu fark ettiler ve bu o zamanlar kimse tarafından istenmiyordu.

Ama sonra, 2015 yılında Blcokstreamden Dr. Peter Wiulle olası bir çözüm buldu.

Sidechains (Yan Zincirler) ve Segwit

Sidechainler uzun süredir Bitcoin dünyasında konuşulan bir konudur. Aslında ana fikir çok basittir; ana zincir ile eş zamanlı çalışan paralel zincirler vardır ve bunlar ana zincire 2 yönlü valf ile bağlıdır.

Sidechains

Dr. Peter Wiulle’nin düşüncesi basitti; imza verilerini ana zincirden ayırarak yan zincirde taşımak. Bu işleme Segregated Witness yani Segwit adı verildi.

blok şeması

Böylece imza verilerini ana bloktan kaldırarak bir taşla iki kuş vurmuş oluyoruz. Hem aktarımlar için bloklar daha boş hale gelmiş oluyor hem de aktarımların bloklara yazılmadan önce değiştirilmesini engellemiş oluyor.

Segwit’in iyi ve kötü yönleri

Yararları:

  • Bir bloğun alabileceği işlem sayısını artırır.
  • İşlem ücretlerini azaltır.
  • Her bir işlemin boyutunu azaltır.
  • İşlemler artık daha hızlı teyit edilebilir, çünkü bekleme süresi azalacaktır.
  • Bitcoin’in ölçeklendirilebilirliğinde yardımcı olur.
  • Her bir bloktaki işlem sayısı artacağından, bir madencinin toplayabileceği toplam ücretler artırabilir.
  • İmzaya yapılacak saldırıları engeller.
  • Lightning Network’ün kurulabilmesini sağlar.

Zararları:

  • Madenciler artık her bir işlem için daha az işlem ücreti alacak.
  • Uygulanması karmaşık ve tüm cüzdanlar protokolü kendileri uygulamak zorunda kalacaklar.
  • Kapasite, işlem, bant genişliği artacağından kaynak kullanımını önemli ölçüde artıracaktır.
  • Segwit ile ilgili bir başka sorun da bakımdır. İmza verisini içeren yan zincirin madenciler tarafından da muhafaza edilmesi gerekecektir. Bununla birlikte, ana blok zincirinden farklı olarak, madencilerin bununla ilgili hiçbir mali faydası yoktur, madencileri teşvik etmek için pro bono yapılması ya da bazı ödül planlarının yapılması gerekir.

Instagram

Coinpedi © 2017. Tüm hakları saklıdır.

E-Posta Aboneliği

Güncellemeler ve Yeni Haberler için abone olun