Bu makalede adından sürekli söz ettiren Bitcoin ve Bitcoin'in kullandığı merkezi olmayan (dağıtık) teknolojik altyapıyı inceleyeceğiz. Borsa ve politik konularda yorum yapmayacağım, işin teknik kısmı ile ilgileneceğiz.

Bitcoin (BTC)

Bitcoin Nedir?

Kendi tabirleriyle : Bitcoin açık kaynaklıdır; tasarımı halka açıktır, kimse Bitcoin'e sahip değildir ve onu kontrol edemez, herkes katılabilir.

Bitcoin, merkezi olmayan, insanların dünyanın herhangi bir noktasından diğer bir noktasına anonim bilgilerle transfer veya alışveriş yapabildiği dijital para birimidir. Ulusal para birimlerinin aksine Bitcoin'in merkezi yoktur. Yani, paranın basıldığı bir darphane veya yetkili bir merci (ne devlet ne banka ne de şirket) yok. Bunun yerine dağıtık bir sisteme sahiptir. Bu sistemde Bitcoin yazılımı (node) kullanılır. Bu yazılım, diğer yazılımlarda yapılan işlemleri (para transferi) ve blokları (sonra değineceğim) onaylar. Kısacası herkesin çalıştığı bir komün düşünün. Sisteme dahil olanlara bookkeeper (finans işlemlerini kayıt eden / muhasebeci) denir. Daha sonra miner / madenci diyeceğiz.

Muhasebeciler (bookkeepers) en temel seviyede defter (defter-i kebir, büyük defter) tutarlar. Bu defter yapılan işlemlerin kayıtlarını tutar. Bitcoin'in hangi hesaptan hangi hesaba ne kadar yollandığının kaydı tutulur. Yapılan her işlemin kaydı herkese açıktır. Az önce saydığım 3 kriteri (kimden, kime, ne kadar) herkes görebilir, bunun için sisteme dahil olmanıza bile gerek yok.

Bitcoin'in değerini belirleyen şey arz-talep dengesidir ve diğer adından bahsetmeyeceğim parametrelerdir. Üretilecek Bitcoin sayısı bellidir 21 milyon BTC. Dolayısıyla bir dönem kıtlık yaşanacak. Çünkü kıtlığı aşmak için Bitcoin üretecek bir merkez bulunmayacak. Bunun yanı sıra kullanımı kolay, hızlı, ucuz ve güvenlidir. Güvenliğin aşılabilmesi için ya sizin hesabınıza (cüzdan) girmeleri gerekir ya da muhasebeciler defterde kayıtları manipüle etmeli. Manipüle etmek de kolay değil çünkü dağıtık bir ağ olduğu ve yapılan işlemlerin tümü şeffaftır ve herkesin onayına açıktır. Böylece işlemin validasyonu (oy verme) da yine diğer katılımcılar tarafından sağlanacaktır (Muhasebecinin defterini tüm geçmişiyle birlikte indirmek mümkün).

Bitcoin Güvenliği

Bitcoin'in bize kazandırdığı kavramların başında cryptocurrency (dijital para birimi) gelmekte. Aslında bu ismi güvenliği sağlamak adına arka planda gerçekleştirdiği algoritmalardan alır.

Bir hesaptan diğer hesaba para aktarma işlemi esnasında bu transfer işlemi kriptografik dijital imza ile imzalanır. Böylece muhasebeciler bu transfer işlemini onaylamak için ellerinde kanıt bulundurmuş olurlar. Kriptografik dijital imzayı bir kağıda atılan ıslak imza gibi düşünebilirsiniz. Her işlem için farklı imzalar yaratılacağı için kullanılmış bir imzayı tekrar kullanamazlar veya imzanın herhangi bir noktasında değişiklik yapamazlar. Sebebi ise kullanılan anahtarlar ve bu anahtarların validasyonu gerçekleştirecek diğer kullanıcılarda bulunması.

NOT : Kriptografi ile ilgili bilginiz yok ve merak ediyorsanız daha önce yazdığım yazıya göz atabilirsiniz. Bitcoin SHA256 algoritmasını kullanıyor.

Her bir Bitcoin hesabı veya adresi aslında public key tabanlıdır. Transfer işleminde kullanılan dijital imzalama işlemi ise private key tabanlıdır. Geri kalan işlem ise muhasebecilerin validasyon işlemini gerçekleştirmesidir.

Neden Merkeziyetçi Değil?

Merkeziyetçilik örneği -konu bağımsız- tepeden aşağı inmeciliktir. Bu da sorunları beraberinde getirir. Gücün tek bir elde toplanması, sizin elinizde tuttuğunuz paranın (ne olursa olsun) değerinin bu güç tarafından istenilen zamanda değiştirilebilir olduğu anlamına gelir. Örneğin; ABD'nin merkez bankası FED'in alacağı kararlar doğrultusunda cebinizdeki doların değeri değişmektedir. İnternet, özünde özgürlüğü barındırır. Merkeziyetçi olmayan sisteme bir örnek daha vermek gerekirse Torrent. Torrent dünyası P2P (peer-to-peer) kişiden-kişiye dediğimiz sistemle çalışır. Dosyalar, o dosyayı download/upload eden kişilerden sağlanır. Dolayısıyla bir kişinin dudaklarından çıkacak lafın gücü, bu dünyada yer edinemez. Bitcoin de P2P sistemle çalışır. Bitcoin'in de gücü aslında buradan gelmektedir. Asıl inovasyon burada yatmakta.

