Blok zinciri (“Blockchain”), çeşitli sektörleri dönüştürme potansiyeline sahip devrim niteliğinde bir yenilik olarak son yıllarda giderek daha fazla dikkat çekmektedir. Bitcoin sayesinde kendisine bir uygulama alanı bulan blok zinciri, o günden beri birçok farklı alana uygulanmaya çalışılıyor. Bu yazımızı okuduktan sonra “Blok Zinciri Nedir?” sorusuna kolayca cevap verebilir hale geleceksiniz.

Özünde blok zinciri, işlemleri güvenli ve şeffaf bir şekilde kaydeden merkezi olmayan bir dijital defterdir. “Blok Zinciri” terimi, birtakım verilerin, zincir halinde birbirine bağlanan bir dizi blok içerisinde depolanma şeklini ifade eder. Bu tasarım, verilerin kurcalanmaya karşı korumalı olmasını ve dağıtık defter teknolojisinin de yardımıyla ağ katılımcılarının çoğunluğunun sistematik müdahalesi olmadan değiştirilememesini sağlar.

Bu makalede, temel bileşenlerinden başlayarak adım adım blok zinciri teknolojisinin işleyişini keşfedeceğiz ve “Blok Zinciri Nedir?” sorusuna net bir yanıt vereceğiz. İnanın düşündüğünüzden daha eğlenceli olacak!

Blok Zinciri (Blockchain) Nasıl Çalışır?

Blok zinciri, sıralı bir veri depolama yöntemidir. Bu yöntemde her bir veri deposu (blok) bir önceki bloğa atıf yapar ve bloklar bu şekilde sıralanır. Zincirdeki her blok, bir önceki bloğun kriptografik bir özetini içerir ve  depolanan verilerin bir kaydını oluşturur. Bu da blok zincirini değiştirilmeye karşı dayanıklı bir kayıt tutma uygulaması haline getirir. Ancak blok zinciri tek başına tamamen güvenli bir depolama sistemi değildir.

Blok zinciri, kriptografi, eşler arası (“peer-to-peer”) ağ oluşturma, mutabakat (“consensus”) algoritmaları ve dağıtılmış defter teknolojisi gibi teknolojilerin bir kombinasyonunu kullanır ve onlar tarafından desteklenir, güvenli yapısını bu şekilde oluşturur.

Aslında her “Blok” içinde belli verilerin toplandığı bir depodur. Bu verilerin büyük kısmının ne olacağı bloğun kullanım amacıyla alakalıdır, örneğin Bitcoin bloklarında depolanan verinin büyük kısmı “transfer kayıtları” dır. Bu açıdan bakıldığında her bir blok, bir defterin sayfaları gibidir. Bu sebeple “Blok Zinciri Nedir?” sorusunu yöneltmeden önce “blok” kavramını öğrenmek gerekekir.

Peki, bu blokları zincir formuna sokan şey nedir? Her bloğun kendinden önceki blok hakkında bilgi içermesi ile bu bloklar zincir formuna sokulur, bu kuralın tek istisnası ilk bloktur. Her bir blok kendinden önceki bloğun hash’ini barındırır. Buna şimdilik daha basit bir deyişle “her blok bir önceki bloğun kimlik numarasını barındırır” da diyebiliriz. Böylece blokların her biri, bir öncekine atıfta bulunarak dizilir, bu dizilime de blok zinciri adı verilir.

Blok_Zinciri_Nedir_1

Yukarıda resimde “blok kimliği” olarak belirttiğimiz unsur aslında “hash” tir. Her blok bir önceki bloğun hash’ine atıfta bulunur. Yazımızın devamında ilk olarak hash’in ne olduğunu detaylıca açıklayacağız, devamında ise “blok” nedir bunu öğreneceğiz. Sırasıyla “Blok Zinciri” ni ve en son da “Dağıtık Defter” i öğreneceğiz.

Adım 1: SHA-256 Fonksiyonu Nedir?

Adım 2: Blok Nedir?

Adım 3: Blok Zinciri Nedir?

Adım 4: Dağıtık Defter Nedir?

Blok_Zinciri_Nedir_2

Bu yazıyı oluştururken Anders Brownworth’ün Blok Zinciri demosunu kullandık. Siz de öğrendiklerinizi pekiştirmek isterseniz bahsi geçen demoyu buraya tıklayarak bulabilirsiniz.

SHA-256 (Hash) Fonksiyonu Nedir?

