NTT DATA Business Solutions
Barış Arslan | Aralık 25, 2017

Bilişim Dünyasının Yeni Keşfi Blockchain Teknolojisi

Son zamanlarda hızla yayılan ve insanlar tarafından bilinirliği artan “Blockchain” teknolojisi, hayatımızın her alanında yer almaya başlayacak gibi duruyor. Blockchain teknolojisini kullanan ve dünya üzerinde en çok bilinen uygulamalar kripto paralar aslında. Blockchain teknolojisinin en somut uygulanabilirliği olan finansal uygulamalarda kullanılmaya başlandı.

Ben bu yazıda Blockchain teknolojisinin alt yapısından ve nasıl çalıştığından bahsedeceğim. Ne tür uygulamalarda bu teknolojiyi kullanabiliriz? Olumlu veya olumsuz yönleri neler olabilir bunları da değerlendireceğiz. Ek olarak SAP’nin de Blockchain ile ilgili attığı adımlar var. Bu adımları da değerlendirip, SAP iş uygulamalarında Blockchain’in yeri nedir ve nasıl değerlendirilebilir diye tartışacağız.

Blockchain en basit tanımıyla, bir veritabanı teknolojisidir. Ancak, sadece veritabanı olarak tanımlamak yeterli değil. Blockchain, işlem takibi yapmamızı sağlayan, verileri saklayabildiğimiz ve en önemlisi bu verileri ve işlemleri şifreleyerek yöneten bir veritabanı teknolojisidir.

Blockchain yapısında veriler dağıtık olarak tutulur. Bu bir zorunluluk değil ancak genelde Blockchain uygulamalarında veriler merkezi olarak tutulmaz. İhtiyaca, sürece veya uygulamanın kapsamına göre Blockchain’niniz merkezi veya dağıtık olarak belirlenebilir.

 

 

Merkezi veritabanı

Merkezi veritabanlarında çalışma şeklimiz, yıllardır yazılım dünyasında kullanılan mimarilere dayanır. Merkezi veritabanlarının çalışma mimarisini özetleyecek olursak; veriler tek bir sunucu da tutulur, merkezi bir yönetim vardır. Belirlenmiş bir grup tarafından yönetilir. Bu gruplar, şirketlerin kendi içlerinde oluşturduğu teknik ekiplerdir. Bu sunucunun bakımından ve güvenliğinden sorumlu olan taraf da yine bu sunucuyu ve veritabanını yöneten ekip/ekipler tarafından gerçekleştirilir. İlgili sunucu üzerinde herhangi bir problem olduğu zaman, o sunucuya bağlı tüm uygulamalarda da bağlantı sorunu yaşanır. Bu durum merkezi veritabanları için en büyük risklerden bir tanesidir.

Dağıtık veritabanı

Dağıtık veritabanlarında veriler tek bir noktada tutulmaz. Adından da anlaşılacağı gibi veriler dağıtık olarak birden fazla kaynak üzerinde tutulur. Verilerin tutulduğu bu kaynaklar ise merkezi veritabanındaki sunucularına göre kıyasladığımız da farklı modellerle yönetilebilir. Bu nokta da farklı Blockchain türlerinden bahsedebiliriz. “Consortium Blockchains”, “Semi-private Blockchains”, “Private Blockchains” ve “Public Blockchains” olarak değerlendirebiliriz.

Consortium Blockchains

Belirli bir grup tarafından kontrol edilen ve yetki tabanlı kullanıcı yönetiminin yapıldığı Blockchain modelidir. Hangi kullanıcıların okuma yetkisi olacağı, hangi kullanıcıların yazma yetkisi olacağı gibi kısıtlamalarla tüm zincir yönetilir. İş uygulamalarında kullanılabilecek en uygun modellerden birisidir.

Semi-private Blockchains

Tek bir şirket veya kurum tarafından kontrol edilen ve yetki tabanlı kullanıcı yönetiminin yapıldığı Blockchain türüdür. Buradaki en önemli faktör zincirin tek bir kurum tarafından yönetilmesidir. B2B senaryolarında aktif olarak tercih edilebilecek bir modeldir.

Private Blockchains

Tek bir şirket veya kurum tarafından yönetilen, yetki tabanlı kullanıcı yönetimiyle beraber %100 merkezi çalışan Blockchain türüdür. Test sistemleri için uygun olabilir ancak canlı kullanım olarak çok tercih edilmeyebilir. Merkezi bir sistem üzerinden çalıştığı için yine tek bir noktaya bağımlı ilerleyen bir modeldir.

Public Blockchains

