Bitcoin nedir Ⅳ
- Fātih Teoman
- Sep 20, 2022
- 7 min read
Updated: Oct 15, 2023

Bir parayı dört kez üst üste atma deneyini düşünelim. Soru şu: ortalama kaç deneyde ilki yazı olan bir sonuç buluruz; yazılara 0, turalara 1 yazarsak 0110 gibi? İki deneyde: İlkinde olmazsa ikincisinde olur, bunu herkes bilir. Peki, ortalama kaç deneyde en az ilk ikisi yazı olan bir sonuç yakalarız? İlk iki atış 00, 01, 10, 11 olabilir. Dolayısıyla, ortalama dört deneyde en az ilk ikisi yazı olan bir sonuç buluruz. Peki ortalama kaç deneyde en az ilk üçü yazı olan bir sonuç? Bildiniz, sekiz. Parayı dört kez değil de 256 kez atsaydık, en az ilk 16'sı 0 olan bir sonuç bulmak için ortalama 2¹⁶ = 65,536 deney yapmamız gerekirdi. Şimdi bizim en az ilk 4 basamağı, yani en az ilk 16 biti, 0 olmak zorunda olan heşimize tekrar gidelim: Blockchain Demo (andersbrownworth.com). SHA-256, adı üstünde, tam 256 adet 0 ve 1'den oluşuyor ve en az ilk 16 biti 0 olan bir heş bulmak için deneme yapmaktan başka bir çaremiz yok çünkü bu, para deneyimizin aynısı. Hiç ara vermeden elimizle her 4 saniyede bir nans girsek bile bu sayıda deneme yapmamız 3 günden fazla sürer ama sunucu için bu sayı küçük olduğundan Mine diyince bikaç saniyede uygun bir nans bularak istenen bir heş değeri döndürüyor.
Şimdi geldik, madenciler yapmak istedikleri bloğa havuzdan hangi gönderal taleplerini seçiyor ve kaç adet gönderal seçiyor? Bir gönderal talebinde gönderal ücreti olarak ödenmek istenen miktar da yer alıyor. Havuzda binlerce gönderal var ve biliyoruz ki her 10 dakkada bir blok yapılıyor. Dolayısıyla, sizin talebiniz ilk yapılacak blokta da yer alabilir, onuncu blokta da. Bunu belirleyen sizsiniz. Ne kadar yüksek ücret ödemeye razıysanız gönderalınız da o kadar hızlı bir şekilde bir blokta yer bulur. Göndereceğiniz bitcoin'in karşı tarafa hemen ulaşmasını istiyorsanız gönderal ücretini yüksek tutarsınız ve madencilerin amacı en yüksek bitcoin kazandıran gönderalları bloğa eklemek olduğundan gönderalınız hemen bir blok adayına eklenir ve hızlıca gerçekleşir. Bitcoin gönderme ücreti gönderilen bitcoin miktarından bağımsız, yani sadece daha hızlı gönderal istiyorsanız daha fazla ücret ödeyeceksiniz. Bir blokta yer alabilecek gönderal sayısına bir sınır yok ama veri büyüklüğüne sınır var. Bir bloğun büyüklüğü 4 MB'ı geçmemeli. (Blok büyüklüğünde zaman içinde değişiklikler oldu.) Dolayısıyla, madenciler yükte hafif pahada ağır gönderalları seçiyor, boyutu küçük ama ücreti büyük gönderalları.
Alis, 1 bitcoin'ini aynı anda hem Bob'a hem Mark'a 1 göndermek isterse n'olur? Bir madenci kendisine ulaşan bu iki gönderaldan ilki doğrulanabilir olduğu için onu gönderal havuzuna alır ama ikincisi birincisi ile çeliştiği için onu reddeder. Diyelim ki bir şekilde Bitcoin ağının bir kısmına ilk Bob'a gönderme isteği, diğer kısmına da ilk Mark'a gönderme isteği ulaştı. O halde bazı madenciler Bob'a göndermeyi gönderal havuzlarına ve bloklarına eklerken bazıları da Mark'a göndermeyi gönderal havuzlarına ve bloklarına ekler. İki madenci aynı anda bu iki transfer isteğinden aynısını veya farklısını içeren blok yapmayı başarırsa blok zinciri çatallanmış (fork) olur. Madenciler çatalın hangi bloğundan devam edeceğine kendileri karar verir. Diyelim ki çatalın üst tarafındaki bloktan devam eden madenciler alt tarafındaki bloktan devam edenlerden daha hızlı bi şekilde bir blok yaptılar ve kendi taraflarına eklediler. Bu durumda, diğer madenciler de bu üstteki blok zincirine devam ederler. Yani çatal durumunda blok zinciri uzun olandan devam eder, diğer blok yetim blok olarak kalır. Nihai durumda Alis ya Bob'a ya da Mark'a 1 bitcoin göndermiş olur.
Bitcoin'lerin nasıl üretildiğini anladık. Ortaya gönderallar çıkmalı ki madenciler; o gönderallardan bazılarını, bir önceki bloğun heş değerini ve bir de nansı bir blokta birleştirip uygun bir heş değeri bulsun ve blok ödülünü kazansın. Her blok bir önceki bloğa ihtiyaç duyuyorsa ilk blok nasıl ortaya çıktı? Blok zinciri, 3 Ocak 2009'da türeyiş bloğu (genesis block), blok 0 da deniyor, ile başladı. Bu ilk bloğun ödülü 50 bitcoin idi ama bu 50 bitcoin transfer edilemeyecek şekilde kodlanmıştı (nedeni bilinmiyor). Bitcoin protokolüne göre blok zincirine ortalama 10 dakikada bir bloğun eklenmesi gerekiyor. Bitcoin ağına daha az/çok madenci katılır da bloklar 10 dakikadan daha çok/az sürede yapılmaya başlanırsa, bunun da çaresi düşünülmüş: Her 2016 blokta bir, yani 14 günde bir, blok yapma zorlaştırılıyor veya kolaylaştırılıyor. Diyelim ki hedef heş değerinin 9.12 × 10⁵³ olduğu 14 günde ortalama 8 dakikada bir bitcoin üretildi. Demek ki ağdaki bilgisayar gücü istenenden fazla ve hedef heş değerinin küçültülmesi, yani yapılması gereken nans denemesi sayısının artırılması gerekiyor. Bitcoin protokolü hedef heş değerini 8/10 oranında küçültüyor, yeni hedef heş değeri 0.8 × (9.12 × 10⁵³) = 7.29 × 10⁵³ yapılıyor ve ortalama blok üretim süresi 10 dakikaya çıkarılmaya çalışılıyor. (Hedef heş değerini %20 küçültürsek blok üretim süresini %25 artırır ve 8 dakikadan 10 dakikaya çıkarırız, değil mi?)
Blok ödülü her 210 bin blokta bir yarılanıyor, bu, yaklaşık 4 yılda bir blok ödülü yarılanması anlamına geliyor. Şimdiye kadar üç kez blok ödülü yarılanması gördük; şu anda blok ödülü 6.25 bitcoin.
İlk blok yoktan var edildiğine ve blok ödülü olan 50 bitcoin transfer edilemeyecek şekilde kodlandığına göre ikinci blok nasıl oluşturuldu? Ortada transfer edilecek bitcoin yokken bitcoin transferi nasıl yapıldı? Her madenci, bloğuna, kendi Bitcoin adresine blok ödülünü ve varsa gönderal ücretlerini gönderen coin üreten gönderal (coinbase transaction) koyar, yani bir madenci, bloğunu blok zincirine eklemeyi başarırsa blok ödülünü ve varsa gönderal ücretlerini coin üreten gönderal sayesinde alır. (Madenciler genellikle coin üreten gönderalı bloklarında ilk sıraya koyarlar.) Dolayısıyla, her blok en az bir gönderal içerir. Türeyiş bloğu bu: Block: 0 | Blockchain Explorer. Sonraki blok da bu: Block: 1 | Blockchain Explorer. (İkinci blok, birinci bloktan 6 gün sonra üretildi ve bunun da nedeni bilinmiyor.) Bu bloklarda Transaction Volume ifadesinin karşısında kocaman bir 0 ve Number of Transactions ifadesinin karşısında minicik bir 1 yazdığına dikkat edin. Gerçi sadece bu ilk 2'si değil, ilk 170 bloğun hiç birinde coin üreten gönderal dışında gönderal yoktu. Blok ödülü dışında bitcoin transfer eden ilk blok 171'inci blok: https://www.blockchain.com/explorer/blocks/btc/170.
Hala sorun var! Diyelim ki hedef heş değeri 2¹⁷⁶ − 1, yani kabul edilecek bloğun heş değerinde en az ilk 20 basamağın 0 olması gerekiyor. 16'lık sayı sisteminde en az ilk 20 basamağın 0 olması demek, 256 bitten en az ilk 80'inin 0 olması demek. Bitcoin ağındaki tüm madenciler toplamda 2⁸⁰ ≈ 1.2 × 10²⁴, 1 trilyon kere 1 trilyondan fazla deneme yapmalı ki uygun bir heş değeri bulup bloğu yapabilsinler. Ama eklenecek nans 32 bitlik demiştik. 32 bit kullanarak en çok 2³², yaklaşık 4.3 milyar, farklı nans yazabiliriz, o halde istenen heşi bulamayabiliriz. 4.3 milyar nansın hepsini denesek bile bunlardan biriyle istenen bir heş bulma ihtimalimiz yaklaşık 281 trilyonda 1. Elimizdeki tüm nansları denesek bile bulma ihtimalimiz bu. Demek ki çok büyük ihtimalle bulamayacağız! Dikkatli okuyucular hemen fark edecektir, bu, oluşturulabilecek sadece bir blok için böyle. O sırada gönderal havuzundaki binlerce gönderaldan seçtiklerinizle bir blok oluşturmak üzere tüm nansları denersiniz. Olmazsa başka bir blok denersiniz. İlla başka bir blok olmasına da gerek yok, bloğun içindeki sırayı değiştirirsiniz. Alis'ten Bob'a 1 + Mark'tan Linda'ya 1 ile Mark'tan Linda'ya 1 + Alis'ten Bob'a 1 farklı bloklar oluşturuyor. Ne demiştik: SHA-256 fonksiyonunda girdideki küçücük bir değişiklik çıktıda büyük bir değişime neden olur. Demek ki madenci şöyle yapıyor: gönderal havuzundan veri büyüklüğü 4 MB'ı geçmeyecek şekilde yüzlerce gönderal alıyor. Bunlara önceki bloğun heşini ekliyor, sonra da 4.3 milyar nansı tek tek deniyor. Buldu buldu, bulamadıysa ya blok içindeki gönderal sıralamasını değiştiriyor ya da başka bir blok oluşturuyor (Baştan oluşturmasına gerek yok, bloktan bir gönderal çıkarsa, birini çıkarıp başkasını eklese başka bir blok oluşur.) Aşağıda, bir madencinin yaptığı bloklarda kullandığı nansların dağılımını görüyorsunuz. Ne kadar da rassal dağılıyor, değil mi?