SHA-256 (Secure Hash Algorithm 256), girdinin boyutuna bakılmaksızın 256-bit’lik sabit boyutlu bir çıktı üreten kriptografik bir hash alma (“hashing”) fonksiyonudur. SHA-256, dijital imzalar, parola depolama ve blok zinciri teknolojisi gibi çeşitli güvenlik protokollerinde verilerin bütünlüğünü sağlamak için yaygın olarak kullanılmaktadır. “Blok Zinciri Nedir?” sorusunu cevaplayabilmenin ilk adımı “hash” almayı öğrenmektir.

Hash almak, herhangi bir boyuttaki herhangi bir girdi veriyi (“input”), hash veya özet olarak adlandırılan sabit boyutlu bir çıktı değerine (“output”) dönüştürme işlemidir. Bu sabit boyutlu çıktı değeri, girdi verinin benzersiz bir temsili görevini gören bir sayılar ve harfler dizisidir.

Daha basit bir ifadeyle, kiraz, muz ve karpuz gibi bir grup farklı meyvelere sahip olduğunuzu düşünün. SHA-256 her bir meyve türünü tek tip boyut, hacim ve şekle dönüştüren sihirli bir meyve suyu sıkacağı gibidir. Böylece, meyve ne kadar büyük veya küçük olursa olsun, her meyve girdisi için her zaman aynı boyutta ve aynı hacimde meyve suyu elde edersiniz, ancak elbette bu suların tatları farklıdır.

Blok_Zinciri_3

SHA-256 fonksiyonu ile üretilen 256 bitlik hash’i herhangi bir verinin parmak izi olarak düşünebilirsiniz. Nasıl insanlar kimliklerini parmak izleri ile de belirtebiliyorlarsa, veriler de kimliklerini hash kodlarıyla belirtebilirler.

Blok_Zinciri_Nedir_4

Hash almanın birden fazla yolu vardır ancak bu yazıda ne zaman “hash” yazısını görürseniz bilin ki SHA-256 tekniğinden bahsediyoruz.

SHA-256 ile bir verinin hash’ini almak tek yönlü bir işlevdir, yani yalnızca hash çıktısını kullanarak orijinal girdiyi yeniden oluşturmak bugünün teknolojik şartlarında imkansızdır. Bu sebeple sadece hash’ine bakarak bir verinin orijinal girdisinin ne olduğunu anlamamız imkansızdır. Aynı, sadece parmak izine bakarak bunun hangi insana ait olduğunu anlayamamız gibi, parmak izinde ilişiklik bağını kurabilmek için önceden girdi ve çıktı arasındaki bağı biliyor olmamız gerekir.

Girdide yapılacak en ufak bir değişiklik tamamen farklı bir çıktı ile sonuçlanacaktır ancak çıktının boyutu ve uzunluğu aynı olacaktır.

SHA-256 ile üretilen hash’lerin boyutları 256-Bit‘tir. Bu hash’ler “0-9” ve “a-z” aralıklarındaki karakterlerin karışımından oluşan harf ve sayı kombinasyonlarından oluşurlar. Hash içerisindeki her bir karakter 4-bit boyutundadır.

Bu yüzden SHA-256 kullanılarak oluşturulan hash’ler 64 karakter uzunluğunda olurlar. Girdinin boyutu önemsizdir; öyle ki girdi tek bir harf de olsa, şimdiye kadar basılmış tüm ansiklopedilerin toplam içeriği de olsa, SHA-256 sonucunda alınacak hash 64 karakter uzunluğunda ve 256-Bit boyutunda olacaktır.

Siz de SHA-256 ile denemeler yapmak istiyorsanız, buraya tıklayarak istediğiniz verilerin hash’ini alabilirsiniz.

Blok_Zinciri_Nedir_5

Girdi olarak adlandırdığımız kaynak veriyi değiştirmeden yine SHA-256’ya sokarsak, her seferinde aynı sonucu alırız. Ancak girdinin üzerinde ufacık bir değişiklik bile yapsak, o girdiden alacağımız hash çıktısı baştan sona değişecektir. Örneğin önce Mona Lisa tablosunun hash’ini alsak, sonra da Mona Lisa’ya bir gözlük ve şapka çizdikten sonra bu halinin hash’ini alsak; iki hash kesinlikle birbirini tutmayacaktır ve baştan sona değişiklik gösterecektir.

Blok_Zİnciri_Nedir_6