Zincire bağlanabilen her kullanıcının, zincir üzerinde okuma ve işlem yapma yetkisi vardır. Yetki tabanlı bir kullanıcı yönetimi yoktur. Herkes aynı yetkilere sahiptir ve kullanıcılar arasında veri kısıtlamaları yoktur. Zincir üzerindeki kullanıcılar anonim olarak görünür. Bu yüzden işlemler herkes tarafından görüntülenebilirken, hangi işlemi gerçekten kimin yaptığı takip edilemez. Sadece anonim olarak işlemler takip edilebilir. Kripto para birimlerinin çoğu “Public Blockchain” modelini kullanmaktadır. Bitcoin ve Ethereum bu model için en iyi örneklerdendir.

Dağıtık veritabanı mimarisinde veriler tüm kullanıcılarının kaynaklarında tutulur. Örneğin; Bitcoin zincirini bilgisayara indirdiğinizde, Bitcoin Blockchain’i üzerinde yapılan işlemleri bilgisayarınıza indirecek ve siz de zincir üzerinde bir kaynak haline geleceksiniz. Bu şekilde hem merkezi bir yere bağlı olmadan verileri tutabilirsiniz hem de başka kullanıcılar verileri okumak istediğinde verinin tek bir noktadan indirilmesine gerek kalmadan okuyabilirsiniz. Tüm veriler birden fazla noktada tutulduğu için veri kaybı veya sunucu erişimi gibi problemler söz konusu olmuyor. Sunucu, veriyi bir kaynaktan alamadığı takdirde başka bir kaynağa ulaşarak veriyi okuyabilir.

Aslında bir çok kişinin yolu farkında olmadan bu mimari ile kesişmiş, benzer bir zincirin parçası olmuştur. Örnek olarak, yakın zamana kadar çok popüler olan torrent uygulamasını gösterebiliriz. Torrent üzerinden bir dosyanın indirilmesi de benzer bir yapıda ilerliyor. Bilgisayarınıza bir film indirmek istediğinizde, öncelikle uygun kaynaklar bulunur (Seeder) ve daha sonrasında bu kaynaklardan veriler okunarak, bilgisayarınıza indirilir. Hem bu işlemler sırasında hem de indirme işlemi tamamlandığında siz de bir paylaşım yapan kaynak haline gelirsiniz yani siz de bir “Seeder” olursunuz. Başkaları da indirmek istediğinde siz de o zincire dahil olup kaynak sayısını arttırmış olurdunuz. Bu yapıyı Peer-to-Peer mimari olarak da değerlendirebiliriz. Torrent örneğindeki en önemli fark veri güvenliği konusunda kriptoljinin uygulanmamasıdır.

Blockchain Üzerinde Şifreleme(Kriptoloji)

Verilerin her bir kaynak üzerinde dağıtık olarak tutulduğundan bahsetmiştik. Buradan şunu anlayabiliyoruz; zincir üzerindeki tüm veriler her kullanıcıda kopyalanacak. Bu durum aynı zamanda veri güvenliğini de beraberinde getiriyor. Bu yüzden işlemler ve bu işlemlerin oluşturduğu veriler şifreleniyor. Şifrelendikten sonra tüm kaynaklar üzerinde şifreli bir şekilde tutuluyor.

Bu şifreleme, hem işlemler için hem de işlemlerin bağlı olduğu bloklar için geçerlidir. Her bir blok belli bir işlem kapasitesine sahiptir, işlem sayısı veya işlem boyutuna bağlı kapasiteler belirlenebilir. Her bir blok kendi içerisinde ayrı şifrelemeye sahiptir.

Buradaki en önemli iki nokta “Hash of previous block header” ve “Merkle Root” olarak değerlendirilir. Zincir üzerinde oluşan her bir blok kendine ait bir Hash’e sahiptir. Hash’i şifrelenmiş bi ID gibi düşünebiliriz. Hash hiçbir şekilde tekrar edemez ve her blok kendine ait bir hash’e sahiptir. Blok hash’leri her zaman bir önceki blok’un hash’i üzerinden yaratılır. Bu durum bizim için güvenliği sağlamakla beraber, zincirin hacklenmesini imkansız hale getirmektedir. “Merkle Root” ise aslında hash zincirini yöneten yapı olarak da bilinmektedir. Hash’lenmiş verileri doğrulamak için de kullanılır. Sonuçta zincir üzerinde herhangi bir kullanıcının veri oluşturabileceğini düşünürsek her verinin de doğru şekilde oluşturulduğundan emin olmamız gerekiyor. Belirli bir şekilde şifrelenen hash’ler ile oluşturulan bloklar ve içlerindeki işlemler, zincirdeki farklı kaynaklar üzerinden onaylanmadığı sürece işlemlerini tamamlayamazlar. Büyük veri yapılarında, verileri korumak için iyi bir kripto mimarisi olarak kabul edilir.