BitCoin Kaç Lira

Kripto Paralar ve arkasında geliştirilen Blok Zinciri teknolojisi uzunca bir süre (bence bundan sonra hep) konuşulacağa benziyor. Ben, bitcoin ve diğer kripto paraları alıp satıp nasıl kar ederiz yerine blok zinciri teknolojisini başka hangi alanlarda kullanabiliriz onu düşünmeyi tercih ediyorum. Çevreden gelen “bitcoin alım satım yazısı yaz” baskılarına şimdilik direnmeye çalışıyorum. Ama olayı tam olarak anlamak için de biraz alım satım yapmanın gerekli olduğuna inandım. Bu yüzden çok küçük bir miktar alım yaptım. Ama üzgünüm bu yazı o yazı değil. Yani şimdi bitcoin nasıl alınır yazısı yazmayacağım. Onun yerine bitcoin sahiplerinin en çok yaptığı şeye (bitcoin kaçlira oldu ve benim bitcoinlerimin değeri ne oldu) getirdiğim çözümümü anlatacağım.

Daha önce ev otomasyonları ve Türkçe Anlayan Yapay Zeka çalışmalarımda geliştirdiğim ve telegram bot kullanarak bitcoin fiyatını ve benim bitcoinlerimin değerinin ne olduğunu gösteren, sorularıma cevap veren bir chat bot uygulaması anlatacağım. Nasıl bir sonuç verdiğini aşağıdaki videodan izleyebilirsiniz.

 

 

telegram bot bitcoin price

 

Kullanmayanlar için şidletle tavsiye ediyorum: node-red öğrenin ve kullanın. IBM destekli ve arkasında Google’ın node js i var olan, kafanızdakileri hızlıca hayata geçirebileceğiniz bir geliştirme aracı.

Temel olarak sistem şöyle çalışıyor: Telegram bot dan bir mesaj gönderdiğinizde bizim uygulama bunu alıp değerlendiriyor. Gelen mesajı temizleyip komutun ne olduğunu bulduğunuzda, eğer ilgili komut sizin listenizde ise bununla ilgili fonksiyon çalıştırılıyor. Bazı mevcut API ler kullanılarak bitcoinin o anki fiyat bilgisi ve sizin cuzdanınızdaki bitcoinlerin o anki parasal değeri gösteriliyor.

İleride bazı EMA göstergeleri ve eğilimlerini değerlendirerek bitcoin almalı mı yoksa satmalı mı sorularına cevap verecek bir ilave yapmak istiyorum. Bir baska ilave de diğer tüm altcoinlerin bilgilerini de sunacak şekilde sistemi geliştirmek.

Konu üzerinde çalışmak isteyenler yorum kısmından iletişime gecebilirler.

Blok Zinciri

Blok-Zinciri; bitcoin olarak adlandırılan kripto para teknolojisinin arkasındaki temel kuramdır. Sanal, güvenli ve merkezi bir otorite tarafından yönetilmeyen bir para biriminin el değiştirme kaydının tutulması için tasarlanmıştır. Arkasındaki emsalsiz teknoloji, sanal para başta olmak üzere daha bir çok alanda çığır açmaya adaydır. Burada blok-zinciri teknolojisinin anlaşılır bir şekilde ifade edildiği Türkçe bir kaynak yazmak amaçlanmıştır.

Temel Kavramlar

Aslında basit bir işleyişi olan blok-zinciri, temel kavramların bilinmemesi nedeni ile anlaşılması zor bir hale bürünmektedir. Bu nedenle temel kavramların neler olduğunu başta sıralayıp daha sonra yeri geldikçe bu teknolojilerin nasıl birleşerek blok zincirine hizmet ettiğini göstermeye çalışalım.

  • Sayısal imza (Digital Signature)
    • Açık ve gizli anahtar şifreleme (Public Private Key Encription)
  • Hash fonksiyonu
  • Büyük defter (Ladger)
  • Uçtan uca iletişim (Peer to Peer Networking)
    • Dağıtık mimariler (Decenterilized Arcitecture)
  • Proof of Work (İş Kanıtı)

Bu temel kavramlardan bazılarına şimdi bazılarına da yazının ilerleyen bölümlerinde deyinmeye çalışacağım.