Girdide bir noktacık kadar bile değişiklik yapılırsa, hash bambaşka bir harf ve sayı kombinasyonuna dönüşür. Yalnızca hash’leri görme imkanı olan biri, girdileri görmese bile hash’leri karşılaştırarak değişiklik yapıldığını anlayabilir. Çünkü hash çıktıları baştan sona değişik olacaktır.

Örneğin Bitcoin transfer kayıtlarının tutulduğu bir girdinin orijinali ile üzerinde (azıcık dahi olsa) değişiklik yapılmış bir versiyonunu SHA-256’ya soktuğumuzda iki girdinin çıktıları birbirinden tamamen farklı olacaktır. Ancak iki çıktı da 256-Bit boyutunda ve 64 karakter uzunluğunda olacaktır.

Blok_Zinciri_7

Özetlememiz gerekirse, SHA-256 her türlü veriyi girdi olarak içine kabul edebilir. Girdiyi işledikten sonra 64 karakter uzunluğunda bir çıktı oluşturur, girdi ne kadar uzun olursa olsun çıktı 64 karakter olmak zorundadır. Bu çıktıya “hash” adı verilir. Aynı girdi, aynı çıktıyı doğurur. Girdide ufacık bir değişiklik yapılırsa sonuçta hash baştan sona değişir, aynı kalan tek şek hash’in boyutu (256-Bit) ve uzunluğudur (64 karakter).

Blok Nedir?

Blok, içinde birtakım veriler bulunduran sanal bir depodur. Bitcoin blok zincirinde bulunan blokların içerisinde depolanan verinin büyük kısmı Bitcoin transfer kayıtlarıdır. Elbette bloğun yalnızca veri depolamaktan başka işlevleri de bulunur, aksi takdirde bloğun görevini yalnızca bir metin dosyası da yapabilirdi değil mi? Bu sebeple “Blok Zinciri Nedir?” sorusunu sormadan önce bloğu öğrenmeliyiz.

Peki bir Bitcoin bloğunun içinde hangi kısımlar bulunur?

a. Blok Başlığı: Bloğun ayırt edici özelliklerini barındıran bölümüdür. İçerisinde, bloğun versiyonunu, zaman damgasını, zorluk hedefini, nonce’u, bir önceki bloğun hash’ini ve bloğun merkle kökünü barındırır.

b. Transferler: Bitcoin transfer kayıtlarını barındırır. Bunu bloğun içinde taşıdığı değerli yük olarak da düşünebilirsiniz.

Blok_Zinciri_Nedir_8

Çok fazla yeni kavramın bir anda ortaya çıktığının farkındayım. Ancak merak etmeyin, blok zincirinin çalışma prensibini anlamak için şimdilik bütün kavramları öğrenmek zorunda değilsiniz.

Siz okuyucularımızın blok zincirinin çalışma prensibini daha rahat öğrenebilmesi için blok yapısını yalınlaştıracağız. Bu şekilde nasıl çalıştığını anladıktan sonra geriye kalan ayrıntıları oturtmak çok daha kolay olacak. Şimdilik yalnızca aşağıda dizayn edeceğimiz bloğu baz almanız yeterli, bu blok sizin madenciliği, Proof-of-Work’ü ve blok zinciri öğrenmenizi sağlayacak.

Varsayalım ki blok içerisinde yalnızca aşağıda sıraladığımız öğeler bulunuyor.

Blok No: İlgili blok’un ilk (genesis) blok’tan sonra kaçıncı blok olduğunu gösterir.

Nonce: Number Used Only Once” yani “Yalnızca Bir Kez Kullanılmış Sayı” anlamına gelir. Rastgele bir sayısal değerdir.

Veri: Blok’un amacına bağlı olarak belirlenen, blok içerisinde depolanan veridir. Bitcoin bloklarında bu veri transfer kayıtlarıdır.

Hash: Blok’ta bulunan Blok No, Nonce ve Veri’yi girdi olarak alıp SHA-256’yı uyguladığımızda elde ettiğimiz hash’i ifade eder.

Blok_Zİnciri_Nedir_9

Bu örnek bloğun içerisinde Blok No değiştirilemez, zira ilk bloktan sonra gelen kaçıncı blok olduğu bilgisidir ve bilginin üzerinde oynama yapılamaz.

Örnek blok içerisinde bulunan Veri kısmı içerisinde ise Bitcoin transfer kayıtları bulunuyor. Bloğun kullanım amacı transfer kayıtlarının bozulmadan tutulması olduğu için, Veri kısmı da değiştirilmemelidir.

