BlockChain ve Bitcoin’e Genel Bakış

BlockChain ve Bitcoin’e Genel Bakış

Merhabalar,
Bitmek tükenmek bilmeyen bitcoin, altcoin(alternatif coin) ve blok zinciri muhabbetlerinin yarım kalmasına sebep olan bilgi eksikliğini tamamlamak adına genel özelliklerini anlatmak ve Blockchain (blok zinciri)nedir?, hangi sorunlara çözüm getiriyor ? nerde kullanılmalı veya kullanılmamalı ? gibi sorulara Mobilhanem.com üzerinden cevap vermek için bu yazıyı yazdım.

Blockchain (blok zinciri) nedir ?

Teknik açıdan olaya bakan kimseler Blockchain (blok zinciri) nedir diye sorduğunda ilk önerdiğim şey bu konu hakkında çıkan ilk makaleyi okulamarıdır. Bir şeyleri öğrenmenin en temel yolu tüm süslenmiş büyüleyici laflardan uzak bilgiyi net veren makalelerden geçmektir diye düşünmekteyim.

Blok zincirinin çalışma şeklini biraz basitleştirerek tanımlamak gerekirse aralarında kırılamaz bir bağ ile bağlı bloklardan oluşan yapı diyebiliriz.

Blok nedir ?

Blok dediğimiz yapı içinde bir önceki blok hakkında ve ilgili coinin özelliğine göre silinemez veriler barındıran blok zincirin anlamlı yapıtaşıdır. Genellikle içinde Nonce, Data ve hash value gibi anahtar değerler bulunmaktadır. Data dediğimiz kısım coinin amacına yönelik kullanıcıların datasını saklamak için kullanılır. Hash value ise bir önceki datanın hash’inin yazıldığı kısımdır. Kriptografik açıdan önemli bir bağ kurmayı sağlayan kısım hash value’larıdır.  Nonce dediğimiz kısım miner tarafından belirlenen kısımdır. Blok zincirlerinin çalışma şeklini anlatırken bu kısımları daha detaylı anlatacağım.

Hash fonksiyon nedir ?

Teknik açıdan bakmak gerekirse,

Aşağıdaki özelliklere sahip bir F fonksiyonu tanımlayalım.

  • X1 ve x2 değeri birbirine eşitse F(x1) ve F(x2) değerleri de birbirine eşit olmalı(Temel fonksiyon özelliği)
  • Her farklı x değer için F(x) değeri farklı bir sonuç versin. (Bire bir özelliği)
  • X değerinin herhangi bir bitinde değişiklik olduğunda F(X) değerinin bir çok bitinde değişiklik olsun(difuzyon)
  • Herhangi biri size F(x) değerini verdiğinde sizin x değerini bulmanız imkansız veya imkansıza yakın olmalı(fonksiyonun tersi olmamalı)

Günümüzde en çok tercih edilen SHA256 fonksiyonunun diagramı aşağıdaki gibidir. SHA256 yapılan işlemlerin bilgisayar tarafından hızlı yapılabilmesi ve bitlere uygulanacağı düşünülerek oluşturulmuştur. Ayrıca, güvenilirliği karmaşıklığa değil, matematiksel açıdan ispatlara dayanılmaktadır.

Blockchain (blok zinciri) birbirine bağlı yanyana sıralanmış bloklardan oluşmaktadır. Herbir blok bir önceki bloğun hash değerini sakladığı için her blok kendi içinde bir önceki bloğu işaret etmektedir. Böylelikle blokların yerleri ile oynamak ya da blokları çıkarmak veya yeni bir blok eklemek imkansızlaşmıştır. Örnek verecek olursak eğer, n. bloğu değiştirdiğinizde n. Bloğun yapısı değiştiği için hash değeri de değişmektedir. Bu nedenle, n+1. Blokta yazan n.bloğun hash değerini değiştirmeniz gerekmektedir. Bu demek oluyor ki, n+1. Blok da değişmelidir. Böyle devam edersek, n. Bloğu değiştirmeye çalışan biri n+1,n+2,…n+k. Blokları da değişmelidir.

Miner nedir ? neden sorumludur ?

Bu zincirin kayıtların tutulma sırası ve değiştirelemez olması açısından ne kadar güvenli olduğunu anladığımızı düşünmekteyim. Peki miner dediğimiz cihazlar ne yapıyor diye sorduğumuzda şöyle cevaplayabiliriz.