Merkeziyetçiliğin Dezavantajları

  • Kötüye kullanım,
  • Saldırılara açık,
  • Sansür uygulanabilir.

Merkezi Olmayan Sistemin Avantajları

  • Şeffaf ve kayıt tutulabilir,
  • Hızlı ve kolay (e-posta atmak kadar),
  • Daha az maliyetli,
  • Sınır tanımaz.

Muhasebeciler

Bookkeepers dediğimiz kişilerin bu ağda edindikleri bir görev var. Bu kişiler belli ücretler veya ödüller karşılığında yapılan finansal işlemlerin doğruluğunu onaylar. Peki, muhasebecileri hile yapmasına engel olan (mesela kendi hesabına para ekleme) şey nedir? Bunun için önce Bitcoin'in piyasaya sürülmesi ile ilgili bir kaç bilgi vereyim. Tüm para; 21 milyon BTC üretilecek demiştik. Üretilene kadar her geçen sürede yeni paranın üretilmesi süreci git gide yavaşlamakta. Bunun sebebi ise BTC üretmek için gerekli algoritmaların her üretim sonrasında git gide zorlaşması. Daha fazla zaman ve makine gücü gerekiyor. Son para 2140 yılında kadar üretilecek. Şimdi gelelim asıl soruya, muhasebecinin buna engel olmasına sebep olan şey nedir veya iki farklı muhasebeciden iki farklı sonuç (defter) gelirse ne olacak?

Merkeziyetçi sistemde -örnek olarak PayPal'i ele alalım- yapılan finansal işlemler belli bir sıraya göre işleme konur fakat dağıtık sistemde farklı zamanlarda farklı muhasebecilerin önüne düşer.

Hesabımda 5 BTC olduğunu düşünün. Bunu önce Eren'e, onaylanmadan da Sevda'ya gönderdiğimi düşünün (bkz. double spend). Farklı muhasebecilerin önüne farklı sıra ile düşeceği için parayı aslında kimin tutması gerektiğini bilemeyecekler ve burada bir sorun oluşacak.

Bitcoin dünyasının bu soruna yaklaşımı için fikir birliğine varması gerekiyor. Çözüm; finans işleminin doğru olup olmadığının oylanması yani validasyon. Fakat kimliksiz bir dünyada bir muhasebecinin birden fazla oy vermesi nasıl engellenecek? Bunun çözümü, muhasebecilerin çok özel bir matematik problemini (algoritma) çözmesinde yatıyor. Bu yönteme proof-of-work denir. Bunun tabi bir bedeli var. Güç ve zaman.

"...bir işlemci bir oy (...one cpu one vote)" - Orjinal Bitcoin whitepaper (sayfa 3)

Her yeni oylama için geçen süre 10 dakikadır. Böylece tüm muhasebeciler senkron kalırlar. İşlem gruplarına block (blok) ve birbirine bağlı olan bu blokların oluşturduğu zincire de blockchain (blok zinciri) / Distributed Ledger Technology (DLT) denir. Blockchain teknolojisi ise başlı başına bir devrim. Şimdiden bir çok üniversite, startup, firma bu teknoloji üzerinde çalışmalara başladı. Şimdi blockchain içerisindeki her bloğun nasıl onaylandığına bakalım.

Blockchain içerisinde bulunan her bir block, bir önceki block'un cevabını probleme girdi olarak alır. Böylece bloklar güvenli hale gelmeden önce oy ve işlem sürecinden geçerler. Problem dediğimiz şey kriptografi dünyasından, diğer bir tabirle kırılması gereken bir problem, algoritma. Algoritma üzerinde harcanan/harcanacak olan iş yükü bellidir ve kanıtlanabilir. Sonuç olarak bir merkeze bağlı olmadan, kimliğinizi gizli tutarak oylama işlemi yapabilirsiniz. Bu da Bitcoin dünyasının sunduğu (güven ihtiyacının azaltılması) güzelliklerden sadece bir tanesi.

Güven ihtiyacının azaltılması sözünü biraz açmak istiyorum. Bir hesaptan başka bir hesaba transfer yapılırken işlemi yapacak olan kişi sadece hesap sahibi olabilir. Arada banka veya başka bir şahıs yok (borsa üzerinden yapmıyorsanız). Bir diğer konu da yüksek tutarlı işlemlerin gerçekleşmesi için gereken süre uzayabiliyor. Son olarak, sistemde yapılmak istenen değişikliğin çoğunluk tarafından kabul edilmesi de diğer bir dezavantaj. Çünkü bunu zorla kabul ettirebilecek herhangi bir merci yok. Örnek vermek gerekirse Bitcoin'in 1 Ağustos tarihinde ikiye bölünme ihtimali var(dı). Bunun için oylama katılımı yapılmakta.