Örnek bloğun değiştirilebilir tek alanı Nonce’tur. Bunu elinizle veya bir program aracılığıyla değiştirebileceğiniz bir sayaç gibi düşünün. İçerisine istediğiniz sayısal değeri girebilirsiniz.

Kısacası Blok No, Veri ve Nonce üçü birlikte Girdi haline geliyor. Aralarında sadece Nonce‘u değiştirme hakkınız var. Nonce değiştikçe, ortaya çıkan 64 karakterlik hash de değişiyor.

Blok_Zinciri_Nedir_10

Nonce yerine 1 de yazsanız, 1000 de yazsanız, 28322 de yazsanız ortaya çıkacak hash 64 karakterlik olacaktır. Hash’i oluşturan karakterler mutlaka 0-9 arasında sayılardan ve a-z arasında harflerden oluşacaktır.

Hash alma esnasında bir miktar işlemci gücü harcanacaktır ancak herhangi bir kısıtlama olmaksızın hash almak kolay bir işlemdir ve değişik Nonce değerli girdilerin hash’i saniyeler içerisinde alınacaktır.

Blok_Zinciri_Nedir_11

Şimdi bazı kısıtlamalar getirerek hash bulmayı daha zor hale getirelim.

Eğer ulaşılması gereken hash’e dair spesifik şartlar bulunursa, hash almak da o kadar zorlaşır. Örneğin başında en azından 4 adet sıfır bulunan bir hash’i yalnızca Nonce değeriyle oynayarak bulmaya çalışmak oldukça zordur. Bunu el ile Nonce değişikliği yaparak bulmaya çalışmak ise çok uzun zamanımızı alabilir.

Bu noktada hayatımıza yeni bir kavram giriyor: Hedef Hash!

Yukarıda bahsi geçen örnekte hedef hash “4 sıfır ile başlayan bir hash” tir. Genelde yalnızca Nonce değiştirilerek bir hedef hash veya hedef hash’ten de küçük bir hash bulunmaya çalışılır. Örneğin hedef hash 4 sıfır ile başlıyorsa, 5 sıfır ile başlayan bir hash, hedef hash’ten küçük sayılacaktır; kısacası baştaki sıfır sayısı fazlaysa hash daha küçüktür.

Problem: Yalnızca Nonce değerini değiştirerek bize en azından 4 adet sıfır ile başlayan (“hedef hash”) veya daha küçük bir hash bulursan oluşturduğun blok geçerli sayılacak, bunu yapabilir misin?

Çözüm: Geçerli bir blok oluşturmak için hedef hash veya altını bulmak gerekiyorsa ve bu yolda farklı Nonce değerlerini el ile tek tek denemek çok uzun zaman alıyorsa, bunun otomatik bir yolunu bulmak gerekir. Bilgisayar yardımıyla Nonce değerlerini otomatik olarak denemenin bir yolu var. Özel olarak ayarlanmış bilgisayarlar bir miktar işlemci gücü kullanarak istenilen hash değeri buluna kadar farklı Nonce’lar deneyebilir. Buna da madencilik adı verilir!

Blok_Zinciri_Nedir_12

Eminim başka kaynaklarda madenciliğin ve blok zincirinin ne olduğuna dair araştırma yaparken şu cümleye rastlamışsınızdır: “Bilgisayarlar çok zor matematiksel problemleri çözmek için birbirleriyle yarışırlar.”

İşte bu “matematiksel problemler” özünde yukarıda bahsettiğimiz belli kısıtlamalar altında hedef hash’i veya altını bulma yarışıdır. Bitcoin Nedir? ve Proof-of-Work Nedir? yazılarımızda daha kapsamlı açıkladığımız üzere birden fazla “madenci” işlemci gücü ve elektrik harcayarak bu problemi çözmek için birbirleri ile yarışırlar.

Problemi ilk çözebilen madenci yeni bir bloğu tamamlayarak yeni transfer kayıtlarını blok zincirine eklemeye hak kazanır ve bununla birlikte Bitcoin blok ödülünün de sahibi olur. İnsanları Bitcoin transferlerini blok zincirine kaydetmek için elektrik ve işlemci gücü harcamaya teşvik eden şey de bu blok ödülüdür.

Blok_Zinciri_13

Diyelim ki madencilik tamamlandı ve belli bir Nonce’a gelindiğinde hedef hash bulundu. Bu bloğun tamamlandığı anlamına gelir. Blok artık blok zincirine eklenmeye hazırdır.

