Double Spending Problem ve Bitcoin
Double Spending nedir? Satoshi Nakatomo'nun aldığı bazı önlemler ve popüler double spending atakları...
Double spending, yani "çifte harcama", bir dijital para birimi olan Bitcoin ve benzeri kripto para birimlerinde ortaya çıkabilen bir sorundur. Ancak çift harcama sorunu sadece kripto para birimleri ile sınırlı değildir. Özellikle dijital para birimleri veya elektronik ödeme sistemleri gibi çevrimiçi ödeme yöntemleri, çift harcama riskiyle karşı karşıya kalabilir.
Örneğin, bir kullanıcının banka hesabında yeterli bakiyesi yokken bir alışveriş yapmak için dijital bir ödeme sistemi kullanması durumunda, sistem alışverişi onaylamayabilir. Ancak, aynı kullanıcı aynı ödeme sistemini kullanarak yeterli bakiyesi olmadan başka bir alışveriş yapmaya karar verirse, ödeme sistemi bu işlemi onaylayabilir ve çift harcama sorunu ortaya çıkabilir.
Merkezi şekilde bankacılık sistemlerinde bir çok kez çifte harcama sorunu engellenmeye çalışılmıştır. Bunun en bilinen örneği 1982 yılının merkezi ürünü David Chaum'un eCash'idir.
Bu nedenle, dijital ödeme sistemleri de çift harcama sorunuyla mücadele etmek için farklı yöntemler kullanırlar. Örneğin, bankalar kredi kartı işlemlerinde, işlem onayı için kullanıcıların kimliklerini doğrulayarak ve her işlemi ayrıntılı olarak kaydederek çift harcamayı önlemeye çalışırlar. Bankaların bu basit ve anlaşılır amacının doğurduğu bazı sonuçlar da vardır elbet. İşlem onayı için verilerinizin tek bir veri havuzunda toplanması, işlenmesi, müşterilerinin nereye ne kadar para harcadıklarının takibi gibi bazı sorunlara yol açar.
Bitcoin ve Satoshi'nin Önlemleri
İşte tam bu noktada sizinle bir yolculuğa çıkalım ve 31 Ekim 2008’e gidelim. Çifte harcamanın ne kadar önemli olduğunu anlamak için ilk iki cümle yeterli olacaktır.
‘’Sadece eşler arası bir elektronik nakit para versiyonu, finansal bir kurum aracılığıyla geçmeden online ödemelerin doğrudan bir tarafından diğer tarafa gönderilmesine izin verebilir. Dijital imzaların bir kısmı çözüm sağlasa da, çifte harcamayı önlemek için hala güvenilir bir üçüncü taraf gerekiyorsa, ana avantajlar kaybedilir.’’
Kripto para birimleri, merkezi bir otorite olmadan işlem yapılabilmesini sağlar. Bu işlemler, bir blok zincirinde kaydedilir ve tüm kullanıcılar tarafından doğrulanır. Ancak, aynı kripto para birimi birkaç kez harcanabilirse, bu sistem doğruluğunu kaybeder ve manipüle edilebilir hale gelir.
Örneğin, bir kullanıcı bir Bitcoin'i başka bir kişiye gönderirken, bu işlem blok zincirinde kaydedilir ve tüm ağ kullanıcıları tarafından doğrulanır. Ancak, kullanıcı aynı Bitcoin'i başka bir kişiye de göndermeye karar verirse, blok zincirinde iki ayrı işlem görünebilir. Bu durumda, bir işlem kabul edilirken diğeri reddedilir ve sistemin güvenilirliği zarar görür.
Bu nedenle, kripto para birimleri çift harcama sorununu çözmek için farklı yöntemler kullanırlar. Bitcoin, blok zincirindeki tüm işlemlerin doğruluğunu sağlamak için karmaşık bir matematiksel algoritma kullanır ve her işlemi blok zincirinde kaydederek çift harcamayı önler. Bu yüzden her yaratılan blockchain ekosistemi belli sorunları çözerek hayatına başlar. Bitcoin de bu temel sorunları çözebildiğinden çoğu blockchain projesi Bitcoin’i ve çözümlerini örnek almıştır.
Bu çözümlerin başında da hepimizin bildiği blockchain çözümünün kendisi vardır. Alice 1 BTC harcadıktan sonra hızlı bir şekilde bir daha harcamak istiyor ama ne yazık ki ilk işlemi blockchainde zaten kayıtlı. Bu şekilde Alice’in bu girişimi otomatik olarak iptal olmuş oluyor.
Blockchain bu nedenle gayet etkili bir çözümdür fakat eğer Alice aynı anda iki kere harcamayı deneseydi neler olurdu? Bu sefer başarılı olurdu öyle değil mi? Nakatomo bu sorunu da çözmek için proof of work mekanizmasını tanıtıyor. Kısa bir şekilde anlatmak gerekirse POW, madenciler tarafından işlemin gerçekleştiğinin diğer nodelara kanıtlanması durumudur. Madencilerin işlemi onaylaması ve doğru nonce değerini bulması zaman alır. Bu sayede aynı anda iki işlem blockchain’e eklenemez ve çift harcama girişimi başarısız olur. Çifte harcamadan korunmak için pow ve pos mekanizmaları gerekçesiyle minimum 3-6 blok bekleme önerilir.
Bitcoin ayrıca UTXOs kimlik yapısına sahiptir. Bitcoin’de gerçekleşen her işlemde(transaction) birden fazla girdi ve ya çıktı olabilir. Bu girdiler bir önceki işlemin referanslarını barındırmaktadır.
Her bir çıktı, kullanılmadan önce bir Unspent Transaction Output (UTXO) olarak adlandırılır. Yani, bir Bitcoin adresindeki tüm çıktılar, UTXO'ların bir listesini oluşturur. Çıktılar adeta bir harcama bileti gibidir ve bir adrese atanır. Kullanıcı istediği taktirde özel anahtarını kullanarak UTXO’sunu harcayabilir.
Yeni bir işlem, bir veya daha fazla UTXO'ya referans göstererek yapılan bir çıktı üretir. Bu çıktı, başka bir Bitcoin adresine atanır ve aslında tüm olay karşı tarafa btc değil, ücretsiz btc harcama hakkı vermektir. Bitcoin'in UTXO yapısı, çift harcamayı önlemek için kullanılır. Bir UTXO yalnızca bir kez harcanabilir ve bir kez harcanan bir UTXO daha sonra başka bir işlemde kullanılamaz. UTXOs yapısı cüzdan adreslerinin takibi ile çifte harcamayı engelleyen çözümlerden biridir.
Popüler Çifte Harcama Atakları
Sorunu en iyi çözmenin yolu sorun yaratan biri gibi olmaktır. Hadi biraz çifte harcama ataklarına göz atalım:
1- Race Attack
Race attack, bir işlemi iki farklı node’a göndererek gerçekleştirilir. Bu düğümler işlemlerini blok zincirine eklemek için yarışırlar. Eğer ağdaki düğümlerin çoğunluğu, bir düğümdeki işlemi onaylar ve diğer düğümdeki işlemi reddederse, saldırganın çifte harcama girişimi zaten başarısız olur.
Ancak, saldırganın yeterli hesaplama gücü varsa, bir dizi düğüme birden fazla işlem gönderebilir ve her düğümdeki işlemlerin ağ tarafından onaylanması için yarıştırabilir. Bu durumda, saldırganın çifte harcama saldırısı başarılı olabilir. (%51 Saldırısı)
Race attack'e karşı koymak için, birçok kripto para birimi, işlemlerin onaylanmasını engellemek ve böylece çifte harcama saldırılarını önlemek için blok zincirinin farklı kısımlarında bir dizi doğrulama adımı kullanır. Bunlar arasında Proof of Work (PoW), Proof of Stake (PoS) gibi mekanizmalar yer alabilir.
2-Finney Attack
Finney Attack'ta, saldırgan, önce madencilik yaparak bir blok oluşturur ve bu blokta bir işlem gerçekleştirir. İşlem, bir kişiye Bitcoin göndermek için tasarlanmış gibi görünebilir, ancak aslında saldırganın kendi cüzdanına gönderilir. Daha sonra, saldırgan, oluşturduğu bloğu ağa gönderir ve ağdaki diğer düğümler tarafından blok zincirine eklenmesi için yarışılır.
Eğer saldırganın oluşturduğu blok, ağdaki diğer düğümler tarafından blok zincirine eklenirse, işlem blok zincirinde onaylanmış olur ve saldırganın kendi cüzdanına Bitcoin gönderilir. Daha sonra, saldırgan, kendi cüzdanından başka bir işlem oluşturur ve ağa gönderir. Bu işlem, aynı Bitcoin'in, önceki işlemde alıcısına gönderilmiş gibi görünebilir, ancak aslında saldırganın kendi cüzdanına gönderilir.
Bu noktada, saldırganın amacı, önceki bloğun onaylanmasından önce ikinci işlemi onaylatmaktır. Bu durumda, ikinci işlem onaylandığında, önceki işlem blok zincirinde zaten onaylanmış olacak ve çifte harcama gerçekleştirilmiş olacaktır.
Finney Attack, madencilik yapmak için yüksek bir hesaplama gücü gerektirir ve dolayısıyla, genellikle daha büyük madencilik havuzları tarafından gerçekleştirilir. Bu tür saldırıları önlemek için, Bitcoin ve diğer kripto para birimleri, blok zincirine yeni blokların eklenmesi için bir doğrulama süreci kullanır ve bu süreç, bir bloğun onaylanması için belirli bir sürenin geçmesini gerektirir. Bu, saldırganların hızlı bir şekilde bir çifte harcama işlemi gerçekleştirmelerini önleyerek Finney Attack'ları zorlaştırır.
Sonuç
Bitcoin, çifte harcama gibi temel sorunların üstesinden gelerek, blok zinciri teknolojisi için bir dönüm noktası olmuştur. Bu teknoloji, dijital varlıkların güvenli bir şekilde transfer edilmesine izin verirken, merkezi olmayan ve şeffaf bir yapıya sahip olması nedeniyle de büyük bir ilgi görüyor. Bitcoin'in başarısı, diğer blok zinciri projeleri tarafından da benimsenmiş ve geliştirilmiştir. Çoğu proje, Bitcoin'in uyguladığı çifte harcama engelleme yöntemlerini kullanarak güvenli ve etkili bir blok zinciri ağı oluşturmayı hedeflemektedir. Bu nedenle, blok zinciri teknolojisi, gelecekte finansal sistemlerin işleyişinde büyük bir rol oynamaya devam edecektir.
Did you find this article valuable?
Support Buildchain by becoming a sponsor. Any amount is appreciated!