Kriptografik Hash Fonksiyonu

Herhangi bir uzunlukta bir veriyi alıp sabit uzunlukta bir özet bilgi üreten hash fonksiyonu temelde üç ana unsuru içinde barındırır. Bunlardan ilki, geri dönüştürülememe özelliğidir. Yani, bir hash çıktısına bakarak fonksiyonun girdisi olan veri tahmin edilemez olmalıdır. Bir diğer özellik ise, girdi verisinde olan ufak bir değişikliğin bile hash sonucu üretilen bilgide çok fazla değişiklik olarak gösterilmesidir. Üçüncü özellik ise farklı veri setlerinden aynı hash bilgisi üretilme olasılığının çok düşük olmasıdır. Sonuç olarak Dijital imza ve block-zinciri işlemlerinde çok fazla kullanılan bu fonksiyon, verilen bir bilginin belirli uzunluktaki özetini üretir. Aynı veri için her zaman aynı Hash özeti oluşturulur. Bitcoinde kullanılan hash fonksiyonu sha256 olup, üretilen özetin uzunluğu girdi verisinden bağımsız olarak her zaman 256 bit uzunlukta olur.

Örnek:

SHA256(“Selam Dünya”) =

540bbddfcbf316188821239130dcd40a0efdf4c92cfae5775a2e0f5d8ba2ffc5

SHA256(“Selam Tünya”) =

d2446caf29b55a0aa8ed2a7944cca74822b5f80627868599f30c8d40d90670f1

Uçtan uca iletişim ağ yapısı (Peer to peer networking)

Client Server mimarisinin aksine, uçtan uca iletişim ağ yapısında her bir bilgisayar bir birine bağlantı kurmaktadır. Tüm kullanıcıların bağlandığı bir sunucu sistemi mevcut değildir. Merkezi bir yönetim yoktur ve herhangi bir bilgisayarın kapatılması sistemin işleyişini engellemez. Tüm bilgisayarlar networkte eşit işlem görürler. (Ağ yapısı kurgusuna göre bazı özel düğümler özel işlemler gerçekleştirebilirler)

BitCoin

2008 yılında Satoshi Nakamoto isminde biri yada birileri tarafından sekiz sayfalık bir makale yayınlandı. “Bitcoin: A Peer-to-Peer Electronic Cash System” orjinal başlığındaki makalede bitcoin teknolojisi ayrıntılı olarak anlatılmaktaydı. Kimse Satoshi Nakamoto’nun kim olduğunu bilmiyor. Bir grup mu yoksa hükümet destekli daha büyük bir proje mi? Asıl ilginç olan, böylesine akıl dolu bir sistemi tasarlayan birisinin ünlü olmak varken saklanmayı tercih etmesi. Gizemli olmanın olayın populerliğine katkı sağladığı açık.

Sistem tasarlanırken aslında en önemli amaç, bir merkez yada hükümet tarafından yönetilmeyen bir yapı kurmak. Aynı zamanda güvenilir de olmalı. Birazdan zekasına sizin de hayran kalacağınız bu insan, bu iki özelliği bir para sistemine dönüştürmek için aslında zaten bilinen ve yukarıda bahsettiğim temel kavramları kullanmış. Peki ama nasıl?

Mevcut para birimleri ve buna bağlı ödeme sistemi, bir devlet tarafından onaylanmış bir para ve el değiştirme kayıtlarının tutulduğu bir banka ile yürütülmektedir. Bir kağıt üzerine yazılan sayılar ile takası ortadan kaldırarak insanlığın ticaret yapmasını mümkün kılan para, değerli ve geçerli olduğu sürece anlamlıdır. Bunun sağlanması için ülke ekonomileri var gücü ile çalışır. Ama günün birinde bir dahi çıkıp merkezi bir otoriteye bağlı olmadan işleyecek bir para sistemini sadece sekiz sayfada tarif ediveriyor. Ve bu para birimi kabul görüyor ve hızla değerleniyor.

Bankalarda kimin hesabında kaç lira oldugu tutulur. Birine havale yaptığınızda havale miktarı kadar tutar sizin hesabınızdan düşer ve karşı tarafın hesabı havale miktarı kadar arttırılır. Kısacası bankalar kimde kaç para olduğunu ve kimin kime kaç lira gönderdiğinin kaydını tutarlar.