Hedef hash ne kadar küçük olursa (başındaki sıfır sayısı artarsa), onu bulmak da o kadar zorlaşır. Zorluk arttıkça denenmesi gereken Nonce’lar da o kadar fazla olur ve bu da daha güçlü işlemcilere ihtiyaç olduğu anlamına gelir. Madenciler bu tip işlemleri yaptırmak için ekran kartı kullanırlar zira GPU olarak da bilinen bu sistemler, madencilik gibi basit ama sürekli yapılması gereken işlemleri üst üste yaptırmak için çok uygundur.

Dünyanın dört bir yanında madenciler problemi çözüp yeni bloğu tamamlamak/kapatmak için birbirleriyle yarışırlar. Bunu başaran madenci transfer kayıtlarının bulunduğu bloğu tamamlar ve blok zincirine eklenmesi için yeni bloğu Bitcoin Node’larına gönderir. Bu bir mutabakat mekanizmasıdır (“consensus mechanism”) ve ismi de İş İspatı yani Proof-of-Work’tür.

Blok_Zinciri_14

Zorluk (hedef hash) bloktan bloğa değişiklik gösterebilir çünkü Bitcoin yazılımı bu zorluk ayarını kendi kendine yapar. Her 2016 blokta bir (yaklaşık iki haftada bir) zorluk ayarı değişir ve böylece blok kapatma süresi 10 dakika civarında tutulmaya çalışılır. Haliyle madencilerin işlemci gücü ve sayıları arttıkça, zorluk da otomatik olarak artar ve bu şekilde blok kapatma süresi sabit tutulmaya çalışılır. Aksi takdirde madencilerin işlem gücü arttıkça Bitcoin blokları saniyeler içinde tamamlanabilir hale gelirdi.

Zorluk arttıkça madencilerin blok ödülünü kazanma ihtimallerini arttırmak için ihtiyaç duydukları işlemci gücü artar. Bu sebeple kötü niyetli birinin sisteme sonradan girerek transfer kayıtları üzerinde oynama yapmaya çalışması veya hatalı bloklar eklemeye çalışması da gittikçe zorlaşır. Yani zorluk ne kadar artarsa, Bitcoin de o kadar güvenli hale gelir.

Blok Zinciri (Blockchain) Nedir?

Blok zinciri, verileri birbiriyle ilişkilendirerek sıralı bir şekilde kaydeden bir depolama yöntemidir, dağıtık defter şeklinde düzenlenirse güvenliği artar. Merkezi bir otoriteye veya aracıya ihtiyaç duymadan birden fazla tarafın eş zamanlı olarak aynı verilere erişmesine olanak tanıyacak şekilde düzenlendiği takdirde çok güvenli bir veri depolama yöntemine dönüşebilir. Blok zincirinin, “zincir” formasyonu şeklinde isimlendirilmesinin sebebi her bloğun kendinden önce gelen bloğun hash değerini de içinde barındırmasıdır. Bu şekilde dizilen bloklara, blok zinciri ismi verilir. Önceki bloğa atıfta bulunmayan tek blok, ilk bloktur; Bitcoin ağında ilk bloğa “genesis blok” adı verilir.

Blok_Zinciri_Nedir_15

Blok zincirini anlayabilmek için yukarıdaki basit blok örneğimize yeni bir öğe eklediğimizi düşünelim. Önceden basit blok örneğimizde Blok No, Veri ve Nonce üçlüsü birlikte “girdi”yi (input) oluşturuyordu. Artık bu üçlüye Önceki Hash de eklendi. Artık bu dört öğe hep birlikte girdiyi oluşturmaktadır.

Blok No değiştirilemez, Veri değiştirilmemelidir zira korunması gereken bilgidir, Önceki Hash değiştirilemez zira değişirse zincir kırılır ve uyuşmaz. Zincirin oluşması için Önceki Hash verisinin gerçekten de bir önceki bloğun hash değeriyle eşleşmesi zorunludur, aksi halde bir zincirden bahsedemeyiz. Değiştirilebilir tek veri sadece Nonce‘tur.

Yine mevcut bloğu tamamlamak için madencilik yapmak gerekir. Varsayalım ki hedef hash yine 4 sıfır ile başlayan bir hash değeri; görev ise hedef hash kadar veya hedef hash’ten de küçük bir hash bulabilmek. Bunu yapabilirsek blok tamamlanmış sayılacak.

Girdiyi oluşturan 4 öğeden yalnızca Nonce’u değiştirerek görevi tamamlamak gerekmektedir. Bunun için de madenciliğe başvurulur.

