İçeriğe geç
34:20

Bitcoin Hangi Problemi Nasıl Çözüyor? Bölüm 2

34:20 YouTube'da aç

Bitcoin, ilk bölümde ele aldığımız dağıtık defter problemlerini SHA-256 hash fonksiyonu, özel ve genel anahtarlar, hash'lerle birbirine bağlanan bloklar ve iş ispatı (proof of work) ile pratikte çözer. Bu sayede geçmiş değiştirilemez ve sibil atağı ekonomik olarak anlamsız hale gelir. Madencilerin kazancı ise altın madenciliğiyle aynı mantığa dayanır.

Önceki bölümün kısa tekrarı

Serinin ilk bölümündeki temel problem şuydu: Merkezi bir banka sunucusu ya da tek bir kayıt defteri olmadan, herkesin kendi defterini tuttuğu ama bütün defterlerin birbiriyle senkron olduğu bir sistem nasıl kurulabilir? Biri "Ali'ye 100 lira gönderdim" diye kendi defterine yazabilir; ancak bu kayıt diğerlerinin defterinde yoksa kabul edilmez ve kimse olmayan parayı harcayamaz.

İlk bölümde ele aldığımız teorik engeller şunlardı:

  • İki general problemi: Mesajın ulaşıp ulaşmadığından hiçbir zaman kesin emin olunamaz; bu tür sistemler kesin değil olasılıksal çalışır.
  • Bizans generalleri problemi: Katılımcıların üçte biri hain olduğunda güven tesis edilemez.
  • FLP imkânsızlığı: Dağıtık sistemler yüzde yüz deterministik olamaz, ancak çok yüksek bir olasılıkla doğru çalışabilir.
  • Sibil atağı: Sisteme giriş ucuzsa bir kişi çok sayıda makineyle sistemin yarısını ele geçirip sahte defteri herkese kabul ettirebilir.

Şimdi Bitcoin'in bu problemleri hangi teknolojilerle pratikte kullanılabilir hale getirdiğine bakalım.

Hash fonksiyonu ve SHA-256

İlk kavram hash, yani kriptografi. Generallerin ulak aracılığıyla gönderdiği mesaj yolda değiştirilirse bunu nasıl anlayacağız? Roma'daki Sezar şifresi gibi yöntemler de bu ihtiyaçtan doğmuştu; mesajdaki en küçük değişikliği tespit edecek bir mekanizmaya ihtiyacımız var.

Hash fonksiyonu herhangi bir dijital girdiyi alır: bir harf, bir PDF, bir roman, 10 GB'lık bir video ya da Bitcoin'deki bir blok. Bitcoin'de kullanılan SHA-256 fonksiyonu, girdinin boyutu ne olursa olsun her zaman 64 karakterlik bir çıktı, yani bir "imza" üretir. Olası imza sayısı neredeyse evrendeki atom sayısı kadar olduğundan, iki farklı girdinin aynı imzayı üretmesi matematiksel olarak imkânsıza yakındır.

Bir hash aracıyla deneme yaptığımızda "A" ile "B" ya da "A1" ile "A2" girdilerinin bambaşka çıktılar verdiğini görürüz. Bu fonksiyonun iki kritik özelliği vardır:

  1. Girdiden çıktıyı hesaplamak çok kolaydır; alıcı mesajı fonksiyona sokup gelen imzayla karşılaştırarak değişiklik olup olmadığını hemen anlar.
  2. Çıktıdan geriye, yani orijinal girdiye gitmek imkânsıza yakındır.

Bloklar ve zincir: geçmiş neden değiştirilemiyor?

Blok, herkesin tuttuğu defterin bir yaprağıdır. Her yaprağa sınırlı sayıda kayıt (örneğin "Ali'den Veli'ye 1 Bitcoin" ve tarih) yazılabilir ve işlemler sürdükçe yeni yapraklar eklenir. Her yeni bloğun içine bir önceki bloğun hash'i yazılır, ardından bu yeni bloğun hash'i alınır ve bir sonrakine aktarılır. Böylece bloklar kopmaz bir zincir oluşturur.

Bunun önemini bir hain örneğiyle görelim: Biri geçmiş sayfalarda yalnızca kendi gönderdiği bir satırı silip "doğru defter budur" diye yaymaya çalışırsa, en küçük değişiklik bile son hash'i tamamen değiştirir. Milyonlarca sayfayı tek tek kontrol etmeye gerek kalmaz; düğümlerin yalnızca 64 karakterlik son hash'i karşılaştırması yeterlidir.

Milyonlarca satırlık defterdeki bir harfçik değiştirseniz bambaşka bir hash geleceği için bu değişmiş diyebiliyorsunuz.

Özel ve genel anahtarlar

İkinci mekanizma kriptografik anahtar çiftidir. Herkesin yalnızca kendisinde bulunan gizli bir özel anahtarı ve tüm dünyaya ilan ettiği bir genel anahtarı vardır. Ali mesajını kendi özel anahtarıyla şifreleyip gönderir; alıcı, Ali'nin genel anahtarıyla mesajı açar ve bozulmadığını görür. Araya giren biri mesajı değiştirirse, Ali'nin özel anahtarına sahip olmadığı için genel anahtarla açıldığında anlamsız bir sonuç çıkar.

Böylece hem mesajın kimden geldiği hem de değişmediği kesin olarak bilinir. Bu kesinlik de aslında olasılıksaldır; ama bugüne kadar trilyonlarca kullanımda iki farklı şeyin hash'i aynı çıkmamıştır ve Bitcoin'de yıllardır sorun yaşanmamıştır.

Sibil atağına çözüm: iş ispatı

Satoshi Nakamoto'nun sibil atağına bulduğu çözüm, "bir kişi bir oy" yerine "bir CPU iş gücü bir oy" ilkesidir. Sistem için makinenin sayısı değil, harcanan işlem gücü önemlidir. Saldırganın oy oranını artırabilmesi için tüm ağın toplam işlem gücünden fazlasını, yani yüzde 51'ini sağlaması gerekir; bu da devasa bir elektrik maliyeti demektir. Buna proof of work (iş ispatı) denir.

Madencilerin çözdüğü problem şudur: Yeni bir bloğun zincire eklenebilmesi için hash çıktısının ilk dört karakterinin sıfır olması gerekir (basitleştirilmiş bir örnekle). Madenci blok içeriğine rastgele değerler ekleyerek saniyede milyonlarca deneme yapar. Süreç şansa dayalıdır: 100 makinesi olan biri, evindeki tek bilgisayarla deneyen birine kaybedebilir.

Hileli bir bloğu kabul ettirmek isteyen saldırgan hem büyük bir elektrik harcamak zorundadır, hem de rastgelelik yüzünden yine de kazanamayabilir. Üstelik özel anahtar sistemi sayesinde yalnızca kendi işlemleriyle oynayabilir, başkasının Bitcoin'ini değiştiremez. Bu yüzden saldırı, oyun teorisi açısından da pratikte de fizibil değildir. Bitcoin böylece hash ile mesaj güvenliğini sağlamış, Bizans problemindeki üçte bir hain sınırını yüzde 51'e çıkarmış ve sibil atağını çözmüş olur.

Madenciler nasıl kazanıyor?

Madenciler blokları bulup birbirleriyle haberleşerek zincirin güvenliğini sağlar. İki gelir kaynakları vardır:

  • Blok ödülü: Koşulu sağlayan hash'i ilk bulan madenci yeni yaratılan Bitcoin'i kazanır.
  • İşlem ücreti (fee): Banka komisyonuna benzer ama tamamen gönüllüdür. Bir blok yaklaşık 10 dakikada (8-12 dakika aralığında ayarlanmış zorlukla) bulunur ve yaprak başına kayıt sayısı sınırlıdır. 100 kişi beklerken 10 kayıtlık yapraklarla sıra 100 dakika sürebilir; araba ya da ev satan biri işleminin hemen resmileşmesi için örneğin 0,005 BTC bahşiş verir ve madenciler en çok ücret verenleri ilk bloğa yazar.

Altın madenciliği benzetmesi ve kapanış

Madencinin "havadan para kazandığı" itirazına altın benzetmesiyle cevap verebiliriz. Altın madeninde kepçe, dizel, su ve işçilik için örneğin 1 milyon dolar harcanır, karşılığında 1,4 milyon dolarlık altın çıkar. Bitcoin'de de aynı şekilde doğalgaz, kömür ya da nükleerle üretilen 1 milyon dolarlık elektrik harcanır ve sistem karşılığında ödül verir. Altının dünyadaki miktarı sınırlı ve yıllık arzı yaklaşık yüzde 2-3 artarken, Bitcoin de 21 milyon adetle sınırlıdır ve yarılanma (halving) mekanizmasıyla belirli oranlarda piyasaya çıkar. Fark yalnızca birinin elle tutulması, diğerinin ekranda görülmesidir; arkadaki emek ve zaman aynıdır.

Ethereum ise sibil atağını farklı bir mantıkla, yatırılan teminata göre oy hakkı vererek çözer; bu konuyu başka bir bölümde ele alacağız.