Bitcoin Whitepaper

DFWZ...WSva
19 Jan 2024
38

Bitcoin: Eşler Arası Elektronik Nakit Sistemi
Satoshi Nakamoto

satoshin@gmx.com
 www.bitcoin.org

Tamamen elektronik bir nakit versiyonu, çevrimiçi ödemelerin bir varlıktan diğerine doğrudan gönderilmesine izin verir. Hepsi bir finans kurumundan geçmek zorunda kalmadan. Dijital imzalar, sorunun çözümünün bir kısmını sağlar, ancak çifte harcamayı önlemek için güvenilir bir üçüncü taraf olması gerekiyorsa, ana faydalar kaybolur . Kullanıcıdan kullanıcıya bir ağ kullanarak çift harcama sorununa bir çözüm öneriyoruz.
Ağ, hash hesaplamasına dayalı olarak sürekli bir iş kanıtı zincirine girdiği işlemleri zaman damgası ile damgalar. Bu, tam çalışma kanıtı yeniden oluşturulmadan değiştirilemeyecek bir kayıt oluşturur. En uzun dize, yalnızca olayların dizisinin bir simgesi ve kanıtı olarak hizmet etmez. Ama aynı zamanda en büyük CPU işlemeye sahip havuzdan gelmesini sağlar.
CPU işlem gücünün çoğu nodelerin kontrolü altında olduğu sürece. ağa saldırmak için işbirliği yapmazlar. Bu şekilde en uzun zinciri oluşturacaklar ve saldırganlara avantaj sağlayacaklar. Ağın kendisi minimum bir yapı gerektirir. Mesajlar en az çabayla gönderilir ve nodeler istedikleri zaman ağdan ayrılıp yeniden katılabilir. Yokluğunda olanların kanıtı olarak her zaman en uzun iş kanıtı zincirini kabul etmek.
1. Giriş — (Introduction)
İnternet üzerinde ticaret kavramı, tamamen elektronik ticaret üzerine yoğunlaşmış 3. parti ödeme sistemlerine bağlıdır ve bunlara güvenmektedir. Sistem çoğu işlem için temelinde yeterince güvenli çalışıyor olsa bile, güven temelli modelin doğasında bulunan zayıf yönlerini hala taşımaktadır. Finansal kurumlar aralarındaki anlaşmazlıkları çözene kadar, tamamen geri çevrilemez işlemler mümkün değildir. Aracılık maliyetleri işlem maliyetlerini arttırır, minimum işlem limitleri düşük tutarlı işlemleri engeller ve komisyonlar işlemlerin geri çevrimine engel teşkil eder. İşlemden geri dönülmesi tamamen karşılıklı güvene bağlıdır. Aracı kurumlar, müşterilerine karşı dikkatli olmalıdır çünkü gereğinden fazla alınan bilgi müşterileri rahatsız eder. Dolandırıcılık belirli ölçülerde makul kabul edilir. Bu maliyetler ve belirsizlikler fiziksel para kullanımı ile önlenebilir, ancak iletişim kanalları kullanarak ödeme işlemi yapılacaksa güvenilir bir üçüncü parti gerekmektedir.
İhtiyaç duyulan şey; güven yerine şifreleme kanıtı üzerine kurulu, iki tarafın birbiri ile doğrudan bağlantılı olduğu elektronik bir ödeme sistemidir. işlemi tersine çevirmek için hesaplaması zor olan işlemler tarafları dolandırıcılıktan koruyacaktır. Bu makalede, işlemlerin kronolojik sıralamasının hesaplama kanıtı oluşturmak için bir eşler arası dağıtılan zaman damgası sunucusu kullanarak çift harcamalı soruna bir çözüm önermekteyiz. Bu sistem, ağa dahil olan dürüst nodelerin işlemci gücünün, ortak çalışan saldırgan nodelerin işlemci gücünden fazlalığı oranında güvenlidir.
2. İşlemler — (Transactions)
Bir elektronik parayı bir dijital imza (hash) zinciri olarak tanımlıyoruz. Her işlem sahibi, bir önceki işlemin dijital imzasını kullanarak işlemini imzalar ve bir sonrakine aktarır. Ödemeyi alan imzaları doğrulayarak sahiplik zincirini tamamlar.
Buradaki sorun, ödemeyi alanın, önceki işlem sahiplerinden birinin parayı iki kere kullanmadığını doğrulayamamasıdır. Bu sorun için yaygın çözüm, mükerrer harcamaları kontrol eden bir merkezi otorite (merkez bankası, banka, vb.) olmasıdır. Her işlemden sonra para, merkezi otoriteye geri döner ve buradan bir yenisi ile işleme devam edilir. Ancak bu çözümdeki sorun; tüm para transferlerinin akıbetinin merkezi otoriteye (ya da bunu yöneten şirkete, ya da bir bankaya) bağlı olmasıdır.
Bir önceki işlem sahibinin, daha önceki işlemleri imzalamamış olduğundan emin olmamız gerekmektedir. Bizim amacımız, ilk işlemin bir kez sayılmasıdır. Sonraki aşamalardaki mükerrer işlem girişimleri ile ilgilenmeyiz. Bir işlemin yokluğunu tanımlamanın tek yolu tüm işlemlerin farkında olmaktır. Merkezi otorite tabanlı modelde, merkezi otorite tüm işlemlere hakimdir ve hangi işlemin ilk işlem olduğunun farkındadır. Bunu güvenilir bir otorite olmadan yapabilmek için ise, tüm işlemlerin halka açık olduğu [1] ve tüm katılımcıların işlemlerin sırasını onaylayacakları bir sisteme ihtiyaç vardır.
3. Zaman Damgası Sunucusu (ZDS) — (Timestamp Server)
Önerdiğimiz çözüm, bir zaman damgası sunucusu ile başlar. Bir ZDS, zaman damgalanacak bir dizi mesaj blokunun dijital imza (hash) değerinin alınması ve tüm ağa yayınlanması (örneğin bir gazete ya da UseNet [2–5]) ile başlar. Zaman damgası o datanın o zamanda var olduğunu ve dijital imzaya (hash) girmesi gerektiğini kanıtlar. Her bir zaman damgası zinciri oluşturan bir önceki zaman damgasını içerir ve her eklenen zaman damgası kendisinden öncekini güçlendirir.
4. İş Kanıtı — (Proof-of-Work)
Dağıtık bir zaman damgası sunucusunu eşler arası uygulamak için, gazeteden veya UseNet tarzı yayınlardan ziyade Adam Back’in Hashcash [6] ‘na benzer bir İş Kanıtı (PoW) sistemi kullanmamız gerekecektir. İş kanıtı, temelde, SHA-256 gibi şifreleme algoritması ile dijital olarak imzalandığında, bu dijital imzanın belirli sayıda 0 (sıfır) biti ile başlamasını arar. Gerek duyulan ortalama iş, gerek duyulan sıfır bit sayısı ile üstel olur ve tek bir hash çalıştırılarak doğrulanabilir.
Bizim zaman damgası ağımızda, iş kanıtını, blokun dijital imzasında istenen 0 (sıfır) değerine ulaşana kadar arttırdığımız bir “nonce” değeri ile sağlarız. İşlemci (CPU) iş kanıtını sağlayacak işlemleri bir kez yaptıktan sonra, aynı işlemler yapılmadan blok bir daha değiştirilemez. Sonraki bloklar zincire eklendikten sonra, önceki blok değiştirildiğinde, sonra gelen tüm blokların da aynı şekilde değiştirilmesi gerekir.

