Ana Sayfa Yazı Taş gibi Bitcoin

Taş gibi Bitcoin

PAYLAŞ

Bitcoin, tamamen dijital ve merkezi olmayan ilk para birimi. 

Bitcoin kullanmak kolay: Bitcoin ödemesi yapmak için bilgisayarınıza ya da akıllı telefonunuza Bitcoin Cüzdanı denilen uygulamayı yüklüyorsunuz ve bir kaç yeri tuşlayarak internet üzerinden  diğer Bitcoin kullanıcılarına bitcoin gönderiyorsunuz:

img_0754

Bitcoin almak için ise, istediğiniz kişiye bitcoin adresinizi veriyorsunuz, ya da bir QR kodu oluşturuyorsunuz. Mesela bu adres blokzinciri.org’a ait:

img_4456

Arka planda neler olup bittiğini anlamak biraz daha zor. Bir çok makale okuduğunuz halde bir sürü ayrıntıyı akıl almayabilir. O yüzden bu yazıda olayı herkesin anlayacağı şekilde izah etmeye çalışacağız.

Bu yazıyı Bitcoin ile ilgili bir dizi soruya böleceğiz:

  1. Geçerlilik: Bitcoin gereçekten de para mı?
  2. Merkezi olmayan para: kimsenin yönetmediği bir para nasıl mümkün olur?
  3. Merkezi olmayan darphane: Bitcoin nasıl yaratılır?
  4. Merkezi olmayan işlemler: Bitcoin nasıl transfer edilir?
  5. Merkezi olmayan hesap defterleri: Bitcoin’de işlemlerin kaydı nasıl tutulur?
  6. Daha fazla bilgi kaynağı: nereden daha fazla bilgi bulabilirim

Bunun yanında Bitcoin ile ilgili kavramları programlama dili bilmeyenlerin anlayacağı şekilde izah etmeye çalışacağız. Bu yazıdaki bölümlerin çoğu Bitcoin ile ilgili bazı kolay anlaşılır benzetmelerle başlayacak ve sonra biraz daha teknik ayrıntılara girecektir.

Geçerlilik

bitcoin-accepted-here-2

Bitcoin’in nasıl çalıştığı konusuna girmeden önce, gelin şu yaygın soruyu cevaplamaya çalışalım: nasıl olur da Bitcoin para olarak kabul edilebilir? Hiç bir devlet veya hükümetin desteğini almayan bir avuç bilgisayar programcısı tarafından yaratılmış; tamamen dijital,  yani sadece bilgisayarlarda yaşıyor ve “özünde” bir değeri yok; standart para tanımına bile uymayabilir çünkü sabit bir kıymet saklama aracı değil ve nadiren hesap birimi olarak kullanılıyor.

Bütün bunlara rağmen, Bitcoin hala takas aracı olarak kullanılıyor: ticaret yapan binlerce tüccar ve esnaf gerçek mal ve hizmetler için Bitcoin kabul etmeye razı geliyor. Niçin? Çünkü bu esnaf ve tüccarlar Bitcoin’i etkili bir takas aracı olarak görüyorlar ve ileride diğer esnaf ve tüccarların da bu konuda aynı fikirde olacaklarına inanıyorlar. Bir başka deyişle:

İnsanlar Bitcoin’i  parasal bir değeri olduğu için alıp satmıyorlar ; insanlar Bitcoin sayesinde ticaret yapabildikleri için Bitcoin’in bir değeri var. (heryerde, herzaman, dolandırıcılık olmadan ve çok az masrafla)  Marc Andreessen,  Bitcoin Neden Önemli

 

Merkezi olmayan para (benzetim)

Yaplılar, Güney Pasifik’te bulunan Yap takım adalarında yaşayan bir millet. Bu insanlar eskiden Rai taşları denilen bir çeşit para kullanıyorlarmış. Bu taşlar, orta yerlerinde delikler bulunan, yuvarlak, büyük kireç taşlarından yontularak yapılmış, çapları bazen 3.5 metreyi ve ağırlıkları 4 tonu bulabilen kocaman kütleler!

yap-stone

Böyle büyük ölçüde taşları alıp satmak oldukça zordur: kimse her alış verişte 4 tonluk bir taşı yanında taşımak istemez. Sonuç olarak Yaplılar, ortaya zekice bir fikir çıkarmışlar: mülkiyeti belirlemek için sözel bir anlaşma yapmaya karar vermişler. Alış verişin meydana geldiği her durumda, konuya dahil taraflar, takas edilen taşların miktarını kabilenin geri kalan üyelerine bildirmişler.

Böylelikle taşlar aslında evden eve hiç taşınmamışlar, ama kimin neye sahip olduğu bilgisi hafızalarda tutulmuş ve sonraki nesillere sözlü tarih yoluyla aktarılmışlardır.

img_0759

Bu noktada tarihçilerden özür dilemeliyiz: çünkü Bitcoin’i anlayabilmek için Yap tarihini benzetmeler kullanarak biraz çarpıtacağız.

