Blok Zincir Nedir? Blok Yapıları, Transaksiyonlar, Blokların Oluşturulması

Blok Zincir Nedir? Blok Yapıları, Transaksiyonlar, Blokların Oluşturulması

Merhaba, bu yazı dizisinde sizlere blok zincir teknolojisini elimden geldiği kadarıyla anlaşılır bir şekilde anlatmaya çalışacağım. Yazı dizimizin birinci bölümünde blok zincir tanımı ve blok yapıları ile bir giriş yapıyoruz.

Bölüm içeriği:
1.Blok Zincir
1.1 Transaksiyonlar
1.2. Bitcoin Blok Zincirinde Transaksiyonlar
1.3. Blokların Oluşturulması

Blok zincir bir ağ üzerinde varlıkların kaydedilmesini ve şeffaf bir şekilde takip edilebilmesini sağlayan, herkesin erişebildiği uçtan uca dağıtık hesap defteridir(Distrubuted Ledger). Blok zincirde saklanan varlıklar para veya parasal değer ifade eden sanal sertifikalar olabilir. Varlıklar transaksiyonlar aracılığı ile ağdaki bloklara kaydedilir ve manipüle edilmeleri mümkün değildir. Blok yapıları blok zincirin türüne ve tasarımına bağlı olarak değişkenlik gösterse  de genelliklikle block header, önceki bloğu işaret eden bir değer, zaman damgası, nonce, transaksiyon sayacı, transaksiyonlar ve diğer bileşenler bir blokta yer alan temel bilenlerdir [1].

Blok zincir 1.0 olarak adlandırılan ve Bitcoin ile ortaya çıkan bu teknolojinin odak noktası “double spending”(Çift Harcama) problemine çözüm bulmak ve güvenilir olmayan aracıları ortadan kaldırmaktı. 2013 yılında Ethereum ile birlikte gelen akıllı sözleşmeler ise blok zincir teknolojisini bir üst seviyeye taşır ve artık blok zinciri teknolojisi uçtan uca kripto varlık transferi yapmak ile kalmaz. İnsanların blok zincir üzerinde, daha önceden belirlenmiş koşullar sağlandığında aksiyon alacak yapıya sahip sözleşmeler oluşturmasına imkân sağlar.

Şekil 1.1 Blokzincir blok yapısı.

Şekil 1’de yer alan blok yapısına gore blok zincirde bulunan her bir blok Block Header, Hash ve Transaction List’e sahiptir. Block Header içerisinde ise önceki bloğun hash adresi, timestamp(zaman damgası), Nonce(sıfırların sayısı) ve Merkle Root Hash vardır.

Timestamp: Zaman Damgası, her blokta benzersiz bir seri olarak depolanır. Bloğun çıkarıldığı ve blok zincir ağı tarafından doğrulandığı anı belirleyen küçük bir veridir.

Nonce(Number of Nonce): Madencilerin farklı permütasyonlar oluşturmak ve dizide doğru bir karma oluşturmak için kullandığı değerdir. Madenciler nonce değerini değiştirerek hedef(target) değerinin altında bir hash değeri tahmin etmeye çalışırlar.

Blok Hash: Girilen veriyi hangi boyutta olursa olsun, sabit uzunlukta çıktıya dönüştüren matematiksel işleme hash veya hashing denir.  Bu işlemin amaçları verinin gizlenmesi veya doğrulanması olarak düşünülebilir. En popüler hash algoritmaları Bitcoin’de de kullanılan SHA256’dır. Hashing işlemi daha çok doğrulama için kullanılır. Çünkü hashlenmiş bir veriden orijinal veriye ulaşmak mümkün değildir. Bloklarda hash veya ‘block header’ olarak adlandırılan hash değeri ise mevcut bloğun sayısı, 32 bitlik rasgele bir nonce değeri, merkle tree ve önceki bloğun hash değerinin birleştirilmesiyle oluşan bir değerdir.

Merkle Root: Merkle Root’ un görevi doğrulama yapmaktır.  Merkle root bloktaki tüm transaksiyonların hash değerinin hashlenmesi ile oluşur.

Bloklardan herhangi birindeki değerin manipüle edilmesi durumunda zincirdeki tüm bloklar bu değişiklikten etkilenir ve bloklar arasındaki bağ kırılır. Bunun nedeni bir değişiklik durumunda merkle tree yani transaksiyonlardan meydana gelen hash değerinin bozulmasıdır. Mevcut bloktaki merkle tree değeri bozulursa blok hash değeri de değişime uğrar. Her bir blok kendinden önceki blok hash değerini de depoladığı için önceki bloğun blok hash değeri ile değişimden sonraki blok hash değeri birbiri ile uyumsuz olur. Bu durum blok zincirinin değiştirilemez(immutable) olmasını sağlar.

1.1 Transaksiyonlar