İş kanıtı, aynı zamanda çoğunluğun kararının benimsenmesi sorununu da ortadan kaldırmaktadır. Eğer, “her IP için bir oy” tabanlı bir sistem olsaydı, IP’lerin çoğunluğuna sahip birisi tarafından kırılabilirdi. İş kanıtı, esas olarak “bir bilgisayar bir oy” temeline dayanır. Çoğunluk kararı, en büyük kanıtlama çalışması eforuna sahip en uzun zincir tarafından temsil edilir. CPU gücünün büyük bir çoğunluğu dürüst nodelerle kontrol edilirse, dürüst zincir en hızlı büyüyecek ve rakip zincirleri aşacaktır. Geçmişteki bir bloğu değiştirmeye çalışan bir saldırganın, o blokun ardından gelen tüm blokları da değiştirmesi gerekecek, ve akabinde mevcutta dürüst nodelerden kurulu bir zincirden daha uzun bir zincir oluşturması gerekecektir. Daha sonra inceleyeceğimiz üzere, daha yavaş kalacak olan bir saldırganın bloklar eklendikçe başarılı olma ihtimali katlanarak azalacaktır. Zaman içinde artan donanım hızları ve ve artan node sayısına uygun şekilde, her bir blok için iş kanıtı zorluk seviyesi hareketli ortalama metodu kullanılarak saatlik olarak yeniden hesaplanır. Çok hızlı oluşturulursa zorluk da artar.
5. Ağ — (Network)
Ağı çalıştırmak için gereken adımlar şunlardır;

  1. Her yeni işlem tüm nodelere yayınlanır.
  2. Her node yeni işlemleri bir blok içine toplar.
  3. Her node kendi bloku içinde bir iş kanıtı bulmaya çalışır.
  4. İş kanıtını bulan node, diğer tüm nodelere bu kanıtı yollar.
  5. Nodeler blok işindeki tüm işlemler doğrulanmışsa ve daha önce harcanmamışsa bloku kabul eder.
  6. Nodeler, kabul edilen blokun dijital imzasını (hash değerini) kullanarak zincirdeki bir sonraki bloku oluşturmaya çalışarak bloku onayladığını ifade eder.

