Yeni Sihirli Kelime : BlockChain
Bitcoin yada aslında altında yatan teknoloji olan Blockchain kavramı son dönemin güncel kelimelerinden bir tanesi. Sıklıkla cümle içinde kullanıldığı durumlarla karşılaşıyorum, bazen insanların bu tarz kelimeleri kullandıklarında kendilerini daha iyi hissettiklerini düşünüyorum. Ancak bu kavramın altını dolduralım, en azından bilgilendirici kaynak üretelim aşamasına gelince ilk baştaki o motivasyonun ortadan kaybolduğunu görüyorum.
Konu ile ilgili Türkçe kaynakları incelediğimde büyük bir potansiyeli olduğu, bir çok farklı alanda kullanılabileceği ve yurtdışındaki falanca bankanın/şirketin bu konuda yatırım yapmış olduğu dışında fazla birşey olmadığını fark ettim, yani en temel sorular olan Blockchain teknolojisi nedir, hangi probleme nasıl bir çözüm önerir için tam olarak doyurucu bir Türkçe kaynak ile karşılaşmadım (yanlış anlaşılmasın burada kişisel deneyimimden bahsediyorum).
Bundan dolayı bu temel sorulara bu yazı içerisinde kendimce oldukça basitleştirilmiş ve kısa şekilde cevap vermeye çalışacağım. Geri bildirimlere göre bu yeni devrim içerisinde öğrendiklerimi ve gözlemlerimi paylaşmaya devam etmeyi planlıyorum.
Yeterince uzun bir giriş oldu, haydi artık başlayalım.
Blockchain temel olarak değer içeren verilerin (para, kimlik, değerli kağıtlar gibi) güvenli ve emin bir şekilde depolanması ve yönetilmesi için tasarlanmış bir teknoloji olarak tanımlanabilir.
Bu tanımda belirtilen niteliklerin sağlanabilmesi için günümüzde bankalar gibi çeşitli ara kurumlar, kapalı merkezi sistemler kullanılır (örneğin hesabınızın bir bankanın merkezi veri yapısında tutulması gibi). Blockchain ise bu ihtiyaçlara karşılık olarak herkese açık, şeffaf, merkezi olmayan, ara yapılara ihtiyaç duymayan bir çözüm önerir. Bu çözüm kapsamında tanımlanan kavramlar ve bileşenlere hızlı bir şekilde göz atarsak:
- Blok: Adından da anlaşılabileceği gibi Blockchain yaklaşımında verilerin saklandığı yapılar blok (block) olarak adlandırılır. Ve bu blok yapıları “Blockchain” olarak adlandırılan bir zincir şeklinde (zaman açısından doğrusal bir dizi yapısında) düzenlenir.
- Dağınık, merkezi olmayan ağ yapısı: Günümüz yaklaşımlarında kapalı merkezi sistemler kullanıldığını belirtmiştik. Blockchain yapısında ise tüm bilgiler dağınık/merkezi olmayan (distributed), katılımcılara açık bir ağ yapısı üzerindeki tüm makinelerde eşlenik kopyalar halinde tutulmaktadır. Bu şekilde tekil bir ara kuruma ihtiyaç ortadan kalkmakta, bu durumun getirdiği maliyetler ve riskler (single point of failure gibi) ortadan kaldırılmaktadır.
- Mutabakat mekanizması: Bir üst madde de ağ yapısı üzerindeki tüm makinelerde blockchain’in eşlenik kopyasının olduğunu belirtmiştik. Bunu sağlamak için ağ genelinde mutabakat (consensus formation) yapılması gerekir (Bitcoin blockchain’nin global bir durum değişikliğinde mutabakata varma süresi ortalama 10 dakika, Ethereum blockchain’de bu süre ortalama 15 saniyedir).
Şimdi bu resmi biraz daha yakından inceleyelim.
Yukarıda belirttiğim gibi Blockchain yaklaşımında veriler blok adı verilen yapılarda tutulur. Blok yapısı için “güvenlik” kavramı içerdiği bilgileri dış dünyadan saklaması olarak değil, oluşturulduktan sonra içerdiği bilgilerin fark edilmeden değiştirilemeyeceğini anlamında kullanılmaktadır. Bunu sağlamak için kriptografik özetleme (cryptographic hashing) ve zaman bilgisi kullanılmaktadır.
Temel olarak blok iki parçadan oluşur:
- Blok içerisindeki veriler
- Blok içerisindeki veri bütünlüğünü kontrol etmek amaçlı üst bilgi/başlık (block header)
Bir blok başlığı aşağıdaki bilgileri içerir (başka bilgiler de var ama sadeleştirme amacı ile şimdilik onları görmezden geliyoruz):
- Bir önceki bloğa ait özetleme (hash) değeri
- Blok içerisindeki verilere ait Merkle kök değeri (bunu kısaca tüm verilerden tek bir özetleme verisine erişme şekli olarak düşünebiliriz)
- Zaman bilgisi
- Nonce (istenilen blok özetleme değerini üretmek amacı ile kullanılan değiştirilebilen sayı değeri)
Blok başlığı içindeki bilgilerin toplu bir şekilde bir güvenli özetleme algoritmasından (secure hash algorithm) geçirilmesi ile o bloğa ait olan özetleme bilgisine (block hash) ulaşılır.
Fark edebileceğiniz gibi her blok kendisinden önceki bloğa ait özetleme bilgisini içermekte ve bu bilgiyi kendisine ait özetleme bilgisini oluşturmakta kullanmaktadır. Bundan dolayı kötü niyetli bir yapı tarafından bir blok yapısının değiştirilmesi için hem hedef bloğun hemde ondan sonraki tüm blokların değiştirilmesi (ki bu sırada ağ içerisinde yeni blokların üretimi devam etmektedir) gerekmektedir. Blok yaratım işleminin yüksek maliyetinden dolayı (örneğin Bitcoin yapısında kullanılan blockchain yapısı ortalama 10 dakika’da bir yeni blok üretimi şeklinde tasarlanmıştır, blok üretiminin kolaylaştığının görülmesi durumunda sistem otomatik olarak üretimi zorlaştırır - tersi durumda ise kolaylaştırır) teorik olarak gerçekleştirilebilecek bir durum olmasına rağmen pratikte gerçekleştirilmesi oldukça düşük ihtimalli bir durumdur.
Ağ üzerindeki makinelerin yeni blok üretme işlemi madencilik (mining) olarak adlandırılmaktadır. Basit bir şekilde buradaki akışı adım adım incelersek:
- Yeni blok içerisinde yer alması istenen işlemler/veriler seçilir.
- Bu işlemler/veriler kullanılarak Merkle ağacı yapısı ve kök değeri oluşturulur.
- Merkle kök değeri, bir önceki bloğun özetleme değeri, zaman bilgisi ve nonce değeri kullanılarak blok başlığını oluşturulur.
- Blok başlığı özetlenerek (hashing) uygun bir değer (belirli bir aralığın içerisinde mi, belirli bir karakter kümesi ile mi başlıyor gibi) oluşup oluşmadığı kontrol edilir (bu özetleme değer kontrolü, “finding a solution” olarak adlandırılmaktadır).
- Eğer uygun bir blok özetleme değeri oluştu ise yeni blok başarılı bir şekilde oluşturulmuş demektir, bu bilgi ağ üzerindeki tüm makineler ile paylaşılır. Eğer çoğunluk tarafından bu oluşturulan yeni bloğa onay verilirse blockchain’e eklenir.
- Eğer uygun bir blok özetleme değeri oluşmadı ise nonce değeri arttırılarak uygun özetleme değeri yaratılmaya çalışılır. Nonce değeri limitine geldiğinde hala geçerli bir blok oluşturulamadı ise (yani geçerli bir özetleme değeri oluşturulamadı ise) bu durumda blok başlığını oluşturan diğer değerlerde (blok içerisinde olacak işlemler kümesi gibi) güncelleme yapılır ve akış tekrar baştan ele alınır.
İsterseniz şimdi bu teknolojinin nasıl gerçek bir vaka’da kullanıldığına bakalım, bence bunun için en iyi örnek aynı zamanda teknolojinin çıkış noktası olan Bitcoin olacaktır.
Bitcoin temel olarak p2p para transferi konusunda alternatif bir yaklaşım getirmektedir. Günümüz dünyasında para transferi yapabilmek için bankalar yada bu konuda özelleşmiş ara kurumları (WesternUnion gibi) kullanırız ve kullandığımız kurum ne olursa olsun bu işlemler hem maliyetli hemde yavaştırlar. Bitcoin’de ise dijital bir para birimi (Bitcoin) ve kişilerin dijital cüzdanları (Bitcoin adresleri) bulunmaktadır. Cüzdan ile ilişkili olarak yine kişilerin ellerinde bir adet açık-gizli anahtar çifti bulunmaktadır (asymmetric cryptography), açık anahtar herkes ile paylaşılırken gizli anahtar kimse ile paylaşılmaz. Bir kullanıcı (Serkan) başka bir kullanıcıya para göndermek istediğinde Bitcoin miktarı, hedef Bitcoin adresi ve bunların kendi gizli anahtarı ile imzalanmış durumunu içeren bir işlem oluşturur.
Bu yapısı ile işlemin gerçekten Serkan tarafından oluşturulduğu herkes ile paylaşılmış açık anahtar ile doğrulanabilir ama ortada iki temel sorun bulunmaktadır:
- Serkan’ın göndermek istediği kadar Bitcoin’i var mı
- Serkan elindeki aynı parayı birden fazla kere gönderebilir/harcayabilir mi (double spending)
İşte bu noktada Blockchain yapısı devreye girmektedir.
Bitcoin sistemindeki tüm işlemler ağ üzerindeki herkese açık, güvenli (değiştirilemez) ve ortak bir blockchain üzerinde tutulduğundan dolayı (bundan dolayı ledger - muhasebe defteri benzetmesi yapılır) hangi hesapta ne kadar Bitcoin var sorusunun cevabına ulaşılabilir ve bu şekilde Serkan’ın hesabında olmayan bir para ile işlem yapmasına izin verilmez. Yine aynı mantık ile Serkan’ın aynı parayı birden fazla kere harcanmasının önüne geçilmiş olunur (işlemi doğrulama çalışan makina, blockchain üzerinde Serkan’ın aynı para üzerindeki geçmiş işlem kaydını göreceğinden ikinci işlemi doğrulamayacaktır).
Blockchain teknoloji çıkış kaynağı olan Bitcoin’in de etkisi ile öncelikli olarak dijital para alanında kendini göstermiştir. Ancak yapısı itibari ile her türlü veri kümesini taşıyabileceğinden dolayı hisse senedi, tahvil, tapu, sigorta sözleşmesi gibi dijital varlık kayıtlarının yönetiminde kullanılabilir. Ethereum gibi yapılarda ise özel bir dil ile hazırlanmış programlar (dijital/akıllı kontratlar - smart contracts) blockchain üzerinde tutarak çok daha geniş kullanım alanlarının kapısı açmıştır.