Bitcoinde de mantık aynıdır. Yalnız merkezi bir banka olmadığı için kayıtlar bitcoin kullanan herkezin bilgisayarında tutulur. Bu kayıt defterine ledger denir ve sistem gereği herkeste bulunan defter kaydı birbirinin aynısıdır. Bu defterin içerisinde tüm bitcoin kullanıcılarının gerçekleştirdiği hesap hareketleri vardır. Tek bir merkezde tutmak yerine kayıtların bire bir aynı kopyasını tüm kullanıcılarda tutmak; işte bu kadar basit! Herkes bir melek olsaydı gerçekten bu kadar basit olabilirdi. Zaten bankalar kimse kimseye güvenemediği için var. Sistemin arkasında yatan teknoloji tam da bu güveni sağlıyor. Kimin kime ne kadar para gönderdiği, bir zincir misali bir biri ardına kayıt defterine yazılıyor. Teknolojik olan ise, zincirin yeni halkasını oluştururken bu halkayı bir önceki bilgi ile ilişkilendiriyor olmanız. Böylece zincirin herhangi bir halkasında bir değişiklik yapılırsa tüm zincirler bundan etkileniyor ve değişiyor. Kendi bilgisayarınızda yaptığınız bu değişiklik (sahtekarlık) diğer kullanıcıların defterleri ile tutarlılık göstermeyeceği için kısa sürede sizin verinizin gecersiz ve hatalı olduğu sistem tarafından algılanıyor ve verileriniz gözardı ediliyor.

Örneklerle biraz daha teknik bir şekilde anlatmaya başlayalım. Bitcoin kullanıcılarının bir birleri ile ticaret yapıp aldıkları bir mal karşılığında bitcoin ödediklerini düşünelim. Ali Ahmet’ten araba almış olsun ve karşılığında 2 bitcoin ödesin. Yani Ali Ahmet’e 2 Bitcoin verdi. Bu kaydın büyük deftere işlenmesi gerekli.

Bu işlemin deftere yazılması için öncelikle bu ödemenin gerçekten Ali tarafından yapıldığının garanti altına alınması gerekli. Bankada bunu yaparken işlem kağıdına imzanızı alırlar. Aynı mantıkla burada da devreye dijital imza girmekte ve işlemler, işlemi yapan tarafından dijital olarak imzalanmaktadır.

Dijital imza normal imzadan daha fazla özellik içermektedir. Bir belgeyi dijital olarak imzalamak için 2 anahtara ihtiyaç duyulur. Bu anahtarlar açık ve gizli anahtarlar olarak ifade edilir (Public Private Key). Bu anahtar çifti asal sayılar kullanılarak oluşturulur ve bir birleri ile özel bir kriptografik ilişki içerirler. Bu anahtarları oluşturan yazılımlara kolaylıkla internet üzerinden ulaşabilirsiniz. Internet üzerindeki günümüz işlemleri (webden alışveriş yada bankacılık gibi) bu altyapı kullanılarak yapılır. Bir bankanın web sitesine bağlandığınızda bağlandığınız yerin gerçekten o banka olduğundan emin olmanız için banka ile aranızda geçen iletişimde kullanılan bilgiler hep bu teknoloji ile şifrelenir. Nasıl çalıştığına dijital imza çerçevesinden bakalım.

Dijital imzanın en önemli özelliği hem imzalayanın kim olduğunu göstermesi, hem de imzaladığınız belgenin değiştirilmediğinden karşı tarafın emin olmasını sağlamasıdır. Yani siz bir datayı (belgeyi) imzaladıktan sonra birisi bu data ile oynar ve değiştirirse imza bütünlüğü bozulur.

Aşağıdaki grafiktede gösterildiği gibi siz mesajı ya da belgeyi gizli anahtarınızla bir fonksiyona soktuğunuzda bir dijital imza elde edersiniz. Mesajı ve imzanızı bir başkasına gönderdiğinizde o kişi bu bilginin tam ve değiştirilmemiş olduğundan emin olmak için mesajı ve imzanızı alıp sizin açık anahtarınızla bir fonksiyona sokar. Eğer imza sizin ve mesaj değiştirilmemiş ise fonksiyon, doğru sonucu döndürür. İmza sizin değil yada mesaj oynanmış ise fonksiyon, yanlış bir sonuç döndürür.

 

 