Nodeler her zaman en uzun zinciri doğru olarak kabul eder ve onu genişletmeye çalışmaya devam eder. Eğer iki farklı node, bir sonraki blokun iki farklı versiyonunu yayınlarsa, diğer nodeler bunlardan herhangi birini alabilir. Bu durumda nodeler ilk aldıklarını doğru kabul edip zinciri uzatmaya devam ederler, ancak diğerini de daha fazla uzama ihtimaline karşılık saklarlar. Beraberlik, bir sonraki iş kanıtı bulunduğunda ve zincirlerden birisi daha uzun olduğunda bozulmuş olacaktır. Kısa kalan zincirde çalışan nodeler de uzun olana geçecektir.
Yeni işlem yayınlarının tüm nodelere ulaşması gerekmez. Birçok nodee eriştikleri sürece çok beklemeden bir bloka dahil olacaklardır. Blok yayınları mesaj kayıplarına karşı toleranslıdır. Eğer bir node bir bloku alamazsa bir sonraki bloku aldığında kaçırdığı bloku fark eder ve talep eder.
6. Harekete Geçirme/Teşvik— (Incentive)
Kurallara göre, blokun ilk işlemi blokun kurucusunun sahip olduğu yeni para birimini (coin) dolaşıma sokmasını sağlayan özel bir işlemdir. Bu, ağı desteklemek için nodeleri harekete geçirir ve merkezi bir otoriteye bağlı olmayan ilk coin’in dağıtıma sokulmasını sağlar. Yeni coin’lerin dolaşıma dahil olması, altın madencilerinin dolaşıma altın ekleyebilmek için kaynaklar harcamasına benzer. Burada harcanan işlemci gücü ve elektriktir.
Teşvik, işlem ücretleri ile de karşılanabilir. Bir işlemin çıktı değeri girdi değerinden düşükse, aradaki fark, işlemi içeren bloğun teşvik değerine eklenen bir işlem ücretidir. Önceden belirlenmiş sayıda coin dolaşıma sokulduğunda, işlemler sadece işlem ücretleri ile gerçekleşebilir ve tamamen enflasyondan bağımsız hale gelebilir.
Teşvik, nodelerin dürüst olmaya teşvik edilmesine yardımcı olabilir. Açgözlü bir saldırgan tüm dürüst nodelerden daha fazla işlemci gücü toplayabilirse, ödemelerini geri çalarak insanları dolandırabilir veya yeni paralar üretmek için onu kullanabilir. Aslında oyunu kurallarına göre oynamayı daha kârlı bulmalıdır. Bu kadar işlemci gücü varsa, sistemi kandırıp kendi zenginliğinin geçerliliğini de zedelemektense, kuralları işletmek ona daha çok coin getirisi sağlayacaktır.
7. Disk Alanından Tasarruf — (Reclaiming Disk Space)
Bir coin’in kullanıldığı son işlem yeteri kadar blokun altında kaldığında, bitmiş işlemler diskte yer açmak için silinebilir. Blokun dijital imzasını (hash) bozmamak için işlemler sadece kök seviyede Merkle Ağacı [7][2][5] içinde imzalanabilir. Daha sonra eski bloklar ağacın dallarını boşaltarak sıkıştırabilir. Dahili hash değerlerinin depolanması gerekmez.
Hiçbir işlem yapılmayan bir blok başlığı (header) yaklaşık 80 bayt olacaktır. Her 10 dakikada bir blok üretildiğini varsayarsak, 80 bayt * 6 * 24 * 365 = yılda 4.2MB. Bilgisayar sistemleri genellikle 2008 yılı itibariyle 2GB RAM ile satılmaktadır ve Moore Yasasına göre yılda 1.2GB artması tahmin edilmektedir. Blok başlıkları bellekte saklansalar bile depolama sorunu olması beklenmemektedir.
8. Basitleştirilmiş Ödeme Doğrulaması — (Simplified Payment Verification)
Ödemeleri, ağdaki tüm nodeleri çalıştırmadan da doğrulamak mümkündür. Kullanıcı sadece ağdaki en uzun iş kanıtı doğrulama zincirinin (en uzun zincir olduğundan emin oluncaya kadar ağ nodelerini sorgulayarak bulacağı zincir) bloklarının başlıklarının bir kopyasını saklamalıdır. Ve işlemin zaman-damgalanmış bloka bağlandığı Merkle dalını (Merkle Branch) elde eder. İşlemi kendisi kontrol edemez, ancak zincirdeki bir yere bağlayarak ağdaki nodelerin bunu onayladığını ve ağın onu kabul ettiğini doğruladıktan sonra blokları eklediğini görebilir.
İlginizi çekebilir: Ponzi dolandırıcılığı nedir? Kripto tarihinin en büyük Ponzi şemaları