Gerçek hayattaki örneklerde zorluk derecesi çok daha yüksektir, yani hedef hash örneğimizden daha da küçüktür. Ancak işleyiş mantığı aynıdır.

Blok_Zinciri_Nedir_16

Blok zincirinde uyum içerisinde dizilmiş mevcut bloklara yeni bir blok eklemek için madencilik yapılması zorunludur. Proof-of-Work olarak adlandırılan mutabakat mekanizmasına göre madencilik yapılarak tamamlanmamış bir blok, blok zincirine eklenemez.

Yeni transfer kayıtlarını içinde barındıran blok, madenciliğin tamamlanması sonucunda kendi (en azından dört sıfır ile başlayan) hash’ine kavuşur ve blok zincirine eklenecek hale gelir.

Blok_Zinciri_17

Bütün “Önceki Hash” atıfları kendi içinde tutarlı olan blokların diziliminden oluşan bir blok zinciri dışarıdan bakıldığında kusursuz şekilde bağlanmış olarak görünür.

Blok_Zinciri_Nedir_18

Bu noktada hash, blok ve blok zincirini artık öğrenmiş bulunuyoruz. Blok zinciri aslında bir defter, bu deftere yeni sayfalar eklemek için ise madencilik yapmak gerekiyor.

Şunu unutmamak gerekir, blok zinciri tek başına kayıt güvenliğini sağlayamaz. Neden mi? Zira kayıtları tek bir kişi tuttuğu sürece bu kişi blok zinciri içinde de istediği değişikliği yapabilir de ondan. Nasıl mı? Adım adım anlatalım.

Diyelim ki blok zinciri tek bir kişi tarafından tutuluyor ve o kişi kötü niyetli. Transfer kayıtlarını kendi lehine olacak şekilde değiştirmek istiyor. Eğer kimin ne kadar parası (Bitcoin’i) olacağını yalnızca bu kayıtlara bakarak anlayabiliyorsak ve kötü niyetli defterdarımız bloklarda değişiklik yapmışsa, başkalarının Bitcoin’ini azaltıp kendininkini arttırabilir.

Kötü niyetli defterdar 3 bloktan oluşan bir blok zincirin 2. bloğuna müdahale eder ve transfer kayıtlarını değiştirirse sonuçta girdi (input) değişeceğinden müdahale edilen bloğun hash’i de otomatik olarak değişir. Bunun sonucunda 3. Blokta bulunan “önceki hash” değeri ile müdahale edilen 2. Bloktaki hash değeri birbirini tutmaz hale gelir. (Unutmayın, transfer kayıtları da girdinin parçasıdır, girdi değişirse hash değişir ve atıf zinciri bozulur.)

Birbirini tutmayan bloklar var ise zincir bozulur ve bir şeylerin değiştirilmiş olduğunu anlarız. Kayıtlar güvenilirliğini yitirir.

Blok_Zinciri_Nedir_19

Ancak, kötü niyetli defterdar ortaya çıkan bu uyumsuzluğu düzelterek kendi müdahalesini gizleyebilir. Bunun için sırasıyla müdahale ettiği bloktan başlamak üzere uyumsuz olan tüm blokları tek tek yeniden madenciliğe sokarsa tekrardan uyum sağlanacaktır.

2 numaralı blok içindeki değişiklikle birlikte madenciliğe sokulur, en azından 4 sıfırla başlayan bir hash elde edilir. 3 numaralı bloktaki “önceki hash” değeri de otomatik olarak değişir ve yeni (en azından 4 sıfırla başlayan) hash’e dönüşür. Bu değişiklik 3 numaralı bloğun kendi hash’ini bozar zira girdiyi oluşturan öğelerden biri değişmiştir ve 3 numaralı bloğun hash’i hala hedef hash’in üzerindedir. Bunu düzeltmek için son olarak 3. Blok da madenciliğe sokulur. Sonuç olarak tüm bloklar tekrardan uyum içerisinde birbirine bağlanmış olur, 2. blokta yapılan değişiklikler gizlenmiştir.

Bu işlem tamamlandığında ortaya çıkan yeni blok zincirine dışarıdan bakıldığında herhangi bir sorun görünmez.

Blok_Zinciri_Nedir_20

