Blockchain nedir?
Blockchain nedir? En kısa ifade ile, 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 anlayacaksınız.
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. Dolayısıyla herkesin onayı olmadan bir şey eklemek asla mümkün değildir.
Binance’e hala üye değilseniz ömür boyu komisyonlarda %20 indirim alabilmek için buradan kayıt olabilirsiniz.
Bu anlamda Blockchain bizim değiştirilemez ve manipüle edilemez kayıtlar tutmamızı sağlar. Bu teknolojiyi bu kadar büyük yapan asıl olay ise merkezi bir otoriteye ihtiyaç duymamasıdır. Merkezsizdir yani hiçbir yere bağlı değildir. 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.
Blockchain teknolojisi nereden gelmekte?
Blockchain 2008–2009 yılları arasında Bitcoin ile birlikte Satoshi Nakamoto tarafından icat edilmiştir. Bu Satoshi Nakamoto’nun bir kişi ya da grup olduğu ise hala bilinmiyor. Kendisi bu teknojinin tam anlamıyla çalıştığından emin olduktan sonra insanlara hediye ettiğini ve başka teknolojiler üzerinde çalışmalara yoğunlaşacağını belirttiği bir makaleden sonra ortadan kayboldu.
Bu makalenin tamamını okumak için tıklayın.
Dijital güveni tanımlama
Güven, dijital dünyada farklı taraflar arasında bir risk kararıdır; güven belirleme genellikle kimliği kanıtlama(onaylama) ve onaylama izinleri(yetkilendirme) ile sonuçlanır.
Blockchain teknolojisinde özel anahtar şifreleme, kimlik doğrulama gereksinimlerini karşılayan güçlü bir sahiplik aracı sağlar. Özel bir anahtarın niteliği mülkiyettir. Ayrıca, bir kişiyi, takas için ihtiyaç duyduğundan daha fazla kişisel bilgi paylaşmak zorunda kalmadan, bilgisayar korsanlarına maruz bırakılmaya karşı korur.
Kimlik doğrulama yeterli değildir. Yetkilendirme – yeterli paraya sahip olmak, doğru işlem türü vb. – başlangıç noktası olarak dağıtılmış, eşler arası bir ağa ihtiyaç duyar. Dağıtılmış bir ağ, merkezi yolsuzluk veya başarısızlık riskini azaltır.
Bu dağıtılmış ağ, işlem ağının kayıt tutmasına ve güvenliğine de bağlı olmalıdır. İşlemleri yetkilendirmek, tüm ağın üzerinde tasarlandığı kuralları(Blockchain protokolü) uygulaması sonucudur.
Bu şekilde verilen kimlik doğrulama ve yetkilendirme, dijital dünyadaki güvene dayanmadan yapılan etkileşimlere izin verir. Bugün, dünyanın dört bir yanındaki endüstrilerdeki girişimciler bu kalkınmanın, hayal edilmeyen, yeni ve güçlü dijital ilişkiler kurmadaki etkisinin farkına vardılar. Blockchain teknolojisi genellikle internet için bir işlem katmanının omurgası olarak tanımlanır.
Aslında, kriptografik anahtarların ve paylaşılan hesap defterlerinin, dijital ilişkileri güvenceye almak ve resmileştirmek için kullanıcıları teşvik edebileceği fikri, çılgınca çalışan hayal gücüne sahiptir. Hükümetlerden bilişim firmalarına, bankalara kadar herkes bu işlem katmanını oluşturmaya çalışmaktadır.
Dijital işlemlerde hayati öneme sahip olan kimlik doğrulama ve yetkilendirme, Blockchain teknolojisinin yapılandırılması sonucunda oluşturulmuştur.
Bu fikir, güvenilir bir kayıt sistemine ihtiyaç duyan herhangi bir projeye uygulanabilir.
Blockchain nasıl çalışır?
Blockchain teknolojisini sizlere Bitcoin örneği üzerinden anlatmak istiyorum. Çünkü Blockchain teknolojisini ancak Bitcoin’i iyi bir biçimde kavrarsak öğrenebileceğimizi düşünüyorum. Fakat şiddetle burada önemli bir noktaya değinmek istiyorum, Blockchain teknolojisi sadece Bitcoin’den ibaret değildir. Aşağıda anlatacaklarım Bitcoin’in Blockchain teknolojisi için olan geçerli kurallardır ve diğer Blockchain uygulamalarında bunlar farklılık gösterebilir.
Yukarıdaki görsel bir Bitcoin’i gönderme işleminin nasıl gerçekleştiğini anlatmakta. Karışık gibi görünebilir ama bu işlemi 3 ana başlıkta 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 var. 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.
Görseldeki görüntü örnek bir cüzdan uygulaması. Açık ve Gizli anahtarlar QR kod olarakta gösterilebiliyor.
Örneğin Ece Ayşe’ye 2 Bitcoin göndermek istiyor. Bunu gerçekleştirmesi için cüzdan uygulamasında Ayşe’nin public adresini(Bitcoin Adresi) 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(işlem) 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 Ece’ye gönderilmiş Bitcoin’leri bulmak üzere bir araştırmaya çıkar. Bu araştırma Ece’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 Ece’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 Ece’den çıktığının kanıtlanması gerekiyor. Bunun içinse dijital imza adında kriptografik bir yöntem kullanılır. Cüzdan uygulaması Ece’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 Ece 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önderir.
2. Transaction’ın onaylanması:
Blockchain ağı üzerindeki minerlar(madenciler) bu transaction’ı Blockchain ağına yazmadan önce doğruluğunu kontrol ederler. Bunu yaparken 2 önemli 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.
SHA256 algoritması nasıl çalışılı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.
Proof of work numarasını bulmak
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 210 bin 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.
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.