





Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Community
Ask the community for help and clear up your study doubts
Discover the best universities in your country according to Docsity users
Free resources
Download our free guides on studying techniques, anxiety management strategies, and thesis advice from Docsity tutors
bitcoin analist bloc chain management
Typology: Study notes
1 / 9
This page cannot be seen from the preview
Don't miss anything!
Satoshi Nakamoto Türkçe'ye Çeviren: bitcoinhaber.net
Özet. Tamamen eşten-eşe çalışan bir elektronik para sistemi herhangi bir finansal kurumdan geçmeden bir taraftan diğerine çevrimiçi ödeme gönderilmesini mümkün kılar. Dijital imzalar çözümün bir parçasıdır, ancak mükerrer harcamaları önlemek için hala güvenilir bir üçüncü tarafa ihtiyaç duyuluyorsa temel faydalarını kaybederler. Mükerrer harcama problemine eşlerarası ağ kullanarak bir çözüm öneriyoruz. Ağ, işlemleri sürekli uzayan özet fonksiyonu tabanlı bir iş-kanıtı zincirine ekleyek zaman damgasıyla işaretler ve iş-kanıtını tekrar üretmeden değiştirilemez bir kayıt oluşturur. En uzun zincir sadece karşılaşılan olayların sırasını kanıtlamakla kalmaz aynı zamanda en büyük (^) CPU gücüne (^) sahip havuzdan geldiğini de kanıtlar. CPU gücünün çoğunluğu ağa saldırmak için işbirliği yapmayan düğümlerin kontrolünde olduğu sürece en uzun zinciri üretecekler ve saldırganları alt edeceklerdir. Ağın kendisi çok az bir altyapıya ihtiyaç duyar. Mesajların yayınlanmasında "elden geldiği kadar" kuralı geçerlidir. Düğümler istediklerinde ağdan ayrılabilirler ve dışarıda geçirdikleri sürede yapılan işlemlerin kanıtı olan en uzun iş-kanıtı zincirini kabul ederek tekrar katılabilirler.
İnternet üzerinden alışveriş bugün neredeyse tamamen, güvenilir bir üçüncü taraf olarak elektronik ödemeleri işleyen finansal kurumlara bağımlı hale geldi. Bu sistem çoğu işlem için oldukça iyi çalışıyor olsa da hala güvene dayalı bir model olmanın zayıflığını barındırıyor. Finansal kurumlar ihtilaflarda arabuluculuktan kaçamadıklarından tamamen geri dönüşü olmayan işlemler gerçekte mümkün değil. Arabuluculuk hizmetinin gideri işlem giderlerini yükseltir ve mümkün olan en küçük işlem miktarını sınırladığı için küçük ödeme işlemlerini engeller, bunun yanında geri döndürülemeyen hizmetler için geri döndürülemeyen ödeme alma imkanının olmaması daha da masraflıdır. İşlemi geri döndürme ihtimali ile birlikte güvenme ihtiyacı da artar. Satıcılar müşterilerine şüpheyle bakmalı ve başka bir durumda ihtiyaç duyulabilecek bilgiden fazlasını vermeleri için zorlamalıdır. Belli bir oranda dolandırıcılık kaçınılmaz kabul edilir. Bu maliyetler ve ödeme belirsizlikleri yüzyüze alışverişte fiziksel para^ kullanımıyla giderilebilir ancak güven duyulan bir üçüncü taraf olmadan bir iletişim kanalı üzerinden ödeme yapılabilecek bir mekanizma bulunmamaktadır.
İhtiyacımız olan güven yerine kriptografik kanıta dayalı, iki tarafın üçüncü bir güvenilir kişiye gerek duymadan doğrudan birbirleriyle işlem yapabileceği bir elektronik ödeme sistemidir. Geri döndürülmesi imkansıza yakın işlemler satıcıları dolandırıcılıktan koruyacaktır. Alıcıları koruyacak rutin emanetçi mekanizmaları kolaylıkla uygulanabilir. Bu makalede eşten-eşe dağıtık bir zaman damgası sunucusunun işlemlerin tarihsel sırasını hesaba dayalı olarak kanıtlamasını kullanarak mükerrer harcama problemine bir çözüm öneriyoruz. Sistem dürüst düğümler (^) topluca saldırgan düğümlerden daha fazla CPU gücünü ellerinde
bulundurduğu sürece güvenlidir.
Elektronik parayı bir dijital imza zinciri olarak tanımlıyoruz. Paranın el değiştirmesi sırasında her sahip parayı bir sonrakine gönderirken kendi dijital imzasıyla bir önceki işlemin özetini (hash) ve bir sonraki sahibin açık anahtarını imzalar ve bu imzayı paranın sonuna ekler. Ödeme alan sahiplik zincirini doğrulamak için imzaları doğrulayabilir.
Elbette buradaki problem ödeme alanın zincirdeki önceki sahiplerden birinin parayı mükerrer olarak kullanmadığını doğrulayamamasıdır. Yaygın bir çözüm, merkezi bir otoritenin (banka, merkez) her işlemin mükerrer harcama olup olmadığını kontrol etmesidir. Her işlemden sonra para merkeze geri döner ve yerine yeni bir para piyasaya sürülür. Sadece merkez tarafından doğrudan piyasaya sürülen paraların mükerrer olarak harcanmadığından emin olabiliriz. Bu çözümdeki sorun para sisteminin tüm kaderinin her işlemin üzerinden geçtiği banka gibi bir merkezi kuruluşun elinde olmasıdır. Ödeme alan kişinin, paranın^ önceki sahiplerinin önceden işlem imzalamadıklarını doğrulayabileceği bir yönteme ihtiyacımız var. Bizim durumumuzda sadece en eski işlem önemlidir, daha sonraki harcama girişimlerini dikkate almıyoruz. Bir işlemin gerçekleşmediğini kanıtlamanın tek yolu tüm işlemlerden haberdar olmaktır. Merkeze dayalı modelde merkez tüm
işlemleri bildiği için hangisinin önce geldiğine karar verebilir. Güvenilen bir taraf olmadan bunu başarabilmek için işlemler açıkça ilan edilmelidir [1]^ ve katılımcıların işlemlerin gerçekleşme sırası konusunda hemfikir olacağı bir sisteme ihtiyacımız vardır. Ödeme alanın her işlem sırasında harcamanın ilk kez yapıldığı taraf olduğunun diğer düğümlerin çoğu tarafından onaylandığı bir kanıta ihtiyacı vardır.
Önerdiğimiz çözüm bir zaman damgası sunucusuyla başlıyor. Bir zaman damgası sunucusu damgalanmayı bekleyen bir işlem bloğunun özetini alarak bu özeti gazete, Usenet [2-5] gibi mecralarda yayınlar. Zaman damgası mesaj yayınladığı anda verinin özete girdiğinin yani var olduğunun kanıtıdır. Her zaman damgası özetinin içinde bir önceki zaman damgasını barındırarak bir zincir oluşturur ve her eklenti öncekileri güçlendirir.
Düğümler her zaman en uzun zincirin doğru olduğunu kabul ederek uzatmaya çalışırlar. Eğer iki düğüm aynı sıradaki bloğun farklı versiyonlarını aynı anda bulup yayınlarlarsa bazı düğümler birini diğerinden önce alabilir. Bu durumda düğümler ilk aldıkları bloğu doğru kabul ederler ve üzerinde çalışırlar ama diğer dalı da sonradan daha fazla uzama ihtimaline karşılık saklarlar. Beraberlik bir sonraki iş kanıtı bulunduğunda ve dallardan birisi daha uzun hale geldiğinde bozulmuş olacak, diğer dal üzerinde çalışan düğümler de uzun tarafa geçeceklerdir.
Yeni işlemlerin tüm düğümlere ulaşması gerekmez. Yeteri kadar düğüme ulaştıklarında çok geçmeden bir blokta yer alırlar. Blok yayınları mesaj kayıplarına karşı da dayanıklıdır. Eğer bir düğüm bir bloğu alamadıysa bir sonrakini aldığında
kayıp olanı farkeder ve istekte bulunur.
Kural gereği bir bloktaki ilk işlem bu bloğu yaratanın sahip olacağı yeni bir parayı dolaşıma çıkardığı özel bir işlemdir. Bu düğümlerin ağı desteklemelerini teşvik eder. Aynı zamanda,^ para^ basacak merkezi bir kurum olmadığından paranın dolaşıma katılmasını da sağlar. Sabit bir miktardaki para^ miktarının sürekli dolaşıma girmesini altın madencilerinin piyasaya yeni^ altın sürmesine benzetebiliriz. Bizim durumumuzda tüketilen şey CPU işlem gücü ve elektriktir.
Teşvik işlem ücretlerinden de elde edilebilir. Bir işlemin çıktısı girdilerinden küçükse, aradaki fark işlem ücreti olarak işlemi ihtiva eden bloğun teşvik miktarına eklenir. Önceden belirlenmiş bir miktar para tedavüle çıktıktan sonra teşvik tamamen işlem ücretinden elde edilir ve enflasyon sıfıra iner.
Teşvik düğümlerin dürüst kalmalarını sağlar. Eğer açgözlü bir saldırgan bütün dürüst düğümlerden daha fazla işlem gücünü toplamayı başarabilirse bu gücü ödemelerini çalarak insanları dolandırmak için mi yoksa yeni para üretmek için mi kullanacağına karar vermelidir. Oyunu kurallarına uygun oynamayı daha karlı bulmalıdır. Sistemi kandırıp kendi zenginliğinin geçerliğini zedelemektense kurallara uymak ona herkesin toplamından daha fazla yeni para kazandıracaktır.
Bir paranının kullanıldığı son işlem yeteri kadar bloğun^ altında kaldığında öncesindeki harcama işlemleri saklama alanından tasarruf etmek üzere silinebilirler. Bloğun özetini bozmadan bunu sağlamak için işlemler bir Merkle ağacında [7][2] [5] tutulur ve sadece kökü bloğun özetine dahil edilir. Eski bloklar ağaç dalları
budanarak sıkıştırılabilir. Ara özetlerin saklanmasına gerek yoktur.
Bir blok başlığı işlemler hariç yaklaşık 80 bayt uzunluğundadır. Her 10 dakikada bir yeni blok üretildiğini varsayarsak 80 bayt * 6 * 24 * 365 = 4.2 MB / yıl eder. 2008 yılında tipik bilgisayar sistemlerinin 2GB RAM ile satıldığı ve Moore yasasına dayanarak senede 1.2GB büyüme öngörüsüyle, blok başlıkları hafızada tutulsa dahi saklama bir sorun olmayacaktır.
Tam bir düğüm işletmeden de ödemeleri doğrulamak mümkündür. Kullanıcı sadece en uzun iş-kanıtı zincirine dahil olan blokların başlıklarının bir kopyasını saklamalıdır. En uzun zincire sahip olduğuna kanaat getirinceye kadar ağdaki düğümleri sorgulayarak bu başlıkları toplar ve işlemi damgalandığı bloğa bağlayan Merkle dalını elde eder. İşlemi kendisi doğrulayamaz ama zincirdeki bir yer ile ilişkilendirmekle bir ağ düğümünün kabul ettiğini görür. Ardından eklenen bloklar da ağın işlemi kabul ettiğini onaylarlar.
Bu sebeple, doğrulama dürüst düğümler ağ kontrolünü ellerinde bulundurdukları sürece güvenilirdir. Hesaplama gücünün çoğunluğu saldırganın elindeyse daha savunmasızdır. Ağ düğümleri işlemleri kendileri doğrulayabilirken basitleştirilmiş yöntem saldırganın ağa hakim olduğu süre boyunca ürettiği sahte işlemler ile kandırılabilir. Bu soruna karşı^ korunma stratejilerinden biri ağ^ düğümlerinin geçersiz bir bloğu farkettiklerinde alarm üreterek kullanıcıdan tüm bloğu ve şüpheli
işlemleri yüklemesini istemesi olabilir. Sık ödeme alan işyerleri muhtemelen güvenliklerini sağlamada daha bağımsız olmak ve daha hızlı doğrulama yapabilmek için kendi ağ düğümlerini işletmek isteyeceklerdir.
Her bir parayı teker teker takip etmek mümkün olsa da havale edilecek her kuruş için ayrı ayrı işlem açmak^ pratik olmazdı. Değerin^ bölünebilmesi ve birleştirilebilmesi için işlemler birden fazla girdi ve çıktıdan oluşur. Genellikle ya önceki büyük bir işlemden gelen tek bir girdi ya da küçük miktarları birleştiren birden fazla girdi olur. En fazla da iki çıktı olur: Birisi ödeme tutarıdır, diğeri de, varsa, parayı gönderene geri dönen para üstüdür.
Unutulmamalıdır ki dallanma, yani her bir işlemin birçok işleme bağlı olması ve o işlemlerin de daha da fazla işleme bağlı olmaları burada bir sorun değildir. Hiçbir zaman işlem tarihçesinin tam bir kopyasını çıkartmaya ihtiyaç yoktur.
p > q varsayımıyla, saldırganın yakalamak zorunda kaldığı blok sayısı arttıkça olasılık üssel olarak azalır. Kendi dezavantajına işleyen olasılıklar karşısında eğer en başlarda şanslı bir dizi hamle yapamazsa daha da geride kaldıkça kazanma ihtimali yok denecek kadar azalır.
Şimdi de yeni bir işlemdeki alacaklının, gönderenin işlemi değiştiremeyeceğinden emin olana dek ne kadar beklemesi gerektiğini ele alalım. Gönderenin alıcıyı para ödediğine bir süreliğine^ inandırmak isteyen ve bir süre sonra işlemi paranın kendisine geri^ dönmesi için^ değiştirmeyi planlayan bir saldırgan olduğunu varsayıyoruz. Bu olay olduğunda alıcı haberdar olacaktır. Ama saldırgan bunun için çok geç olmasını ümit eder.
Alıcı yeni bir çift anahtar üreterek açık anahtarı imzalamadan hemen önce gönderene iletir. Bu şekilde göndericinin önceden bir blok zinciri hazırlaması ve üzerinde çalışarak öne geçtiği şanslı anında işlemi gerçekleştirmesi engellenir. İşlem gönderildiğinde kötü niyetli gönderici gizlice işlemin farklı bir versiyonunu içeren paralel bir zincir üretmek için çalışmaya koyulur.
Alıcı işlemin bir bloğa eklenmesini ve ardından bloğa z blok daha bağlanmasını bekler. Saldırganın tam olarak ne kadar ilerleme kaydedebildiğini bilmiyordur ama dürüst blokların ortalama beklenen zamanda üretildiklerini varsayarsak saldırganın potansiyel ilerleme miktarı beklenen değere göre Poisson dağılımı olur:
Saldırganın hala yetişebilme ihtimalini hesaplamak için her ilerleme miktarının Poisson yoğunluğunu bu noktadan itibaren yetişebilme olasılığı ile çarpıyoruz:
Sonsuz dağılım kuyruğunun toplamını almaktan kaçınmak için tekrar düzenliyoruz.
C koduna dönüştürürsek ...
#include <math.h> double SaldirganinBasariOlasiligi(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i;
sum -= poisson * (1 - pow(q / p, z - k)); } return sum; }
Birkaç denemenin sonunda gözlemliyoruz ki olasılık z ye bağlı olarak katlanarak azalıyor:
q=0.
z=0 P=1. z=1 P=0. z=2 P=0. z=3 P=0. z=4 P=0. z=5 P=0. z=6 P=0. z=7 P=0. z=8 P=0. z=9 P=0. z=10 P=0.
q=0.
z=0 P=1. z=5 P=0. z=10 P=0. z=15 P=0. z=20 P=0. z=25 P=0. z=30 P=0. z=35 P=0. z=40 P=0. z=45 P=0. z=50 P=0.
P yi %0.1 den küçük değerler için çözdüğümüzde...
z= z= z= z=
q=0.
z=
q=0.
z=
q=0.
z=
q=0.
z=
q=0.
q=0.
q=0.
q=0.
Güvene dayalı olmayan bir elektronik transfer sistemi önerdik. Dijital imzalardan oluşan sıradan bir para sistemi modeliyle başladık. Bu sistem sahipliği düzgün bir şekilde kontol edebiliyordu ancak çifte harcama problemini engellemediğinden eksikti. Bunu çözmek için iş kanıtını işlem tarihçesini kaydetmek için kullanan eşten-eşe bir ağ önerdik. Bu tarihçeyi bir saldırganın değiştirmesi işlem gücünün çoğunluğu dürüst düğümlerde olduğu sürece neredeyse imkansızdır. Ağ kendi yapılandırılmamış basitliği içinde sağlamdır. Düğümler aynı anda çok az eşgüdüm ile çalışır. Kimlik doğrulamasına gerek yoktur çünkü mesajlar belirli bir yere doğru yönlendilmezler ve sadece diğer^ düğümlerin ellerinden geldiğince dağıtılır. Düğümler dilediklerinde ağdan^ ayrılabilirler ve tekrar katılabilirler. İş^ kanıtı zincirini kendileri ağda yokken olan bitenin kanıtı olarak kabul ederler. İşlem güçleri oranında oy kullanırlar, geçerli bloklar üzerinde çalışarak ve uzamalarını sağlayarak kabul ettiklerini, üzerinde çalışmayarak da reddettiklerini ifade etmiş olurlar. İhtiyaç duyulan tüm kurallar ve teşvikler bu uzlaşma mekanizması ile empoze edilebilir.