Sözlük / Gizlilik ve güvenlik
Çifte harcama
Diğer adları: Çift harcama, Double spend.
- Çifte harcama nedir?
- Çifte harcama, aynı bitcoinlerle iki farklı kişiye ödeme yapma girişimidir: aynı bitcoinleri harcayan ikinci bir işlemin, ilkinin yerine onaylanmasını sağlamaya çalışır.
Dijital para doğası gereği kopyalanabilir ve kopyalamayı durdurmak, Bitcoin'in çözülmek üzere inşa edildiği sorundur. Her coin tam olarak bir kez tüketilebilen bir çıktıdır ve defter anlaşmazlıkları bir sürümü bloklar altına gömerek çözer: altı onaydan sonra, yaklaşık bir saat, bunu geri almak tüm ağı geride bırakmak demektir. Bir ödeme onaylanana kadar onu alınmış para değil, bir söz olarak değerlendirin.
Nasıl çalışır
Bitcoin harcamak, her biri kendisini oluşturan işlem ve o işlemdeki konumuyla tanımlanan belirli çıktıları tüketmek anlamına gelir. Tam düğümler tüm harcanmamış çıktıların bir kümesini tutar ve doğrulama bir arama işlemidir: işleminizin belirttiği çıktı bu kümede yoksa, işlem ne kadar iyi imzalanmış olursa olsun geçersizdir ve atılır.
Bu, onaylanmış bir çift harcamayı yapısı gereği imkansız kılar. İlginç durumların hepsi onaydan önce ortaya çıkar ve bunlardan üç tanesi vardır.
Yaygın olanı değiştirmedir. Aynı çıktıyı harcayan iki işlem çakışır ve yalnızca biri hayatta kalabilir. Düğümler ilk geleni kabul eder ve normalde ikinciyi yok sayar, ancak daha yüksek ücret ödeyen bir değiştirmeyi iletirler. Ekim 2024'te yayımlanan Bitcoin Core 28.0 sürümünden bu yana -mempoolfullrbf ayarı varsayılan olarak açıktır, yani bir düğüm, özgün işlem değiştirilebilir olmayı talep etmiş olsun ya da olmasın, daha yüksek ücretli çakışan bir işlemi iletir. Onaylanmamış her şey açıktadır.
İkincisi bir yarıştır. Saldırgan aynı anda bir işlemi satıcının düğümüne, bununla çakışan bir işlemi de ağın geri kalanına yayınlar ve kendisine ödeme yapan sürümün madencilere önce ulaşacağına oynar. Ek ücrete gerek yoktur, yalnızca daha iyi bağlantı gerekir.
Üçüncüsü, çoğunluk hash gücü gerektiren ve %51 saldırısı başlığı altında ele alınan bir yeniden düzenlemedir. Hâlihazırda bir blokta yer alan bir ödemeyi geri alabilen tek yöntem budur.
Bitcoin'in kendi kodu bu konuda kamuya açık olarak tam olarak bir kez yanılmıştır. Eylül 2018'de açıklanan CVE-2018-17144, bir işlemin aynı girdiyi iki kez harcamasına, bunu denetleyen düğümü çökertmeden olanak tanıyan bir hataydı. Bitcoin Core 0.16.3 düzeltmeyi günler içinde yayımladı ve zincirde bir zarar oluşmadı, ancak bu, garantinin insanların denetlemeye devam etmesi gereken bir yazılım tarafından uygulandığını hatırlatan yararlı bir örnektir.
Bitcoin satın alırken bu neden önemli
Alıcılar neredeyse hiçbir zaman bir çift harcamanın mağduru olmaz. Bir borsaya dolar veya euro gönderip Bitcoin aldığınızda takas riskini borsa taşır, bu yüzden bir para çekmeyi serbest bırakmadan önce onayları bekler ve bu yüzden para yatırmalar bir ilerleme sayacı gösterir. Bitcoinler sizin kontrol ettiğiniz bir adrese ulaştığında artık kimse onları yeniden harcayamaz, çünkü harcama sizin imzanızı gerektirir.
Durum, Bitcoin alan taraf siz olduğunuz anda tersine döner. Bu, insanların beklediğinden daha sık olur: eşler arası bir işlemde Bitcoin satmak, serbest çalışma karşılığında Bitcoin kabul etmek, ödeme alan bir dükkân işletmek. Her durumda hata, onaylanmamış bir işlem karşılığında mal, nakit veya banka havalesi teslim etmektir. En az bir blok bekleyin, daha büyük tutarlarda birkaç blok bekleyin.
Bu ifade üzerine kurulu bir dolandırıcılık türü de vardır. Mesajlaşma uygulamalarındaki ve video sitelerindeki satıcılar, bir ücret karşılığında "double spend software", "flash BTC" veya harcanabilir Bitcoin ürettiği iddia edilen araçlar sunar. Sattıkları hiçbir şey işe yaramaz, çünkü geçersiz işlem ağdaki her düğüm tarafından reddedilir; ürün, ödediğiniz ücrettir. Güvenlik rehberimiz bunun ait olduğu dolandırıcılık ailesini ele alır.
Lightning sorunun biçimini değiştirir, onu ortadan kaldırmaz. Ödemeler bir kanal bakiyesine karşı saniyeler içinde sonuçlanır, böylece bir satıcının blokları beklemesi gerekmez ve çift harcama sorusu, bir kanal ortağının eski bir durumu yayınlamaya çalışıp çalışmadığına döner; gözetleme kuleleri (watchtower) bunu cezalandırmak için vardır.
Onaylanmamış bir ödemeyi değiştirme, adım adım
Onaylanmamış bir ödemeyi değiştirmek saldırının ucuz sürümüdür ve gerçek sayılarla üzerinden geçmeye değer.
Alice bir dizüstü bilgisayar satın alır ve 0,01 BTC öder. Cüzdanı, yaklaşık 141 sanal baytlık bir girdili, iki çıktılı bir SegWit işlemi oluşturur ve 3 sat/vB, yani 423 satoshi ücret ekler. Mağazanın terminali ödemeyi alınmış olarak gösterir ve dizüstü bilgisayar kapıdan çıkar.
Bir blok gelmeden önce Alice aynı girdiyi harcayan ikinci bir işlem yayınlar, bu kez bitcoinleri kendi adresine gönderir ve 20 sat/vB, yani 2.820 satoshi ücret öder. Madenciler kendileri için daha değerli olan sürümü alır. Blok geldiğinde mağazanın ödemesi mempool'dan silinir ve asla onaylanmaz. Alice fazladan 2.397 satoshi harcamıştır, çoğu fiyat düzeyinde bir doların çok altında, ve hem dizüstü bilgisayarı hem de bitcoinleri elinde tutar.
Bu dizide sıra dışı hiçbir şey yoktur ve hiçbir hash gücü devreye girmez. Savunmanın maliyeti de yoktur: bir blok bekleyin, ortalama yaklaşık on dakika, ve değiştirme penceresi kapanır.
Çift harcama vs replace-by-fee
Replace-by-fee aynı mekanizmanın dürüstçe kullanılmasıdır. Kendi ödemeniz takılıp kaldığında, onu aynı alıcıya daha yüksek ücretle yeniden yayınlarsınız ve ağ eski sürümü sorunsuzca değiştirir. Çift harcama ise bu mekanizmayı ödemenin kime gittiğini değiştirmek için kullanır. İletim politikası ikisini ayırt edemez, çünkü fark çıktılarda ifade edilen niyettir; bu yüzden onaylanmamış ödeme kabul eden satıcılar artık bunların her birinin değiştirilebilir olduğunu varsayar.
Çift harcama vs işlem değiştirilebilirliği
Değiştirilebilirlik, bir işlemin ödediği şeyi değiştirmeden tanımlayıcısını değiştirir. Bitcoinler yine amaçlanan alıcıya gider; yalnızca izlediğiniz txid eskir, bu da geçmişte borsa muhasebesini ve Mt. Gox borsasının Şubat 2014 tarihindeki para çekme sistemini bozmuştur. Ağustos 2017'de etkinleştirilen SegWit, imzaları txid'ye hashlenen verinin dışına taşıyarak üçüncü taraf değiştirilebilirliğini ortadan kaldırdı. Değiştirilmiş bir işlem bir muhasebe sorunudur; çift harcama ise ortadan kaybolan bir ödemedir.