İlk olarak, hayal edin ki Yap’daki bir kabile, Rai taşının kime ait olduğunu sadece hafıza ve sözel tarih yoluyla takip etmekte zorlanmış olsun. Kabile üyeleri, kimin neye sahip olduğuna dair bir çok tartışma, kavga, gürültü ve patırtıdan sonra yapılacak tüm işlemleri büyük bir deftere (ledger) yazmaya karar vermişler, yani bu defter gerçeğin bir kanıtı olacakmış.

Reis, kabile üyelerinden birini de muhasebeci/sayman (muhasebeciler alınmasın) olarak tayin etmiş. Eğer Ayşe Mehmet’e 10 Kg Rai ödemesi yapmak istiyorsa, Ayşe muhasebecinin evine giderek işlemi bildirecek. Muhasebeci de büyük defteri kontrol edip Ayşe’nin gerçekten bahsettiği 10 kg’lik taş miktarına sahip olup olmadığına bakacak. Eğer Ayşe gerçekten 10 kg Rai taşına sahipse, muhasebeci Ayşe’nin sunduğu o işlemi büyük deftere işleyecek.

 

bitcoin-central-bookkeeper

 

Herşey bir süre iyi gitmiş, fakat zaman geçtikçe ortaya problemler çıkmaya başlamış: muhasebeci işlemleri kaydetmek için ücret talep etmeye başlamış; ticaret bazen tamamen duruyormuş çünkü muhasebeci ya tatilde ya da hasta-istirahatteymiş; reis tarafından çok baskı gören muhasebeci ya çok aşırı ücretler talep eder  ya da belli işlemleri tamamen durdururmuş, özellikle de başka kabilelerle yapılanları; bazen de, bir anlaşmazlık sonrasında, muhasebeci bir kimsenin varlıklarına tamamen el koyarmış. Sonunda muhasebeci toplumdaki en zengin, güçlü ve bilinir kişilerden biri haline gelmiş: onca yolsuzluk, dolandırıcılık ve kayırmacılık dedikodularına rağmen, paranın bütününü yöneten böyle bir kimseyi sorgulamaya kimin cesareti olabilir ki?

Muhasebecinin davranışlarından rahatsız, kabilenin içinden 10 aile paralarını yönetmenin yeni bir yöntemi üzerinde karar kılmışlar. Büyük defterin idare edilmesi için tek bir kişiye güvenilemeyeceğinden dolayı, bu ailelerin radikal bir fikri varmış: her aile kendi defterini tutacakmış!

 

img_0750

 

Mesela, eğer Ayşe Mehmet’e 10 Kg Rai taşı ödemek istiyorsa, o zaman Ayşe köyün merkezine  giderek duyuru yapar ve böylece tüm aileleri bundan haberdar edermiş. Her aile de kendi defterini kontrol eder, Ayşe’nin o miktarda Rai taşına sahip olduğundan emin olur, ve eğer sahipse, o işlemi kendi defterlerine eklerlermiş. Artık her aile kendi defterini tuttuğundan dolayı, hiç bir aile diğerinden üstün değilmiş.

 

 

 Merkezi olmayan para (teknik ayrıntı)

ABD Doları ve Avro gibi tüm modern para birimleri merkezidir: yani, hükümetler, bankalar, ve kredi kartı şirketleri gibi az sayıda kuruluş tarafından yönetilirler. Mesela eğer Ayşe uzaktaki Mehmet’e $10 göndermek isterse, bankasının web sitesine giriş yapar, kimliğinin banka tarafından teyit edilmesini bekler, gönderi bilgilerini bankanın sunucularına iletir, bankanın işlemi sonuçlandırması için bir kaç gün bekler, bu arada banka Ayşe’nin bakiyesini günceller, ve bilgiyi Mehmet’in bankasına gönderir. Kısacası, para Ayşe’nin parası olduğu halde, tüm süreç bankanın koyduğu kurallar doğrultusunda banka tarafından yürütülür:

img_0745-633x400

Bu merkezi uygulamanın tıpkı Yap muhasebecesinde olduğu gibi bazı problemleri vardır: para sizin olduğu halde, az sayıda bir grup kuruluş nedeyse herşeyi yönetir. Herşeyi derken, parayı kimin harcayabileceğini, ne zaman harcayabileceğini, neye harcayabileceğini, nerede harcayabileceğini, hangi ücret ve vergilere tabi olduğunu, vs.

Bitcoin bu kısıtlamaların hiç birinin olmadığı  bir alternatif sunuyor: merkezi olmayan para birimi. Yap benzetmesinde olduğu gibi, Bitcoin dağıtık defter metodunu kullanıyor. Elbette, sadece 10 aile yerine, Bitcoin binlerce bilgisiyardan meydana geliyor. Bu bilgisayarların her biri kendi defterini tutuyor; ve birinin köy meydanında bağırması yerine, bu bilgisayarlar birbirlerine internet üzerinden mesaj göndererek iletişim kuruyorlar.

