BCH ₺1.639 +2,30%
Blockchain (blokzincir) nonce nedir? Bitcoin ağ zorluğu ile nonce arasındaki ilişki ne? Proof of Work nedir? Detaylar yazımızda.
Bitcoin (BTC) bloklarına ait hash verilerinin bir sürü 0 (sıfır) ile başladığını fark ettiniz mi? Bunun sırrı, bilgisayar bilimlerinde ve özellikle de veri güvenliğinde kullanılan "nonce" değerinde…
Şimdi gelin, "Nonce değeri nasıl hesaplanır?" konusunu masaya yatıralım. Hazırladığımız makalemizde; "Nonce nedir?", "Nonce nerede kullanılır?", "Bitcoin madenciliğinde nonce değeri nedir?", "Nonce değeri ile Proof of Work sisteminin bağlantısı nedir?" gibi soruların cevaplarını bulabileceksiniz.
"Number Only Used Once (Yalnızca Bir Kez Kullanılan Sayı)" ifadesinin kısaltılmış hali olan nonce, yetkilendirme amacıyla kullanılan ve rastgele üretilen sayıdır.
Bitcoin bloklarındaki "Hash" ve "Nonce" verileri
Bilindiği üzere Bitcoin madenciliği, astronomik ölçekte işlem gücü gerektiriyor. Bitcoin madenciliğindeki bu büyük uğraş, blok ödülünü kazanmak için… Hatırlatma: 11 Mayıs 2020'de gerçekleşen Bitcoin blok ödülü yarılanması (halving) işlemiyle, madenci ödülleri 6,25 BTC'ye indirildi.
Bizim için burada önemli olan iki değer var: "Hash" ve "Nonce"…
Not: Web sitesini Türkçe dilinde açmanız halinde bu değerler "Esrar" ve "Şimdiki Zaman" şeklinde listelenecektir. Çevirmene selam olsun (!)
Dikkat ederseniz hash verisinin ilk 19 hanesi sıfırdan oluşuyor. Bu rastlantı değil. Hatta, Bitcoin madenciliğinin bu denli zor olmasının asıl sebebi bile denilebilir. Çünkü madenciler, farklı "nonce" değerlerini kullanarak, başında bu kadar sıfır bulunan hash kodunu oluşturmak için bu denli uğraşıyorlar.
Madencilerin bulmak için kılı kırk yardıkları "nonce" değerini daha iyi anlayabilmek için öncelikle Bitcoin blok yapısını bilmemiz lazım. Bunun için de blockchain, Proof of Work ve madencilik terimlerini kısaca hatırlayalım:
Sihirli sayı 4 byte "0xD9B4BEF9" şeklinde sabit değer
Zaman damgası 4 byte 1 Ocak 1970'ten itibaren geçen süre
İşlemler - Bloktaki transferlerin listesi
Bitcoin blok içeriğine şöyle bir göz atıldığında, işlemin yapıldığı anda verilerin büyük kısmının sabit olduğu, sadece "nonce" değerinin o anda madenci tarafından üretildiği anlaşılabilir.
Öyle bir hash kodu oluşturun ki, başında 'n' adet sıfır olsun.
Burada bahsedilen 'n' değeri ağın zorluğuna göre değişiyor. Zorluk seviyesi, Bitcoin madenciliği yapan işlemci miktarına ya da başka ifade ile hash oranına (hash rate) bağlı olarak güncelleniyor. Her 2.106 blokta bir düzeltme yapılan Bitcoin ağ zorluğu, her blokun ortalama 10 dakikada oluşmasını sağlayacak biçimde ayarlanıyor.
Peki madenciler, başında bu kadar sıfır olan hash kodunu nasıl elde ediyorlar? İşte tam bu noktada "nonce" değeri devreye giriyor.
Eldeki verileri SHA-256 formatında hash koduna dönüştürürken, başında 'n' adet sıfır oluşmasını beklemek inanılmaz derecede düşük bir ihtimal. Art arda on binlerce kez zar atıp her defasında 6 gelmesini beklemek bile daha olası.
Blok içindeki transfer verileri, blok numarası, önceki blokun hash kodu, zorluk seviyesi, işlem adedi gibi veriler sabit olduğundan madencinin elinde tek değişken kalıyor: nonce.
Madenciler; büyük kısmı sabit olan blok içi verileri kendi belirledikleri nonce değeri ile teker teker denemeye başlıyorlar. Burada "brute force" ismi verilen, her değeri tek tek deneme sistemi işliyor. Yani çok yüksek işlem gücü kullanarak sabit verileri, farklı nonce değerleri ile deniyorlar.
Ortaya çıkan hash kodunun başında, PoW mekanizmasının zorluk derecesinde belirlenen adette sıfır yer alıncaya kadar bu hesaplama sürüyor.
Eğer madenci, zorluk seviyesinde belirlenen miktarda sıfırı hash kodunun başlangıcında oluşturmayı başarırsa amacına ulaşıyor. Blok oluşuyor ve node'ların (düğüm) kontrolüne sunuluyor. Blokun onaylanması durumunda madenci, blok ödülünü ve işlem ücretlerini almaya hak kazanıyor.
İlginizi çekebilir: Bitcoin Node (Düğüm) Nedir? Nasıl Çalışır?
Çalışan nonce demosu
Bitcoin madenciliğinde nonce değerinin nasıl hesaplandığını daha net anlamak için buradaki adreste yer alan demoyu kullanabilirsiniz.
Bu demoda, Bitcoin blockchain yapısının basitleştirilmiş hali test edilebiliyor. Bitcoin ağındakine kıyasla çok daha düşük zorluk seviyesine sahip bu sistemde, ilk dört basamağı sıfır olan hash kodu oluşturuluyor.
İlk üç alandaki veriler değiştiğinde otomatik biçimde aşağıdaki hash kodu da değişiyor. Eğer hash kodunun ilk 4 hanesi sıfır değilse, arka plan kırmızıya dönüşerek gerekli şartın sağlanmadığı ifade ediliyor.
"Mine" tuşuna basıldığında ise, yukarıdaki blok numarası ve "Data" alanına girilen veriye uygun biçimde sırayla tüm "nonce" değerleri deneniyor. Hash kodunun ilk dört hanesini sıfır yapan nonce değeri elde edildiğinde arka plan yeşile dönüşüyor.
Nonce hesaplama örneği:
Kendi yaptığım denememde, "Data" alanına üç adet transfer işlemi girdim ve "Mine" tuşuna bastım. Sistem gerekli hesaplamaları yaptı, 1 numaralı bloka ait transfer işlemlerine 109.224 nonce değerini vererek hash kodunun ilk dört hanesini sıfıra dönüştürmeyi başardı.
Daha sonra bu listeye yeni bir transfer işlemi ekledim. 1 numaralı bloka eklediğim bu transfer işlemi, 109.224 nonce değeri ile birleşince hash kodu değişti. Artık ilk 4 hanesi sıfır değil ve PoW mekanizmasına uymuyor.
Yeniden hesaplama yapılması için "Mine" tuşuna bastım. Sistem, sırayla tüm sayıları denemeye başladı ve hash kodunun ilk dört hanesini sıfır yapacak yeni nonce değerini 108.142 olarak hesapladı.
Örneğini verdiğimiz bu hesaplama basit gibi görülse de, hash kodunun başındaki sıfır adedi arttıkça yapılması gereken işlem miktarı da katlanıyor. Hash kodları on altılık sayı sisteminde (heksadesimal) hesaplandığından ve her basamağa 16 farklı değer gelebildiğinden, sıfır sayısı her artırıldığında zorluk da 16 kat artıyor.
Bu yazı hazırlanırken Bitcoin ağında oluşturulan bloklara ait hash verileri 19 adet sıfır ile başlıyordu. Zorluk seviyesi ise 15.138.043.247.082,88 şeklinde belirtilmişti.
Kıyas yapmak gerekirse, 2009 yılında oluşturulan 100 numaralı blok sadece 1,00 zorluk seviyesine sahipti ve hash verisi 8 adet sıfır ile başlıyordu.
Özetlemek gerekirse, Bitcoin ağındaki madencilik işlemleri, kaba tabir yapacak olursak kulağı tersten göstermeye benziyor. Hesaplanması basit transfer dökümlerini, son derece zorlu bir hesaba dönüştürerek astronomik ölçüde işlem gücü harcanmaya dayalı bir sistem. Ancak bunun mantıklı bir açıklaması var: blok ödülü…
Bitcoin blockchain üzerinde blok oluşturma zorluğu. Kaynak: Blockchain.com
Bu yazı hazırlanırken blok başına 6,25 BTC olan madencilik ödülünü, PoW mekanizmasına uygun biçimde hak etmeleri gerekiyor. Ağ zorluğunun, blok oluşturmak için gereken işlem gücünün artması aslında Bitcoin ekosistemi için iyi bir durum. Zorluk ne kadar artarsa, o kadar çok madenci işlem gücünü Bitcoin ağına ayırıyor demektir. Ağın işlem gücünün artması ise Bitcoin'in sağlamlığını ve güvenirliğini artırır.
2009'dan bu yana ağ zorluğuna baktığımızda da, Bitcoin'e duyulan güvenin günbegün arttığını gözlemliyoruz.