Anneye anlatır gibi: Bitcoin Nasıl Çalışıyor?
Sorumluluk reddi: Yazılarım sadece bilgi verme amaçlıdır. Hiçbiri yatırım tavsiyesi değildir.
Bitcoin'in arkasındaki teknoji olan blockchain'i sadece sokaktaki amca, kahvedeki dayı değil Nobel ödüllü ekonomi profesörleri de milyarder yatırımcılar da bazen anlayamayabiliyor.
Bu nedenle internette rast geldiğim bu kapsamlı ve kolay anlaşılır yazıyı çevirmek için yazardan izin aldım. Artık etrafınızda birisi Bitcoin'in nasıl çalıştığı ile ilgili bir soru sorduğunda nereye yönlendireceğinizi biliyorsunuz. ******
Eğer bir mağarada yaşamıyorsanız Bitcoin hakkında elbet bir şeyler duymuşsunuzdur. Her şeyden önce bu günlerde medyanın favori konusu Bitcoin ve Blockchain. Kriptopara madenciliği yapmayan veya Bitcoin'in ne olduğunu anlamayanlar bile bu konudan bahsediyor. Özellikle teknik terimlerden pek anlamayan arkadaşlarım haftalardır bunları açıklamam için başımın etini yiyorlardı. Sanırım onlar gibi hisseden binlerce kişi var. Böyle bir durumda yapılacak en mantıklı şey herhangi bir ortalama internet kullanıcısının anlayabileceği biçimde sade bir dille şeyler yazmak.
Blockchain: Neden böyle karmaşık bir şeye ihtiyaç duyuyoruz ki?
"Karmaşık her soruna getirilebilecek açık, basit ve yanlış bir çözüm daima vardır."— H.L. Mencken
İnternetteki diğer bütün bilgilerin aksine, Blockchain'in tanımıyla değil hangi sorunu çözdüğünü anlamakla başlayacağız.
Farz edelim ki senin Joe diye bir arkadaşın var. Yurt dışına tatile çıkan bu arkadaşın tatilinin 5. gününde seni arıyor ve "Dostum, biraz paraya ihtiyacım var. Bende hiç kalmadı." diyor.
Sen de "Hemen sana biraz gönderiyorum" diyorsun ve telefonu kapatıyorsun.
Sonra bankayı arayıp "Lütfen benim hesabımdan Joe'nun hesabına 1000 dolar yollayın" diyorsun.
Banka'nın hesap yöneticisi "Peki efendim" diye yanıtlıyor.
Sonra hesap yöneticisi kayıt defterini açıp senin hesabında Joe'ya 1000 dolar göndermek için gerekli olan paranın olup olmadığını kontrol ediyor. Zengin bir adam olduğun ve hesabında 1000 dolardan çok daha fazlası olduğu için kayıt defterine şunu yazıyor:
İşlem Kayıt Defteri
Not: İşleri basit tutmak adına şimdilik bilgisayarlardan bahsetmiyoruz.
Sonra sen Joe'yu arıyorsun ve "Parayı transfer ettim. Bankaya gittiğin zaman gönderdiğim 1000 doları çekebilirsin" diyorsun.
Az önce ne oldu? Sen ve Joe paranızı yönetmesi için bankaya güvendiniz.Para gönderme işlemi için kağıt para fiziksel olarak bir yerden bir yere hareket etmedi. Tüm gereken kayıt defterindeki bir veri girişiydi. Daha detaylı söylemek gerekirse: Ne senin ne de Joe'nun kontrol ettiği bir kayıt defterindeki bir veri girişiydi.
Günümüzdeki sistemlerin sorunu işte tam olarak bu.
Kendi aramızda güven ilişkisi kurmak için üçüncü şahıslara bağımlı durumdayız.
Yıllardır, birbirimize güvenmek için bu aracılara ihtiyaç duyduk. "Ee bunun nesi kötü?" diye sorabilirsiniz:
Problem şu ki bunlar sayıca tekiller. Toplumu kaosa sürüklemek için tek bir kişi veya organizasyonun bile doğru yoldan sapması yeterli. Kasten veya istemeden.
-Ya işlem kaydının tutuluğu kayıt defteri yanarsa?
-Ya banka görevlisi 1000$ yerine yanlışlıkla 1500$ yazarsa?
-Ya bunu isteyerek yaparsa?
Yıllarca bütün yumurtaları tek sepete koyduk. ve o da başkasının sepetiydi.
Bankalara ihtiyaç duymadan para transferi yapabileceğimiz bir sistem mümkün mü?
Daha iyi bir soru daha iyi bir yanıta götürebilir.
Bir saniye durup düşünün, para transferi ne anlama geliyor? Sadece kayıt defterindeki bir veri girişi. Daha iyi bir soru şöyle olurdu:
Kayıt defterini tutması için başkasına güvenmek yerine bu defteri aramızda idare etmenin bir yolu var mı?
İşte bu sorunun yanıtı: Blockchain.
Bu, kayıt defterini tutması için üçüncü partilere (bankalar, noterler) güvenmek yerine kayıt defterini kendi aramızda tutabilmemiz için bir metot.
Tamam ama Nasıl Olacak Bu İş?
"Birkaç bitcoin almak çok mantıklı çünkü bir gün çok popüler olabilir. Eğer herkes bu şekilde düşünürse bu kendini gerçekleştiren bir kehanet olacak." — Satoshi Nakamoto -2009
Bu metodun çalışması için en az üç kişiye ihtiyaç var. Mesela bankaları ve üçüncü parti işletmeleri kullanmak istemeyen on kişi düşünelim. Ortak bir anlaşmayla, hepsi, her zaman gruptaki diğer insanların hesap detaylarını görebiliyor ama hesabın kime ait olduğunu bilmeden.
1-Boş Dosya
Başlamak için herkes elinde bir boş dosya bulunduruyor. Herkes elinde bulundurduğu şimdilik boş olan bu dosyalara sürekli sayfalar ekleyecek. Ve bu sayfalar işlem kayıtlarını bulunduracak olan kayıt defterini oluşturacak.
2-Para Gönderme İşleminin Gerçekleşmesi
Sonra, Gruptaki herkes boş bir sayfa ve bir kalem ile oturuyor. Herkes sistemde gerçekleşecek herhangi bir para gönderme işlemini boş sayfaya yazmak için hazır bekliyor.
Şimdi #2, #9'a 10 dolar göndermek istiyor.
Bu işlemin gerçekleşmesi için #2 herkesin duyabileceği kadar bağırarak "Ben #9'a 10 dolar yollamak istiyorum. lütfen herkes bunu sayfasına yazsın." diyor.
Herkes #2'nin 10 dolar göndermek için yeterli bakiyesi olup olmadığını kontrol ediyor. Eğer varsa herkes önündeki sayfaya para gönderme işlemini yazıyor.
Şimdi işlem tamamlanmış sayılıyor.
3-İşlemler Devam Ediyor
Zamanla gruptaki insanlar birbirine para yolluyorlar. Ne zaman para yollayacaklarsa bunu bağırarark diğerlerine iletiyorlar. Gruptaki diğer insanlar da bunları kontrol edip sayfaya yazıyor.
Bu durum sayfada boş yer kalmayana kadar devam ediyor. Mesela bir sayfanın 10 işlem kaydı sığacağını
farzedelim. 10. Para gönderme işlemi sonunda herkesin sayfası doluyor.
Şimdi sıra dolu sayfayı dosyanın içine koymaya geldi.Sonra herkes yeni bir sayfa açacak.
4- Dolu Sayfayı Saklamak
Dolu bir sayfayı dosyanın içine koyup saklamadan önce onu üzerine herkesin anlaştığı kendine has bir mühürle mühürlemeliyiz. Sayfayı mühürlemenin amacı herhangi bir kimsenin sonradan bir değişiklik yapamayacağına emin olmak. Bu bir hafta sonrası için de geçerli, bir yıl sonrası için de. Bir kere dosyaya girdi mi, her zaman dosyanın içinde mühürlü kalacak. Eğer herkes mühüre güveniyorsa sayfanın içeriğine de güveniyor demektir. İşte bu mühür bu işin en düğüm noktası.
Jargon: Bunun teknik adı aslında madencilik (mining). Ama biz karışıklık olmaması adına mühürlemek diyeceğiz.
Daha öncesinde aracı/üçüncü şahıslar (bankalar) bize kayıt defterinde yazılanların asla değişmeyeceğine dair güven veriyordu.Bizimki gibi dağıtık ve merkezsiz bir sistemdeyse güveni sağlayacak olan şey bu mühür.
İlginç. Peki Sayfayı Nasıl Mühürleyeceğiz?
Önce mührün nasıl çalıştığını anlatalım.
Sihirli Makine
Etrafı kalın duvarlarla çevrili sihirli bir makine hayal edin. Eğer içinde bir şey olan bir kutuyu makinenin sol gönderirseniz sağ taraftan başka bir şey içeren bir kutu çıkıyor.
Jargon: Bu makine aslında "Hash Fonksiyonu" ama karışıklık olmaması adına biz bugünlük bunlara "Sihirli Makine" demeye devam edelim.
Farz edelim ki sen sol taraftan makineye 4 rakamını gönderdin. Makine ise sağ tarafdan 'dcbea' diye bir kelime çıkardı.
4 nasıl oldu da dcbea'ya dönüştü? Kimse bilmiyor.Dahası bu tersine işlemeyen bir sistem. Elimizde dcbea olsa bile makineye ne koyuldu da bu sonucu aldık bilemiyoruz. Ama her şunu biliyoruz ki ne zaman ki makineye 4 verirsen aynı kelimeyi dcbea'yı verecek.
hash(4)==dcbea
Başka bir sayı deneyelim? 26'ya ne dersiniz?
hash(26)==94c8e
Bu sefer 94c8e aldık. İlginç. Demek ki kelimeler rakam da içerebiliyor!
Peki şu soruyu sorarsam:
"Makineye sol taraftan ne yollamalıyım ki bana sağ taraftan üç tane sıfırla başlayan bir kelime versin? mesela 000ab veya 00098 veya 000fa veya üç sıfırla başlayan herhangi bir şey."
Bir düşünün. Size söylediğim kadarıyla makineden çıkan bir kelimeye bakarak makineye ne girdiğini hesaplayamayız. Bu makinenin kendine has özelliği.
Böyle bir makineyle nasıl olur da demin sorduğum soruyu cevaplarız?
Neden ta ki istediğimiz sonuç makineden çıkıncaya kadar evrendeki bütün sayıları tek tek denemiyoruz?
İyimser yaklaşacak olursak birkaç bin denemeden sonra istediğimiz çıktı ile karşılaşırız.
Çıktıyı bilerek girdiyi hesaplamak feci şekilde zordu. Ancak bunun sağlamasını yapmak çok kolay. Tahmin edilen bir girdinin gerekli olan çıktıyı verip vermediğini kolaylıkla doğrulayabiliriz. Çünkü makine aynı girdiye her zaman aynı çıktıyı veriyor.
Size 72533 sayısını versem ve size "Bu sayı makineye verildiğinde sol taraftan üç tane sıfırla başlayan bir çıktı veriyor mu?" diye sorsam bunun cevabını bulmak ne kadar zor olurdu?
Tek yapmanız gereken verdiğim sayıyı makineye atmanız ve sağ taraftan ne çıktığına bakmanız. O kadar.
Bu makinenin en önemli özelliği şu ki "Sadece çıktı verildiğinde girdiyi bulmak oldukça zordur. Ancak girdi ve çıktı beraber verildiğinde girdinin çıktıyı verip vermediğini doğrulamak son derece kolaydır."
Sihirli Makineler(Hash Fonksiyonu)'in bu özelliğini yazının kalan kısmında da hatırlayın:
Sadece çıktı verildiğinde girdiyi bulmak oldukça zordur. Ancak girdi ve çıktı beraber verildiğinde girdinin çıktıyı verip vermediğini doğrulamak son derece kolaydır.
Bu makine sayfayı mühürlemek için nasıl kullanılır?
Biz Sihirli Makineyi sayfamızı mühürlemek için kullanacağız.
Size iki kutu verdiğimi hayal edin. İlk kutu 20893 sayısını içeriyor. Diğer kutunun içindekini siz bulacaksınız. Size şunu soruyorum: "Bana öyle bir sayı söyle ki sana ilk kutuda verdiğim sayı ile birlikte makineye beraber atıldığında makine sol taraftan üç tane sıfırla başlayan bir sonuç versin."
Bunu daha önce de görmüştük ve biliyoruz ki bunun tek yöntemi evrendeki her sayıyı tek tek denemek.
Birkaç bin denemeden sonra 21191 sayısına denk geldiğimizi farz edelim ve bu sayı ilk sayı ile toplandığında (21191+20893) 42084 yapar. 42084'ü makinenin sağ tarafından yolladığımızda sağdan bize gereken ürünü yani üç tane sıfırla başlayan kelimeyi veriyor.
Bu durumda bu numara, yani 21191: 20893 için mühür numaramız oluyor. Üzerinde 20893 yazan bir sayfa düşünün. Bu sayfayı mühürlemek için (ki kimse içeriğini değiştiremesin) bu sayfaya 21191 yazılı bir etiket yapıştıracağız. Bu mühür numarası (21191) yapıştırıldığı anda sayfa mühürlenmiş demektir.
Jargon: Mühür numarası diye adlandırdığımız şey aslında "İş İspatı" (proof of work). Yani bu sayı, kendisinin hesaplanması için harcanan eforun ispatı. Biz yine de şimdilik buna mühür numarası demeye devam edelim.
Eğer biri sayfanın değiştirildiğinden şüphe ediyorsa tek yapması gereken şey sayfa içeriğini mühür numarasıyla birlikte sihirli makineye sokmak ve üç tane sıfırla başlayan bir çıktı verip vermediğini kontrol etmek. Eğer veriyorsa sayfa içeriğine dokunulmamış demektir. Eğer beklenen sonucu vermiyorsa sayfayı yırtıp atabiliriz çünkü içerik değiştirilmiş demektir ve işe yaramaz.
Bütün sayfaları mühürlemek için aynı mekanizmayı kullanacağız ve sonunda dosyalara yerleştireceğiz.
Nihayet, sayfayı mühürlüyoruz...
Para gönderme işlemleriyle dolu sayfayı mühürlemek için bir sayı bulmamız gerekiyor. Bu sayı işlem kayıtlarıyla birlikte makinenin sağ tarafından birlikte verildiğinde makinenin bize sol taraftan üç tane sıfır ile başlayan bir kelime vermesi gerekiyor.
Not: "üç tane sıfırla başlayan kelime" 'yi sadece Hash fonksiyonunun nasıl çalıştığına dair örnek verme amaçlı söylüyorum. Gerçek zorluklar bundan çok daha karmaşık.
Makinede bütün sayıları tek tek denediğimiz için epey zaman ve elektrik harcadıktan sonra mühür numarasını bulduğumuzda sayfa mühürlenmiş olur. Eğer biri sonradan işlem kayıtlarını değiştirmek isterse mühür numarasını kullanarak sayfanın doğruluğunu sorgulayabiliriz.
Şimdi sayfayı mühürlemeyi öğrendik. 10 tane işlem kaydı yaptığımız ve sayfayı doldurduğumuz yere geri dönelim.
Herkesin sayfasındaki boş yer tükendiğinde herkes mühür sayısını hesaplamaya çalışıyor ki sayfa mühürlenip dosyada saklanabilsin. Ağdaki herkes hesaplama yapıyor. Mühür numarasını bulan ilk kişi diğerlerine duyuruyor.
Herkes duyrulan mühür numarasını istenen çıktıyı veriyor mu diye doğruladıktan sonra herkes sayfasını bu mühür numarasıyla etiketliyor ve dosyasına yerleştiriyor.
Diyelim ki #7 'nin duyurduğu mühür numarası istenen çıktıyı vermedi? Bu durumlar alışılmadık değil. Bunun sebepleri şunlar olabilir:
-Grupta yapılan para gönderme işlemlerini yanlış duymuş olabilir.
-İşlemleri kağıda geçirirken yanlış yazmış olabilir.
-Kendi veya başkası lehine kasten hile yapmaya çalışıyor olabilir.
Sebep ne olursa olsun #7'nin yapabileceği tek şey var. Sayfasını çöpe atmak ve başkasından bir kopya almak ve onu dosyalamak. Eğer sayfayı dosyaya eklemezse işlem kayıtlarını yazmaya devam edemez. Böylece ağda bulunması yasaklanmış olur.
Çoğunluk hangi mühür numarası üzerinde uzlaşırsa asıl mühür numarası o olur.
Madem öyle o halde neden herkes mühür numarasını bulmak için kaynak harcıyor ki? Neden oturup birisinin numarayı bulmasını ve duyurmasını beklemeyeyim?
Güzel soru.İşte burada devreye teşvikler giriyor. Blockchain'in her ferdi bir ödüller kazanmaya muvafık. Mühür numarasını ilk hesaplayan gösterdiği çaba(kullanılan CPU gücü ve elektrik) için bir ödül kazanıyor.
Diyelim ki #5 numaralı kişi mühür numarasını hesapladı, o halde havadan 1 dolar para kazanıyor. Yani #5'in hesabına kimsenin hesabından para eksilmediği halde 1 dolar ekleniyor.
Bitcoin'in varlığı da buna dayanıyor. Bitcoin, Blockchain kullanarak işlem hareketleri gerçekleştiren ilk para birimi.
(dağıtık kayıt defterleri)
Ödüller sistemde herkesin çalışmasını sağlar.
Ve herkes sayfası dolduğunda bunu dosyaya koyup boş, yeni bir sayfa çıkarıyor ve bütün işlemleri yeni baştan tekrarlıyor.
Jargon: İşlem kayıtlarıyla dolu her 1 sayfayı 'bir blok' olarak düşünün.Sayfaların saklandığı her 1 dosyayı ise bir sayfa zinciri (yani blok zinciri) olarak düşünün.
İşte sevgili dostlarım, Blockchain bu şekilde çalışıyor.
***
Mohit Mamoria'nın yazdığı orjinal post'a gitmek için: https://hackernoon.com/wtf-is-the-blockchain-1da89ba19348
—
Bunun gibi yararlı makaleleri türkçeye çevirmeye devam edeceğim. Yazılarımı Medium
ve
Steemit'ten takip edebilirsiniz. Aynı zamanda Bitcoin ve kripto paralarla ilgili güncel haberleri takip edebileceğiniz ve benim de yazarları arasında bulunduğum koinbulteni.com 'u da ziyaret etmenizi öneririm.
Bitcoin: 1A1crTStwU7VsKz62pVYgnfqQaarbpUFYx
Paylaşım için teşekkürler. Emek vermişsiniz. Parçalayıp bir kaç paylaşıma bölseniz daha güzel olurmuş ;)
teşekkür ederim.