Çift harcama sorunu, dijital nakit ve kripto para projelerine özgü bir güvenlik sorunudur. Özellikle çift harcama sorunu, sanal para birimi geliştiricilerinin, kullanıcıların fonlarını birden fazla kez harcamasını engellemesi gerektiği anlamına gelir. Bu güvenlik endişesi, hükümetlerin ve geleneksel finansal sistemlerin ele alması gereken sahte para sorununa benzemektedir.

Çift harcama sorununun çözümü, merkezi bir veri tabanı kullanan ağlarda oldukça kolaydır. Buna karşılık, işlemleri doğrulamak için bir grup dağıtılmış düğüm (örneğin bilgisayarlar veya diğer fiziksel cihazlar) kullanan merkezi olmayan ağlar için çift harcama sorununu çözmek daha zordur. Ancak etkili bir çözüm uygulanırsa, kötü niyetli kişilerin ağa saldırması ve iki kez para harcaması son derece zorlaşır.

Çift harcama (double spending)  nedir?

Çifte harcama sorunu, onlarca yıldır var olan bir güvenlik sorunudur. Bu zorluğu daha iyi anlamak için basit bir örneği ele alalım.

Ayşe’nin hesabında 100$ olduğunu ve merkez bankası veya merkezi olmayan blok zinciri ağı gibi dijital bir nakit ağı aracılığıyla Veli'ye 30$ göndermek istediğini var sayalım.

Senaryo 1: Ağ olması gerektiği gibi çalışırsa çift harcama sorununun önüne geçilecektir. Transferden sonra Ayşe’nin hesabında 70$ kalacak. Veli'nin hesabında fazladan 30 dolar olacak.

Senaryo 2: Ağ düzgün çalışmıyorsa Ayşe aynı parayı iki kez harcayabilir (çift harcama, double spending). Bu senaryoda transferden sonra Ayşe’nin hesabında hala 100$ kalacak. Bu arada da Veli'nin hesabında ek bir 30 dolar gelecek.

Senaryo 2, dijital nakit ağının neden uygulanamaz olduğunu göstermektedir. Çifte harcama sorunu nedeniyle Ayşe havadan kolayca para yaratabiliyor.

Çoğu parasal olmayan uygulamada bu durum sorun olarak görülmez. Örneğin, Ayşe bir dijital dosyanın bir kopyasına (örneğin bir MP3 veya bir PDF) sahip olabilir ve Veli de başka bir kopyasına sahip olabilir. Dijital dosyayı 100 kez veya 1.000 kez paylaşabilirler. Dijital dosyayı her paylaştıklarında daha fazla kopya var olur. Ancak bu durum dosya veya kullanıcıları için herhangi bir sorun yaratmaz.

Ancak dijital para sistemini kullanmak istiyorsak fonların kopyala yapıştır yapılarak yeniden yaratılamaması gerekir. Güvenli bir dijital nakit ağında transferlerin net değeri sıfır olmalıdır. Yani Senaryo 1’deki gibi Ayşe’nin hesabından 30$ eksilmeli ve buna karşılık Veli’nin hesabına 30$ aktarılmalı.  Bu ilke, dijital nakitin dijital fiat para birimlerini, kripto para birimlerini veya başka herhangi bir sanal para birimini temsil edip etmediğine bakılmaksızın geçerlidir.

Çifte harcama (double spending) nasıl önlenir?

David Chaum’un eCash’i

1982'de David Chaum, çifte harcama sorununa bir çözüm öneren “İzlenemeyen Ödemeler İçin Kör İmzalar” başlıklı bir araştırma makalesi yayınladı. eCash olarak bilinen bu sistem, kullanıcıların dijital parayı yerel bir bilgisayarda saklamasına izin verir. eCash, RSA şifrelemesini kullanan kör imzalar aracılığıyla çift harcama sorununu çözdü ve 1989'da eCash teknolojisini tamamen uygulayan DigiCash adlı bir şirket kurdu.

eCash'in benimsenmesinin önündeki en büyük engel sistemin sadece bankalara güvenmesiydi. Bir eCash ödemesinin bir banka hesabına yatırılabilmesi için kullanıcının bankasını bilgilendirmesi gerekiyordu. Alıcı kişinin mevduatlarının olduğu bankasının pekala eCash mevduatlarını kabul etmemesi mümkündü. Kullanıcı eğer ödemeyi kabul edecek bir banka bulamazsa, fonlar haliyle değersiz hale gelirdi. eCash, Avustralya, Avusturya, Almanya, İsveç ve İsviçre'deki bankalar tarafından uygulandı ve benimsendi. Ancak, sistem dünya genelinde kabul görmedi ve DigiCash 1998'de iflas etti.