Miner’lar blok zincirine yeni bir blok kazandırılması için uğraşan ve bloğun güvenli bir şekilde varlığını sürdürebilmesini sağlayan kişilerdir. Miner sayısı artıp azalabilmesi blokzincirine hiç bir zarar vermemektedir. Fakat, blokzincirinin Dünya üzerinde dağınık yönetilmesi açısından miner’lar olmadan bu sistemi kurmak imkansızdır.

Miner’lar ne ile uğraşır diye sorduğumuzda aklımıza proof of work ve proof of stake diye iki kavram gelmektedir. Ben şimdilik proof of work’den bahsedeceğim. İlgiye göre bir sonraki yazıda bu kısımları sebepleri ile daha detaylı açıklamaya çalışacağım.

Proof of work.

Zincir sahipleri blok zincirine blokların eklenme hızını kontrol etmeleri için bir problem tanımlamak zorundadırlar. Örneğin, bloklarda bulunan nonce değerini değiştirerek öyle bir hash değeri üretmelisin ki ilk 5 biti sıfır olsun. Miner’ların hash fonksiyonun özelliğinden dolayı hash değerinin ilk 5 biti sıfır olan bir bloğu nonce değerini rantsal bir şekilde denemekten başka bir çaresi yoktur. Bu da miner’ların belirli bir süre uğraşması anlamına gelmektedir. Böylelikle, Blockchain (blok zinciri) yöneticisi ilk 5 bit yerine 6 biti sıfır olan bir hash istediğinde yeni bir blok eklenmesi uzamakta 4 biti sıfır olan bir hash değeri eklendiğinde yeni bir blok eklenme süresi kısalmaktadır.

 

Miner sayısı arttıkça daha fazla enerji tüketilmekte ama hala bir blok ekleme süresi sabit kalmaktadır. Bu durum gereksiz enerji tüketimine neden olmaktadır. Bu durum proof of workten uzaklaşmamız gerektiğini göstermektedir. Yerine şuanda proof of stake düşünülmektedir. İlgilenirseniz proof of stake’i öğrenmekle devam edebilirsiniz.

Mining işlemine başlamadan önce tüm chain miner’ın lokaline indirilir ve merkle hash algoritması ile doğrulanır. Merkle hash algoritması, hash fonksiyonunu  Tree yapısında bloklara uygularak büyük bir datayı doğrulayan bir algoritmadır.

 

Blokzinciri nerelerde kullanılmalı veya kullanılmamalı.

  • Günümüzde teknolojinin gelişme hızına baktığımızda insanların sahip olduğu değerleri kaybetmesi de hızla artmıştır. Bu nedenle, insanların bir kişiye ya da kuruma güvenmek yerine kendini bilimsel bir açıdan ispatlamış ve kimseye güvenmenize gerek kalmayacak sistemleri kullanmamız gerekmektedir. En güvenli sistem kimseye güvenmenize gerek bırakmayan sistemdir diyebiliriz.
  • Blok zinciri ile geliştirdiğiniz sistemlerin hızlı cevap almalı gibi bir ihtiyacı olmamalı. 10 ms içinde response bekleyen bir mobil uygulamanın veritabanını bitcoin üzerinden kontrol edemezseniz.
  • Kritik işlemlerin zaman damgası ile beraber güvenli değiştirilemez ve kalıcı kayıt altında tutulmasını sağlayabilirsiniz
    • Kriptografik açıdan güvenli olduğu için işlemi yapan kişinin inkar etmesi imkansızdır
    • Değiştirelemez olduğu için silinmesi ya da sonradan bir şey eklenmesi imkansızdır.
    • Dünya üzerinde herhangi biri tarafından da miner olarak takip edilebilir olduğu için şeffaftır.
    • Tapu işlemleri, Seçimler veya para ( herhangi değerli data) transferi güzel örnekleridir.

 

Peki Bitcoin ?

Bitcoin uluslararası para transferinde 3. Şahışların güvenilir oldukları gerekçesi ile ekstra komisyon almalarını engellemek ve insanların onlara güvenmelerine gerek olmadığını ispatlamak için ortaya çıkmıştır. Bitcoin bilmeyen çoğu insan tarafından belirli bir uzunlukta byte diye tanımlanmaktadır. Maalesef, bu doğru değildir.  Bu soruya doğru cevap vermek için kriptoloji de simetrik ve asimetrik olarak bilinen şifreleme yöntemlerinden asimetrik şifreleme yönteminin ne olduğunu bilmeniz gerekmektedir.

 

Asimetrik şifreleme:

 