Mesela, eğer Ayşe Mehmet’e 10 Bitcoin gönderiyor olsaydı, sadece Bitcoin cüzdanı içinde bir kaç tuşa basıyor olurdu, ve bu işlem tüm diğer bitcoin kullanıcılarına yayınlanırdı:

img_0747

 

Bu bilgisayarlar topluluğu Bitcoin ağı olarak bilinir ve isteyen herkes Bitcoin yazılımını bilgisayarına kurarak bu ağa katılabilir, bu durumda küresel büyük bir defter bilgisayarınıza indirilir. Bu, Bitcoin’in geçmişinde yapılmış tüm işlemleri görebilmenizi sağlar! Hatta blockchain.info veya blockexplorer.com gibi sitelerde bunları görebilirsiniz. Bu bankaların size sağladığı mahremiyetten çok farklı bir modeldir, o yüzden daha fazla bilgi için Bitcoin mahremiyeti ve Bitcoin görünmez mi adlı yazıları okuyabilirsiniz.

Bu bilgisayarların her biri – bunlara, Bitcoin yazılımı çalıştırdıklarını belirtmek için “düğümler” diyeceğiz – Ayşe’nin mesajını alır, kendi defterlerini Ayşe 10 bitcoine sahip mi diye emin olmak için kontrol ederler, eğer sahipse, deftere yeni bir giriş yapılır.

 

Merkezi olmayan darphane (benzetim)

 

img_0755

 

Merkezi olmayan bir sistemde parayı yaratacak bir darphane yoktur. O zaman daha fazla Rai taşı sirkülasyona nasıl girer?  Cevabı madencilik!

Yap adalarının kendilerinde kireç  taşları yok, o yüzden köylüler bunlardan bulmak için uzak adalara yelken açarlar. Kireç taşı nadir bulunan ve gelişigüzel yerlerde dağınık bulunan türden bir doğal taş, o yüzden bulmak uzun zaman alabilir ve bu şansa bağlıdır. Eğer Ayşe bir yerden biraz yeni taş çıkartabilirse, evinin önünde bunu teşhir ederek köylülere duyurabilir, böylelikle köylüler Ayşe’nin daha fazla Rai taşına sahip olduğunu kabul ederler. Köylülerin her biri bu işlemi defterlerine, Ayşe’yi taşı alan kişi olacak şekilde işlerler.

 

Merkezi olmayan darphane (teknik)

bitcoin-miner

 

Ya Bitcoinler nasıl üretilirler? Bunun cevabı da aynı, madencilikle !

Fakat Bitcoin madenciliğinde kazma küreğe ihtiyaç yoktur: bu tamamen dijitaldir. Hesaplanması pahalı matematik problemlerini çözen herhangi bir Bitcoin düğümüne ödül olarak sistem Bitcoin verir. Tıpkı taş madenciliğinde olduğu gibi, bu matematik problemlerinin çözümünü bulmak çok uzun süre alabilir, ve bu çözümü hangi düğümün ilk bulduğu şansa bağlıdır. Ama şanslı bir düğüm bir çözüm bulduğu anda bunu Bitcoin ağının geri kalanına yayınlar, ve diğer tüm düğümler defterlerine o şanslı düğümün artık yeni bir Bitcoin kazandığını kaydederler.

Bu çözülmesi gereken problemler kriptografik özet fonksiyonlar  içerirler; ardında yatan matematik bu yazının dışında bir konu olsa da burada kısa bir giriş yapalım.

Bir metin dizisini bir kriptografik özet fonksiyonundan geçirdiğinizde, fonksiyon bu metni başka bir metin dizisine tahmin edilemez bir şekilde çevirir. Bu yeni metin dizisine “digest” (özet) deniyor.

cryptographic-function("Merhaba Millet") = 124610xktj1l32kxjcj24j1

Metin dizisinde yapacağınız en ufak değişiklik, mesela ekleyeceğiniz bir ünlem işareti, elde edeceğiniz özet çıktıyı tamamen değiştirecektir:

cryptographic-function("Merhaba Millet!”) = 444lkxckl15lsck51lk234

Kriptografik özet fonksiyonlarının en önemli özelliği, “tek yönlü” olmalarıdır. Bir M dizisi için, her seferinde aynı  Ö özet çıktısını elde edersiniz; fakat, gelişi güzel herhangi bir Ö özet çıktısı için orijinal M metninin ne olduğunu bulmak imkansızdır. Bir başka deyişle, bir özet fonksiyonu geri götürmenin bir yolu yoktur, yani imkansızdır.

Bitcoin madenciliğinde, SHA-256 kriptografik fonksiyonuna iki parça veri beslenir:

  1. Blok hakkında bilgiler, B
  2. Gelişigüzel bir tahmin, R
sha-256(B, R) = özet

Burada hedef doğru R’yi bulmaktır ki gerekli sayıda öncül sıfırlarla başlayan bir özet elde edilsin:

sha-256(B, R) = 00000000000001234sdfxxc1414…

Kriptografik özet fonksiyonları “tek yönlü” olduğundan dolayı, sıfırlarla başlayan bir özeti hangi  R değerlerinin çıkaracağını bilmenin bir imkanı  yoktur. Yapabileceğiniz tek şey, işe yarayan bir tanesine  denk gelene kadar tekrar tekrar gelişigüzel R değerleri tahmininde bulunmanızdır. SHA-256’nın muhtemel 2256 sonucu olduğundan, gerekli öncül sıfırların sayısı artarken, bir tek tahminin doğru olma olasılığı çok düşük hale dönüşür.

Aslında, problem kasıtlı olarak, çok uzun süre alsın diye böyle dizayn edilmiştir – ve lazım oldukça yeniden ayarlanır ( https://blockchain.info/stats) :  Doğru R değerini bulabilmek için, tek bir bilgisayar, ortalama birkaç yıl boyunca durmaksızın tahminde bulunmak zorundadır. Fakat, Bitcoin ağındaki tüm düğümlerin aynı anda tahminlerde bulunmasıyla, doğru R değerini bulmak için harcanan ortalama süre yaklaşık 10 dakika alır.

Onca CPU vaktinin ve enerjisinin, işe yaramaz hesaplamalar üzerinde harcanması israf olarak görülebilir, fakat ileride de göreceğimiz gibi,  tutarlı/istikrarlı bir tarih cetvelinin kurulması için hesaplamaların pahalı olması zaruri bir esastır.

Bitcoin madenciliğine dair birkaç ilginç not:

  1. Önceden belirlenmiş, sabit bir Bitcoin arzı vardır: her yıl, madencilikle bulunabilecek Bitcoinlerin sayısı yarıya düşecektir, ve arzın tamamı 21 milyonda sonlanacaktır.
  2. Tüm Bitcoinler madencilikle bulunduktan sonra, madencilik işi için verilen ödüller her Bitcoin işlemi için küçük bir ücrete dönüşecektir. Bu ücretler banka ya da kredi kartı masraflarından oldukça daha düşük olacaktır.
  3. Bitcoin madenciliğine katılan düğümlerim bugünkü sayısı, evdeki bilgisayarlarda madencilik yapmanın pek mantıklı ve ekonomik olmadığı anlamına geliyor. Onun yerine tavsiye edilen şey, bir madencilik havuzuna katılmaktır, ya da uzmanlaşmış bir donanım kullanmaktır.
  4. Bitcoin’in sabit arzı bir sorun sayılmaz çünkü 0.00000001 BTC’ye kadar çok ufak küsuratlarda Bitcoin ile ödeme yapabilirsiniz. Bu en küçük birime Satoshi adı veriliyor.

 

Merkezi olmayan işlemler (benzetim)  

img_0760

 

10 ailenin her biri manuel bir defter tutuyor olsun ve bu defterler şu ana kadar meydana gelmiş işlemlerin hepsini listeliyor olsun. Her işlem 3 bölümden oluşacak şekilde kaydediliyor olsun.

  1. Gönderen: para gönderen kişinin adı
  2. Alıcı: parayı alan kişinin adı
  3. Miktar: transfer edilecek Rai taşının Kg ağırlığı

Ayşenin bakiyesini bulmak için, listenin başından başlayarak her işlemi gözden geçirirsiniz, para aldığı işlemleri toplar, para gönderdiği işlemleri çıkarırsınız. Ayşe yeni bir işlem duyurduğu vakit, işlemi kaydetmeden önce, bu bakiye hesaplamasını kullanarak işlemin gerçekleşebilmesi için yeterli paraya sahip olup olmadığından emin olabilirsiniz.

 

Merkezi olmayan işlemler (teknik detaylar)

Yap işlemlerinde üç parça veri bulunuyor: Gönderen, Alan ve Miktar. Bitcoin söz konusu olduğunda Alan ve Gönderen alanları biraz aldatıcıdır: yeni bir işlemi kim duyuruyor diye köy meydanına bakamayız, kullanıcı adlarını ve parolaları tutan merkezi bir sistem yoktur.

Bitcoin, kimlikleri merkezi olmayan bir üslupta yönetmek için Açık anahtarlı şifreleme kullanır. Açık anahtarlı şifrelemenin altında yatan matematik bu yazının konusu dışında, o yüzden bu bölümde Bitcoin’de nasıl uygulandığı konusuna bir giriş yapacağız sadece.

img_0761

 

Bu tip kriptografide matematiksel olarak birbirine bağlantılı iki anahtar bulunur, bunlar sayı ve harflerden oluşan uzun dizilerdir:

  1. Açık anahtar: başkalarıyla rahatlıkla paylaşılabilen, açık, umumi belirleyici bir kimliktir
  2. Özel anahtar: kimseyle paylaşılmaması gereken bir sır, bir paroladır.

Bilgisayarınıza bir Bitcoin cüzdanı kurduğunuzda bu program size otomatik olarak bir açık ve özel anahtar çifti oluşturur. Açık anahtarınızı özgürce paylaşabilirsiniz: aslında, açık anahtar aynı zamanda sizin kimliğiniz ve Bitcoin adresinizdir.

Açık/özel anahtarlar birçok görev için kullanılabilirler, fakat bizim asıl ilgilendiğimiz tarafı  “doğruluğu ispat etme” özelliğidir: yani, mesajın gerçekten beklediğimiz kişiden geldiğini ve yolda hiç bir değişikliğe uğramadığını matematiksel olarak teyit etmek için kullanabiliriz.

Mesaj gönderdiği her defada, Ayşe, mesajın içindekileri özel anahtarla birlikte, bir sign (imza) fonksiyonu aracılığı ile iletebilir:

sign("Merhaba Millet", Alice's private key) = n67n54n6l10xf15

Ayşe’nin elde ettiği, buna dijital imza deniliyor, harflerden ve rakamlardan oluşan ve bütünüyle tanınamaz bir dizidir. Ayşe’nin özel anahtarı olmadan, dizinin ne olması gerektiğini tahmin etmek olanaksızdır. Daha da ötesi, girdi metnini tek bir karakter bile değiştirseniz, bu,  imzayı tahmini hiç mümkün olmayan bir şekilde değiştirecektir. Mesela “Merhaba Millet” dizisine bir ünlem işareti eklediğinizde:

sign("Merhaba Millet!", Alice's private key) = vk34jxl140501025

Bu daha önce yukarıda gördüğümüz kriptografik özet fonksiyonlarına benziyor,  özel ve açık anahtarların arasında bulunan buradaki matematiksel bağ, Mehmet, imzayı teyit etmek için Ayşe’nin açık anahtarını kullanabilir anlamına geliyor:

verify("n67n54n6l10xf15", “Merhaba Millet", Alice's public key) = valid or invalid

Eğer imza “geçerliyse” (valid), o zaman Mehmet mesajı gönderenin Ayşe olduğuna ve mesajın Ayşe’nin oluşturduğu mesajla kesinlikle aynı olduğuna itimat edebilir.

Şimdi, tipik bir Bitcoin işlemine göz atabilecek kadar bilgiye sahibiz. Mesela, eğer Ayşe Mehmet’e 10 Bitcoin gönderiyorsa, mesaj şöyle bir şey olurdu:

Signature (imza)

   mn546yhg (Ayşe’nin özel anahtarıyla imzalanmış)

Inputs (girdiler)

   nhn3891a (Ayşe’nin 7 BTC aldığı işlem)
   vc4232v32 (Ayşe’nin 3 BTC aldığı işlem)

Outputs (çıktılar)

   Alan: 60sdfs951sdfxo66 (Mehmet’in açık anahtarı)
   Miktar: 10 Bitcoin
 

Bu mesaj 3 kısımdan oluşuyor:

  1. İmza: Ayşe mesajına dijital imzasını ekliyor ki diğer Bitcoin düğümleri mesajın gerçekten ondan geldiğini teyit edebilsinler.
  2. Girdiler: Bu, hali hazırda zaten defterde bulunan, Ayşenin Bitcoin alıcısı olduğu işlemlere ait imzaların bir listesi. Bir diğer deyişle, bunlar Ayşe’nin bu işlemde kullandığı fonlar, toplamda 10 Bitcoin
  3. Çıktılar: Bu, girdiler içindeki fonların nasıl dağıtılması gerektiğini gösteren bir listedir. Hesaplamayı basit tutmak için, girdilerin içindeki fonların tümünü tekrar dağıtmanız gerekmektedir. Çıktılar kısmına kendiniz dahil birden fazla sayıda alıcı ilave edebilirsiniz. Bu durumda, Ayşe tek bir alıcıya 10 Bitcoin gönderiyor olur, yani açık anahtarla kendini kimlikleyen kişiye, yani Mehmet’e.

Her işlem “girdiler” kısmı içerisinde bir önceki işlemi kaynak olarak gösterdiği için,  işlemler grafiğini takip ederek ta Bitcoin’in başlangıcına kadar gitmek mümkün. İşte bu, Bitcoinlerin sahipliğini kontrol etmek için kullanılan mekanizmadır!

Örnek olarak, bir kullanıcının bakiyesini hesaplamak için, Yap defterine çok benzer bir yöntem kullanırız: her işlemi inceleyerek kullanıcının alıcı olduğu işlemleri toplar, gönderici olduklarını çıkarırız. Ayşe’nin Mehmet’e yaptığı transfer gibi yeni bir mesajın geçerliliğini kontrol etmek için de, girdilerin, Ayşe’nin alıcı olduğu ve   zaten defterde geçerli olarak görünen işlemleri kaynak olarak gösterip göstermediğine bakarız.

 

 

Merkezi olmayan defterler (benzetim)

Zaman geçtikçe, dağıtık defter sistemini kullanan ailelerin sayıları 10’dan 30’a çıkmış. Yeni ailelerin evleri etrafa oldukça dağılmış, artık bir köy meydanı yerine şimdi 3 köy meydanı oluşmuş, her 10 eve bir meydan. O yüzden, Ayşe Mehmet’e 10 Kg Rai taşı transfer etmek istediği zaman, işlemi 3 kez duyurması gerekmiş.

 

img_0763

Sonunda köylüler bunun bir probleme yol açtığını fark etmişler: işlemlerin sırası tüm defterler üzerinde tutarlı değilmiş! Tabi bu, sıkıntılara yol açabilir. Mesela, Ayşe Mehmet’e 10 Kg Rai transfer etmek istiyor. Ayşe #1 numaralı köy meydanında bunu duyuruyor ve diğer köylerin meydanlarında duyuru yapmak için yola çıkıyor. Köy meydanının yakınında yaşayan Mehmet Ayşe’nin duyurusundan haberdar oluyor ve şimdi biraz paraya sahip olacağı için heyecanla kendisine ait 10 Kg Rai taşın Ahmet’e transfer işlemini başlatıyor. Mehmet başlattığı işlemi #1 numaralı köy meydanında duyuruyor, bu durumda ailelerin tümü şu işlem sırasını takip ediyor:

  1. Ayşe —> Mehmet,  10 Kg Rai
  2. Mehmet —> Ahmet, 10 Kg Rai

Mehmet hemen #2 numaralı köyün meydanında duyuru yapmak üzere yola çıkıyor. O sırada, Ayşe’nin #3 numaralı köy meydanında duyuru yaptığı fakat henüz #2 numaralı köye ulaşmadığı ortaya çıkıyor. Sonuç olarak #2 numaralı köyün ailelerinde şu işlem sırası mevcut oluyor:

  1. Mehmet —> Ahmet, 10 Kg Rai
  2. Ayşe —> Mehmet, 10 Kg Rai

Farklı köylerdeki defterler eşzamanlı değiller! Dahası, Ayşe’nin transfer işleminden önce Mehmet’te para olmadığından, #2 numaralı köyün aileleri Mehmet’in işlemini red etmişler. Halbuki #1 numaralı köydeki aileler kabul etmişlerdi!

Tüm defterlerdeki işlemleri tutarlı bir şekilde sıralandırmanın bir yolunu bulmalıyız, bunu da merkezi olmayan bir şekilde başarmalıyız. Mesela, tek bir ailenin sıralamayı belirlemesine müsaade edilemez, çünkü o aile bu gücü kendi yararına kullanabilir (örnek. bir rakip ailenin işlemini sürekli erteleyebilirler).  Bu zor bir problem, fakat köylüler yine zeki bir çözüm bulmuşlar: rastgele şans bu işi çözer!

Fikir şu: yeni bir işlem geldiğinde, ilk iş bu işlemi “teyit edilmemiş” işlemler listesine eklemek olacaktır. Örnek olarak, Ayşe, Mehmet’e yaptığı 10 Kg Rai transferini duyurduğunda, defter ve teyit-edilmemişler listeleri şöyle görünür:

 

bitcoin-yap-ledger

Bir ailenin madencilikle yeni Rai taşı çıkardığı vakit, tüm ailelerin bu yeni taşı defterlerine kabul etmeleri için, yeni taşı bulan bu aile teyit edilmemiş işlemler listesinden bir işlemi alıp asıl büyük deftere taşımak zorundadır.

Bu mekanizma aynı anda birçok amaca hizmet ediyor:

  1. Kireç taşı nadir ve rastgele dağınık bulunduğundan, bir sonraki işlemi hangi ailenin teyit edeceği şansa bağlıdır, o yüzden hiç bir aile işlem sırasını kendi yararına göre ayarlayamaz.
  2. Şimdi her aileyi defter tutma sürecine katılmak için teşvik edecek bir faktör vardır: bu, madencilikle buldukları/çıkarttıkları taşların sirkülasyona girmesi için müsade alınmasının tek yoludur!
  3. Yeni kireç taşının rastgele dağınık halde bulunması ve çıkartılması çok uzun zaman aldığından, iki ailenin aynı taşı bulma ihtimalleri sıfırdır*. Bu bize, işlemlerin tutarlı bir sıralamasını sağlar: yukarıdaki durumda, ya köy meydanlarının hepsi  Mehmet’in Ahmet’e transferini kabul ederler, veya tümü bunu red ederler.

(* Dürüst olmak gerekirse, #3. nokta tamamen kesinlik kazanmış değil: aynı anda gerçekleşmesi çok nadir fakat yine de olabilir. Ne yazıkki bu durumu basit bir benzetme ile açıklayamayacağız çünkü Bitcoin in bu nadir rastlantıyı çözme üslubu farklı bir matematik içeriyor. Buna rağmen, asıl vurgulanmak istenen hala geçerli: rastgele, tahmin edilemeyen süreç demek, hiçbir aile tek seferde birden fazla işlemin sırasını belirleyemeyecek  demek oluyor.)

 

Merkezi olmayan defterler (teknik ayrıntılar)

Yap çok büyüdüğünde yeni işlemleri anında deftere kaydetme stratejisi işe yaramadı;  Bitcoin çok çok daha fazla büyük olduğu için (binlerce düğüm, saniyede birçok işlem), bu strateji Bitcoin için kesinlikle işe yaramaz. O halde Bitcoin, dağınık defterler arasında tutarlı bir  tarih cetvelini nasıl tesis eder?

Öyle oluyorki bu, dağıtık sistemler araştırmalarında sıkça rastlanan, Bizans Generalleri Problemi adı verilen  yaygın bir problem. Aşağıda göreceğimiz gibi bu probleme ilk pratik çözümü sunan Bitcoin’dir.

Bitcoin’deki deftere blok zinciri deniliyor. Bir blok zincirinin neye benzediği hakkında bir kabataslak:

img_0758

Blok zinciri bir dizi bloklardan oluşur (yukarıda 3 blok gösterilmiştir), bu blokların içinde şu bilgiler yer alır :

  1. İşlemler : kullanıcılar arasında gönderilen işlemler ve mesajlar.
  2. İş ispatı : bitcoin madenciliğinden gelen özet.
  3. Bir önceki referans/kaynak : bir önceki bloğun özetinin kaynak olarak gösterilmesi

Her bloğun içinde bir önceki bloğun kaynak olarak gösterildiğine dikkatinizi çekeriz: Bitcoin ağındaki  tarih cetvelini belirleyen işte bu referanslar zinciridir. Tek bir blok içerisindeki işlemler “aynı anda” meydana gelmişlerdir (aralarında bağımlılık olmamalıdır); bir önceki bloğun içindeki işlemler daha önce meydana gelmişlerdir. Bu, Yap defterinden farklıdır, Yap defterindeki sıralama işlemlerin deftere yazılış sıralamasıdır.

“Önceki referansları” bir bloktan diğerine takip edebilirsiniz, geriye, ta genesis bloğu adı verilen ilk bloğa kadar. Genesis bloğu, Bitcoin’in yaratıldığı ilk zamanki çekirdek verilerin bir parçasıdır; peki tüm bilgisayarlar üzerinde diğer tüm bloklar tutarlı bir sırayla nasıl ilave edilir? Tam Yap benzetmesinde olduğu gibi, bir Bitcoin düğümüne yeni bir mesaj geldiğinde, bu ilk olarak “teyit edilmemişler” kovasına/havuzuna düşer:

img_0757

 

Bitcoin ağındaki herhangi bir düğüm bir blok içerisine birçok teyit-edilmemiş işlem koyar ve bunu zincir için önerilen bir sonraki blok olarak ağın geri kalanına gönderir/yayar. Burada dikkati etmemiz gereken husus, önerilen blok içinde “iş ispatı” bulunmalıdır, bu, kriptografik özet fonksiyonu içeren ve hesaplanması pahalı olan matematik probleminin yanıtıdır. Tanıdık gibi geldi mi? Evet, bu Bitcoin madenciliğidir.

Tıpkı yeni Rai taşlarını bulduklarında/çıkardıklarında Yap ailelerinin bir sonraki işlemi önerdikleri gibi, madencilikle yeni Bitcoin bulduklarında yeni bloklar önerenler Bitcoin madencileridir. Kurallar şunlar: birçok teyit-edilmemiş işlemlerden (T) tüm metni al, artı defter (D) deki en yakın geçmiş bloğun özeti, artı rastgele tahmin (R), ve aşağıdaki SHA-256 hesaplamasını yap:

sha-256(T, D, R) = özet

Madenciler, gerekli sayıda öncül sıfırlara sahip bir özet bulana kadar farklı R değerleri tahmininde bulunmaya devam ederler. İlk bulan madenci Bitcoin kazanır: bu ödülü almak için madenci,  “iş ispatı” olarak, içinde özet bulunan bloğu tüm diğer Bitcoin düğümlerine göndermek/yaymak zorundadır. Yeni bloğun geçerli olduğunu varsaydığımızda, bu, blok zincirinin bir parçası haline gelir:

 

img_0756

Yukarıdaki örnekte, 54. blok artık blok zincirinin bir parçasıdır, yani, Bitcoin tarih cetvelinin bir parçası. Ve Ayşe’ninki de dahil olmak üzere içerisindeki tüm işlemler “teyit edilmiş” sayılırlar.

Ya birden fazla sayıda düğüm aynı anda bir iş ispatıyla çıkagelirse? Bu nadir bir olaydır, fakat meydana gelirse, geçici süreliğine ağ, blok zinciri içinde birden fazla muhtemel kola sahip olur:

 

bitcoin-block-chain-fork

Bunun çözümü basit: Bitcoin düğümleri her zaman mevcut olan en uzun zinciri tercih ederler.

Yukarıdaki örnekte, ağın bir bölümü, kaynağı 56 olan yeni bloğun madenciliği ile uğraşırken, diğerleri de bir önceki kaynağı 57 olan bloğun madenciliğine devam eder. Er veya geç biri bu kollardan birinde iş ispatını tamamlayarak onu en uzun olanı haline getirir. Mesela, eğer bitirilmesi gereken iş ispatı hesaplamasının ilki 57. bloğun bulunduğu kolda ise, ağ bu kola geçer, ve 56. bloğun içerisindeki işlemler tekrar “teyit-edilmemişler” kovası/havuzu içine düşer:

 

bitcoin-block-chain-dropped

Elbette şu da olabilir:  her biri bir kolda  bulunan iki blok aynı anda da keşfedilebilir, ama yine, a) bunun olma olasılığı daha da düşüktür, ve b) bu, tekrar başka bir blok keşfedilinceye kadar blok zincirinin sadece biraz daha uzun süreliğine sapması anlamına gelir. Nihayetinde, bir kol daha uzun hale gelir ve tüm ağ bu kol üzerinde yoğunlaşır.

Düğümler her zaman en uzun kolu kabul ediyorsa, bir saldırgan birçok sahte işlemle kendi blok zincirini oluşturup, en uzun olduğu sürece, tüm ağı bu kola yönlendiremez mi? Mesela, eğer ağ hala 57. ve 58. bloklar üzerinde çalışırken, Ali  59,60 ve 61.ci blokları üretmeyi başarsa, o zaman Ali’ın sahte blokları kabul edilirler ve diğer tümünden vazgeçilir:

 

bitcoin-block-chain-attacker

Bu türden saldırıların başarılı olma ihtimalleri çok düşüktür, çünkü bu durumda Ali o blokları üretmek için tüm Bitcoin ağına karşı yarışmak zorundadır. Zaten o yüzden iş ispatının hesaplanması çok pahalı olacak şekilde dizayn edilmiştir. Bırakın 3 taneyi sadece 1 blok için bile Ali’nin elinde Bitcoin ağındaki tüm düğümlerin toplamından daha güçlü bir hesaplama gücü bulunması gerekmektedir.

Zaman geçtikçe bir saldırganın başarılı olma ihtimali daha da düşer. Mesela, eğer 51. bloğun içerisindeki bir işlemi değiştirmek isteseniz, o blok için iş ispatını tekrar hesaplamanız gerekecektir; çünkü 52. blok için yapılmış iş ispatı hesaplamasının içerisinde 51. bloğun da iş ispatı bulunur, o zaman 52. bloğun da iş ispatını tekrar hesaplamanız gerekir; sonra 53; bu arada, siz başladığınızdan beri 54. ve 55. bloğu ilave etmiş olan ağın geri kalanıyla yarışıyor hale gelirsiniz. Böylece sizin zinciriniz hala en uzunu olamaz!

Buradan çıkan sonuç şudur : eski bloklar, yani zincirde geriye doğru bloklar, yeni bloklardan daha güvenlidir.

img_0765

Aslına bakarsanız, eğer Mehmet ticaretle uğraşıyorsa, bir işlemi teyit edilmiş saymak için kaç blok geçmiş olmasına karar vererek ne kadar risk alacağına karar verebilir. Çok küçük bir işlemse, tek bir blok (~ 10 dakika) yeterli olabilir; eğer büyük bir işlemse, 6 blok (~ 1 saat) kadar beklemek daha uygun olabilir. Ticaretle uğraşan biri için, 1 saat bekleyerek dolandırıcılıktan sakınmak, bazen bir ay bile bekleten kredi kartı geri ödemelerinden daha iyi sayılabilir. Önemli bir uyarı: Bitcoin’in dizaynı güvenlik açısından sağlam görünse bile kullanıcı hatalarından kaynaklı dolandırıcılıklar karşısında zayıf kalabilir, tıpkı diğer sistemler gibi. Bitcoin’in farkı, merkezi olmayan bir sistemdir: bir şey ters gittiğinde yardım isteyebileceğiniz biri yoktur.

Mesela, kaza ile yanlış adrese Bitcoin gönderirseniz, o parayı geri alabilmenin bir yolu yoktur. Eğer phishing saldırısına kurban giderseniz, bunu bildirebileceğiniz bir departman veya otorite yoktur. Eğer özel anahtarınızı kaybederseniz (örnek. hard disk bozulması), bağlantılı Bitcoinlere erişiminizi kaybedersiniz, ve bu konuda size yardımcı olabilecek kimse yoktur, paranız geri gelmez. Aslına bakarsanız, eğer özel anahtarınızı kaybederseniz, o Bitcoinlere artık Bitcoin ağında erişebilecek kimse yoktur, sirkülasyonda sonsuza kadar çıkmış olurlar.

 

Kaynak/Credit:

Yazının orijinali, Bitcoin by analogy  tarihinde Yevgeniy Brikman tarafından yayınlanmıştır