Kısacası blok zinciri teknolojisi tek başına güvenilir ve bozulamaz bir kayıt sistemi teşkil etmez. Burada en önemli nokta blok zincirini kaç kişinin aynı anda tuttuğudur. Eğer tek bir kişi blok zincirini tutuyorsa ve madencilik yapma yetkisi de aynı kişideyse bu kişi kayıtlarda istediği manipülasyonu yapabilir ve ardından izlerini silebilir.

Blok_Zinciri_Nedir_21

Sonuçta eğer tek bir defterdar blok zincirini tutacaksa ve biz de o defterdara güvenmek zorundaysak bunun günümüz bankacılık sisteminden bir farkı yoktur.

Bu sorun Bitcoin blok zincirinde “dağıtık defter” teknolojisi kullanılarak çözülmüştür. Eğer aynı blok zinciri, birbirlerini denetleme yetkisi bulunan birden fazla defterdar tarafından eşzamanlı olarak farklı noktalarda tutulursa, tek bir kişiye güvenmek zorunda kalmayız!

Artık “Blok Zinciri Nedir?” sorusuna cevap vermeye hiç olmadığınızdan daha yakınsınız.

Dağıtık Defter Teknolojisi Nedir?

Dağıtılmış Defter Teknolojisi (Distributed Ledger Technology), birden fazla tarafın merkezi bir otoriteye veya aracıya ihtiyaç duymadan ortak bir veri tabanına erişmesine, paylaşmasına ve güncellemesine olanak tanıyan dijital bir sistemdir.

Eğer aynı blok zinciri eşzamanlı olarak farklı taraflarca tutulursa ve bu tarafların birbirlerini denetleme yetkisi bulunursa yukarıda bahsedilen “kötü niyetli defterdar” sorunu da çözülmüş olur.

Bitcoin blok zincirinin devrimsel özelliği onun bir kopyasının her isteyen tarafından tutulabilmesidir. Yani isteyen herkes defterdar olabilir. Blok zincirin bir kopyasını tutmaya yarayan donanımın ismi “Node” dur. Her ne kadar bu kelimenin Türkçe karşılığı “Düğüm” olsa da, yerli ve yabancı tüm kaynaklarda genelde orijinal ismi kullanıldığından burada da node şeklinde anılacaktır.

Bitcoin node’ları çevrimiçidir ve birbirleri ile etkileşim içindedirler. “Tam Node” olarak adlandırılan nodelar içlerinde ilk bloktan bu yana tamamlanarak blok zincirine eklenmiş tüm blokları barındırırlar. Kısacası Bitcoin transfer kayıtları birbirini teftiş eden, tüm dünyaya yayılmış elektronik defterlerde tutulur.

Blok_Zinciri_Nedir_22

Bu Node’lar içlerinde o zamana kadar ki tüm transfer kayıtlarını tutarlar ve birbirlerini denetleyerek çoğunluğa uymayan bozuklukları sistemden dışlarlar. Eklenen her yeni blokta önceki blokların verilerine atıfta bulunulduğundan, her eklenen yeni blok ile blok zincirinin eski kayıtları daha da güvenilir hale gelir. Blok zinciri nedir bilmeyen bir kişi dahi ana prensipleri öğrendikten sonra bu kayıtlara güvenebilir.

Bunun yanı sıra Node’ların iki önemli görevi de bulunmaktadır. Bitcoin Node’ları ve madenciler arasındaki ilişkiyi şu şekilde özetleyebiliriz:

1- Yeni transfer kayıtları Node’lara iletilir. Node’lar bu yeni kayıtları toplar ve transferlerin doğruluklarını onaylarlar. Sonra toplanan ve onaylanan yeni transferler bir bloğa işlenmek üzere madencilere sunulur.

2- Madenciler yeni transfer kayıtlarının bulunduğu bloğu tamamlayabilmek (hedef hash’i veya altını bulmak) için birbirleri ile yarışarak madencilik yaparlar. Yukarıda açıkladığımız görevin çok daha zor bir versiyonunu tamamlayan, yani bloğun içindeki girdilerde yalnızca Nonce’u değiştirerek hedef hash veya altında bir hash’i tutturan ilk madenci yeni bloğu tamamlamış olur. Kimisi buna blok kapatma ismini de verir.

3- Başarılı olan madenci, blok ödülünün sahibi olur. Bitcoin protokolünde blok tamamlayan madenciye Bitcoin cinsinden bir miktar ödül olarak verilir. Yeni Bitcoin’ler bu şekilde üretilirler. (Madenciler de bu ödül ve komisyon için faaliyetlerine devam ederler. Motivasyonları budur.)