İsminden de anlaşılacağı üzerine simetrik şifrelemeler de datayı şifrelerken ve şifreli datadan kendisini elde ederken aynı şifreyi kullanırız. İki istemci arasında şifreli konuşmalarda simetrik şifreleme kullanılırken istemci ile sunucunun aynı şifreye sahip olması gerekmektedir.

 

Fakat, Asimetrik şifrelemede ise datayı şifrelerken kullanılan anahtar ile çözerken kullanılan anahtar farklıdır. Bu anahtarlardan birine açık anahtar, diğerine de gizli anahtar denir. Anahtar ikilisinin sahibi açık anahtarı herkes tarafından ulaşılabilir kılar.

Örnek RSA:

Iki tane asal sayı alalım. p=11 ve q=13. İşlemlerimizi modüler 143  üzerinde yapacağız. Açık anahtarımız 7, gizli anahtarımız 103 olsun. Datamız da 9 olsun. Anahtar sahibi bana datayı kendisinin göndermesi gerektiğini ispatlamak istiyor. Bu nedenler, 9^103mod143 = 48 değerini gönderiyor. 48’i alan kişi benden geldiğine emin olmak için 48^7mod143 = 9 işlemini yapıyor ve 9 alıyor.

 

Bitcoin nedir?

Bitcoin satoshi’nin blok zincirini ilk ortaya attığında çözmeye çalıştığı para transferinde 3. Bir güvenilir kuruma ihtiyaç yoktur problemini çözen algoritmadır. İlk çıkması sebebi ile oldukça popüler fakat eksikleri çok olan blok zincir algoritmasıdır. Bitcoin dediğimiz şey saklanması gereken bir byte topluluğu değildir. Bitcoin üzerinde oluşturduğunuz cüzdanların açık ve gizli anahtarları bulunmaktadır. Bitcoini olan insanlar gizli anahtarlarını cüzdanlarında saklamaktadır. Bu cüzdanda bulunan gizli anahtara karşılık gelen açık anahtar bitcoin zincirinin herhangi bir bloğunda bu kişiye para aktarıldığını göstermek için kullanılmıştır.

 

Örnek verecek olursak,

Osman’ın 100 bitcoin’i olsun. Bu işlem 23. Blokta Osman’ın cüzdanında bulunan gizli anahtarın karşılığındaki açık anahtarla şifrelenmiş şekilde kalıcı olarak durmaktadır. Açık anahtar ile şifrelenmiş işlemi sadece gizli anahtar açtığı için osman kendi cüzdanına ait olduğunu şifreyi açarak ispatlayabilmektedir. Asimetrik anahtar şifreleme yöntemleri Authorization için bu yöntemle kullanılmaktadır. Osman, Ayşe’ye para göndermek istediğinde gizli anahtarı ile Ayşe’nin açık anahtarını ve göndereceği miktarı yazarak şifreleyip miner’lara göndermektedir. Osman’ın açık anahtarı ile şifreyi açıp miner’lar bilginin Osman’dan geldiğine emin olmakla kalmayıp, Ayşe’nin açık anahtarını kullanarak paranın Ayşe’ye gönderildiğini bir sonraki bloğa işliyorlar. Böylelikle artık Ayşe’nin cüzdanındaki gizli anahtar bitcoinin sahibi oluyor.

Blockchain konusunda kendini geliştirmek isteyenlerin ethereum’un bitcoine göre artılarının ne olduğunu öğrenmekle başlamalarını, mümkünse solidity öğrenmelerini ve açık kaynak altcoinlerle çalışmalarını devam etmelerini önerebilirim. Blok zincirinin çalışma şeklini daha net anlamak için adresinden bloklar arasındaki ilişkiyi örnekler üzerinden anlayabilirsiniz.

Bazı terimleri bilinçli olarak ingilizce yazdım. Sebebi, günümüz teknolojisini takip etmek için bu kelimelere yatkın olmamız gerektiğini düşünmekteyim. Umarım rahatsız etmemiştir.

İstenilirse eğer Ethereum ve solidity contract yazma ya da blok zincirine katılan yeni eklentiler hakkında da yazabilirim. Şimdilik Teşekkür ederim.

Faydali linkler:

Bitcoin git adresi:  https://github.com/bitcoin/bitcoin

Ethereum git wiki adresi: https://github.com/ethereum/wiki/wiki oldukça zengindir.

Kriptografi ve Özet(Hash) fonksiyonları: https://www.ibm.com/developerworks/tivoli/tutorials/s-crypto/s-crypto.html

Youtube videosu: https://www.youtube.com/watch?v=lWWd2VNu-cU

 

0

Yorum Yap
0 Yorum yapan