NOT : Zero Confirmation Transactions kavramı onay süreci olmadan hızlıca transfer yapılmasıdır. Alışveriş yaptığınız yerde bekleme lüksünüz yoksa (market gibi) bunu kullanabilirsiniz fakat dolandırıcılığa açık bir yöntem. Bunun da önüne geçmek için bazı ödeme biçimleri mevcut fakat konuya girmeyeceğim.

Cüzdan

Cüzdan, sahip olduğunuz parayı tutan, para transfer işlemlerinizi yaparken kullanılan ve önceki işlemlerinizi listeleyen bir uygulamadan fazlası değil. Herhangi bir firmanın cüzdanını kullanabilirsiniz, yeter ki uyumlu olsun. Ethereum (başka bir coin) cüzdanı üzerinde Bitcoin tutamazsınız. Ayrıca cüzdanınızda yaşayacağınız sorunların coin ile alakası olmadığını da belirtmek isterim. Örnek transfer işlemleri veya cüzdan örnekleri için buraya tıklayabilirsiniz. Cüzdanınız web, mobil veya masaüstü tabanlı uygulamalar olabilir. Uygulamanızda QR kod okuyucu var ise ödemelerinizi daha kolay yapabilirsiniz hatta yeni yeni yerleştirilmeye başlanan Bitcoin ATM'lerini kullanabilirsiniz. Eğer cüzdanınızın şifresini unutursanız (private key'e ulaşamadığınız durum) asla tekrar paranıza kavuşamazsınız, bunu unutmayın.

Örnek bir cüzdan adresi => 1CatFTRHtMNngkdLEeobF76b57LETtpyVx

Cold Storage Cüzdan

Yüksek miktarda para barındıran hesapların cold storage denen yani internete hiç çıkmamış hesaplarda tutulması öneriliyor. Bu adreste üretilen Bitcoin cüzdanı client-side yani internete hiç dokunmamış oluyor. Böylece private-key çalınma korkunuzu da aşmış oluyorsunuz. Hatta site size sayfayı HTML olarak indirip bilgisayarınızda çalıştırmanızı öneriyor.

Donanım Tabanlı Cüzdan

Private-key'inizi internetten korumak adına başka bir yöntem ise donanım tabanlı cüzdanlar. USB ile bilgisayarınıza bağladıktan sonra uyumlu cüzdanlarla çalışan, transfer işlemleri sırasında her türlü hırsızlığı koruyan bu yöntem daha da güvenlik korkusu olanların ilacı. Hatta virüslü bir bilgisayarda bile güvenle kullanabilirsiniz. Bkz. Trezor

Yedekleme

Kısa ve öz; private-key'e erişimi olmayan (cüzdanı yaratan kişi/şirket) cüzdan tiplerinde sakın ama sakın yedeklemeyi unutmayın.

Mining (Madencilik)