Şu ana kadar anladığımıza göre birileri bi araya gelip bir protokol -kripto sistemin anayasası- yazıyorlar. Bir merkezsiz ağ (P2P network) kuruyorlar. Sonra ilk bloğu yoktan var ediyorlar. Sonra ağdaki diğer bilgisayarlara 0 bitcoin gönderen transferlerin yer aldığı blokları yine bu ağdaki bilgisayarlarla yaparak yeni bitcoin'ler yaratıp kendi aralarında takılıyorlar. Peki, biz bu ağa bağlanıp nasıl bitcoin gönderip alıyoruz? Tüm yapmanız gereken bir cüzdan. Sıcak veya soğuk cüzdanlar var. Sıcak olanlar mobil uygulama, desktop uygulaması veya web uygulaması olabiliyor. Yani ister cebinize veya bilgisayarınıza bir program indirirsiniz ve hemen bir cüzdan sahibi olursunuz ya da mail adresi alır gibi online olarak bir cüzdan açarsınız. Soğuk olarak ya özel bir donanım alırsınız, flaş bellek gibi, ya da kağıt cüzdan alırsınız. Cüzdan dediğiniz hepi topu Bitcoin adresi oluşturan bir yazılım. Yani sadece online olup kendinizle ilgili hiç bir bilgi girmeden Bitcoin protokolüne uygun bir Bitcoin adresine sahip olabilirsiniz.
Bir bankada hesap açmak isterseniz bankaya başvurursunuz, banka size daha önce kimseye vermediği bir hesap numarası verir, sonra o hesaba nasıl erişeceğinizi size anlatır, mobil uygulama veya desktop uygulaması gibi, hesabınıza erişmeniz için size otomatik üretilmiş bir şifre verir ve hesabınıza ilk girişinizde sizden o şifreyi değiştirmenizi ister. Bitcoin'de işler biraz değişik yürüyor çünkü size Bitcoin adresi verecek merkezi bir birim yok. Bir Bitcoin cüzdanı, önce 256 bitlik rassal bir sayı üretiyor. Bu sizin gizli anahtarınız (private key). Sizin gizli anahtarınızdan kriptografik işlemle bir açık anahtar (public key) üretiliyor. Bu açık anahtardan yine kriptografik işlemlerle Bitcoin adresiniz üretiliyor. İşte bu kadar basit. Gözünüzle görmek isterseniz: bitaddress.org. Buraya tıklayıp söyleneni yaptıysanız artık sizin de bir Bitcoin cüzdanınız ve adresiniz var. Hayırlı olsun. (Yepyeni adresiniz geçer bir Bitcoin adresi mi diye emin olmak isterseniz https://www.blockchain.com/explorer Search kısmına adresinizi girin ve sonucu görün.) Şimdi biri size bitcoin gönderebilir ama sizin birine bitcoin göndermeniz için online olmanız gerekir. Tıpkı bankacılıkta olduğu gibi, hesabınız açılır açılmaz size para gönderilebilir ama siz para göndermek isterseniz online olmanız gerekir. Bu arada, sitede neden size fareyi oynatın diyor? Rassallık (randomness) sağlamaya, daha doğrusu tam rassallık sağlamaya çalışıyor. Yani dünyada o fareyi sizinle aynı şekilde oynatan biri çıkmaz. Hatta siz bile milyon kere deneseniz aynı koordinatlardan geçen bir yol yapamazsınız. Hiç bi şey yapmasanız bile iki tane aynı adresin üretilme ihtimali yok gibi bi şey çünkü Bitcoin adresleri 160 bit. Yani 2¹⁶⁰ ≈ 1.5 × 10⁴⁸ farklı adres üretilebilir. Bu şu demek: dünyadaki 8 milyar insanın her biri her gün 1 milyar adres alsa bile, bu kadar adresin bitmesi 5 trilyon kere 1 trilyon asır sürer. Yani iki tane aynı adresin ortaya çıkma ihtimali Meryem Ana heykelinin size el sallama ihtimali kadar küçüktür.
Bitcoin'i 'sadeleştirerek' özetlemeye çalıştık, anca bu kadar başarabildik. Şimdi bitcoin nasıl alınıp satılıyor, değeri neden kaynaklanıyor, ilk ne zaman işlem gördü gibi sorular var.
Comments