Bitcoin: Eşler Arası Elektronik Nakit Sistemi

Satoshi Nakamoto

satoshin@gmx.com

www.bitcoin.org


Özet . Elektronik paranın tamamen eşler arası versiyonu, çevrimiçi ödemelerin bir finans kurumundan geçmeden doğrudan bir taraftan diğerine gönderilmesine izin verecektir. Dijital imzalar çözümün bir parçasını sağlar, ancak çifte harcamayı önlemek için hala güvenilir bir üçüncü tarafa ihtiyaç duyulursa ana faydalar kaybolur. Eşler arası bir ağ kullanarak çifte harcama sorununa bir çözüm öneriyoruz. Ağ, işlemleri devam eden bir hash tabanlı çalışma kanıtı zincirine hashleyerek zaman damgası vurur ve iş kanıtını yeniden yapmadan değiştirilemeyecek bir kayıt oluşturur. En uzun zincir, yalnızca tanık olunan olaylar dizisinin kanıtı değil, aynı zamanda en büyük CPU gücü havuzundan geldiğinin de kanıtıdır. CPU gücünün çoğunluğu ağa saldırmak için işbirliği yapmayan düğümler tarafından kontrol edildiği sürece, bunlar en uzun zinciri oluşturacak ve saldırganları geride bırakacaktır. Ağın kendisi minimum yapı gerektirir. Mesajlar en iyi çaba temelinde yayınlanır ve düğümler, gittikleri sırada ne olduğunun kanıtı olarak en uzun çalışma kanıtı zincirini kabul ederek ağdan istedikleri zaman ayrılıp yeniden katılabilirler.

 

1. Giriş

İnternette ticaret, elektronik ödemeleri işlemek için neredeyse tamamen güvenilir üçüncü taraflar olarak hizmet veren finansal kurumlara güvenmeye başladı. Sistem çoğu işlem için yeterince iyi çalışsa da, güvene dayalı modelin doğasında var olan zayıflıklardan muzdariptir. Tamamen geri dönüşü olmayan işlemler, finansal kurumlar ihtilaflara aracılık etmekten kaçınamayacakları için pek mümkün değildir. Arabuluculuğun maliyeti, minimum pratik işlem boyutunu sınırlayarak ve küçük geçici işlemler olasılığını ortadan kaldırarak işlem maliyetlerini artırır ve geri dönüşü olmayan hizmetler için geri dönüşü olmayan ödemeler yapma yeteneğinin kaybında daha geniş bir maliyet vardır. Tersine dönme olasılığı ile güven ihtiyacı yayılır. Tüccarlar, aksi takdirde ihtiyaç duyacaklarından daha fazla bilgi için onları rahatsız ederek müşterilerine karşı dikkatli olmalıdır. Dolandırıcılığın belirli bir yüzdesi kaçınılmaz olarak kabul edilmektedir. Bu maliyetler ve ödeme belirsizlikleri, fiziksel para birimi kullanılarak şahsen önlenebilir, ancak güvenilir bir taraf olmadan bir iletişim kanalı üzerinden ödeme yapmak için hiçbir mekanizma yoktur.

İhtiyaç duyulan şey, güven yerine kriptografik kanıta dayalı, herhangi iki istekli tarafın güvenilir bir üçüncü tarafa ihtiyaç duymadan birbirleriyle doğrudan işlem yapmasına izin veren bir elektronik ödeme sistemidir. Hesaplama açısından tersine çevrilmesi pratik olmayan işlemler, satıcıları dolandırıcılıktan koruyacak ve alıcıları korumak için rutin emanet mekanizmaları kolayca uygulanabilecektir. Bu yazıda, işlemlerin kronolojik sırasının hesaplamalı kanıtını oluşturmak için eşler arası dağıtılmış bir zaman damgası sunucusu kullanarak çifte harcama sorununa bir çözüm öneriyoruz. Dürüst düğümler toplu olarak, işbirliği yapan herhangi bir saldırgan düğüm grubundan daha fazla CPU gücünü kontrol ettiği sürece sistem güvenlidir.