Bu nedenle, doğrulama ağ dürüst nodelerle çalıştığı sürece güvenlidir. Ama saldırgan nodeler ağdaki işlemci gücünün fazlasını ele geçirirse savunmasız kalacaktır. Ağ nodeleri işlemleri kendi başlarına doğrulayabiliyorken, basitleştirilmiş metod saldırgan ağa hakim olduğu sürece saptırılabilir. Buna karşı bir strateji, ağ nodeleri hatalı bir blok ile karşılaştığında gelen alarmları dinlemek, kullanıcılardan alarm verilen işlemleri ve tüm bloku yüklemesini istemek ve tutarsızlığı doğrulamak olabilirdi. Sıkça ödeme alan işletmeler, muhtemelen, daha hızlı onay ve güvenlik için kendi nodelerini kullanmayı isteyeceklerdir.
9. Değerleri Birleştirme ve Bölme — (Combining and Splitting Value)
Coinleri tek tek ele almak mümkün olsa da, bir transferde her kuruş için ayrı bir işlem yapmak hantal olurdu. Değerin bölünmesine ve birleşmesi, işlemleri çoklu giriş ve çıkışlar halinde yapılmasıdır. Normalde, bir önceki daha büyük bir işlemden gelen tek bir giriş veya daha küçük miktarları birleştiren çoklu girişler ve en çok iki çıkış olur; bunlardan biri ödeme, diğeri (varsa) gönderene iadedir.