İşte geldik en can alıcı noktaya. Çoğu kişinin Bitcoin'in nasıl çalıştığı, neler yaptığıyla ilgilenmeyip bir an önce madencilikten para kırmayı umduğu kısım. Öncelikle şunu söyleyeyim, diğer coin'ler için değil ama Bitcoin için çok geç. 2013 yılında olsaydık bir şeyler yapabilirdiniz ama şu an çok geç. Mining hiç efektif değil çünkü üretilecek Bitcoin'lerin çoğu üretildi ve çözülmesi gereken algoritma şu an o kadar zor noktadaki tüketilen elektrik ve makine gücü karşılığında üretilen Bitcoin'in miktarı zarar etmenize sebep oluyor (tabi Bitcoin'in değeri uçuk noktalara gelmezse, fakat gelecek gibi görünüyor). Bitcoin Mining Calculator tarzı sitelerde harcanan elektrik ve zamana göre üretilen coin ve kar oranlarını belirleyen siteler var. Neyse, konuya dönelim.

Bitcoin'i ATM, borsa, web veya direkt olarak diğer insanlardan almanın dışında bir yol daha var; mining, diğer adıyla madencilik.

Muhasebeci (Bookkeper) = Madenci (Miner)

Yazıda bunca zaman bookkeeper olarak bahsettiğim muhasebeciler aslında birer madenci. Peki neden böyle isimlendirdik? Tek sebebi daha anlaşılabilir olması için ve isminin hakkını vermesi. Muhasebecinin oylama sürecinde yaptıkları iş kadar ödül aldığı sistemden fazlası değil madencilik. Böylece dünyanın dört bir tarafına yeni Bitcoin dağıtılmış olur. Madenciliğin ekran kartı işlemcisi veya işlemcinin kullanılmasıyla yeni para üretimi olduğu gibi bir yanlış algı var fakat asıl işleri tuttukları defterin sürdürülebilirliğini sağlamak. Defterlerin sürdürülebilirliğini sağlamaktan kastım transfer işlemlenin doğrulanmasında harcadıkları emek. Emeğin karşıtı yeni para.

Soru : Madenciler transfer işlemlerindeki oylama süreci sonucu para ile ödüllendiriliyorsa para üretimi 2140 yılında bittiğinde nasıl para kazanılacak?
Her 4 senede bir para üretiminin (ödül) yarı yarıya azalacağına dair kural var. Son BTC üretiminin (2140) sonrasında ise madencilik olmayacak. Çünkü piyasaya yeni para çıkmayacak. Madenciler para transferlerini kontrol edip oylama işlemlerini yapmaya devam edecekler defterlerini senktron tutacaklar fakat para kazanamayacaklar (tabi madencilerin alacağı fikir birliği ile değişiklik olmazsa). İşlem ücreti hariç. Oylama (validasyon) işlemlerinin hızlı olması için küçük miktarlarda ödül koyabilirsiniz bunu da belirteyim.

Bu dönemde bilgisayarınızın CPU veya GPU'sunu kullanarak BTC madencilik yapmak gerçekten de hiç karlı bir işlem değil. Madencilik yapacaksanız diğer coin'lere (altcoin) bakmanızı öneririm. Markette bulunan coinlerin listesini buradan görebilirsiniz. (değeri, market hacmi vs.)

Bitcoin Yazılım Evreni

Bitcoin ilk çıktığı zaman tüm işlemleri yapan tek bir uygulama vardı. Sadece cüzdan istiyorsanız yine de tüm defteri indirmeniz gerekiyordu. Bu da gereksiz işlem ve hacim kaybına sebep oluyordu. Örneğin; defter kaydını tutmak istemiyorsunuz. Bunun için de mantıklı bir sebebiniz var; neden yapılan tüm işlemlerin kaydını tutasınız ki? Temmuz 2017'ye kadar yapılan işlemlerin defter boyutu 65 GB ve uygulamanızın depolama şekline göre 100 GB'a kadar çıkabiliyor (hatta geçebiliyor). Defteri diğer node'larla (noktalarla) paylaşmanın bedeli ise her ay yüzlerce GB'lık veri transferine sebep oluyor.

Bitcoin Core tüm defter kaydını tutan,resmi bir uygulama ve Bitcoin.org'dan indirilebilir.

Şimdi ise Bitcoin'in açık kaynak olması nedeniyle bir çok uygulama var ve ihtiyacınıza göre uygulamaları edinebiliyorsunuz. Örneğin; sadece cüzdana sahip olmak, madencilik yapmak istemiyorsanız bunun için tek bir uygulama var. Ayrıca Bitcoin kütüphaneleri Python, Java, Ruby, Go ve daha fazla popüler programlama dilini desteklemekte.

Bir diğer Bitcoin uygulaması ise BitPay imzalı bitcore uygulaması. Uygulama Javascript tabanlı, açık kaynak koda sahip.

Dijital İmzalar

Dijital imzalar public ve private key'lerin kullanılması ile oluşturulan bir sürecin çıktısıdır. Bir cüzdandan başka bir cüzdana para transferi yapılırken ortaya çıkan sürece bakalım.

Yukarıdaki dijital imza süreci; mesaj public key kullanılarak elde ediliyor ve orjinal mesaj ile eşleşiyorsa bu transfer işlemini yapan kişinin private key'i kullanılarak yapıldığını kanıtlar. Eşleşme doğruysa bu mesajın değiştirilmediğini de kanıtlamış olur. Sağlamasını şöyle yapabiliriz; imza mesajın bir parçası olduğu için ve biz yine aynı mesaja ulaştıysak, mesaj değiştirilmemiş demektir.

Dijital imzanın nasıl yaratıldığı konusunu da gördükten sonra şimdi bir işlem (transaction) yapıldığı zaman nasıl süreçlerden geçtiğine bakalım.

Bitcoin adresi : dijital imza algoritması kullanılarak oluşturulmuş bir public key.

Senaryo : Tayfun, Sevda'ya para yollamak istediğinde parayı yollayacağı adres Sevda'nın public key'i oluyor. Bu işlem sırasında bu public key'in Sevda'ya ait olduğu da üretilen imza ile tescilleniyor. Bitcoin adresi bir havuz gibi düşünebilirsiniz. İsteyen herkes bu adrese istediği miktarda para yollamakta serbest. Fakat sadece private key'e sahip kişi bu havuzun anahtarına sahip. Bu da parayı sadece Sevda'nın çekebileceği anlamına geliyor.

Soru : Private key random karakterlerden oluşuyorsa, aynı key'e sahip olmamız mümkün değil mi?
Cevap : Kağıt üzerinde mümkün fakat cüzdan oluşturmak için 1048 ihtimal mevcut.

Bitcoin İşlemleri (Transaction)

Adres ve işlem hakkında bilgi sahibi olduğumuza göre şimdi işlemlerin defterlerde nasıl kayıt edildiğine bakalım.

Defterde işlem esnasında gönderilen para miktarı görünür fakat bakiye (balance) gözükmez. O halde başka bir soru işareti doğuyor : Parayı gönderen kişinin hesabındaki para miktarını nasıl bilip işlemi onaylayacağız? Eren, Sevda'ya 5 BTC yollamak isterse hesabındaki BTC miktarını görmeden bu transaction'ı nasıl onaylarız? Şöyle : Eren'in hesabında 5 BTC olduğuna göre, birisi veya birileri Eren'e 5 BTC yollamış olmalı. Bu transactionlarda bulunup işleme katılıyor ve böylece işlem onaylanıyor. Çok fazla işlem olduğu zaman performansa yansıyacak fakat sorun indexlerle hallediliyor.

Unspent Output Kavramı

Harcanmamış çıktı, henüz başka bir transaction'ın girdisi olmayan çıktıdır. Unspent Transaction Outputs "utxo's" olarak adlandırılır. Farklı bir veri tabanında tutulur ve sık sık, kontrol amaçlı kullanılır.

Aşağıda bir örnekle açıklayayım, bunun işlemlerin hızlı gerçekleştiği (küçük blok zinciri) bir sistemde olduğunu varsayıyorum.

İlk blok : A adresinde mine edilmiş 10 BTC var. (A = 10)
İkinci blok : A adresinde mine edilmiş 10 BTC var, A adresinden B adresine 3 BTC gönderiliyor, para üstü adreste kalıyor (A = 10, B = 3, C = 7)
Üçüncü blok : A adresinde 10 BTC var, B adresinden D adresine 3 BTC gönderiliyor (A = 10 + 10, C = 7, D = 3)

Üç blok sonrası toplamda 4 tane harcanmamış çıktı (unspent output) bulunuyor

  1. A'da iki tane 10 BTC değerinde unspent output bulunuyor,
  2. C'de 7 BTC değerinde tek unspent output bulunuyor,
  3. D'de 3 BTC değerinde tek unspent output bulunuyor.

İki tane de harcanmış çıktı (spent output) mevcut

  1. İlk blokta 10 BTC üretildi, 2. blokta harcandı,
  2. 2. blokta 3 BTC çıktı üretildi ve 3. blokta harcandı.

Harcanmamış çıktılar birleşmez. A adresindeki iki harcanmamış çıkı birbirinden ayrıdır ve transaction'da kullanılana kadar ayrı kalacaklar.

NOT : Para üstünü almak da bir transaction oluyor. Dolayısıyla para üstü de paranın sahibinin adresine geri gönderiliyor. Bunun sebebi bir kerede tüm parayı harcama kuralı.

İşlem Zinciri Güvenliği

Her ne kadar cüzdan sahibinin kimliği bilinmese de yapılan işlemlerle cüzdana ulaşmak mümkün. Her para birimi değil fakat Bitcoin'de mümkün.

Yukarı resim bir transaction'a ait. scriptSig denen kısım ise adres sahibi tarafından girdiler için oluşturduğu bir dijital imza. Bu imza izni içerisinde barındırıyor. Ayrıca gönderen kişinin cüzdan kimliğini de barındırıyor. Bu yüzden Bitcoin için anonim değil pseudonymous (takma isim) ifadesi kullanılır.

Soru : Bunun bizim için ne gibi sakıncası olabilir?
Cevap : Örneğin; Microsoft Bitcoin kabul ediyor olsun ve alışveriş yaparak kendinize bir ürün aldınız. Yaptığınız transaction'ı diğer transaction'larla bağlayabilir ve nelere para harcadığınızı görebilir. Bir nevi "shopping behavior" analizi elde edilebilir.

Fikir Birliği Hakkında

"Dijital" kelimesi sanki çok kolay bir şekilde çoğaltılabilirmiş anlamına geliyor. Aslında doğru, bir siteden .mp3 indirdiğinizi düşünün. Orjinali + (1) sizin indirdiğinizle beraber sayısı artmış olacak. Peki Bitcoin dünyasında bu işler nasıl yürüyor? Cüzdanınızda 10 BTC olduğunu düşünün, bunun tümünü harcadığınızı ve asıl defter yerine henüz güncellenmemiş defterle bir dükkana gidip alışveriş yapmaya çalıştığınızı düşünün. Bu durumda sahip olduğunuz + sahip olduğunuzu iddia ettiğiniz kadar paranız olacak. Daha da kötüsü, bir grup miner'ın düzenbazlık yaparak alışverişlerde hile yapmaya çalıştığını düşünün. Mümkün mü? Hayır. Güven sistemi çoğunluğa dayalı olduğu için transaction'ın valid olup olmaması belli olmayan sıralarla diğer miner'ların önüne sunulacak. O yüzden, para yaratma, nasıl validasyon edileceği, yazılım güncellemeleri vb. gibi sorular tüm minerlara yöneltilen, fikir birliğine varılan bir sistemi oluşturuyor.

Blockchain ile İşlemleri Kilitleme

Mining işleminin şifrelenmiş bir problemin çözümünden başka bir şey olmadığını söylemiştik. Altında yatan çözüm ise verilmiş bir çıktı için girdiyi bulmak, diğer bir şekilde söylemek gerekirse değer kısmında bulunan yere sürekli sayılar vererek deneme işlemi yapmak.

SHA256(X) < t ........... t / 256 = Başarı İhtimali ......... t ne kadar küçük ise işlem o kadar zor.

SHA256(ÖNCEKİ BLOCK HASH, TRANSACTIONS, değer)  < t ?
SHA256(ÖNCEKİ BLOCK HASH, TRANSACTIONS, 0)        < t ?
SHA256(ÖNCEKİ BLOCK HASH, TRANSACTIONS, 1)        < t ?

Açıklanan istatistiklere göre 2016 Ocak ayı itibariyle madenciler saniyede 1 kentilyon deneme yapıyormuş.

Bitcoin Network

Yapılan her transaction sonrasında bu transaction network'e dağıtılır fakat dağıtıldığı an gerçek kabul edilmez. Önce "onaylanmamış işlem havuzu" denen havuza düşer. Madenciler bu havuzdan transaction'ları alarak yeni bir blok adayı yaratırlar. Her madenci cevabı bulan ilk kişi olmak için yarışır ve çözüme ulaşan ilk kişi cevabı ağ ile paylaşır.  Bir kişinin cevabı bulması yeterlidir. Çünkü bir blockchain'de block bir önceki block'un hash değerini üzerinde tutar. Burada anlaşılması gereken bir konu var. Farklı transaction'lar farklı miner'ların önüne farklı zamanlarda düştükleri için bir block'un input'una verdikleri değer (çözülmüş bir block'un output'u) farklı block'tan gelmiş olabilir.

Bitcoin Fork

İki madencinin aynı anda block'u çözüp aynı sonuca ulaşması blockchain'de fork (çatallaşma bkz. yukarıdaki resim) meydana getirir. Bu sorun, hangi branch üzerinde işleme devam edileceği oylaması ile sonuçlanır. Genel kural, en uzun blockchain'in işleme alınmasıdır fakat daha fazla ve daha hızlı bilgisayarların ağa katılımı sonucu zorluk derecesi artar ve en uzun blockchain değil, çözümü en zorlu ve en ağır iş yükü olan blockchain seçilir (oluşturulur).

Çatallaşmaya ve kararsızlığa engel olmak adına kısa süreli kabul işlemleri yerine ortalama bir süre vardır bu süre 10 dakikadır.

Blockchain Onay Süreci

6 onay 6 blok geri demek ve yüksek tutarlı ödemeler için önerilen onay sayı budur.

Ortadan kaldırılan kısa branch'ler yok olmaz. Onaylanmamış işlem havuzuna geri dönerler.

Bitcoin Yaratma

Bitcoin yaratma sürecinin başında problemini çözdüğünüz bloktan blok ödülü almak yer alıyor. Bunun dışında blokta bulunan transaction'lara konan ödül (fee)'yi de alırlar. Transaction'a onaylanması adına ufak bir ödül koymak burada önem kazanıyor. Madenciler ödülü olmayan veya az olan transaction'ları (onaylanmamış işlem havuzu) görmezden gelebilir veya önemini azaltabilir.

Block'a çözüm bulmak ve blok ödülünü almak zor bir iş. Bitcoin dünyasında bunun karşılığı sizin ürettiğiniz hash yüzdesi ile ağdaki diğer insanların ürettiği hash yüzdesiyle orantılı. Bu sebeple insanlar "mining pools" denen madencilik havuzlarında beraber güç kullanarak çözüm bulmaya çalışırlar. Ödül az fakat istikrarlı. Dezavantaj => mining pool'lar özünde merkeziyetçidir. Çünkü havuz operatörleri bulunuyor. Şu an halihazırda çalışan poolların listesi (bazıları ağdaki tüm hash gücünün %10'una sahip) ve kullanım oranları için tıklayınız.

Merkeziyetçlik ve Baskı

Bitcoin'in merkeziyetçi yapıda olmaması sizi merkeziyetçi bir yapıdan kurtarmaya yetmiyor. Bu da ne demek?

Merkeziyetçi Madencilik

Bloktan ödül kazanmanın zor olduğunu söylemiştik. Ne kadar zor diye sorarsanız piyangoyu kazanmak kadar zor diyenler olacaktır. O yüzden insanların çoğu "madencilik havuzu" denen yönteme yöneliyorlar. Maden havuzları kendi sunucularını barındıran merkezi yapılardan fazlası değil. Blockchain'in nasıl oluşturulacağına karar veren, kesinti yapan ve operatörlere sahip bir sistem. Dolayısıyla sizi bazı dezavantajlar bekliyor. Operatörler sizin için işlem seçen, branch'e ve hangi yazılım versiyonunun kullanılacağına karar veren yetkililerdir. Yani kişilere güç tanınıyor, aracı ile çalışmış oluyorsunuz.

Merkeziyetçi Yazılım

Bitcoin'in kodu her ne kadar açık kaynak kod da olsa sonuçta belirli geliştiriciler ve bu geliştiricilerin ürettikleri yazılımlar var. Bu yazılımların dışına çıkıldığında (başka uygulamalar) sorunlar da beraberinde geliyor. Öncelikle şunu soralım. İnsanlar neden başka yazılımlara geçiş yapıyor? Bitcoin, block başına 1 MB veri tutabiliyor. Bu da işlem hacmi büyük bir kripto-para için sorun çünkü işlemler aksayabiliyor. Bazı programlar bundan fazlasını sunabiliyor fakat bu da transaction'ların ve block'ların reddedilmesine sebep olabiliyor çünkü yazılım orjinal değil, farklı versiyon. Bu sorun göz önüne alındığında herkes (sorunsuzca mine etmek istiyorlarsa) tek bir yazılım, orjinal yazılımı kullanmak zorunda kalıyor.

Hard Fork vs. Soft Fork

Fork (çatallaşma, ayrışma) işlemini github'daki fork gibi düşünebilirsiniz. Sizi, master branch'ten ayıran başka bir yol.

Mesela Bitcoin'in 1 MB'lık block size'ı ileride sorunlara sebebiyet verebilir. Bu sebeple madenciler arasında bir tartışma gerçekleşir. Kimileri bunun sabit kalması gerektiğini savunurken kimileri de kuralların değişmesi gerektiğini savunuyor. Bunun sebepleri başında fikirbirliğine varılamaması yatıyor. Peki bu ayrışmalar nasıl oluyor?

Hard Fork
Yazılım / kural değişir; eski yazılımın desteği olmaz.

Hard Fork
Senaryo : Blok boyutunun 2MB'a çıkarıldığını ve çoğunluğun yeni yazılımı kullandığını düşünün . Eski node'lar 1MB'tan fazla olan blokları onaylamayacak ve görmezden gelecektir. Madencilerin çoğu yeni yazılımı kullanıyor olsa da eski yazılımı kullanan azınlık kendi branch'inde devam edecektir. Eski yazılımı kullanan servisler veya cüzdanlar da bundan etkilenecektir.

Soft Fork
Yazılım / kural değişir; eski yazılımın, yapılan her transaction ve blockları destekleyeceği ayrışma biçimi.

Soft Fork

Senaryo : Blok boyutunun 2MB olduğunu ve çoğunluğun yeni yazılımı kullandığını düşünün. Eski yazılım, yeni bloğu tanımaz fakat geçerli sayar. Yeni bloklar yaratıldıkça eski yazılım farkında olmadan blok zincirini inşa etmeye çalışır fakat blok zincirine boyutu büyük bloklar gelir. Daha sonra blok zincirine yeni bloklar gelmez çünkü çoğunluğun hash gücü daha fazladır. Soft fork'un avantajı yeni yazılım tanınmasa da blok zincirine eklenir. Fakat şöyle bir karışıklık meydana gelir: eski yazılımı kullanmaya devam eden madencilerin oluşturdukları bloklar israf olacak çünkü kabul edilmeyecekler.

Bitcoin'den Fazlası

Altcoin

Bitcoin, cryptocurrency dünyasının ilk ürünü fakat şu an 800'den fazla dijital para var. Bu kadar dijital para türetmek yerine neden Bitcoin'e katkı sağlanmadı veya neden tek bir dijital para birimi yok diyorsanız altcoin dünyasına hoşgeldiniz.

Bitcoin, dünyanın dört bir yanında madencilere sahip, market hacmi ve işlem sayısı büyük bir ağ. Ağ ne kadar büyükse güncelleme işlemleri de bir o kadar zor oluyor. Dolayısıyla yeni fikirleri böylesine büyük bir ağda hayata geçirmek hem riskli hem de zor olduğu için katkı yerine yeni dijital para birimleri üretiliyor. Türetilen bu yeni dijital paralara altcoin deniyor. Altcoin'lerin bu kadar çok olmasının başka bir sebebi ise güzel fikirlerin, yanında kendi coin'i ile gelip geliştiricilere para kazandırması.

Soru : Yeni para nasıl dağıtılıyor?
Cevap : Bitcoin yavaşça para üretir ve rastgele katılımcılara madencilik yoluyla para dağıtır. Bazı dijital paralar ise ufak miktarda tedarik ile veya crowdsale / Initial Public Offering (İlk Halka Arz / IPO) ile dağıtıma başlıyor. IPO'nun yerini Initial Coin Offering (ICO) ifadesi almış durumda.

Proof-of-Work

Yazımda bir kere de olsa bahsettiğim proof-of-work mekanizmasını biraz açmak istiyorum. Anonim olarak dünyanın dört bir yanından transaction'ların oylanması mekanizması proof-of-work'e örnektir. Bunun yapılma sebebi ise defterin doğruluğunu sağlamak. Doğruluk, çoğulculuk ile elde ediliyor.

Bizans Generalleri Sorunu : Bir şehri 5 farklı yerden 5 generalle kuşatan Bizans ordularını hayal edin. Hep beraber hareket ederlerse -ister saldırı olsun ister geri çekilme- başarılı olma ihtimalleri yükselecek çünkü güçlerini birleştirmiş olacaklar. Fakat kimisi saldırıp kimisi geri çekilmeye çalışırsa muhtemelen yenileceklerdir. Bu generallerin birbirlerine bir ulak gönderip hangi kararı alacaklarını bildirdikleri sistem, proof-of-work sistemine güzel bir örnek. Çoğunluk ne karar alırsa o doğru kabul edilir ve işlenir.

Soru : Proof-of-work mekanizması sonucunda üretilen çözümler kullanışlı olabilir mi?
Cevap : Bir kaç altcoin var ki arkada mine etmeniz için çözdüğünüz algoritmalar, gerçek hayatta karşımıza çıkan sorunlara cevap olabiliyor. Mesela Primecoin (XPM), çözdüğünüz her algoritma ile asal sayıları bulmayı hedefliyor. FoldingCoin (FLDC) (mine medicine, not hashes) sağlık sektörüyle ilgili sorunlara çözüm bulmayı hedefliyor. Gridcoin (GRC) ise makinelerin gücünü bilimsel araştırmalarda kullanıyor.

Proof-of-Stake

Proof-of-Stake, Bitcoin'indeki transaction sırasına göre işlem gücüyle çözüm bulmak yerine, kaç adet paranız olduğuna bakan oylama sistemidir. Paranız çoksa, işlerin ters gitme ihtimaline karşı daha fazla risk altında olduğunuz için parası çok olanın ağda etkin olduğu bir oylama sistemi.

Bitcoin Proof-of-Work

HASH(önceki blok bilgisi, transactions, değer) < x

Peercoin (PPC) Proof-of-Stake

HASH(önceki blok bilgisi, simdiki_zaman, coin_id) < bakiye * x

Yukarıdaki algoritmada (Peercoin = başka bir altcoin) değişen tek şey zaman parametresi. Bu algoritmayı bir saniyede birden fazla kez çalıştırmaya gerek yok.

Avantajları

  • Daha az enerji tüketimi,
  • Maden havuzu ve özel donanıma ihtiyaç olmadığı için daha az merkeziyetçi,
  • Daha güvenli.

Proof-of-Stake tabanlı oylama sisteminde fork işlemlerinde blok üretmek için hiçbir yük olmayacağından kolayca branch'ler uzayıp gidebilir. Bu da tabi ileride sorunlara sebep olabilir fakat bu sorunlar  için de çözüm mevcut. Fork konusunu zaten anlattığım için pek fazla derine inmeden geçiyorum bu konuyu.

Zero Knowledge Proofs

Zero knowledge proof, transaction protokolünde paranın tutarını ve katılımcılarını (kimden ve kime) gizleyen, buna rağmen bir kişinin iki kişiye onaylanmadan aynı parayı yollamasına engel olan yöntemdir.

Soru : Hiçbir bilgi yoksa, bir kişinin aynı tutarı birden fazla kişiye yollaması nasıl engellenecek?
Cevap : Algoritma çözüldükten sonra çözümün sadece bir kısmı ki bu kısımdaki değerler de şifrelenip kontrol ediliyor.

Bu yöntemi kullanan halihazırda dijital paralar var. Bunlardan bir tanesi (şu an en popüleri) Zcash (ZEC).

Stabilite Sorunu

Dijital paralar henüz gerçek değerine ulaşamadığı için marketlerde veya diğer alışveriş lokasyonlarında fiyatın ürününü göstermekte sorunlar ortaya çıkıyor. Dolayısıyla dijital paraların dolar değerinden cinsinden, yani direkt olarak kağıt para cinsinden değerleri tutuluyor.

Smart Contracts denen kavram ise (bkz. Ethereum) para transferi yapan programların, önceden programlanmış belli kurallara göre işlem yapması. Durum burada daha da kötü. Örneğin evinizin kirasını BTC cinsinden ödüyor olun. Bugünün değeriyle 2 BTC ödeyecekken bu değer bir dahaki ay 1 BTC olabilir.

Bir dijital para, ne kadar çok kullanılırsa o kadar değeri gerçeğe yaklaşır. Şu an için dalgalanmalar mevcuttur ve normaldir. Bu duruma çözüm üretmeye çalışan başka dijital para birimleri mevcut.

Digix (DGD) : Direkt olarak Singapur'da bir kasada duran altınla eşleşmiş olan bu coin, token (para) başına 1 gram altın değer taşıyor. Gerçekten altına sahip olduğunuzu da size gönderdikleri fotoğraftan anlayabilirsiniz. Hatta Singapur'a gidip dijital paranız karşılığında değeri kadar altın alabilirsiniz. Şu an için tek kasanın olması risk barındırıyor olabilir ama işler ileride değişebilir. Not : Ethereum tabanlıdır.

Tether (USDT) : Digix'in aksine altın ile değil bildiğimiz Amerikan Doları ile ilişkili. Hesapların kayıtları tutuluyor ve hesap Honk Kong'da. Tether firmasına vereceğiniz dolar karşılığında token elde ediyorsunuz. Bunu da Bitcoin ağında tekrar Amerikan Doları'na çevirebiliyorsunuz.

Konu ile alakalı diğer dijital para birimlerinden bazıları : NuBits (USNBT), bitUSD (BITUSD)

Konuyu burada bitiriyorum. İnanın bu yeni teknolojinin detayları çok fazla ve teknik konular çok derin. Maksat bir ön bilginiz olması. Ethereum'dan da ayrı bir makalede bahsetmek istiyorum. O yüzden pek detaya inmedim.

Bitcoin ile ilgili temel sorulara (kim yaptı, yasal mı, nasıl satın alır veya alışveriş yaparım) cevap bulmak isterseniz bu sayfayı inceleyebilirsiniz => https://bitcoin.org/tr/sss

Dijital parayı destekleyin, ben öyle yapıyorum. Para transferlerinde aracı firmalara mesela legal mafya olan bankalara para vermemek, merkeziyetçi, sansürcü ve baskıcı ortamlardan özgürlükçü VE HAFTASONU BİLE FARKLI ADRESLERE IŞIK HIZINDA PARA TRANSFERİ YAPABİLECEĞİMİZ ortamlara evrilmenin önü açıldı, kimse engel olamaz.