Bitcoin, efsanevi ve esrarengiz Satoshi Nakamoto tarafından 2009 yılında ortaya atılan, blok zinciri teknolojisini altyapı olarak kullanan ve merkeziyetsiz, kişiden kişiye çalışan bir dijital para birimi konseptidir. Bu kavramı açıklayan ve Nakamoto tarafından yazılan Beyaz Kitap, genel olarak bitcoin ve kripto para birimlerini anlamak isteyen herkes için mutlaka okunması gereken bir makaledir. Bu teknik belge yalnızca bitcoin'i bir kavram olarak açıklamakla kalmıyor, aynı zamanda Bizans hata tolerans sisteminin merkezi olmayan bir ortamda nasıl çalışabileceğini de açıklıyor.
Öncelikle Bitcoin ile ilgilenen kişi, bitcoin kavramının gerçek yaşamının altında yatan en büyük faktörün blockchain teknolojisi olduğunu bilmeli ve bu teknolojinin nasıl çalıştığını anlamalıdır.
Blok Zinciri nedir?
Blockchain is a chain of blocks, each of which contains data values, and is not overseen or managed by any central authority. These information chains are cryptographically secured and cannot be silenced thanks to their decentralized structure. Blockchain basically uses two data structures: Pointers and Linked Lists.
İşaretçiler
İşaretçiler, başka bir değişkenin içlerinde nerede olduğunu gösteren değişkenlerdir. Normal şartlar altında, programlamadaki değişkenler veri içerir. (int a = 10 örneğinde, bir a tamsayı değişkeninin değeri 10'dur.) İşaretçiler ise bir değeri veri olarak tutmak yerine o veriyi tutan değişkenin konumunu işaret eder.
Bağlantılı Listeler
Bağlantılı listeler, veri yapılarındaki en önemli birimlerden biridir ve kabaca şöyle görünür.
Her biri belirli bir veri içeren ve bir işaretçi aracılığıyla bir sonraki bloğa bağlanan bir blok dizisi. İşaretçi değişkeni, bir sonraki düğümün adresini içerir ve böylece bağlantıyı sağlar. Son düğümde gördüğümüz gibi, bitiş işaretçisi herhangi bir veri içermiyor.
Burada önemli olan nokta, her işaretçinin bir sonraki bloğun adresini içermesidir. Peki ilk bloğun işaretçisi nerede? İlk bloğa genesis bloğu denir ve işaretçisi sistemin içindedir.
Karma işaretçi, önceki bloğun karmasını içeren bir işaretçidir.
Hash, herhangi bir uzunluktaki veriyi alan ve verinin içeriğinden bağımsız olarak belirli bir işlevle aynı uzunlukta sonuç üreten bir süreçtir. Bitcoin durumunda, aktarım işlemi veri olarak alınır ve sabit uzunlukta bir sonuç üretmek için SHA-256 algoritması ile karıştırılır. Girilen verilerin uzunluğundan bağımsız olarak, SHA-256 algoritması her zaman 256 bit uzunluğunda bir sonuç üretir.
En basit haliyle Blok zinciri, aşağıda gösterildiği gibi bağlantılı bir listedir.
Blok zinciri, her bloğun bir veri ve kendisinden önceki bloğa işaret eden bir karma işaretçi içerdiği bağlantılı bir listedir. Peki, karma işaretçi nedir? Karma işaretçiler normal işaretçilere çok benzer, ancak yalnızca önceki bloğun adres bilgilerini içermek yerine, önceki bloktaki verilerin karma sonucunu da içerirler. Ayarlardaki bu küçük fark, blockchain teknolojisini bu kadar güvenli yapan şeydir.
Bir an için bir saldırganın blok 3'e saldırmak ve içindeki verileri değiştirmek istediğini varsayalım. Hash fonksiyonu sayesinde verilerdeki en küçük değişiklik inanılmaz derecede büyük bir fark olarak sonuca yansıyacaktır. Blok 3'teki verilerdeki en küçük değişiklik, blok 2'de depolanan özet sonucunu değiştirecektir, blok 2'deki değişiklik, blok 1'deki özet sonucunu etkileyecektir, bu nedenle tüm zincirin değiştirilmesi gerekecektir ki bu imkansızdır. Bu, blok zincirlerini sessizleştirmeyen yöntemdir.
Madencilik Nedir?
Madencilik, yeni bitcoinler oluşturmak için gereken işlemdir. Bitcoin madenciliği, Proof of Work-POW prensibi ile çalışır. Basitçe söylemek gerekirse, bir sorunu çözmek çok zor olmalı, ancak bir kez çözdüğünüzde, çözümünüzün doğru olduğu çok kolay kanıtlanmalıdır.
Bitcoin konsept olarak POW kullanımına geçmeden önce kripto paraların neden böyle bir sisteme ihtiyaç duyduğunu anlamaya çalışalım.
Bitcoin'den önce farklı dijital para birimleri oluşturuluyor ancak dijital ortamda merkez dışı ve kişiden kişiye bir ağ oluşturuluyorsa en büyük sorun Bizans Generalleri Problemi olarak adlandırılan mantık problemidir. Nakamoto, bitcoin'de bu sorunu POW ile aşmayı başardığından, bitcoin hayatına başlayabildi ve güçlü bir şekilde devam ediyor.
Bizans Generalleri Sorunu
Akademik çalışmalarda da sıklıkla kullanılan Bizans Generalleri Problemini anlatarak devam edelim. Düşman şehrine saldırmayı planlayan Bizans generallerinin iki sorunu var:
Generaller birbirinden çok uzakta yer alıyor, bu nedenle kuşatmayı merkezi bir otorite tarafından yönlendirmek mümkün değil.
Düşmanın da güçlü bir ordusu var, bu yüzden başarının elde edilebilmesi için saldırının generaller tarafından aynı anda gerçekleştirilmesi gerekiyor.
Kuşatma orduları şehri kuşatırken, orduların her biri sağdaki ordudan gelen emir mesajını soldaki orduya iletir ve iletişim bu şekilde sağlanır. Ama buradaki sorun şu ki, Çarşamba günü saldırmamız için bir emir geldiğinde, bir ordu hazır olmayabilir ve Cuma günü saldırıya geri mesaj gönderebilir, hayır. Veya mesajı taşıyan asker düşman tarafından ele geçirilebilir veya taşıdığı mesajın içeriği değiştirilebilir. Böyle güvensiz bir ortamda, tam koordinasyon sağlanmadığı takdirde herhangi bir saldırı başarısız olacaktır.
Aynı mantık sorunu, bitcoin gibi kripto para birimlerinin altyapısı olan blok zinciri ağları için de geçerlidir. Bunlar inanılmaz derecede büyük ağlar ve ağdaki her bir kişiye nasıl güvenebiliriz? Birine 4 eter göndermek isteyebiliriz, ancak kötü niyetli birinin bu miktarı 40 ether yapmayacağına nasıl güvenebiliriz?
Satoshi Nakamoto, iş kanıtı protokolünü tanıtarak bu mantık sorununun üstesinden gelmeyi başardı. Nasıl çalıştığını görelim:
Kuşatılmış ordu, solundaki orduya “Pazartesi taarruz ediyoruz” mesajını iletmek istediğinde şu adımları izlemesi gerekir;
İlk olarak, orijinal mesaja “nonce” adı verilen rastgele ancak bir defalık oluşturulan bir değer atanır. Nonce, onaltılık sayı sisteminde herhangi bir değer olabilir.
Daha sonra hash fonksiyonuna nonce değeri atanmış mesaj metni geçirilerek bir sonuç elde edilir. Hayali olduğunu düşündüğümüz saldırıda, komutanların sıfır ilk 5 haneli hash fonksiyonunun sonuçlarını güvenli bir şekilde birbirleriyle paylaşmayı tercih ettiklerini varsayalım.
Hash fonksiyonunun sonucu istenenleri verirse mesajı bir sonraki generale iletirler. Sonuçlar istenenlerle eşleşmezse, atanan nonce değerini rastgele değiştirmek ve sıfır ilk beş haneli bir sonuç elde edene kadar işlemi tekrarlamak gerekir. Bu sistem, inanılmaz derecede uzun bilgi işlem gücü gerektirir.
Mesajı taşıyan asker yakalanırsa veya mesaj içeriği değiştirilirse, hash fonksiyonunun özelliklerinden dolayı hash sonucu büyük ölçüde değişecektir. Mesajı inceleyen generaller, hash sonucunun ilk beş hanesinin sıfır olmadığını anlayacak ve saldırıyı geri çekecektir.
Ancak, çok düşük bir ihtimal olsa da, her bir hash fonksiyonunun çelişkili sonuçları olabilir. Teoride, A ve B iki ayrı girdi olarak hash sonuçları olduğunda, H(A) ve H(B), H(A) = H(B) olasılığına neden olmamalıdır, ancak gerçek hayatta uygulamada, hiçbir hash fonksiyonu yoktur. tamamen çarpışmaya dayanıklı.
Peki bu düşük ihtimalde mesajı taşıyan asker yakalanır, mesaj değiştirilir ve hash sonucunun generallerin istediği gibi çıkmasını sağlayan bir saldırı gerçekleşirse ne olur? Elbette zaman alıcı bir süreç olurdu, ama imkansız değil. Buna karşılık, generaller sayısal avantajlarını kullanırlar.
Tek bir generalin sırayla sağdan sola mesaj göndermesi yerine, üç generalin aynı anda sola mesaj göndermesi ile bu sorun aşılabilir. Kendi mesajlarını oluşturan generaller kümülatif mesaj oluşturup bu mesajı hash fonksiyonundan geçirin, sonuca bir nonce değeri atayın ve ardından tekrar hash fonksiyonuna koyun, bu sefer sonucun ilk altı hanesi sıfır olmalıdır.
Bu aşamada bu mesajın nonce değerini bulmak ve mesajın içeriğini değiştirmek ciddi bir zaman kaybı olacaktır.
Ancak mesajı alan generallerin işi kolaydır; sadece kendilerine verilen nonce değerini hash sonucuna eklemeleri ve sonuçları karşılaştırmaları yeterlidir. Bu adım çok hızlı ve basit bir işlemdir. Bu fikir, iş kanıtı ilkesinin çalışma mekanizmasıdır.
Uygun karma için nonce değerini bulmak, muazzam bilgi işlem gücü ve zaman gerektirir.
Ancak, sonuçları incelemek ve herhangi bir kötü niyet olup olmadığını belirlemek çok az zaman alır.
Madenciler, Bitcoin madenciliğinde iş kanıtı protokolünü bu şekilde uygular. Önlerindeki kriptografik problemi çözmek ve bir sonraki bloğu oluşturmak için hesaplama güçlerini kullanırlar. Bitcoin blok zincirinde her 10 dakikada bir bloklar oluşturulur.
Bitcoin Ağında Transferler Nasıl Gerçekleşir?
Diyelim ki John, Dave'e biraz bitcoin göndermek istiyor. Bu transfer nasıl oluyor? Bitcoin transferleri fiat para transferlerinden çok farklı çalışır. John, Dave'e 10 USD vermek isteseydi, 10 USD'lik banknotu fiziksel olarak cüzdanından çıkarır ve Dave'e verirdi ve transfer tamamlanırdı. Ancak bitcoin için durum farklı, fiziksel olarak sahip olduğumuz bir şey değil. Elimizdeki şey, bitcoine sahip olduğumuzun kanıtı.
Bilmemiz ve dikkat etmemiz gereken iki şey var;
Madenciler, oluşturdukları bloğa yerleştirdikleri verilerle transfer işlemlerini onaylar ve güvence altına alır. Ayrıca bu hizmet için bir ücret alıyorlar.
İtibari para birimlerine baktığımızda önümüzde duran hiçbir banknotu bilmiyoruz ve takip etmiyoruz. Bunu yapmanın pratik pratik bir yolu yoktur. Ancak, her bitcoin transfer işlemi bitcoin ağına kaydedilir.
Bu bilgiler ışığında John ve Dave arasındaki bitcoin transferine bir göz atalım. Bu aktarım iki kısımdan oluşmaktadır; giriş ve çıkış (giriş-çıkış)
John'un bu transferi gerçekleştirebilmesi için önceki transferlerden bitcoin'e sahip olması gerekir. Daha önce de belirttiğimiz gibi, tüm transferler bitcoin ağına kaydedilir.
John'un TR(0), TR(1) ve TR(2) isimleriyle aldığı transferlerdeki bitcoinleri önceden toplaması ve TR(INPUT) ismiyle yeni bir transfer oluşturup Dave'e göndermesi gerekiyor. Burada TR(INPUT) yeni transfer için giriş verisi olur.
Giriş ile yapılan bitcoin transferi kabaca böyle görünüyor.
Çıktı verileri, yeni transferden sonra Dave'in sahip olması gereken bitcoin miktarını ve daha sonra John'a bir sonraki transferinde TR(INPUT) değeri olarak geri gönderilen kalan değişikliği içerecektir.
Bu işlem, değişiklik kısmını dahil etmezsek tek bir çıktı sonucunu içerir, ancak birden fazla çıktı sonucu olan transferler için mümkündür. Bu anlatı basitçe bitcoin ağında bir transferin nasıl gerçekleştiğini gösterir. Ancak bunların başarılı bir şekilde gerçekleşmesi için belirli koşulların yerine getirilmesi gerekir.
Transferlerin Uyması Gereken Koşullar:
TR(GİRİŞ) >TR(ÇIKIŞ). Girdi aktarımı her zaman çıktı aktarımından daha büyük olmalıdır. Her transferde girdi ve çıktı (çıktı + değişim) arasındaki fark ücret olarak madencilere ödenir. Yani, Madencilik İşlem Ücreti = TR(GİRDİ)-(TR(ÇIKTI)+DÖVİZ)
Giriş tarafında, TR(0)+TR(1)+TR(2)=TR(INPUT) olmalıdır. Başka bir deyişle, John'un Dave'e göndermeye yetecek kadar bitcoin'i olmalıdır. Mike'ın işlemi işlemek için yeterli bitcoin'i yoksa, transfer madenciler tarafından reddedilir.
Şimdi Dave'in kendisine gönderilen bitcoinlerin sahibi olduğunu kanıtlaması gerekiyor. John, bitcoin transferini Dave'in açık anahtarıyla şifreledi. Dave bu şifreyi sadece kendi özel anahtarıyla açabilir.
Bu arada John, Dave'e göndermek için yeterli bitcoini olduğunu kanıtlamak zorundadır. Bunu gerçekleştirmek istediği aktarımı kendi özel anahtarı ile imzalayarak yapar. Herkes onu Mike'ın açık anahtarıyla açabilir ve gerçekten gerekli miktarda bitcoine sahip olduğunu doğrulayabilir. Bu kanıtlara imza verileri denir.
Giriş verileri (imza verileri dahil) ve çıkış verileri birlikte eklenir ve SHA-256 karma algoritmasından geçirilir. Bu algoritmanın çıktısına transfer denir.
Akılda tutulması gereken bir şey var, bir bitcoin transferinin gerçekleşmesi için bloğu çıkaran madencinin bu transferi fiziksel olarak bloğa koyması gerekir. Bloğu çıkaran madenci, o bloğa yaptığı tüm transferler için ücret alabilir. Zaman içinde transfer miktarları arttıkça, bloklar tamamen dolduğu için transferler yeni bir bloğun gelmesini beklemek zorunda kalıyor. Aslında beklemek istemeyen insanlar daha fazla madencilik ücreti ödeyerek transferlerini öne çıkarıyor ve madenciler için daha çekici hale getiriyor.
Bu, ücrete göre değiştirme ilkesini getirdi. Basitçe şu şekilde çalışır: John Dave'e 5 BTC göndermiş olsa bile, asla bloğa dahil edilmez ve madencilik ücreti düşük tutulduğu için beklemede kalır. Harcanan bitcoin geri alınamayacağı için bu işlemi geri almanın veya iptal etmenin bir yolu yoktur. Ancak John aynı adrese aynı miktarda BTC için transfer yaparsa ve madencilik ücretini daha yüksek tutarsa eski transfer geçersiz sayılır ve yenisi işlemi bekler.
Bitcoin ve genel olarak kripto para birimlerinin geleceği sayısız olasılıklarla dolu. Blok zinciri uygulamaları sınır tanımıyor ve bu alandaki projeler her geçen gün daha başarılı ve güvenli hale geliyor.
Emtia para birimlerinden altın ve gümüş gibi değerli madenlerin kullanımına, kağıt para ve nominal para birimlerine uzanan yolculukta sanal ortamda para fikri çok yeni olmasa da yakın tarihte mümkün hale geldi. uygulanabilir hale getirmek.
Kimine göre CIA'de bir grup, kimine göre uzaylı ya da belki de gerçekten bir siberpunk Satoshi Nakamoto. Kim olursa olsun, varlıklarımıza bakış açımızı ve onları saklama şeklimizi tamamen değiştirecek fikirleri ve uygulamasıyla bir sonraki adımda ne yapacağımıza karar vermek için bizi yalnız bıraktı. Kendisinden daha ileri fikirlerin ortaya çıkmasının önünü açtı ve dünyayı bambaşka bir bakış açısına sahip olmaya ikna etti.
Satoshi, çıkarttığı ve sabit kod olarak yazdığı genesis-starter bloğunda bir mesajı saklamayı ihmal etmemişti. 3 Ocak 2009 tarihini not ederek, o günün UK Times'ından dünya çapındaki ekonomik krizden sorumlu bankalar hakkında bir manşet ekledi; "Bakan bankalar için ikinci kurtarma paketinin eşiğinde" Muhtemelen bu sözlerle federal rezerv bankacılığıyla dalga geçiyor. Satoshi'nin bu harcanamayan adresi neden başlangıç bloğunda yarattığı bilinmiyor. Şimdiye kadar bu adrese isimsiz olarak 16 BTC gönderildi ve bu nedenle toplam 21 milyon bitcoin arzı asla gerçekleşmeyecek.
Bitcoin'in dünya merkez bankalarını korkutacak seviyelere ulaşması sadece 9 yıl aldı ve daha gidecek çok yolu var.
Commenti