Bu dallanmada unutulmamalıdır ki, bir işlem çeşitli işlemlere bağlıdır ve bu işlemler de daha bir çoğuna bağlıdır, bu bir sorun değildir. Bu işlem geçmişinin eksiksiz bir kopyasını çıkarmaya ihtiyaç yoktur.
10. Gizlilik — (Privacy)
Geleneksel bankacılık modeli, taraflara ve güvenilir üçüncü partiye bilgi erişimi sınırlandırarak bir gizlilik seviyesine ulaşır. Tüm işlemlerin alenen ilan edilmesi gerekliliği bu metodu kullanılmaz kılar. Ancak gizlilik şu şekilde muhafaza edilebilir; Public Key’i anonim tutarak. Herkes, birisinin başka birisine ne kadar gönderim yaptığını görebilir ama bu bilgi kimse ile bağlantılı değildir. Bu, borsalarda ilan edilen işlem bilgilerine benzer.

Ek bir güvenlik duvarı olarak, ortak bir sahibe bağlanmalarını önlemek için her işlem için yeni bir anahtar çifti kullanılmalıdır. Bazı bağlantılarda (girdilerinin aynı sahip olduğunu açıklayan çok girişli işlemlerde) bu kaçınılmazdır. Buradaki risk, bir anahtarın sahibi ortaya çıkarsa, aynı sahibe ait diğer işlemlerin de ortaya çıkabilmesidir.
11. Hesaplamalar — (Calculations)
Bu senaryoda, saldırgan nodelerin, dürüst nodelerden daha hızlı iş çıkardığını (alternatif bir en uzun zincir oluşturmaya çalıştığını) düşünelim. Eğer bu yapılsa bile, bu durum sistemi keyfi değişikliklere (saldırganların kendine ait olmayan bir parayı üretmeleri gibi) maruz bırakmayacaktır. nodeler geçersiz bir işlemi ödeme olarak kabul etmeyecek ve dürüst nodeler bunları içeren bir bloku asla kabul etmeyecektir. Bir saldırgan, yalnızca son harcadığı parayı geri alabilmek için kendi işlemlerinden birini değiştirmeye çalışabilir.
Dürüst zincir ve bir saldırganın zinciri arasındaki yarış “Binomial Random Walk” (Binomiyal Rastsal Yürüyüş) ile karakterize edilebilir. Başarı durumu, dürüst zincirin bir blok genişlemesi ve öncülüğünün +1 olması, başarısızlık durumu ise, saldırgan zincirin bir blok genişlemesi ve aradaki farkın -1 azalmasıdır.
Belirli bir açığı yakalayacak bir saldırganın olasılığı, bir “Gambler’s Ruin” (Kumarbazın İflası) problemine benzer. Sınırsız kredisi olan bir kumarbazın bir açıkla (borçla) oyuna başladığını ve başabaş (ne kâr ne zarar) noktasına ulaşmaya çalışmak için sınırsız sayıda deneme hakkı olduğunu varsayalım. Aşağıda görüldüğü gibi, kumarbazın başabaş noktasına ulaşabilme ihtimalini hesaplayabiliriz, ya da saldırganın dürüst zinciri yakala ihtimalini hesaplayabiliriz.
p= dürüst bir nodeün bir sonraki bloğu bulma ihtimali
q = saldırgan bir sonraki bloğu bulma ihtimali
qz = saldırganın z blok geriden gelip yakalama ihtimali