Foksiyon olarak tanımlarsak;

Imzala(mesaj,gizli anahtar) = Dijital imza

Doğrula(mesaj,dijital imza,açık anahtar) = Doğru/Yanlış

Burada bu sistemin nasıl işlediğini ve matematiksel olarak bunun nasıl yapıldığını anlatmayacağım. Ama akıllarda tutulması gereken, birinin gizli anahtarına sahip değilseniz ve onun imzasını belirli bir mesaj için taklit etmek isterseniz, tek yapacağınız bir dijital imza uydurup mesajı ve imzayı bir doğrulama fonksiyonuna sokmanız. Bunu defalarca yapıp olup olmadığına bakmak gerçekten zordur ve büyük bir bilgisayar işlem gücü gerektirir. Ne kadar zor diyenler için; 256 bitlik bir dijital imzayı 2 üzeri 256 kere denemeniz gerekir. (En kötü durumda bu sayı geçerlidir ama belki şansınız yaver gider ve daha önce tutturursunuz)

Bitcoin’e dönersek; Mesaj ve imza bir biriyle uyumlu ve siz büyük deftere bu kaydı girdiniz. Ali Ahmet’e 2 bitcoin verdi ve bu Ali tarafından imzalandı. Bu bilgi seti artık herkesin elinde var. Ödemenin birden çok kez yapılmaması gerekir. Birileri bu şifrelenmiş ve doğru bilgiyi tekrar tekrar deftere yazarsa Ali Ahmet’e sürekli ödeme yapmış olur. Bunu engellemek için mesaj içerisinde eşsiz bir sıra numarası bulunur ve bunu ödemenin yapıldığı anki zaman bilgisi ile türetebilirsiniz. Böylece her bir işlem eşsiz hale getirilir.

Önemli bir bilgi de, Ali’nin Ahmet’e verecek 2 bitcoin’inin var olduğundan emin olunmasıdır. Olmayan bir paranın ödenmemesi için tüm işlemler zincirde kayıt altında tutulur. Zincirde geriye doğru olarak Ali’nin en baştaki parası ve sıra ile ödediği ve aldığı sanal paraların hepsi kayıtlıdır. Böylece bir t anında Ali’nin parasının olup olmadığı bilinir.

Daha önce, yapılan tüm işlemlerin herkeste bulunan ve aynı olan bir deftere yazıldığını söylemiştik. Bir işlem yapıldığında işlemi gerçekleştiren bunu networkte yayınlar ve herkes bu işlemi defterine yazar. Peki herkes bu bilgiden haberdar olmazsa (o an bilgisayarı kapalı olabilir) ya da aldığı bilgileri aynı sırada deftere yazmazsa? O zaman defterler bir biri ile aynı olmaz ve sistem doğru işlemez. İşte bunu sağlayan teknoloji bence bu işin en akıl dolu kısmı.

Sekiz sayfalık bitcoin dokumanında da bahsedilen ve tüm dataların aynı olmasını sağlayan kavram Proof of Work olarak adlandırılır. Bu ortak karara varma (Consensus) kavramı temel olarak en uzun zincir baz alınarak sağlanır. Zincire bir halka takmak yani gerçekleşen transfer işlemlerinin kaydının zincire eklenmesi için bilgisayarların hemen kolayca başaramayacağı bir yöntem uydurulmuştur. Zincire kayıtların şifrenelerek eklenmesine mining deniliyor. Bu hesabı ilk olarak doğru yapana da bir ödül var. Sistem kendi kendine ayakta kalsın diye zinciri dokuyanlar ödüllendiriliyor. Madenciler temelde şu işlemi gerçekleştiriyor.

Ödeme kayıtlarını bir biri altına yazdınız. Belli bir adete ulaşınca bir zincir halkası (blok) yapmaya karar veriyorsunuz. (1 blok büyüklüğü 1MB) Bunun için işlemlerin sonuna öyle bir sayı (nonce) uydurmanız ve eklemeniz gerekli ki tüm ödeme bilgilerini ve bu sayıyı SHA256 dan geçirince SHA256 özetinin ilk 30 biti 0 lardan oluşsun.

 

 