2. İşlemler

Elektronik parayı bir dijital imza zinciri olarak tanımlıyoruz. Her sahip, bir önceki işlemin hash'ini ve bir sonraki sahibin açık anahtarını dijital olarak imzalayarak ve bunları koinin sonuna ekleyerek parayı bir sonrakine aktarır. Alacaklı, sahiplik zincirini doğrulamak için imzaları doğrulayabilir.

Elbette sorun, alacaklının, sahiplerden birinin parayı iki kez harcamadığını doğrulayamamasıdır. Yaygın bir çözüm, her işlemi çifte harcama için kontrol eden güvenilir bir merkezi otorite veya darphane getirmektir. Her işlemden sonra, yeni bir madeni para basmak için madeni paranın darphaneye iade edilmesi gerekir ve yalnızca doğrudan darphaneden çıkarılan madeni paraların çifte harcanmayacağına güvenilir. Bu çözümdeki sorun, tüm para sisteminin kaderinin, tıpkı bir banka gibi, her işlemin bu şirketlerden geçmesi gerektiği için darphaneyi yöneten şirkete bağlı olmasıdır.

Alacaklının önceki sahiplerin daha önceki herhangi bir işlemi imzalamadığını bilmesi için bir yola ihtiyacımız var. Amaçlarımız açısından, en erken işlem önemli olan işlemdir, bu nedenle daha sonra çifte harcama girişimlerini önemsemeyiz. Bir işlemin olmadığını doğrulamanın tek yolu, tüm işlemlerden haberdar olmaktır. Darphane tabanlı modelde, darphane tüm işlemlerden haberdardı ve hangisinin önce geldiğine karar verdi. Bunu güvenilir bir taraf olmadan başarmak için, işlemlerin herkese açık olarak duyurulması gerekir [1] ve katılımcıların, alındıkları sıranın tek bir geçmişi üzerinde anlaşmaları için bir sisteme ihtiyacımız var. Alacaklının, her işlem sırasında, düğümlerin çoğunluğunun bunun ilk alınan işlem olduğu konusunda hemfikir olduğuna dair kanıta ihtiyacı vardır.

3. Zaman Damgası Sunucusu

Önerdiğimiz çözüm, bir zaman damgası sunucusuyla başlar. Bir zaman damgası sunucusu, zaman damgası eklenecek bir öğe bloğunun karmasını alarak ve hash'i bir gazetede veya Usenet gönderisinde olduğu gibi geniş çapta yayınlayarak çalışır [2-5]. Zaman damgası, hash'e girebilmek için verilerin o sırada var olması gerektiğini kanıtlar. Her zaman damgası, hash'inde bir önceki zaman damgasını içerir ve her ek zaman damgası kendisinden öncekileri güçlendiren bir zincir oluşturur.

4. İş Kanıtı

Eşler arası dağıtılmış bir zaman damgası sunucusu uygulamak için, gazete veya Usenet gönderileri yerine Adam Back'in Hashcash'ine [6] benzer bir çalışma kanıtı sistemi kullanmamız gerekecek. İş ispatı, SHA-256'da olduğu gibi hash yapıldığında hash'in bir dizi sıfır bit ile başladığı bir değerin taranmasını içerir. Gereken ortalama çalışma, gereken sıfır bit sayısı açısından üsteldir ve tek bir karma işlemi yürüterek doğrulanabilir.

Zaman damgası ağımız için, bloğun hash'ine gerekli sıfır biti veren bir değer bulunana kadar blokta bir noni artırarak çalışma kanıtını uygularız. İş kanıtını sağlamak için CPU çabası harcandıktan sonra, iş yeniden yapılmadan blok değiştirilemez. Daha sonraki bloklar ondan sonra zincirlendiğinden, bloğu değiştirme işi, ondan sonraki tüm blokları yeniden yapmayı içerecektir.