p > q varsayımına göre, saldırganın yakalamak zorunda olduğu blok sayısı arttıkça yakalama olasılığı katlanarak düşer. Bu dezavantajı ile birlikte, eğer zincirin ilk halkalarında şanslı bir hamle yapmazsa, dürüst zincir uzadıkça şansı daha da azalır ve kaybolur.
Ş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ği konusunu ele alalım. Göndereni, bir süreliğine kendisine ödeme yaptığımızda inandırmak isteyen ve bir süre sonra ödemeyi kendisine döndürmeyi amaçlayan bir saldırgan olduğumuzu varsayalım. Böyle bir durumda alıcıya uyarı verilecektir, ancak saldırgan da bu uyarının çok geç olacağını ummaktadır.
Alıcı yeni bir anahtar çifti üretir ve “public key”i (public key’i imzalamadan kısa bir süre önce) gönderene yollar. Bu, gönderenin daha önceden uzun bir blok zinciri oluşturmasını ve en uzun zinciri oluşturduğu bir anda işlemi gerçekleştirmesinin önüne geçmiş olur. İşlem bir kere gönderildikten sonra, dürüst gönderici işleminin alternatif sürümünü içeren paralel bir zincir üzerinde gizli bir şekilde çalışmaya başlar.
Alıcı işlemin bir bloka bağlanmasını bekler ve ardından “z” sayısı kadar blok da bu bloka bağlanır. Alıcı, saldırganın ne kadar ilerlediğini bilmemektedir, ama dürüst blokların her blok başına ortalama beklenen bir süreyi aldığını varsayarsak, saldırganın potansiyel ilerlemesi “Poisson Dağılımına” göre beklenen bir değer alacaktır:

Saldırganın yetişebilme olasılığını elde etmek için, o noktadan yetişebileceği ihtimali ile yapabileceği her ilerleme miktarının Poisson yoğunluğunu çarpmak gerekir:

Dağılımın sonsuz kuyruğunun toplamından sakınmak için tekrar düzenliyoruz:

C koduna dönüştürelim:

Bazı sonuçlar için çalıştırdığımızda, olasılığın “z” ile katlanarak düştüğünü görebiliriz.

P’yi %0.1’den daha küçük alarak çalıştırdığımızda;
12. Sonuç — (Conclusion)
Burada, güven esasına dayalı olmayan elektronik işlemler için bir sistem önermekteyiz. Güçlü bir sahiplik kontrolü sağlayan, dijital imzalı coin’lerden oluşan sıradan bir yapı ile başladık, ancak çift harcama (double-spending) önlemek için bir yok eksikti. Bunu çözmek için, dürüst nodelerin işlemci gücünün çoğunluğa sahip olduğu durumlarda saldırganlar tarafından hızlıca hesaplanması mümkün olmayan, iş kanıtı (proof-of-work) temeline dayalı eşler arası bir ağ önerdik. Ağ dağıtık basitliği içinde sağlam bir yapıdadır. nodeler tek seferde çok az koordinasyon ile çalışırlar. Mesajların belirli özel bir yere bir yere yönlendirilmemesi ve yalnızca en iyi çaba temelinde sunulması gerektiğinden, tanımlanması gerekmez. nodeler ağdan ayrılabilir ya da istedikleri zaman tekrar bağlanabilirler. Çalışırlarken kanıtlanmış olan zincirleri, gittiklerinde onların kanıtı olarak kabul edilir. nodeler, blokları onaylamak, hatalı blokları reddetmek ve zincirlerini genişletmek için işlemci (CPU) güçleri ile oy kullanırlar. Bu oy birliği mekanizması ile gerek duyulan tüm kurallar ve teşvikler (işlem ücretleri vb.) uygulanabilir.

Get fast shipping, movies & more with Amazon Prime

Start free trial

Enjoy this blog? Subscribe to ergulmert

1 Comment