Bu sizce ne kadar zor olabilir? Herhangi bir mesajın başında 30 sıfırlı bir SHA256 özeti bulmak milyarda bir ihtimal olarak hesaplanıyor. (1/2^30) Bu sayıyı bulmanın tek yolu deneyerek görmektir. Sistemin böylesine bir kural koymasının sebebi, bu işlemin fazladan bir bilgisayar gücü gerektirmesini sağlamak ve bu nedenle de kolaylıkla sahtekarlık yapılmasını önlemektir. Kayıtlarda küçük bir değişiklik yapsanız bile hash özetini bozacaksınız. O zaman tekrar başında 30 sıfır olan yeni bir hash yakalamanız gerekecek.

İşte bu bilgisayar iş yüküne proof of work deniliyor. Zincire her bir halkayı eklemek için böylesine bir işlem gücü gerekli. Şimdi biraz toparlayalım.

Elinizde kimin kime para gönderdiğini tutduğunuz bir liste var. Her bir gönderi, işlemin gerçekten o kişi tarafından yapılmış olduğundan emin olmanız için kişi tarafından dijital olarak imzalanmış. Bu gönderiler alt alta yazılıyor ve büyüklüğü 1 MB olunca (Her blokta yaklaşık 2400 transaction vardır) sonuna öylesine bir sayı ekliyorsunuz ki SHA256 sonucunun ilk 30 biti sıfır oluyor (Proof of work). Bunu bulduğunuzda blok hazır. Yalnız, blokların bir birine bağlanması için de her bir bloğun başında bir önceki bloktan türetilen bu 30 sıfırlı hash özeti yazılmış olmalı. Grafik daha iyi anlatacaktır.

 

 

İşte blok zinciri oluşturuldu. Hehangi bir blokta küçükte olsa bir değişiklik yaptıysanız yada blokların yerini değiştirdiğinizde SHA256 imzaları bozulacak ve bu imza bir sonraki zincirde bulunduğu için sonrasında gelen bütün zincirleri bozacaktır.

 

 

 

Bir Blok yapısında var olan veriler

Neden bilinçli olarak bilgisayarın hesaplamakta zorlanacağı bir sistem kurgulansın ki diye düşünenlere, “sahteciliği önlemek için.” diye cevap vermiş olalım. Zincirin herhangi bir halkasında bir transferde sahtecilik yaparak değişiklik gerçekleştiren birisi zincirin geri kalan tüm halkalarının yapısını bozmuş olur ve tekrar bütün zincirleri hesaplamak zorunda kalır. Bu arada diğer taraftan yeni halkalar sürekli zincire eklenmektedir. Bozulan yapıyı onarıp mevcut yere gelmek için çok yüksek bir bilgisayar gücü gereklidir. (Networkün %51 den daha çok kısmı bir kişi tarafından yönlendirilebiliyorsa bu belki mümkün olabilir) Dağıtık mimaride binlerce hatta milyonlarca madenci ile yarışmak mümkün olamayacağı için sahtekarlık önlenmiş olur. Zincire en uzun halkanın takıldığı kullanıcı, ortaya koyduğu en fazla işlem gücü nedeni ile baz alınır. Diğer düğümler de bu zinciri kopyalar. İşte en fazla işlem gücünü ortaya koyanın sözünün geçtiği bu yapıya proof of work denilir.

Proof of work dışında elinde en fazla kripto parayı bulunduranın sözünün geçtiği kripto paralar da vardır. Buna da Proof of Stake denilmektedir. Bu consensus sağlanma mekanizması, bitcoin ve diğer kripto paraların en can alıcı noktasını oluşturmaktadır.

Buraya kadar sabredip okuyanlara teşekkür ediyorum. Daha değinilmeyen bir çok konu olsa da umarım size genel olarak blok zinciri nedir ve bitcoin nasıl işliyor anlatabilmişimdir.

Konuyla ilgili olanlar ve fikirlerini paylaşmak isteyenler lütfen aşağıdaki Yorum kısmını kullanın.

Güzel Linkler:

https://www.youtube.com/watch?v=bBC-nXj3Ng4&t=712s

http://chimera.labs.oreilly.com/books/1234000001802/index.html