İş ispatı, çoğunluk karar vermede temsili belirleme sorununu da çözer. Çoğunluk bir IP adresi bir oya dayalı olsaydı, birçok IP tahsis edebilen herhangi biri tarafından altüst edilebilirdi. Proof of work esasen bir CPU bir oydur. Çoğunluğun kararı, kendisine yatırılan en büyük çalışma kanıtı çabasına sahip olan en uzun zincir tarafından temsil edilir. CPU gücünün çoğunluğu dürüst düğümler tarafından kontrol ediliyorsa, dürüst zincir en hızlı şekilde büyüyecek ve rakip zincirleri geride bırakacaktır. Geçmiş bir bloğu değiştirmek için, bir saldırganın bloğun ve ondan sonraki tüm blokların çalışma kanıtını yeniden yapması ve ardından dürüst düğümlerin işini yakalayıp geçmesi gerekir. Daha sonra, daha yavaş bir saldırganın yakalama olasılığının, sonraki bloklar eklendikçe katlanarak azaldığını göstereceğiz.

Artan donanım hızını ve çalışan düğümlere zaman içinde değişen ilgiyi telafi etmek için, çalışma kanıtı zorluğu, saatte ortalama blok sayısını hedefleyen hareketli bir ortalama ile belirlenir. Çok hızlı üretilirlerse zorluk artar.

5. Ağ

Ağı çalıştırma adımları aşağıdaki gibidir:

1)    Yeni işlemler tüm düğümlere yayınlanır.

2)    Her düğüm, yeni işlemleri bir blokta toplar.

3)    Her düğüm, bloğu için zor bir çalışma kanıtı bulmaya çalışır.

4)    Bir düğüm bir çalışma kanıtı bulduğunda bloğu tüm düğümlere yayınlar.

5)    Düğümler bloğu yalnızca içindeki tüm işlemler geçerliyse ve henüz harcanmamışsa kabul eder.

6)    Düğümler, kabul edilen bloğun hash'ini bir önceki hash olarak kullanarak zincirdeki bir sonraki bloğu oluşturmaya çalışarak bloğu kabul ettiklerini ifade ederler.

Düğümler her zaman en uzun zincirin doğru olduğunu düşünür ve onu uzatmak için çalışmaya devam eder. İki düğüm bir sonraki bloğun farklı sürümlerini aynı anda yayınlarsa, bazı düğümler önce birini veya diğerini alabilir. Bu durumda ilk aldıkları şube üzerinde çalışırlar, ancak uzayabilir diye diğer şubeyi saklarlar. Bir sonraki çalışma ispatı bulunduğunda ve bir dal uzadığında bağ bozulacak; diğer dalda çalışan düğümler daha sonra daha uzun olana geçer.

Yeni işlem yayınlarının tüm düğümlere ulaşması gerekmez. Birçok düğüme ulaştıklarında, çok geçmeden bir bloğa gireceklerdir. Blok yayınlar ayrıca bırakılan mesajlara karşı toleranslıdır. Bir düğüm bir blok almazsa, bir sonraki bloğu aldığında ve kaçırdığını fark ettiğinde bunu isteyecektir.

6. Teşvik

Geleneksel olarak, bir bloktaki ilk işlem, bloğun yaratıcısına ait yeni bir madeni parayı başlatan özel bir işlemdir. Bu, düğümlerin ağı desteklemesi için bir teşvik ekler ve madeni paraları basacak merkezi bir otorite olmadığı için başlangıçta dolaşıma dağıtmak için bir yol sağlar. Sabit miktarda yeni madeni paranın istikrarlı bir şekilde eklenmesi, altın madencilerinin dolaşıma altın eklemek için kaynakları harcamasına benzer. Bizim durumumuzda, harcanan CPU zamanı ve elektriktir.

Teşvik, işlem ücretleri ile de finanse edilebilir. Bir işlemin çıktı değeri girdi değerinden küçükse aradaki fark, işlemi içeren bloğun teşvik değerine eklenen bir işlem ücretidir. Önceden belirlenmiş sayıda madeni para dolaşıma girdikten sonra, teşvik tamamen işlem ücretlerine geçebilir ve tamamen enflasyonsuz olabilir.

Teşvik, düğümleri dürüst kalmaya teşvik etmeye yardımcı olabilir. Açgözlü bir saldırgan, tüm dürüst düğümlerden daha fazla CPU gücü toplayabilirse, bunu kullanarak ödemelerini geri çalarak insanları dolandırmak veya yeni paralar oluşturmak için kullanmak arasında seçim yapması gerekir. Sistemi ve kendi servetinin geçerliliğini baltalamaktansa, herkesin toplamından daha fazla yeni madeni para kazanmasını sağlayan kurallara göre oynamayı daha karlı bulmalıdır .

7. Disk Alanı Kazanma

Bir madeni paradaki en son işlem yeterli bloğun altına gömüldüğünde, disk alanından tasarruf etmek için ondan önceki harcanan işlemler atılabilir. Blok hash'ini bozmadan bunu kolaylaştırmak için, işlemler bir Merkle Ağacı'nda [7][2][5] hash'lenir, bloğun hash'ine yalnızca kök dahil edilir. Eski bloklar daha sonra ağacın dalları kesilerek sıkıştırılabilir. İç karmaların saklanması gerekmez.

İşlem içermeyen bir blok başlığı yaklaşık 80 bayt olacaktır. Blokların her 10 dakikada bir üretildiğini varsayarsak, yılda 80 bayt * 6 * 24 * 365 = 4,2 MB. 2008 itibariyle genellikle 2 GB RAM ile satılan bilgisayar sistemleri ve şu anki büyümeyi öngören Moore Yasası ile

Yılda 1,2 GB, blok başlıkları bellekte tutulsa bile depolama sorun olmaz.

8. Basitleştirilmiş Ödeme Doğrulaması

Tam bir ağ düğümü çalıştırmadan ödemeleri doğrulamak mümkündür. Bir kullanıcının yalnızca, en uzun zincire sahip olduğuna ikna olana kadar ağ düğümlerini sorgulayarak elde edebileceği en uzun çalışma kanıtı zincirinin blok başlıklarının bir kopyasını tutması ve işlemi bloğa bağlayan Merkle şubesini alması gerekir. İşlemi kendisi kontrol edemez, ancak zincirdeki bir yere bağlayarak, bir ağ düğümünün işlemi kabul ettiğini ve ağın kabul ettiğini onayladıktan sonra eklenen blokları görebilir.

Bu nedenle, dürüst düğümler ağı kontrol ettiği sürece doğrulama güvenilirdir, ancak ağ bir saldırgan tarafından aşırı güçlendirilirse daha savunmasızdır. Ağ düğümleri işlemleri kendileri için doğrulayabilirken, basitleştirilmiş yöntem, saldırgan ağa üstün gelmeye devam edebildiği sürece saldırganın fabrikasyon işlemleri tarafından kandırılabilir. Buna karşı korunmak için bir strateji, geçersiz bir blok algıladıklarında ağ düğümlerinden gelen uyarıları kabul etmek, kullanıcının yazılımının tutarsızlığı doğrulamak için tüm bloğu ve uyarılmış işlemleri indirmesini istemek olacaktır. Sık ödeme alan işletmeler muhtemelen daha bağımsız güvenlik ve daha hızlı doğrulama için kendi düğümlerini çalıştırmak isteyeceklerdir.

9. Değeri Birleştirme ve Bölme

Madeni paraları tek tek ele almak mümkün olsa da, bir transferdeki her kuruş için ayrı bir işlem yapmak hantal olacaktır. Değerin bölünmesine ve birleştirilmesine izin vermek için, işlemler birden fazla girdi ve çıktı içerir. Normalde, daha büyük bir önceki işlemden tek bir girdi veya daha küçük tutarları birleştiren birden çok girdi ve en fazla iki çıktı olacaktır: biri ödeme için ve biri varsa değişikliği gönderene geri döndüren.

