Tarihçe
Çalışmanın ilk bölümünde de bahsedildiği gibi Bitcoin; ihraç süreçleri ve sistemin genel yönetiminde merkezi bir otorite yerine şifre bilime dayanan ilk merkezi olmayan SPB örneğidir. Kasım 2008’de Satoshi Nakamoto kod isimli kişinin internette yayımladığı “Bitcoin: Eşler Arası Elektronik Nakit Sistem” adlı yazıda, merkezi bir yapıya ihtiyaç duymadan eşler arası işleyen elektronik bir işlem ağı tasvir edilmektedir. Ocak 2009’da ilk açık kaynak müşterisi ve ilk para birimlerinin ihracıyla Bitcoin ağı ortaya çıkmıştır. İlk para birimleri, aynı zamanda sistem geliştiricisi olan Satoshi Nakamoto tarafından üretilmiş ve bu işlem kendisine 50 hediye Bitcoin kazandırmıştır.
Bitcoin kullanımının giderek artması ve fiyatının artışındarol oynayan faktörler arasında; Avrupa borç krizi (özellikle Güney Kıbrıs 2012-2013 yıllarında yaşanan finansal kriz), Bitcoin kullanımının yasal olduğu yönünde yorumlanan FinCEN açıklamaları, özellikle 2013 yılı boyunca Çin’de Bitcoin talebinin artması gösterilebilir. Bitcon’in 2013 yılının sonunda ulaştığı yüksek değerle dikkat çekmiştir. Bitcoin’in yaşadığı en büyük ani fiyat düşüşleri de Ekim 2013’te Silk Road adlı uyuşturucu ticareti sitesinin Federal Soruşturma Bürosu tarafından kapatılması, Şubat 2014’te Mt. Gox takas platformunun kapatılması ve Çin’in Bitcoin kullanımını yasakladığı söylentilerinden kaynaklanmıştır.
Ocak 2017’den itibaren Bitcoin ticaret hacminde yaşanan ciddi düşüş Bitcoin ticaret hacminin %90’ını oluşturan CNY’den kaynaklanmaktadır. Çin Merkez Bankası’nın ülkenin en büyük 3 takas platformuna yaptığı denetimler sonucunda kullanıcıların takas platformlarından borç almak suretiyle Bitcoin satın alabilmelerine olanak veren marjin ticaretine son verilmesi söz konusu düşüşe neden olmuştur.
Tasarım
Bitcoin’in tasarımında blok zincir kavramı ve madencilik faaliyetleri önemli rol oynamaktadır.
Blok Zincir
Blok zincir, gerçekleşmiş tüm Bitcoin işlemlerinin kaydını tutan ve işlemlerin yer aldığı bloklar birbirine eklendikçe büyüyen genel bir defter-i kebirdir. Bloklar blok zincire doğrusal ve kronolojik bir sırayla eklenmektedir. Bitcoin ağına katılan her bir düğüm 16 , blok zincirin güncel bir kopyasını bilgisayarına otomatik olarak indirebilmektedir. Düğümler işlemleri doğrulamakta ve kendi ellerinde bulunan defter-i kebir kopyasını güncelleyerek özel yazılım uygulamaları aracılığıyla ağdaki diğer düğümlere duyurmaktadır. Düğümlerin her bir Bitcoin’in mülkiyet silsilesini doğrulayabilmeleri için kendi kopyalarını edinmeleri elzemdir. Blok zincirin yönetimi, birbiriyle iletişim halinde olan ve Bitcoin yazılımı çalıştıran düğümler ağı tarafından gerçekleştirilmekte, bu nedenle işlemlerin kaydı için herhangi bir güvenilir üçüncü tarafa ihtiyaç duyulmamaktadır. Geleneksel defter-i kebir sisteminde kaydedilen varlıklar defter-i kebirden bağımsız olarak var olurken, blok zincir Bitcoin’in harcanmamış işlem çıktıları olarak var olduğu tek ortamdır.
Madencilik
Madencilik bir işlem kayıt hizmetidir. Madenciler yeni yayımlanan işlemleri toplayarak blok haline getirmek ve sürekli olarak doğrulamak suretiyle blok zincirin tutarlılığını, tamlığını ve değiştirilemez olmasını sağlamaktadırlar. İşlemlerin doğrulanması, Bitcoin ağının bilgisayar gücünü sağlayan birçok madenci tarafından gerçekleştirilmektedir. Madenciler doğrulama sürecinin bir parçası olarak şifresel bir bulmacayı çözmekte; kullanılan SHA-256 çıkarım algoritmasıyla, her bir bloğun bir önceki bloğun şifresel çıkarımını içermesini sağlamaktadırlar. Böylece bloklar birbirine bağlanmakta ve bir zincir oluşturarak blok zincir ismini almaktadır.
Madencilik işlemlerinde algoritma kullanmak yeterli olmamakta, madencilerin işlemleri doğruladıklarını ağa kanıtlamaları gerekmektedir. Bu nedenle, Bitcoin sistemindeki doğrulama süreci iş kanıtı olarak adlandırılmaktadır. Ağın geri kalanı tarafından kabul edilmesi için her yeni bloğun iş kanıtı içermesi gerekmektedir. İş kanıtı sistemine göre madencilerin bulacağı özel bir sayı ile blok içeriğinin çıkarımı yapıldığında, ortaya çıkan sonucun ağın zorluk hedefinden daha düşük olması gerekmektedir. İş kanıtı oluşturmak zeka veya deneyimden ziyade zaman gerektiren bir işlemdir. Madencilerin güvenli bir şifresel çıkarım fonksiyon oluştururken zorluk amaçlarına ulaşmak için, deneme yanılma yöntemiyle doğru değere ulaşmaları gerekmektedir. Ağ, doğru bloğu bulmanın zorluğunu artırmak için bu eşik sayısını periyodik olarak güncellemektedir. Bu güncellemeler hediye olarak verilecek Bitcoin’ler ve daha önceden belirlenen arz planına göre hesaplanmaktadır. Bitcoin protokolüne göre, doğrulama süreci sonunda yeni para birimleri oluşmakta ve işlemleri doğrulayan madencilere hediye edilmektedir. Ağda yer alan madenciler işlemleri doğrulayabilmek için birbirleriyle rekabet etmekte, işlemleri en kısa sürede doğrulamayı başaran madenciler hediye para birimlerini kazanmaktadır.
Çıkarım fonksiyonu herhangi miktardaki bir bilgiyi girdi olarak almakta ve standart bir uzunluğa sahip bir çıkarım değeri yaratmaktadır. Çıkarım değerinden hareketle girdinin bulunması imkansızdır. Girdideki en ufak bir değişiklik farklı bir çıkarım değerinin üretilmesine yol açmaktadır. Bitcoin protokolüne göre madencilerin üç tane girdiyi birleştirmek suretiyle çıkarım fonksiyonunu çalıştırmaları gerekmektedir:
Önceki bloğun referansı.
Aday işlem bloğunun detayları.
Tek kullanımlık özel değer.
Çıkarım fonksiyonu matematiksel bir fonksiyondur ve aşağıda yer alan özellikleri taşımaktadır:
Herhangi bir büyüklükte herhangi bir dizilime sahip olabilmektedir.
Sabit bir büyüklüğü olan bir çıktı üretmektedir.
Hesaplanması kolaydır. Belli bir girdi dizilişine bakarak makul bir zamanda çıkarım fonksiyonunun çıktısı tahmin edilebilmektedir.
Bir çıkarım fonksiyonunun şifresel olarak güvenli olabilmesi için ek üç özelliğe daha sahip olması gerekmektedir:
Çakışmaya Dirençli Olması: İki farklı girdi aynı çıktıyı ürettiğinde çakışma gerçekleşmektedir. Hiçbir çakışma yaşanmadığı durumda çıkarım fonksiyonu H çakışmaya dirençlidir. Diğer bir deyişle, eğer “x ≠ y, ama H(x) = H(y)” şeklinde iki değer bulmak olanaksızsa H fonksiyonu çakışmaya dirençlidir.
Saklanma: y = H(x) çıktısından yola çıkarak, girdiyi (x) bulmanın imkanı yoksa çıkarım fonksiyonunun saklanma özelliğinden söz edilebilmektedir. Saklanma özelliğini gerçekleştirebilmek için, x değerinin çok geniş bir havuzdan seçilmesi gerekmektedir. X böyle bir veri havuzundan seçilirse, birkaç denemeyle x’i bulmak kesinlikle mümkün olmayacaktır.
Yapboz Dostu Olması: Eğer biri çıkarım fonksiyonunun belli bir çıktı üretmesi isteniyorsa ve seçilen girdinin bir kısmı uygun olarak rastgele seçildiyse, aynı çıktıyı veren başka bir değer bulmak oldukça zordur.
İş kanıtı yöntemine göre, doğrulama yapan madenci bir set işlemi blok zincire eklemekte ve defter-i kebirin bu yeni versiyonunu çıkarım fonksiyonunun bir girdisi olarak kullanmaktadır. Çıkarım değeri elde edildiğinde defter-i kebirin son hali tüm ağdaki katılımcılara iletilmektedir. Ağın tüm diğer kullanıcıları, güncellenmiş defter-i kebirin meşru işlemleri içerdiğini, doğrulayıcının matematiksel probleme doğru çözümü bulmak için çalıştığını kontrol etmektedirler. Eğer iki şart da yerine geldiyse madenciler defter-i kebirin yeni versiyonu üzerinde mutabakata varmakta ve bu versiyonu sırada bekleyen diğer işlemleri doğrulamak için bir başlangıç noktası olarak kabul etmektedirler.
Bitcoin ağındaki madencilik işlemi adımları şunlardır:
1- Yeni işlemler tüm düğümlere duyurulmaktadır.
2- Her bir düğüm yeni işlemleri bir bloğa toplamaktadır.
3- Her bir düğüm kendi bloğu için iş kanıtı oluşturmaya çalışmaktadır.
4- Bir düğüm bir iş kanıtı oluşturduğunda, yeni bloğu tüm düğümlere ilan etmektedir.
5- Düğümler, yeni bloğu geçerli işlemler ve harcanmamış para birimleri içermesi halinde kabul etmektedirler.
6- Düğümler kabul edilmiş bloğun çıkarım değerini en son çıkarım değeri olarak kabul etmek suretiyle, bir sonraki bloğu yaratmaya çalışarak bu bloğu kabul ettiklerini ifade etmektedirler.
Yeni işlemler madencilere (D, G ve I) duyurulmaktadır. Bu işlemler madenciler tarafından doğrulandıklarında defter-i kebirin işlem geçmişine eklenmektedir. Yeni işlem ilanlarının tüm düğümlere ulaşmasına gerek yoktur. İşlemler düğümlerin çoğuna ulaşabildikleri sürece bir bloğa dahil olabilmektedirler. İşlemlerin bu şekilde ilan edilmesi blok zincirin aksayan iş akışlarına karşı da dayanıklı olmasını sağlamaktadır. Bir düğüm bir bloğu kendi kayıtlarına alamazsa, bir sonraki bloğu aldığında eksik bloğunu tamamlamış olmaktadır.
Dağıtık Ödeme Sistemleri
İş kanıtı sisteminde madenciler çıkarım fonksiyonu aracılığıyla işlemleri onaylarken tamamen bilgisayar gücüyle hareket etmekte, ortaya çıkan cihaz ve elektrik masraflarını üstlenmektedirler. Daha önce de belirtildiği gibi işlemlerin doğrulanması matematiksel zekadan çok bilgisayar gücüne dayanmakta ve çok sayıda deneme ile gerçekleştirilmektedir. Algoritmanın her seferinde çalıştırılması bilgisayar gücü açısından cüzi bir şey olsa da doğru cevabı bulmak trilyonlarca denemeye mal olabilmektedir. Tahminlere göre madencilerin toplamda günde yaklaşık USD 400 bin elektrik harcamaları olmaktadır. Herkes bir program indirmekle madenciliğe başlayabilmektedir. Ancak madencilik kişisel bilgisayarlarda yapılacak bir faaliyet olarak görülmemektedir (Avustralya Ödeme Sistemleri Kurulu, 2013). Çözümü ilk bulan madenciye, yeni oluşan Bitcoin’ler ödül olarak verildiği için madenciler çıkarım fonksiyonlarını daha ziyade bir görev gibi çalıştırmaktadırlar. Madenciler ödül olarak kazandıkları Bitcoin’lerin yanı sıra, genellikle işlemi başlatan tarafça ödenen masraflarla da gelir elde etmektedirler.
Katılımcıların hesap bakiyelerini bilebilmek için tüm kullanıcıların tüm işlem geçmişini bilmeleri gerekmektedir. Bu sebeple tüm kullanıcıların hangi işlemlerin gerçekleştiği ve hangi sıra ile gerçekleştiği konusunda mutabık olmaları gerekmektedir. Eğer iki kullanıcı farklı işlem geçmişleri görüyorsa, hesap bakiyeleri ve harcamalar konusunda farklı sonuçlara varmaktadırlar. Blok zincir, tüm kullanıcıların hangi işlemlerin gerçekleştiği ve hangi sırayla gerçekleştiği konusunda mutabakata varmaları açısından bir metot olarak hizmet vermektedir. Bir işlemin yokluğunu doğrulamanın tek yolu tüm işlemlerin farkında olmaktır. Bunu herhangi bir güvenilir üçüncü kısım olmadan başarabilmek için, işlemlerin ağdaki katılımcılara duyurulması gerekmekte ve katılımcıların tek bir işlem geçmişinde karar kıldıkları blok zincir bir sisteme ihtiyaç duyulmaktadır.
Bitcoin’de kullanıcıların bir dizi işlem üzerinde anlaşmasının yolu, oluşturulması için üstünde en fazla çalışılan işlem geçmişini seçmektir. İş kanıtı, bir bilgisayarın tamamlayamayacağı kadar zor ama diğer bilgisayarların doğrulayabileceği kadar kolay olmalıdır (Ali ve diğerleri, 2014a). En uzun zincir, geçmiş işlemlerin sıralanması yolunda bir kanıt olarak hizmet vermekte ve aynı zamanda bilgisayar gücünün en büyük havuzundan geldiğine de kanıt teşkil etmektedir. İş kanıtı sistemlerinde yer alan matematiksel problemlerin yegane amacı doğrulama sürecini pahalı bir süreç haline getirmek ve ağdaki gücün bilgisayar gücüyle doğru orantılı olmasını sağlamaktır. Ağ kullanıcıları tarafından yayımlanan defter-i kebirler arasında, işlem geçmişi en uzun olan dolayısıyla da çıkarım fonksiyonu en büyük bilgisayar gücünü gerektiren defter-i kebir geçerli olmaktadır.
Bitcoin sisteminde görülme olasılığı düşük olsa da, merkezi olmayan bir sistemde iki madencinin iki ayrı işlem adayını aynı zamanda doğrulamaları mümkündür. Bu durum gerçekleştiğinde, her iki kopya da ana zincirin dalları olarak ağ tarafından tutulmaktadır. En çok işi temsil eden ve en fazla bilgisayar gücüne karşılık gelen blok zincir Bitcoin ağının gerçeğidir ve bazen en uzun dal olarak da ifade edilmektedir. Daha az işin yapıldığı kısa dalda çalışan madenciler de uzun zincire geçmek isterler. Çünkü kısa zincirde yapılan işlemler ağın çoğunluğu tarafından kabul edilmeyecektir.
Yetim olarak nitelendirilen işlemlerin tekrar doğrulanması gerekecektir. Yetim bir blok için madencilerin kazandıkları hediye Bitcoin söz konusu olmamaktadır. Çünkü bu bloklar uzun blok zincirin bir parçası değildir.
En fazla işe sahip zincir sahtecilikle mücadele konusunda oldukça güçlü ve önemlidir. Önceki blokları değiştirmeye ve herhangi bir Bitcoin biriminin iki kere harcanabilmesine sebep olan saldırılar, yeterli bilgisayar gücüne erişerek en uzun blok zincir olmayı başarabilecektir. Saldırgan bunu başarabilmek için bilgisayar gücünün çoğunu elde etmeli ve elinde tutmalıdır. Bu nedenden dolayı bu saldırı %5118 saldırısı olarak bilinir.
İş kanıtı sisteminde işlemleri geçmişe dönük olarak değiştirme girişimi pahalıya mal olacağının katılımcılar tarafından bilinmesiyle sisteme olan güven korunmaktadır. Bir madenci yanlış bir işlemi kaydetmek istediğinde dürüst davranan diğer madencilerle yarışacaktır. Bitcoin sisteminde dürüst bir şekilde madencilik ya da doğrulama yapmak sahtecilik yapmaktan çok daha kolay ve masrafsız olduğu için sistem bu derece büyüyebilmiş ve Bitcoin kullanımı yaygınlaşabilmiştir. Sistemdeki bilgisayar gücünün çoğu iyi niyetli düğümlerin kontrolünde olduğu sürece, bu düğümler en uzun zinciri oluşturacak ve saldırganları ekarte edecektir. Mesajlar en iyi çaba ilkesiyle yayımlanmakta, düğümler gönüllülük esasına göre sisteme katılabilmekte ve sistemden ayrılabilmektedir.
Düğümlerin dürüst olması ve dürüst kalması sistemin işleyişi açısından elzemdir. Eğer saldırgan bir düğüm, dürüst düğümlerin hepsinin toplamından daha fazla bilgisayar gücü elde ederse, katılımcıları ödemelerini geri çekerek kandırmak ile yeni Bitcoin’ler yaratmak arasında seçim yapacaktır. Sistemin sağlıklı işleyebilmesi için düğümlerin kurallara uymayı daha karlı bulmaları gerekmektedir. Saldırgan, kurallara uymayı sistemin değerini düşürmekten ve esasında kendi servetinin de değerini düşürmekten daha karlı bulmalıdır.
Çalışmanın bu kısmında SPB cinsinden işlem yapılmasında temel rol oynayan dijital adres, cüzdan ve imzalar ile SPB cinsi işlemlere ilişkin adımlar ele alınacaktır.
Dijital Adres, Cüzdan ve İmzalar
Bitcoin kullanılarak yapılan ödeme işlemlerinin anlaşılabilmesi için bu yeni varlığın ortaya çıkmasıyla önem kazanan sanal adres, cüzdan ve imza kavramlarının ele alınması gerekmektedir.
Bitcoin alım satımı yapmak isteyen bir kullanıcının bir banka hesabıyla ilintili sanal bir adrese ihtiyacı bulunmaktadır. Bu hesaba Bitcoin gönderilebilmekte ve işlemler DDK’ya kaydolmaktadır. Bu adres Bitcoin’lerin tahsis edilebileceği ve genellikle 34 alfa sayısal (hem alfabetik hem sayısal) karakterin tesadüfi sıralanmasından oluşan bir adrestir. Bir kullanıcının gerçek dünyadaki kimliği Bitcoin adresiyle bağlantılı olmadığı için kullanıcılar Bitcoin işlemlerinde tamamıyla anonim kalabilmektedirler. Fakat kullanıcının adresi tüm ağ tarafından görülebilmektedir.
Saklama ve transfer fonksiyonları sanal cüzdanlar tarafından gerçekleştirilmektedir. Bir adresten diğerine Bitcoin transfer edebilmek için, bankaların internet sitelerini kullanarak para transferi yapmaya benzer şekilde, kolayca mesaj oluşturulabilmektedir. Bu cüzdan hizmetini veren birçok taraf vardır ve çoğunu kullanmak bedavadır.
Bu sanal cüzdanlar şifresel anahtarlarla ilişkilendirilmiştir. Kişi, adresini kullanarak işlemleri imzalamak ve mülkiyeti ispatlamak için bu anahtara ihtiyaç duymaktadır. Anahtar şifrelemesi, bir özel anahtar bir de genel anahtar olmak üzere iki ayrı fakat matematiksel olarak birbirine bağlı anahtar üzerine kuruludur. Şifresel anahtarlar, yukarıda bahsedilen dijital adresin çıkarım değeri olan genel anahtar ile mesajı dijital olarak imzalamak için kullanılan özel anahtarlardan oluşmaktadır. Sanal adres ile özel anahtar arasındaki matematiksel bağ genel anahtarın şifresiyle sağlanmaktadır.
Genel anahtarlar işlem mesajlarının özel anahtarla oluşturulmuş kodunu çözmek için kullanılmaktadır. Gönderici dijital olarak imzalamak istediği mesajı özel anahtarıyla şifrelemektedir. Adresler gibi onların özel anahtarları da alfa sayısal karakterlerin tesadüfi dizilişlerinden oluşmaktadır. Bir özel anahtar tipik olarak 51 karakterden oluşmaktadır. Gerçek imzalara benzer olarak dijital imzalar, işlem mesajlarının ödeme yapmak isteyen kişi tarafından yaratıldığına dair kanıt niteliğindedir. Mesajın kodu, alıcı tarafından göndericinin genel anahtarıyla kırılmaktadır.
Her bir Bitcoin adresi, ilgili özel anahtar ile eşleşmekte ve bu anahtar adres sahibi tarafından gizli tutulmaktadır. Cüzdan hizmeti sağlayıcı gibi herhangi bir aracının dahil olmadığı durumlarda özel anahtarın kaybedilmesi cüzdanda yer alan Bitcoin’in kaybedilmesi anlamına gelmektedir. Şunu unutmamak gerekir ki cüzdan hizmeti üçüncü taraflarca verilmekte ve Bitcoin koduna bağlı olarak çalışmamaktadır. Dolayısıyla sağlanan güvenlik seviyesi cüzdan işleticinin insiyatifine kalmaktadır. Güvenlik nedeniyle bazı kullanıcılar özel anahtarlarını internetle bağlantısı olmayan bir depoda tutmakta, bazıları ise özel anahtarlarının bir kısmını Bitcoin cinsi madeni para üreterek fiziksel formda tutmaktadır.
Bitcoin sisteminde işlemlerin nasıl imzalandığı anlatılmaktadır. Kullanıcı işlemin bir kopyasını özel anahtarını kullanarak şifrelemekte, sonra işlemin hem düz versiyonunu hem de şifrelenmiş halini yayımlamaktadır. Sistemdeki katılımcıların hepsi şifrelenmiş versiyonu kullanıcının genel anahtarıyla eşleştirerek düz versiyonu elde edebilmektedir.
Kullanıcı tarafından ilan edilen düz versiyonla, ulaşılan düz versiyon aynı ise o kullanıcının özel anahtarının kullanıldığı anlaşılmış olur.
Bitcoin kullanarak ödeme yapmak isteyen bir kişi, sanal cüzdanında daha önceki işlemlerden elde edilen Bitcoin’ler bulundurmaktadır. Gönderici aşağıdaki işlem adımlarını takip ederek Bitcoin gönderebilmektedir.
Gönderici sahip olduğu Bitcoin’leri elde etmesini sağlayan işlemin referansı, ödeme yapılacak adres ve ödenecek tutar olmak üzere üç temel unsuru içeren bir mesaj oluşturmaktadır.
Gönderici hesabının kontrolü altında olduğunu ispatlamak için dijital imzasını atmakta ve işlemi ağa duyurmaktadır.
Madenciler göndericinin yeni işlemini diğer işlemlerle birleştirerek yeni blok adayları oluşturmaktadırlar. İşlem bloğunun doğrulanmasının doğrulama ve oybirliği olmak üzere iki unsuru vardır.
Madenci göndericinin işlemini içeren bir bloğu doğruladıktan sonra ağa duyurmakta, diğer kullanıcılar kendi zincir blok kopyalarının sonuna bu bloğu eklemektedir.