Çift harcama nedir?
Çift harcama, dijital para sistemlerinin potansiyel bir sorunudur ve aynı fonların aynı anda iki farklı alıcıya harcanması anlamına gelir. Yeterli önlem alınmazsa bu sorunu çözemeyen bir protokol en temelinden zarar görmüş olur zira kullanıcıların kendilerine ulaşan fonların başka bir yerde daha harcanıp harcanmadığını doğrulaması mümkün değildir.
Konu dijital para sistemleri olduğunda belirli birimlerin kopyalanamayacağını garanti altına almak büyük öneme sahiptir. Eğer Alice 10 birim alır, bu birimleri 10 kere kopyala yapıştır yapar ve en nihayetinde 100 birime sahip olursa sistem temelinden çöker. Benzer şekilde eğer Alice aynı 10 birimi eş zamanlı olarak hem Bob hem de Carol’a gönderebilirse sistem yine çalışamaz. Dolayısıyla, dijital paranın çalışabilmesi için böyle hareketleri engelleyecek mekanizmalar gereklidir. Binance üzerinden işlem yapmak için buraya tıklayarak üyelik oluşturmanız gerekmektedir.
Çift harcama nasıl engellenir?
Merkezi yaklaşım
Merkezi yaklaşımın uygulamaya konması, merkeziyetsiz alternatiflerine kıyasla daha kolaydır. Bunun için genellikle bir yöneticinin sistemi yönetmesi ve birimlerin yayınlanmasını ve dağıtılmasını kontrolü altında tutması gerekir. Çift harcama sorununa yönelik merkezi çözümün örneklerinden biri David Chaum’un eCash’idir. Bankalar nakit paraya benzer dijital varlıkları (anonim ve eşler arası şekilde takas edilebilir olan) kullanıcılara sunmak için kör imzaları kullanabilir. Bu imzalar kriptografi uzmanı David Chaum’un 1982’de yayınlanan Takip Edilemez Ödemeler İçin Kör İmzalar makalesinde ayrıntılı bir şekilde açıklanmıştır. Binance üzerinden işlem yapmak için buraya tıklayarak üyelik oluşturmanız gerekmektedir.
Böyle bir durumda eğer bir kullanıcı (adı Dan olsun) 100 USD’lik dijital para almak isterse önce bankayı bilgilendirmelidir. Hesabında bakiye olması durumunda, rastgele bir sayı (ya da daha düşük tutarlar için birçok sayı) oluşturur. Diyelim ki beş sayı oluşturur ve bunların her birine 20 USD değer atanır. Bankanın belirli birimleri takip edebilmesini engellemek için Dan rastgele sayıların her birine bir körleştirme faktörü ekleyerek bunları gizler.
Daha sonra bu veriyi bankaya iade eder, banka Dan’in hesabından 100 USD çeker ve beş bilgi parçasının her biriyle 20 USD değerinde harcama yapılabileceğini onaylayan mesajları imzalar. Dan artık banka tarafından verilen fonları harcayabilir. Erin’in restoranına gider ve 40 USD değerinde bir yemek siparişi verir.
Dan, dijital para ”banknotlarının” körleştirme faktörünü kaldırarak her bir birimin kendine özel belirteci olan (seri numarasına benzer) rastgele sayıyı görülebilir hale getirebilir. Bu sayılardan ikisini Erin ile paylaşır. Erin’in artık Dan bu parayı başka bir satıcıda harcamadan önce bankadan hemen çekmesi gerekir. Banka imzaların geçerli olup olmadığını kontrol eder ve her şey doğruysa Erin’in hesabına 40 USD yatırır.
Böylece banknotlar yakılmış olur ve Erin yeni bakiyesini aynı şekilde harcamak isterse yeni banknotların yaratılması gerekir.
Chaumian eCash düzeni gizli transferler için kullanışlı olabilir. Fakat direnç konusunda sınıfta kalır çünkü banka tek hata noktasıdır. Çıkarılan banknotun kendi başına değeri yoktur çünkü bu değer tamamen bankanın banknotu dolara çevirmeyi kabul edip etmemesine bağlıdır. Müşteriler bankaya bağımlı kalır ve paranın çalışır halde olması bankanın iyi niyetine bağlı olur. Kripto paraların çözmeyi amaçladığı sorun da tam olarak budur.
Merkeziyetsiz yaklaşım
Yöneticinin olmadığı bir ekosistemde fonlarla çifte harcama yapılmamasını garanti altına almak daha zorlayıcıdır. Eşit derecede güce sahip katılımcılar sahteciliği engelleyen ve tüm kullanıcıları dürüst davranmaya teşvik eden kurallar seti çerçevesinde koordine olmalıdır.Bitcoin white paper’ında sunulan en önemli inovasyon çift harcama sorunu için ortaya atılan çözümdür. White paper’da bu şekilde isimlendirilmiş olmasa da Satoshi artık yaygın olarak blockchain adıyla bilinen veri yapısını ortaya atmıştır.Bir blockchain aslında kendine has özellikleri olan bir veritabanıdır. Ağdaki katılımcılar (node olarak adlandırılırlar) özel bir yazılım çalıştırır ve bu yazılım sayesinde kendi veritabanı kopyalarını diğer eşlerle senkronize edebilir. Sonuç olarak genesis bloğuna (ilk blok) kadarki işlem geçmişi ağın tamamı tarafından denetlenebilir. Blockchainin herkes tarafından görülebilir olması sayesinde çift harcama girişiminde bulunan işlemler gibi sahteciliğe yönelik hareketler kolaylıkla belirlenebilir ve engellenebilir.Kullanıcılar işlemleri yayınladıklarında bu işlemler hemen blockchaine eklenmez, işlemlerin öncelikle madencilik aracılığıyla bir bloğa eklenmeleri gerekir. Dolayısıyla alıcı, bir işlemin yer aldığı blok zincire eklendiyse ancak o zaman bu işlemi geçerli olarak kabul etmelidir. Aksi takdirde gönderici aynı coinleri başka bir yerde daha harcayabileceğinden fonları kaybetme riski ortaya çıkar. İşlem onaylandıktan sonra coinlerle çift harcama yapılamaz çünkü coinler artık yeni bir kullanıcıya aittir ve bu durum tüm ağ tarafından doğrulanabilir. Birçok kişinin, ödemenin geçerli olarak kabul edilmeden önce birden fazla onayın beklenmesini önermesinin sebebi budur. Eklenen her bir blokla beraber zinciri değiştirmek ya da tekrar yazmak (%51 saldırısında görülebilir) için harcanması gereken efor önemli seviyede artar. Binance üzerinden işlem yapmak için buraya tıklayarak üyelik oluşturmanız gerekmektedir.
Restoran senaryosuna geri dönelim. Dan restorana geri döner ve bu kez cama asılmış Burada Bitcoin Kabul Edilir yazısını görür. Geçen sefer yediği yemeği beğendiği için aynısından sipariş eder. Bu yemek 0,005 BTC tutar. Erin, fonların gönderileceği açık adresi Dan’le paylaşır. Dan işlemi yayınlar. Bu yayınlanan işlem en temelde Dan’in sahibi olduğu 0,005 BTC’nin artık Erin’in olduğunu söyleyen imzalı bir mesajdır. Çok ayrıntıya girmeden, Dan’in imzalı işlemini gören herkes gerçekten de bu coinlerin onda olduğunu ve coinleri gönderme yetkisine sahip olduğunu doğrulayabilir.
Fakat daha önceden de belirttiğimiz gibi işlem yalnızca onaylanan bir bloğa eklendiği sürece geçerlidir. Doğrulanmamış işlemleri kabul etmek bir önceki örnekte 40 USD’lik eCash’i alıp bunu hemen bankadan çekmeyerek göndericinin bu parayı başka yerde harcamasına izin vermeye benzer. Dolayısıyla, Erin’in Dan’in ödemesini kabul etmeden önce en az 6 blok onaylamasını beklemesi (yaklaşık 1 saat) önerilir.
Bitcoin’de çift harcama
Bitcoin çift harcama saldırılarını engellemek üzere dikkatle tasarlanmıştır, en azından protokol beklendiği gibi kullanıldığında. Yani eğer bireyler işlemlerin bir blok üzerinden doğrulanmasını beklerse göndericinin bunu geri çevirmesinin kolay bir yolu yoktur. Bunu yapabilmek için blockchaini “geriye döndürmeleri” gerekir ki böylesi bir işlem için inanılmaz miktarda yüksek hashing gücü gereklidir.
Fakat, onaylanmamış işlemleri kabul eden kişileri hedef olan birkaç çift harcama saldırısı türü mevcuttur. Örneğin satıcı, düşük tutarlı harcamalar için işlemin bloğa eklenmesini beklemeyi istemeyebilir. Yoğun bir fast-food restoranı ağın her bir satın alma işlemini doğrulamasını bekleyemeyebilir. Dolayısıyla eğer bir işletme “anında” ödemeleri kabul ediyorsa çift harcama riskini de almış olur. Bir kişi hamburger siparişi verip, ödemesini yapıp daha sonra hemen aynı fonları kendi adresine gönderebilir. Daha yüksek bir işlem ücretiyle bu yeni işlemin daha önce onaylanması daha olasıdır böylece bir önce yapılan işlem geçersiz hale gelir.
Çift harcama yapmak için kullanılan üç popüler yöntem vardır:
- %51 saldırısı: tek bir birim ya da organizasyon hash oranının %50’sinden fazlasının kontrolünü ele geçirmeyi başarır böylece işlemlerin sırasını değiştirebilir ya da bazı işlemleri dışarıda bırakabilir. Böyle bir saldırının Bitcoin’de olması düşük olasılıktır fakat diğer ağlarda daha önce görülmüştür.
- Yarış saldırıları (race attacks): arka arkaya aynı fonları kullanan ve birbiriyle çelişen iki işlem yayınlanır fakat yalnızca bir işlem onaylanır. Saldırganın amacı yalnızca kendisine fayda sağlayacak olan ödemeyi onaylatarak ilk ödemeyi geçersiz kılmaktır (örn. aynı fonları kendi kontrolünde olan bir adrese göndermek). Yarış saldırıları alıcının onaylanmamış bir işlemi ödeme olarak kabul etmesini gerektirir.
- Finney saldırıları: saldırgan bir işlemi önceden bir bloğa ekler ve bunu hemen ağa yayınlamaz. Bunun yerine aynı coinleri başka bir işlemde harcar ve ancak o zaman daha önceden kazılmış bloğu yayınlar, böylece ilk ödeme geçersiz hale gelir. Finney saldırılarının gerçekleşmesi için belirli bir olay sırasının takip edilmesi gereklidir ve alıcının doğrulanmamış işlemleri kabul etmesine de bağlıdır.
Görüleceği üzere blok onaylamalarını bekleyen bir satıcının çift harcama mağduru olma riski büyük oranda azalır.
Son Fikirler
Çift harcama bir kullanıcının aynı fonları birden fazla kez kullanarak elektronik para sistemini yanıltmasını mümkün kılar. Bugüne kadar soruna yönelik yeterli çözüm olmaması bu alandaki ilerlemelerin önüne geçmiştir.Fakat neyse ki kör imzaların kullanımı merkezi finansal yapılar için ilginç bir çözüm ortaya koyar. Daha sonra Proof of Work mekanizmasının ve blockchain teknolojisinin yaratılması merkeziyetsiz paranın güçlü bir formu olan Bitcoin’in doğumunu sağlamış, Bitcoin de kendisinden sonra gelen binlerce diğer kripto para projesine ilham vermiştir. Binance üzerinden işlem yapmak için buraya tıklayarak üyelik oluşturmanız gerekmektedir.