Bitcoindeki her şey transaksiyonların oluşturulması, blok zincir ağında yayınlanması, doğrulanması ve son olarak global transaksiyon (global ledger) defterine eklenebilmesi için tasarlanmıştır[2]. Bitcoin blok zincirinde transaksiyon, iki adres arasında yapılan varlık transferinin bir nüshası olarak düşünebilir. Bu transaksiyonlara transfer bilgisi haricinde mesaj veya veriler iliştirilebilse de başka bir amaca hizmet edemezler. Ethereum transaksiyonları, akıllı sözleşmeler oluşturmak veya kendi kendini yürüten sözleşmeler ve bunları kullanarak oluşturulan uygulamalarla etkileşim kurmak için yürütülebilir kod içerebilir [2].

1.2. Bitcoin Blok Zincirinde Transaksiyonlar

Bitcoin blok zincirinde transaksiyon gerçekleştirebilmek için Genel anahtar, özel anahtar, girdi, çifti ve tutar bilgilerine ihtiyaç vardır. Bitcoin’e “sahip olan” birinden bahsettiğimizde, aslında o kişinin aşağıdakilerden oluşan bir “anahtar çiftine” erişimi olduğu anlamına gelir:

Genel Anahtar (Public Key): Başkaları ile paylaşabileceğimiz, önceden bir miktar Bitcoin’in gönderildiği bir genel anahtardır.
Özel Anahtar (Private Key): Hesabımız ile işlem gerçekleştirirken kullanacağımız anahtardır.

Genel anahtarı Bitcoin adresimiz, özel anahtar ise şifremiz olarak düşünebiliriz. Örneğin’ Ali, Elif’e 1 Bitcoin göndermek istiyor. Bunu yapmak için özel anahtarını kullanır. Özel anahtarını, işleme özel ayrıntılarla bir mesajı ‘imzalamak’ için kullanır. Blockhain ağında yayınlanması gereken bu mesaj aşağıdakileri içerecektir:

Girdiler(Inputs): Bu, daha önce Ali’nin adresine gönderilen Bitcoin hakkında bilgi içerir. Örneğin, Ali’nin daha önce Selin’den 0,7 BTC ve Mehmet’den 0,7 BTC aldığını hayal edin. Şimdi, Elif’e 1 BTC göndermek için iki giriş olabilir: Selin’den daha önce 0,7 BTC’lik bir giriş ve daha önce Mehmet’den 0,7 BTC’lik bir giriş.

Tutar(Amount): Bu durumda, Ali’nin göndermek istediği miktar 1 BTC’dir.

Şekil 1.2 Bitcoin Transaksiyon Yapısı

Birincisi, Elif’in genel adresine 1,4 BTC (0,7 BTC 0,7 BTC). İkincisi, Ali’ye iade edilen ve UTXO olarak adlandırılan 0,4 BTC’dir.
Bitcoin blok zincirinde Harcanmamış Transaksiyon Çıktısı (Unspent Transaction Output) adı verilen bir kavram vardır. Bu kavram kullanıcıların harcayabileceği Bitcoin miktarını saptamak için kullanılır. Herhangi bir Bitcoin cüzdan sahibine Bitcoin göndermek istediğimizde arka planda iki adet transaksiyon oluşur. İlk transaksiyon gönderim, ikinci transaksiyon ise para üstü olarak ifade edebileceğimiz işlemi yerine getirir. Yukarıdaki örnekte anlatıldığı üzere herhangi birine Bitcoin göndermek istediğimizde hesabımızda bulunan harcanmamış transaksiyon çıktılarını kullanırız. Bitcoin cüzdanları genellikle belirli bir işlem için UTXO’larınızdan hangisinin en iyi olduğuna otomatik olarak karar verir. Buna ek olarak kimi Bitcoin cüzdanları kullanıcılara UTXO seçimi yapmalarına imkân tanır.

1.3. Blokların Oluşturulması

Transaksiyonlar oluşturulduktan sonra bir sonraki blokta yer almak üzere mempool(memory pool) adı verilen havuzda bekletilirler. Madenciler bir sonraki bloğu oluştururken öncelikle mempoolda bulunan yüksek işlem ücretine(fee) sahip transaksiyonlardan oluşan bir aday blok oluştururlar ve nonce değerini blok zincirin konsensüs mekanizmasina göre tahmin etmeye çalışırlar. Eğer madenci doğru nonce değerini tahmin edebilirse bir miktar ödülü ve bloğa eklenen transaksiyonların işlem ücretini kazanır.

Kaynaklar

[1] Bashir, I. (2017). Mastering blockchain. Packt Publishing Ltd.

[2] https://cointelegraph.com/ethereum-for-beginners/bitcoin-vs-ethereum-key-differences-between-btc-and-eth

 

2. Bölüm -> 



Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir