Bitcoin nasıl çalışır?

Bitcoin, 2009 yılında efsanevi ve esrarengiz Satoshi Nakamoto tarafından ortaya atılan, blockchain teknolojisini alt yapı olarak kullanan ve kişiden kişiye anti merkezcil olarak çalışan bir dijital para birimi konseptidir. Bu konseptin açıklandığı ve Nakamoto tarafından yazılmış olan Whitepaper, bitcoini ve genel olarak kripto para birimlerini anlamak isteyenlerin okuması gereken ilk metindir. Bu wihtepaper sadece bitcoini konsept olarak anlatmakla kalmıyor, bizans hata tolerans sisteminin merkezcil olmayan bir ortamda nasıl çalışabileceğine de açıklık getiriyor.

Bitcoin ile ilgilenen kişinin öncelikle, bitcoin konseptinin gerçek hayata geçebilmesinin altında yatan en büyük etkenin blockchain teknolojisi olduğunu bilmesi ve bu teknolojinin nasıl çalıştığını anlayabilmesi gerekir.

Blockchain nedir?

Blockchain, her birinin içinde veri değerleri bulunan bloklardan oluşan ve herhangi bir merkezi otorite tarafından gözetilmeyen veya yönetilmeyen bir zincirdir. Bu bilgi zincirleri kriptografik olarak güvenliği sağlanmış ve merkezcil olmayan yapıları sayesinde de susturulamayan ağlardır. Blockchain temel olarak iki veri yapısı kullanır: Pointers(işaretçiler) ve Linked Lists(Bağlantılı Listeler)

Pointers (İşaretçiler):

İşaretçiler, içerisinde başka bir değişkenin nerede olduğunu belirten değişkenlerdir. Normal şartlar altında programlamada değişkenler veri barındırır. (int a = 10 örneğinde bir tam sayı değişkeni olan a’nın değeri 10 dur.) işaretçiler ise, bir değeri veri olarak tutmak yerine bu veriyi tutan değişkenin yerini işaret ederler.

Linked Lists ( Bağlantılı Listeler):

Bağlantılı listeler, veri yapılarında en önemli birimlerden biridir ve kabaca şu şekilde görünürler.

Her birinin belirli bir veri içerdiği ve bir sonraki bloğa işaretçi vasıtası ile bağlandığı bir bloklar dizisi. İşaretçi değişkeni kendinden bir sonraki düğüm noktasının(node) adresini içerir ve bu şekilde bağlantı sağlar. Son düğüm noktasında gördüğümüz gibi, son işaretçi herhangi bir veri içermez.

Burada önemi olan nokta her bir işaretçi kendisinden sonra gelecek bloğun adresini içerir. Peki, ilk bloğun işaretçisi nerede? İlk blok, genesis blok (başlangıç, yaradılış bloğu) olarak adlandırılır ve işaretçisi sistemin içerisindedir.

Hash işaretçisi, içerisinde kendinden önce gelen bloğun hash değerini barındıran işaretçidir.

Hash, herhangi bir uzunlukta verinin alınıp belirli bir fonksiyon ile verinin içeriği ne olursa olsun hep aynı uzunlukta bir sonuç çıkmasını sağlayan işlemdir. Bitcoin konu olduğunda, yapılan transfer işlemi veri olarak alınır SHA-256 algoritması ile karıştırılarak sabit uzunlukta bir sonuç çıkartılır. Girilen verinin uzunluğu ne olursa olsun SHA-256 algoritması ile hep 256 bit uzunlukta bir sonuç çıkar.

Blockchain en basit hali ile aşağıda göründüğü gibi bağlantılı bir listedir.

Blockchain, her bloğun içerisinde bir veri ve kendinden önce gelen bloğa işaret eden bir hash işaretçisi barındıran bir bağlantılı listedir. Peki, hash işaretçisi nedir? Hash işaretçiler normal işaretçilere çok benzerler ancak sadece önceki bloğun adres bilgisini barındırmak yerine, önceki bloğun içindeki verinin hash sonucunu da barındırırlar. Bu küçük ayar farkı blockchain teknolojisini bu kadar güvenli kılan noktadır.

Bir an, bir saldırganın blok 3’e saldırmak ve içerisindeki veriyi değiştirmek istediğini düşünelim. Hash fonksiyonu sebebi ile, veri içerisindeki en ufak değişiklik sonuca inanılmaz büyük bir fark olarak yansıyacaktır. Blok 3’teki veride yapılacak en küçük değişiklik blok 2’de depolanan hash sonucunu değiştirecek, blok 2’deki değişiklik blok 1’deki hash sonucunu etkileyecek ve böylece bütün zincirin değişmesi gerekecek ki bu imkânsız. İşte bu yöntem blockchainleri susturulamaz yapıyor.

Madencilik Nedir?

Madencilik yeni bitcoinleri yaratılması için gereken işlemdir. Bitcoin madenciliği Proof of Work-POW (İş ispatı) prensibi ile çalışır. Basitçe, bir problemi çözmek çok zor olmalıdır ancak bir kere çözdüğünüzde çözümünüzün doğru olduğu çok kolay ispat edilebilmelidir.

Bitcoinin konsept olarak POW kullanımına gelmeden önce neden kripto paraların böyle bir sisteme ihtiyacı olduğunu anlamaya çalışalım.

Bitcoinden öncede farklı dijital para birimleri yaratılmıştı ancak dijital ortamda antimerkezcil ve kişiden kişiye bir ağ oluşturuluyor ise en büyük sorun Bizans Generalleri Sorunu olarak adlandırılan mantık sorunudur. Nakamoto bitcoinde bu sorunu POW ile aşmayı başardığı için bitcoin hayatına başlayabildi ve güçlü bir şekilde de devam ediyor.

Bizans Generalleri Problemi

Akademik çalışmalarda da sık sık yer alan Bizans Generalleri Problemi'ni açıklayarak devam edelim. Düşman şehrine saldırmayı planlayan Bizans generallerinin iki sorunu var:

  • Generaller birbirine çok uzak konumlanmış durumdalar, bu sebeple kuşatmayı merkezi bir otorite tarafından yönetmek imkânsız.
  • Düşmanın da güçlü bir ordusu var bu sebeple saldırının generaller tarafından aynı anda yapılması gerekiyor ki başarı sağlanabilsin.

Kuşatma orduları şehrin etrafını sarmışken, orduların her biri sağındaki ordudan gelen emir mesajını solundaki orduya iletiyor ve bu şekilde iletişim sağlanıyor. Ancak burada sorun, çarşamba günü saldırıyoruz diye bir emir geldiğinde, bir ordu hazır olmayıp, hayır cuma günü saldıralım diye geri mesaj yollayabilir. Ya da mesajı taşıyan asker düşman tarafından ele geçirilebilir veya taşıdığı mesajın içeriği değiştirilebilir. Böyle güvensiz bir ortamda her türlü saldırı tam koordinasyon sağlanamamış ise başarısız olacaktır.

Aynı mantık sorunu bitcoin gibi kripto paraların altyapısı olan blockchain ağları içinde geçerli. Bunlar inanılmaz büyük ağlar ve ağda olan her bir kişiye nasıl güvenebiliriz ki? Birine 4 ether göndermek istiyor olabiliriz ama kötü amaçlı birinin bu meblağı 40 ether yapmayacağına nasıl güveneceğiz?

Satoshi Nakamoto bu mantık sorununu iş ispatı protokolünü ortaya atarak aşmayı başardı. Nasıl işlediğine bakalım:

Kuşatmadaki ordu, solunda bulunan orduya “pazartesi saldırıyoruz” mesajını iletmek istediğinde şu adımları takip etmesi gerekiyor;

  • Öncelikle orijinal mesaja “nonce” ismi verilen rastgele ama sadece tek seferlik üretilen bir değer atanır. Nonce, 16’lı sayı sisteminde herhangi bir değer olabilir.
  • Daha sonra nonce değeri atanmış mesaj metni hash fonksiyonundan geçerek bir sonuç elde edilir. Hayali olarak düşündüğümüz saldırıda, farz edelim ki komutanlar, hash fonksiyonu sonucu ilk 5 basamağı sıfır olan sonuçları birbirleri ile güvenle paylaşmayı seçsin.
  • Hash fonksiyonunun sonucu istenilenleri veriyor ise mesajı bir sonraki generale iletiyorlar. Eğer sonuçlar istenilenler ile uyuşmuyor ise atanan nonce değerini rastgele değiştirerek ilk beş basamağı sıfır olan bir sonuç elde edene kadar işlemi tekrar etmek gerekiyor. Bu sistem inanılmaz uzun süreler alan bilgisayar gücü gerektiriyor.
  • Eğer mesajı taşıyan asker ele geçirilir veya mesaj içeriği değiştirilirse, hash fonksiyonunun özellikleri dolayısı ile hash sonucu çok büyük farklılıklar gösterecektir. Mesajı inceleyen generaller, hash sonucunun ilk beş basamağının sıfır olmadığını fark edecekler ve saldırıyı geri çekeceklerdir.

Ancak çok çok düşük bir ihtimal olmasına rağmen her hash fonksiyonunun birbiri ile çakışan sonuçları olabilir. Teoride, A ve B, iki ayrı girdi olarak H(A) ve H(B) hash sonuçlarına dönüştüğünde H(A) = H(B) sonucu hiçbir olasılıkta çıkmamalıdır ancak gerçek hayat uygulamasında hiçbir hash fonksiyonu tamamen çakışma korumalı değildir.

Peki, bu düşük olasılık içerisinde mesajı taşıyan asker ele geçirilip mesaj değiştirilir ve hash sonucunun generallerin istediği gibi çıkmasını sağlayan bir saldırı gerçekleşirse ne olur? Çok zaman gerektiren bir işlem olur tabii ama imkânsız değil. Buna karşın generaller sayı üstünlüklerini kullanırlar.

Tek bir generalin sıra ile solundakine sağından gelen mesajı iletmesi yerine, üç generalin birden solundakilere aynı anda mesaj göndermesi ile bu sorun aşılabilir. Kendi mesajlarını oluşturan generaller kümülatif bir mesaj oluşturup bu mesajı hash fonksiyonundan geçirip çıkan sonuca bir nonce değeri atadıktan sonra tekrar hash fonksiyonuna sokarlarsa, bu sefer çıkan sonucun ilk altı basamağının sıfır olması gerekir.

Bu aşamada bu mesaja ait nonce değerini bulmak ve mesajın içeriğini değiştirmek yılları bulan ciddi bir zaman kaybı olacaktır.

Ancak mesajı alan generallerin işi kolay; kendilerine önceden verilmiş olan nonce değerini hash sonucuna eklemeleri ve sonuçları karşılaştırmaları yeterli. bu adım ise çok hızlı ve basit bir işlem. Bu fikir iş ispatı prensibinin çalışma mekanizmasıdır.

  • Uygun hash sonucu için nonce değerini bulmak inanılmaz büyük işlem gücü ve zaman gerektirir
  • Ancak sonuçların incelenip herhangi bir kötü amaç var mı anlaşılabilmesi çok kısa sürer

Bitcoin madenciliğinde madenciler iş ispatı protokolünü bu şekilde uygularlar. Ellerinde ki hesaplama gücünü, önlerinde ki kriptografik problemi çözerek sıradaki bloğu oluşturmak için kullanırlar. Bitcoin blockchaininde bloklar, her 10 dakikada bir yaratılır.

Bitcoin ağında transferler nasıl gerçekleşiyor?

Farz edelim ki Ahmet Mehmet’e bir miktar bitcoin göndermek istiyor. Bu transfer nasıl gerçekleşiyor? Bitcoin transferleri itibari para transferlerinden çok farklı işliyorlar. Eğer Ahmet Mehmet’e 10 TL vermek isteseydi, fiziki olarak 10TL lik banknotu cüzdanından çıkartıp Mehmet’e verirdir ve transfer tamamlanırdı. Ancak bitcoin için durum farklı, fiziki olarak sahip olduğumuz bir şey değil. Sahip olduğumuz şey bitcoinimiz olduğuna dair kanıt.

Burada bilmemiz ve dikkat etmemiz gereken iki husus var;

  • Madenciler transfer işlemlerini, oluşturdukları bloğun içine yerleştirdikleri veri ile onaylıyor ve güvenliğini sağlıyorlar. Bu hizmet karşılığında da bir ücret alıyorlar.
  • İtibari para birimlerine baktığımızda, elimizde ki herhangi bir banknotun bizden önce kimde olduğunu bilmeyiz ve takip etmeyiz. Bu takibin uygulanabilir pratik bir yolu mevcut değildir. Ancak bitcoin ağında her bitcoin transfer işleminin kaydı tutulur.

Bu bilgilerin ışığında Ahmet ile Mehmet arasında gerçekleşen bitcoin transferine bir bakalım. Bu transferin iki bölümü vardır; girdi ve çıktı(input-output)

Ahmet’in bu transferi gerçekleştirebilmesi için, önceden kendisine gelen transferlerden bitcoini olması gerekir. Daha önce belirttiğimiz gibi bitcoin ağında bütün transferlerin kaydı tutulur.

Ahmet, kendisine önceden, TR(0), TR(1) ve TR(2) isimleri ile gelen transferlerden bitcoinleri toplayıp TR(INPUT) ismi ile yeni bir transfer oluşturup Mehmet’e göndermesi gerekir. Burada TR(INPUT) yeni transfer için girdi verisi olur.

Input tarafından bitcoin transferi kabaca bu şekilde görünür.

Çıktı (output) verisi ise basitçe Mehmet’in yeni transfer sonrası elinde olması gereken bitcoinlerin miktarını ve kalan para üstünü içerecektir ki bu para üstü daha sonra Ahmet’e onun bir sonraki transferinde TR(INPUT) değeri olmak üzere geri gönderilir.

Bu işlem, para üstü bölümünü katmazsak tek bir çıktı sonucu içermektedir ama çoklu çıktı sonucu olan transferlerde mümkündür. Bu anlatım basitçe bitcoin ağında bir transferin nasıl gerçekleştiğini gösteriyor. Ancak bunların başarılı bir şekilde gerçekleşebilmesi için belirli koşulları yerine getirmesi gerekiyor.

Transferlerin uyması gereken koşullar:

  • TR(INPUT) >TR(OUTPUT). Girdi transferi her zaman çıktı transferinden daha büyük olmalıdır. Her transferde input ve output(output+para üstü) arasındaki fark madencilere ücret olarak ödenir. Yani, Madencilik İşlem Ücreti = TR(INPUT)-(TR(OUTPUT)+PARA ÜSTÜ)
  • Girdi tarafında ise TR(0)+TR(1)+TR(2)=TR(INPUT) olmalıdır. Bir başka deyişle Ahmet’in, Mehmet’e gönderecek kadar bitcoini olmalıdır. Ahmet’in işlemi gerçekleştirecek kadar bitcoini yok ise, transfer madenciler tarafından reddedilir.
  • Artık Mehmet, kendisine gönderilen bitcoinlerin sahibi olduğunu kanıtlamak durumunda. Ahmet, gerçekleştirdiği bitcoin transferini Mehmet’in public anahtarı ile şifrelemiş durumda. Mehmet ancak bu şifreyi kendi private anahtarı vasıtası ile açabilir.
  • Bu sırada Ahmet, Mehmet’e gönderebileceği kadar bitcoini olduğunu da ispat etmek durumunda. Bu işlemi, gerçekleştirmek istediği transferi kendi private anahtarı ile imzalayarak yapıyor. Herhangi bir kişi Ahmet’in public anahtarı ile bunu açabilir ve gerçekten gereken miktar kadar bitcoini olduğunu doğrulayabilir. Bu kanıta ise imza verisi -signature data ismi veriliyor.
  • Girdi verisi(imza verisi de dahil olmak üzere) ve çıktı verisi birbirlerine eklenir ve SHA-256 hash algoritmasından geçirilir. Bu algoritmanın çıktısı transfere isim olarak verilir.

Akılda bulundurulması gereken bir konu var, bitcoin transferinin gerçekleşebilmesi için bloğu çıkartan madencinin o transferi fiziki olarak bloğun içine koyması gerekir. Bloğu çıkartan madenci o bloğun içerisinde koyduğu bütün transferlerden ücret alabilir. Zaman içerisinde transfer miktarları arttıkça tamamen dolan bloklar sebebi ile transferler yeni blok çıkmasını beklemek zorunda kalıyor. Hatta beklemek istemeyen kişiler daha fazla madencilik ücreti ödeyerek transferlerinin öne geçmesini ve madencilere daha cazip gelmesini sağlıyorlar.

Bu durum replace-by-fee(ücretle yer değiştirme) prensibini devreye soktu. Basitçe şu şekilde işliyor: Ahmet Mehmet’e 5 BTC göndermiş olsun ancak madencilik ücretini düşük tutulduğu için hiçbir zaman blok içerisine alınmıyor ve beklemede kalıyor. Bu işlemi geri almanın ya da iptal etmenin bir yolu yok zira harcanan bitcoin geri alınamaz. Ancak Ahmet aynı miktar BTC için tekrar aynı adrese bir transfer gerçekleştirip madencilik ücretini daha yüksek tutar ise eski transfer geçersiz sayılıp yenisi işlem için bekler.

Bitcoin ve genel olarak kripto para birimlerinin geleceği sayısız olasılıklarla dolu. Blockchain uygulamaları sınır tanımıyor ve bu alanda gerçekleşen projeler her geçen gün daha başarılı ve daha güvenli hale geliyor.

Emtia para birimlerinden, altın-gümüş gibi değerli madenlerin kullanımına, oradan kağıt paralara ve itibari para birimlerine yapılan yolculukta sanal ortamda para fikri çok yeni değil ama uygulanabilir hale gelmesi yakın tarih içerisinde mümkün oldu.

Kimine göre CIA’de bir grup, kimine göre uzaylı ya da belki de gerçekten kendi halinde bir cyberpunk Satoshi Nakamoto. Her kim olursa olsun, varlıklarımıza ve onları nasıl sakladığımıza bakış açımızı tamamen değiştirecek fikirleri ve uygulaması ile bizleri bundan sonra ne yapacağımıza karar vermek için yalnız bıraktı. Kendi fikrinden daha ileri fikirlerin ortaya çıkmasına zemin hazırladı ve dünyayı bambaşka bir bakış açısına ikna etti.

Satoshi, kendisinin çıkarttığı ve hard code olarak yazdığı genesis –başlangıç bloğu içerisine bir mesaj gizlemeyi ihmal etmemişti. 3 Ocak 2009 tarihini not düşerek, dünya çapındaki ekonomik krizin sorumlusu bankalar ile ilgili o günün UK Times gazetesinden bir manşeti ek olarak iliştirmişti; “Bakan, bankalar için ikinci kurtarma paketinin eşiğinde”. Muhtemelen bu sözler ile federal rezerv bankacılığı ile dalga geçiyor. Başlangıç bloğundaki bu harcanamaz adresi ise Satoshi’nin neden yarattığı bilinmiyor. Bu adrese anonim olarak şuana kadar 16 BTC gönderildi ve bu sebeple 21 milyon olan bitcoin toplam arzı aslında hiçbir zaman gerçekleşemeyecek.

Bitcoinin, dünya merkez bankalarını korkutacak seviyelere gelebilmesi sadece 9 yıl sürdü ve önünde daha uzun bir yol var.

Yorumlar
  1. İlk Yorumu yazmak ister misiniz?

    İlk Yorumu yazmak ister misiniz?

    Yorum Yazmak için Giriş Yap
Teknoloji dünyasındaki gelişmeleri takip edin. Neleri size ulaştırmamızı istersiniz?
Abonelik kaydınız başarıyla oluşturuldu.