Bir işlemin birkaç işleme bağlı olduğu ve bu işlemlerin çok daha fazlasına bağlı olduğu fan-out'un burada bir sorun olmadığına dikkat edilmelidir. Bir işlemin geçmişinin tam bir bağımsız kopyasını çıkarmaya hiçbir zaman ihtiyaç yoktur.

10. Gizlilik

Geleneksel bankacılık modeli, ilgili taraflarla ve güvenilir üçüncü taraflarla bilgilere erişimi sınırlandırarak bir gizlilik düzeyine ulaşır. Tüm işlemlerin herkese açık olarak duyurulması gerekliliği bu yöntemi engeller, ancak gizlilik yine de bilgi akışını başka bir yerde keserek korunabilir: genel anahtarları anonim tutarak. Halk, birinin başka birine bir meblağ gönderdiğini görebilir, ancak işlemi herhangi birine bağlayan bilgi olmadan. Bu, bireysel işlemlerin zaman ve boyutunun, "kaset"in halka açıklandığı, ancak tarafların kim olduğunu söylemediği borsalar tarafından yayınlanan bilgi düzeyine benzer.

Ek bir güvenlik duvarı olarak, ortak bir sahipe bağlanmalarını önlemek için her işlem için yeni bir anahtar çifti kullanılmalıdır. Girdilerinin aynı sahibine ait olduğunu zorunlu olarak ortaya koyan çok girdili işlemlerde bazı bağlantılar hala kaçınılmazdır. Risk, bir anahtarın sahibi ortaya çıkarsa, bağlantının aynı sahibine ait diğer işlemleri ortaya çıkarmasıdır.

11. Hesaplamalar

Dürüst zincirden daha hızlı bir alternatif zincir oluşturmaya çalışan bir saldırganın senaryosunu ele alıyoruz. Bu başarılsa bile, sistemi hiç yoktan değer yaratma veya asla saldırgana ait olmayan parayı alma gibi keyfi değişikliklere açık bırakmaz. Düğümler, geçersiz bir işlemi ödeme olarak kabul etmeyecek ve dürüst düğümler, bunları içeren bir bloğu asla kabul etmeyecektir. Bir saldırgan, son zamanlarda harcadığı parayı geri almak için yalnızca kendi işlemlerinden birini değiştirmeye çalışabilir.

Dürüst zincir ile saldırgan zincir arasındaki yarış, Binom Rastgele Yürüyüşü olarak nitelendirilebilir. Başarı olayı, dürüst zincirin bir blok uzatılarak liderliğini +1 artırmasıdır ve başarısızlık olayı, saldırganın zincirinin bir blok uzatılarak boşluğu -1 azaltmasıdır.

Bir saldırganın belirli bir açığı yakalama olasılığı, Kumarbazın Harabesi sorununa benzer. Sınırsız kredisi olan bir kumarbazın bir açıkla başladığını ve başabaş noktasına ulaşmak için potansiyel olarak sonsuz sayıda deneme oynadığını varsayalım.

p > q varsayımımız göz önüne alındığında, saldırganın yakalaması gereken blok sayısı arttıkça olasılık katlanarak düşer. Aleyhindeki ihtimallerle, erkenden ileriye doğru şanslı bir hamle yapmazsa, daha da geride kaldıkça şansı yok olacak kadar azalır.

Şimdi, yeni bir işlemin alıcısının, gönderenin işlemi değiştiremeyeceğinden yeterince emin olmadan önce ne kadar beklemesi gerektiğini ele alacağız. Gönderenin, alıcıyı bir süreliğine kendisine ödeme yaptığına inandırmak, ardından bir süre geçtikten sonra parayı kendisine geri ödemesi için değiştirmek isteyen bir saldırgan olduğunu varsayıyoruz. Bu olduğunda alıcı uyarılır, ancak gönderen çok geç olacağını umar.