4- Bloğu tamamlayan madenci, yeni bloğun blok zincirine eklenmesi için tamamladığı bloğu Node’lara sunar.

5- Node’lar yeni bloğu kontrol ettikten sonra aralarında yayarak blok zincirine eklerler. Her yeni eklenen blok ile blok zinciri kayıtlarının doğruluğu pekişir.

İşte yeni bir blok, blok zincirine bu şekilde eklenir.

Hem Node’lar hem de madenciler dünyanın dört bir yanına dağılmış şekilde, bağımsız bir yapıda faaliyetlerini sürdürürler. Hepsi ağın güvenliği ve blok zincirin çalışması için rollerini üstlenirler, Node çalıştıranların mükafatları kendi işlemlerinin güvenli şekilde iletilmesidir, madencilik yapanların mükafatı ise blok ödülünü kazanma ihtimali ve komisyonlardır.

Blok_Zinciri_Nedir_23

Bir örnekle dağıtık defter teknolojisi hakkında öğrendiklerimizi pekiştirelim.

Mert, Hande, Selda, Tarık ve Burcu ayrı ayrı Bitcoin node’u çalıştırıyorlar, yani Bitcoin işlemlerini doğrulayan ve kaydeden ağın bir parçası olmuş durumdalar. Böylece kendi transfer işlemleri de başkasının Node’una ihtiyaç duymadan güvenli şekilde ağa iletiliyor. Ancak Tarık gizlice bir kez harcadığı Bitcoin’leri bir daha harcayabilmek için defterini/node’unu manipüle etmeye çalışıyor. Yani Tarık kötü niyetli bir defterdar. Tarık’ın yapmaya çalıştığına “çifte harcama” (double-spending) ismi verilir ve Bitcoin ağında buna izin verilmez.

Bitcoin ağı bu tür dolandırıcılıkları önlemek için dağıtık defter teknolojisini kullanmaktadır. Her Node aynı defterin bir kopyasına sahiptir ve hepsi işlemleri doğrulamak ve defterin ağ genelinde tutarlı olmasını sağlamak için birlikte çalışırlar. Bu, Tarık’ın kendi defterini manipüle etmeye çalışması durumunda, diğer node’ların bunu fark edeceği ve Tarık’ın işlemlerini reddedeceği anlamına gelir.

Tarık çifte harcama yapmaya çalıştığında, Mert, Hande, Selda ve Burcu’nun sahip olduğu diğer Node’lar Tarık’ın aynı Bitcoinleri iki kez harcamaya çalıştığını görecek ve işlemini reddedecektir. Bunun nedeni, diğer Node’ların aynı defterin bir kopyasına sahip olmaları ve Tarık’ın bu Bitcoinleri zaten harcadığını görebilmeleridir.

Blok_Zinciri_Nedir_24

İşte blok zinciri ve dağıtık defter teknolojisi bu şekilde çalışır. Taraflar transfer işlemlerini Node’lara iletirler. Halihazırda geçmiş transfer kayıtlarını da blok zinciri biçiminde depolamış olan ve dünyaya dağılmış olan binlerce Node kendilerine gelen yeni transfer taleplerini derleyip doğruluklarını onayladıktan sonra bunları yine dünyaya dağılmış olan madencilere sunarlar. Madenciler yeni transfer kayıtlarını içeren bir blok tamamlayabilmek için birbirleri ile yarışırlar, zor görevi başararak istenen hash’i bulan ve bloğu tamamlayan madenci blok ödülünün sahibi olur. Tamamlanan blok, madenci tarafından Node’lara iletilir. Node’lar tamamlanmış bloğu inceleyip onaylar ve sirküle ederler. Yeni blok tüm Node’larda kaydedilir ve blok zincirine eklenir. Her eklenen yeni blok, önceki bloklara atıf yaparak blok zincirinin meşruiyetini pekiştirir.

Node’lar ve Madenciler arasındaki farkı daha iyi anlamak için aşağıdaki görseli de inceleyebilirsiniz.

Blok_Zinciri_Nedir_25

Eminiz artık rahatlıkla “Blok Zinciri Nedir?” sorusuna cevap verebilir hale geldiniz!

Diğer yazılarımıza da göz atmayı unutmayın! Eğer içeriği faydalı bulduysanız, bizi sosyal medya hesaplarımızdan da takip edebilirsiniz.

Rehberimizin Bitcoin Nedir? isimli ilk bölümünü okumak için buraya tıklayabilirsiniz.

Yazan: Av. Kaan Beylen