Blockchain şifrelenmiş işlem takibi sağlayan dağıtık veri kayıt sistemidir. Bir veritabanı değildir çünkü kaydedilen veri bir daha değiştirilemez veya silinemez. Bu özelliğini verilerin biriktirildikleri blokları aynı bir zincir gibi, birbirlerine şifreleme algoritmaları ile bağlayarak saklamasına ve bu zincirin birçok kişiyle dağıtık olarak paylaşılmasına borçludur. Günlük hayattan bir örnek ile daha iyi anlayalım.
Blockchain’in verileri tutma mantığı aslında bizim bakkalların veresiye defterleri ile biraz benzerlik gösteriyor. Eskiden bakkaldan bir şey almaya giderken evin veresiye defterini de yanımıza alarak giderdik. Bakkaldan alışveriş yapıldığında hem bakkal kendi veresiye defterine yazar hem de biz evin veresiye defterine yazardık. Burada amaç bakkalın bizden habersiz veresiye defterinde değişiklik yapmasını önlemekti. İşte blockchain’de ki dağıtık ifadesi de bu mantığa çok benziyor. İşlemlerin kayıtlı olduğu blok zinciri ağ üzerindeki herkes ile aynı olacak şekilde tutulur. Eğer herhangi biri kendi defterinde diğerlerinin onayı olmadan bir şey eklemeye kalkarsa, diğer defterlerle çatışacağı için ağ dışında kalacaktır.
Bu anlamda Blockchain bizim değiştirilemez ve manipüle edilemez kayıtlar tutmamızı sağlar. Ve bu teknolojiyi bu kadar büyük yapan asıl olay ise merkezi bir otoriteye ihtiyaç duymamasıdır. Bu işlemlerin deftere kaydı ve ağa yayılması tamamen demokratik bir biçimde ağ üzerindeki bilgisayarlar tarafından yapılır. Ne kadar çok bilgisayar bu ağa katılırsa bu sistemin güvenilirliğini o derece de arttıracaktır.
Peki blockchain teknolojisi nereden gelmekte?
Blockchain 2008–2009 yılları arasında Bitcoin ile birlikte Satoshi Nakamoto tarafından icat edilmiştir. Bu Satashi Nakamoto’nun bir kişi ya da grup olduğunu hala bilinmiyor. Kendisi bu teknojinin tam anlamıyla çalıştığından emin olduktan sonra insanlara hibe ettiğini ve başka teknolojiler üzerinde çalışmalara yoğunlaşacağını belirttiği bir mailden sonra ortadan kayboldu.
3. Blockchain nasıl çalışır? Bitcoin üzerinden anlatım.
Blockchain teknolojisini sizlere Bitcoin örneği üzerinden anlatacağım. Çünkü blockchain teknolojisini ancak Bitcoin’i iyi bir biçimde anlarsak öğrenebileceğimizi düşünüyorum. Fakat dikkatle uyarmak istiyorum, Blockchain Bitcoinden ibaret değildir. Aşağıda anlatacaklarım Bitcoin’in Blockchain’i için geçerli kurallardır ve diğer Blockchain uygulamalarında bunlar değişkenlik gösterebilir.
Yukarıdaki görsel bir Bitcoini gönderme işleminin nasıl gerçekleştiğini anlatıyor. Biraz karışık gibi görünebilir ama bu işlemi 3 ana basamakta toplayabiliriz.
-Transaction’ın yaratılması,
-Transaction’ın onaylanması,
-Bloğun zincire eklenmesi.
1.Transaction’ın yaratılması:
Öncelikle Bitcoin’e sahip olabilmek ve gönderim-alım gibi işlemleri sağlamak için bir cüzdan uygulamasına ihtiyacımız vardır. Bu cüzdan uygulamasını indirdiğimizde bize öncelikle açık ve gizli olmak üzere iki tane adres verir. Açık adres sizin kullanıcı isminiz gibi düşünebilirsiniz. Biri size Bitcoin göndermek için bu açık adresinize ihtiyaç duyar. Gizli adresiniz ise sadece sizin bilmeniz gereken bir şifre olarak düşünebilirsiniz. Bu adresi birine Bitcoin göndermek istediğimizde kullanıyoruz.
Örnek bir cüzdan uygulaması. Açık ve Gizli anahtarlar QR kod olarakta gösterilebiliyor.
Bitcoin’de, diyelim ki Ali Ayşe’ye 2 Bitcoin göndermek istiyor. Bunu gerçekleştirmesi için cüzdan uygulamasında Ayşe’nin public adresini ve göndereceği Bitcoin miktarını girmesi yeterli. Peki arka tarafta bu cüzdan uygulaması ne yapıyor? Öncelikle bu cüzdan sizin adınıza bir transaction yaratır. Aslında bu transaction’ı bir nevi banka çeki olarak da düşünebiliriz. Nasıl ki banka çeklerinin üstünde alıcının ismi, para miktarı ve imza bulunuyorsa Bitcoin transactionlar’ı da aynı şekilde işler.
Bitcoin Blockchain’inde kişilerin Bitcoin bakiyeleri tutulmaz. Kişilerin kaç Bitcoin’i olduğu daha önce adreslerine gönderilmiş Bitcoin’lerin toplamı ile belli olur. Bu durumda cüzdan uygulaması zincir üzerinde daha önce Ali’ye gönderilmiş Bitcoin’leri bulmak üzere bir araştırmaya çıkar. Bu araştırma Ali’nin göndermek istediği Bitcoin miktarına ulaşıncaya kadar devam eder.
Görselde görülen örnekteki gibi cüzdan uygulaması daha önce Ali’nin açık anahtarına gönderilmiş transactionlarını 2 Bitcoin’e ulaşana kadar bulmuş. Fakat bulduğu transactionları topladığımızda 2.5 Bitcoin yapıyor. Bu sebeple göndermek istediği 2 Bitcoin’i Ayşe’ye geri kalan 0.5 Bitcoin’i de kendi açık adresine gönderecek şekilde bir transaction yaratır.
Bu transactionı yaratmamız için son aşamaya geldik: ‘İmzalama aşaması’. Bu aşamada bu transaction’ın gerçekten Ali’den çıktığının kanıtlanması gerekiyor. Bunun içinse dijital imza adında kriptografik bir yöntem kullanılır. Cüzdan uygulaması Ali’nin gizli anahtarını ve bu transaction’ı belirli bir metottan geçirerek bir imza yaratır. Bu imza gelecekte Blockchain ağı üzerindeki kişiler tarafından, bu transactionın gerçekten Ali tarafından yaratıldığını kanıtlamak için kullanılacaktır. Son olarak cüzdan uygulaması bu yaratılan transaction’ı Blockchain ağına onaylanması için gönderilir.
2. Transaction’ın onaylanması:
Blockchain ağı üzerindeki minerlar bu transaction’ı Blockchain ağına yazmadan önce doğruluğunu kontrol ederler. Bunu yaparken 2 kritere bakarlar. İlk olarak transaction’ın içinde referans edilen Bitcoin’lerin daha önce kullanılıp kullanılmadığını kontrol ederler. Bu kısımda da eğer aklınızda ‘tüm geçmişi kontrol etmesi uzun sürmez mi?’ diye soru işareti varsa merkle root adında bir yöntem var, merak ediyorsanız araştırabilirsiniz. İkinci olarak da, transaction’ın içindeki imzanın doğru olup olmadığına bakarlar. Bunu da bir fonksiyon içerisinde gönderenin açık adresini, transaction’ı ve imzayı koyarak bulurlar.
Eğer bu imza kendilerine ‘true’ dönerse bu transaction onaylanan transaction havuzunun içine koyulur. Bir sonraki adım ise bu transaction’ı artık zincire eklemektir.
3. Bloğun zincire eklenmesi
Geldik son aşamaya. Artık bu transactionın bir bloğun içinde zincire eklenmesi ve herkesin bu bitcoin transferini kabul etmesi gerekiyor. Öncelikle Blok nedir? Blok dediğimiz şeyi bir text dosyası olarak düşünebilirsiniz. Bu text dosyasının içinde blok numarası, proof of work(POW) numarası, bir önceki bloğun proof of work numarası ve son olarak onaylanan transaction’lar yazılı.
Daha öncede söylediğim gibi tek bir blockchain zinciri ağ üzerindeki tüm node’larda aynı olacak şekilde tutulur. Bu sebeple eğer bir blok eklenecekse bunu tüm node’lara yayılması gerekir. Ve bu işlemin zor olması gerekir. Çünkü eğer blok ekleme işleminin kolay olduğunu düşünürsek herkes zincire aynı anda blok eklemeye çalışacak ve bunun sonucunda zincirde dallanmalar meydana gelecektir. Bunu engellemek için Satashi Nakamoto ‘Proof of Work’ adında bir yöntem geliştirmiştir. Bu aslında bir çeşit bilmecedir ve blok eklemek isteyen miner’ların bu bilmeceyi çözmesi beklenmektedir. Bilmeceyi ilk çözen bir sonraki bloğu eklemeye hak kazanacak ve bunun karşılığında ödül alacaktır.
Öncelikle proof of work mantığının nasıl çalıştığını anlatmadan önce SHA256 algoritması nasıl çalışılır size göstermek istiyorum.SHA256 kendisine verilen bir dosyayı belirli bir algoritmadan geçirerek geri dönüşü imkansız olan 256 bit uzunlukta bir özetini oluşturur. Bu dosya örneğin bir roman veya 1 cümlede olsa bile ortaya her zaman 256 haneli tahmin edilemez hash özeti çıkacaktır.
Yukarıdaki örnekte gördüğümüz üzere ‘blockchain’ yazısını sha256 algoritmasından geçirdiğimizde karşımıza sabit uzunlukta bir hash özeti çıktı. Fakat bu ‘blockchain’ yazısının baş harfini büyük yazdığımızda yada sonuna ‘s’ harfi koyduğumuzda tamamen farklı yine aynı uzunlukta bir hash özeti çıkacaktır.
Bitcoinde’ki proof of work’te ise bu bloğu yani text dosyasın içinde sizin için ayrılan proof of work numarası(nonce) diye bir bölüm var ve siz bu kısma sürekli bir sayı koyup SHA-256 algoritmadan geçiriyorsunuz. Ta ki sistemin sizden istediği örneğin ‘ilk 20 hanesi sıfır olan bir özet bul’ koşulunu sağlayana kadar. Bu sıfır olan hane sayısı daha az veya fazla da olabilir. Yine bunu sistem her iki haftada bir bu problemin çözülme süresi on dk ortalama olacak şekilde ayarlar. Eğer Blockchain ağına daha fazla bilgisayar katılmış ve problemler kısa sürede çözülmeye başlayacaktır. Sistem bu sefer ilk 22 hanesi sıfır olan bir hash özeti isteyecektir.
Aşağıdaki linkten çok daha net bir şekilde bu kısmı anlayabilirsiniz. https://anders.com/blockchain/block.html
Bu proof of work numarasını ilk bulan kişi cevabını ve eklemek istediği bloğu networke yayar. Network’teki kişiler yani minerlar bu cevabın doğruluğundan emin olduktan sonra bu bloğu kendi zincirlerine ekleyip bir sonraki bloğu eklemek için yarışa devam ederler. Burada eğer 2 kişi aynı anda proof of work numarası bulursa ne olur diye sorabilirsiniz. Bu durumda zincir üzerinde bir çatallanma meydana gelir. Bu durumda daha sonra eklenecek 6 bloğa kadar beklenir. Eğer 6 blok sonunda hangisi daha uzunsa o zincir temel alınarak devam edilir.
Proof of work numarasını bulmak için çok fazla bilgisayar gücü harcanır. Bu sebeple blok ekleyen kişi ödüllendirilir. Bu ödül Bitcoin ilk çıktığında 50 BTC olarak belirlenmiş fakat her 210bin blokta(ortalama 4 yıl) bu ödül yarıya düşmektedir. Bitcoin mining’te buradan gelmektedir. Bitcoin sistemi ilk çıktığında sıfır Bitcoin varken blok eklendikçe verilen ödüllerle birlikte 16 milyon civarına gelmiştir. Bu ödül sistemi bölünerek en son 21 milyon da son bulacak şekilde tasarlanmıştır. Peki 21 milyona ulaştığında Minerlar artık para kazanamayacak mı?
Evet hala kazanmaya devam edeceler. Minerlar block ödülünün yanında ekledikleri transaction’ların bahşişlerini de ödül olarak kazanırlar. Bitcoin’de işlem sayısı sınırlıdır. Çünkü her bir bloğun 1 mb boyutu vardır ve sınırlı sayıda transaction sığabilir. Transaction’ı çabuk onaylanmasını isteyen kişiler yaptıkları işlemde transactionın yanına küçük bir miktar bahşiş koyarlar. Miner’lar ise ekleyecekleri transactionlar blok boyutunu doldurana kadar, bahşiş miktarı yüksek transactionları onaylayacaklardır.
örnek block chain :
https://anders.com/blockchain/block.html
Bitcoin’de en olası saldırı double-spend saldırısıdır. Yani bir kişinin aynı Bitcoini aynı anda iki farklı kişiye göndererek harcamasıdır. Bu saldırıyı Bitcoin proof of work sayesinde üstünden gelir. Çünkü bu saldırıyı yapmak isteyen kişinin toplam bilgisayar gücünün en az %51 ine sahip olması gerekir. Buna sahip olsa bile sonraki 6 blok boyunca diğer miner’larla olan yarışı kazanması gerekecektir. Böyle bir saldırı yapmak çok fazla bilgisayar gücü gerektirecektir. Gerçekleşmesi çok düşük olan böyle bir saldırının maliyetini aşağıda görebilirsiniz.
Miner olmak:
Bitcoin’de isteseniz sizde Blockchain veritabanını indirebilir kendi bilgisayarınıza indirip, node olarak katılıp Bitcoin mine etmeyi deneyebilirsiniz. Fakat Bitcoin ağı üzerindeki bilgisayar gücünden dolayı ev bilgisayarınız ile bu işlemi yapmanız neredeyse imkansızdır. Artık Bitcoin’in bilgisayar gücünün büyük bir kısımı mining havuz şirketleri tarafından işgal edilmiştir. Bu şirketler müşterilerinin bilgisayar güçlerini kiralamakta ve elde edilen toplam Bitcoin’i müşterilerine dağıtan bir sistem.
Son olarak,
Bitcoin Blockchain’in sadece küçük bir ürünü. Birçok icat, bulunduğu sektörlerden çok farklı alanlara evrildiler. Blockchain bir ödeme aracı olarak icat edildi fakat günümüzde akıllı kontratlar ile birlikte birçok alanda kullanımı başlamış durumda.