Alıcı, yeni bir anahtar çifti oluşturur ve imzalamadan kısa bir süre önce göndericiye genel anahtarı verir. Bu, gönderenin, yeterince ileri gidecek kadar şanslı olana kadar sürekli olarak üzerinde çalışarak ve ardından işlemi o anda gerçekleştirerek önceden bir blok zinciri hazırlamasını engeller. İşlem gönderildikten sonra, dürüst olmayan gönderen, işleminin alternatif bir sürümünü içeren paralel bir zincir üzerinde gizlice çalışmaya başlar.

Alıcı, işlem bir bloğa eklenene ve ondan sonra z blokları bağlanana kadar bekler. Saldırganın kaydettiği ilerleme miktarını tam olarak bilmiyor, ancak dürüst blokların blok başına ortalama beklenen süreyi aldığını varsayarsak, saldırganın potansiyel ilerlemesi bir Poisson dağılımı olacaktır.

12. Sonuç

Güvene dayanmadan elektronik işlemler için bir sistem önerdik. Sahiplik üzerinde güçlü bir kontrol sağlayan, ancak çifte harcamayı önlemenin bir yolu olmadan eksik olan, dijital imzalardan yapılan madeni paraların olağan çerçevesiyle başladık. Bunu çözmek için, dürüst düğümlerin CPU gücünün çoğunluğunu kontrol etmesi durumunda bir saldırganın değiştirmesi hızlı bir şekilde hesaplama açısından pratik olmayan hale gelen genel bir işlem geçmişini kaydetmek için çalışma kanıtı kullanan bir eşler arası ağ önerdik. Ağ, yapılandırılmamış basitliği içinde sağlamdır. Düğümler çok az koordinasyonla aynı anda çalışır. Mesajlar belirli bir yere yönlendirilmediğinden ve yalnızca en iyi çaba temelinde iletilmesi gerektiğinden, tanımlanmaları gerekmez. Düğümler, çalışma kanıtı zincirini gittikleri sırada olanların kanıtı olarak kabul ederek istedikleri zaman ağdan ayrılıp yeniden katılabilir. İşlemci güçleriyle oy verirler, geçerli blokları genişletmeye çalışarak kabul ettiklerini ve üzerinde çalışmayı reddederek geçersiz blokları reddederler. Bu mutabakat mekanizması ile gerekli tüm kurallar ve teşvikler uygulanabilir.

 

Referanslar[1]         W. Dai, "b-money" http://www.weidai.com/bmoney.txt, 1998.[2]H. Massias , XS Avila ve J.-J. Quisquater , "Minimum güven gereksinimleriyle güvenli bir zaman damgası hizmetinin tasarımı", Benelüks'teki 20. Bilgi Teorisi Sempozyumu'nda, Mayıs 1999.[3]             S. Haber, WS Stornetta , "Dijital bir belgeye zaman damgası nasıl basılır," Journal of Cryptology, cilt 3, no 2, sayfalar 99-111, 1991.[4]        D. Bayer, S. Haber, WS Stornetta , "Dijital zaman damgasının verimliliğini ve güvenilirliğini artırma", Sekans II'de: İletişim, Güvenlik ve Bilgisayar Bilimlerinde Yöntemler, sayfalar 329-334, 1993.[5]      S. Haber, WS Stornetta , "Secure name for bit-strings", Proceedings of the 4th ACM Conference on Computer and Communications Security, sayfalar 28-35, Nisan 1997.[6]                A. Back, " Hashcash - hizmet reddine karşı önlem" http://www.hashcash.org/papers/hashcash.pdf, 2002.[7]              RC Merkle, "Genel anahtar şifreleme sistemleri için protokoller", Proc. 1980 Güvenlik ve Gizlilik Sempozyumu, IEEE Computer Society, sayfalar 122-133, Nisan 1980.[8]W. Feller, "Olasılık teorisine ve uygulamalarına giriş", 1957.

Bitcoin satın almak

buradan satın alabilirsiniz .