Adam Back'in HashCash'i

1997'de Adam Back, hizmet reddi saldırılarını(Denial-of-Service, DoS ) ve e-posta spam'ını azaltmayı amaçlayan HashCash adlı bir Proof of Work algoritması önerdi. Adının aksine HashCash, dijital para gönderme ve alma işlemlerini içermiyordu ama gelecekteki dijital nakit sistemlerinin oluşturulmasını etkileyen önemli bir çift harcama çözümünü içeriyordu. eCash'ten farklı olarak HashCash, merkezi bir yöneticiye ihtiyaç duymadan çift harcama sorununu çözmeye çalıştı.

 

HashCash, SHA-1 şifreleme hash fonksiyonunu kullandı. E-posta göndermek isteyen kullanıcıların benzersiz bir damga oluşturacak bir şifreleme bulmacasını çözmeleri gerekiyordu. Bu işlem uzun sürdüğü için alıcılar, gönderenin spam gönderici olma olasılığının daha düşük olduğunu varsayabilirler. Birisi yeni bir e-posta göndermek istediğinde, yeni bir damga oluşturması gerekiyordu.

Bu kuralı uygulamak için HashCash, çift harcamalı bir veritabanı kullandı. Bir e-posta daha önce kullanılmış bir damga içeriyorsa reddedilir. Başka bir deyişle, e-posta alıcıya ulaşmaz. SpamAssassin adlı bir spam filtre hizmeti ve Mozilla Thunderbird adlı bir e-posta istemcisi HashCash'i kullandı. Ek olarak Microsoft da bir dönem HashCash benzeri bir yapı ile spam mailleri filtrelemeye çalıştı.

 

Merkezi Olmayan Sanal Para Birimleri

HashCash'in İş Kanıtı protokolüne (Proof of Work) dayalı merkezi olmayan bir dijital nakit sistemi oluşturmak için birçok girişimde bulunuldu. 1998'de Wei Dai, B-Money adlı anonim, dağıtılmış bir elektronik nakit sistemi önerdi. Aynı yıl Nick Szabo, Bit Gold adlı dijital para birimi için bir mekanizma tasarladı. 2004 yılında Hal Finney, Yeniden Kullanılabilir İş Kanıtı (RPoW) adlı bir dijital token sistemi tanıttı. Genel olarak konuşursak, bu çözümler çifte harcama problemini çözmede başarılı oldu ancak bunu o kadar çok taviz ve diğer sınırlamalarla yaptı ki, hiçbiri yaygın bir şekilde benimsenemedi. Neyse ki dünyanın ilk blok zinciri ağı olan Bitcoin'in yaratılmasına yol açan hem fikirleri hem de teknik temeli sağladılar.

 

Bitcoin Çifte Harcama Problemini Nasıl Çözdü?

Ocak 2009'da Bitcoin protokolünün başlatılmasıyla, çifte harcama sorununu verimli bir şekilde çözen merkezi olmayan bir dijital nakit ağı nihayet doğdu.

Bitcoin protokolü, bir çeşit dağıtılmış defter teknolojisi (DLT) olan bir blok zinciridir. Bir blok zincirinde, merkezi bir yöneticiye veya aracıya ihtiyaç yoktur. Her BTC işlemi, dağıtılmış düğümlerden oluşan eşler arası ağda (peer to peer, P2P) herkese açık olarak yayınlanır. Bu düğümler daha sonra bağımsız doğrulamaları gerçekleştirir ve işlemlerin geçerli veya geçersiz olup olmadığı konusunda anlaşmaya varmak için kendi aralarında iletişim kurar.

 

Bitcoin ve diğer blok zinciri ağları, işlemlerin ağ üzerinde tamamen doğrulandığından emin olmak için blok onayı olarak bilinen bir sistem kullanır. Birisi aynı anda iki işlem yapmaya çalışırsa, düğümler hangi işlemin daha fazla blok onayına sahip olduğuna bakar. Daha fazla onay içeren işlem doğrulanır böylelikle transfer gerçekleşir. Daha az teyit içeren yani daha önce harcanmış olan ve tekrar harcanamayacak olan fonlar geçersiz kılınır.