Bilgisayar biliminde ve Bitcoin madenciliğinde kullanan bir değer olan nonce, “number used only once” ya da Türkçe ifadesiyle “sadece bir kez kullanılan sayı” ibaresinin kısaltmasıdır. Nonce, madencilerin blok ödülünü alabilmek amacıyla çözmeye çalıştığı 32 bitlik rastgele bir sayı dizisidir. Bu yazıda nonce nedir, nonce nasıl kullanılır ve kullanım alanları nelerdir sorularının cevaplarını bulabilirsiniz.
ANA BAŞLIKLAR
Nonce Nedir?
Nonce, İş Kanıtı (Proof of Work) blokzincirinde madencilerin hash hesaplamalarını yaparken kullandıkları 32 bitlik bir sayıdır. Nonce, 32 bitlik büyüklüğe sahip olması nedeniyle 4 milyardan fazla olasılığa sahip olabilir. Kesin olarak konuşacak olursa nonce, 0 ile 4,294,967,296 arasında bir değere sahip olabilecek bir değerdir.
Bir bloğun diğer bileşenlerinden farklı olarak nonce değeri değişkendir. Başka bir ifadeyle bloğun hash değeri hesaplanırken, blok içindeki verileri bozmadan madencilerin değiştirebileceği 32 bitlik bir alandır. En basit şekliyle nonce değeri bir sayaç olarak da düşünülebilir.
Nonce Nasıl Kullanılır?
Blok hash’i, blokzincirindeki herhangi bir bloğun parmak izi veya referans numarası olarak kabul edilebilir. Bu referans numarasının konsensüs algoritmasına bağlı olarak bazı kuralları karşılaması, yani belirli sayıda sıfır ile başlaması gerekir. Madenciler blok hash’ini hesapladığı sırada, bloktaki bilgileri değiştirmeden bir sayı keşfetmelidir. Bu sayı nonce’dur. İş kanıtı (Proof of Work) konsensüs algoritmasındaki “iş” ibaresi, geçerli hash bulunana kadar nonce değerini tahmin etme süreci olarak da düşünülebilir.
Madenciler, hash hesaplamalarının sonuçlarını test etmek için nonce kullanır. Değerin hedefle eşleşmediği durumda yeni bir nonce sayısı denenir veya nonce bir birim artırılır. Bu süreç konsensüs algoritmasına uygun hash değeri bulunana kadar devam eder. Aslında burada madencilerin yaklaşımı geçerli çıktı bulunana kadar nonce sayısında deneme yanılma yapılması şeklindedir. Bu yaklaşım Brute Force olarak da adlandırılmaktadır. Nonce 0 ile 4,294,967,296 arasında bir değere sahip olabilecek sayıdır. Yani deneme yanılma bu değerler arasında yapılmaktadır.
Sonuç olarak madenciler, nonce’u ve dolaysıyla geçerli hash değerini bulmak için birbiriyle rekabet etmektedir. Geçerli blok hash’i ile sonuçlanan nonce’u bulan ilk madenci, bir sonraki bloğu blokzincirine ekler ve ödüllendirilir. Diğer taraftan madenci sayısının artmasına ya da azalmasına paralel olarak nonce ve blok hash’inin hesaplama sıklığı da artacak veya azalacaktır. Bu nedenle 10 dakikada bir olan blok süresinin tutarlığını sağlamak amacıyla 2,016 blokta bir madenci zorluğu blok hash’indeki sıfır sayıları ayarlanarak veya nonce gereksinimleri düzenlenerek değiştirilmektedir.
Nonce Kullanım Alanları Nelerdir?
Nonce değeri geniş bir kullanım alanına sahiptir. Bu değer finans ve kriptografide işlemleri doğrulanması ve güvenlik kontrolleri amacıyla kullanılır. Bilgisayar biliminde nonce, iki faktörlü kimlik doğrulama ve kimlik yönetimi ya da teknik tanımıyla captcha ve OTP gibi uygulamalarda kullanılmaktadır. Başka bir ifadeyle herhangi bir siteye giriş yaptığınızda kişisel bilgilerinizi doldurduğunuz alanın altında “resimdeki karakteri giriniz” ibaresindeki karakterler ve “ben robot değilim” butonu aslında bir nonce değeridir.