Proof of Work (iş ispatı-genellikle PoW olarak kısaltılır) çift harcamayı engelleyen bir mekanizmadır. Büyük kripto paraların birçoğu mutabakat algoritması olarak PoW kullanır. Mutabakat algoritması, kripto paranın kayıt defterini güvenli hale getirmek için kullanılan yönteme verilen addır.
Proof of Work, ortaya atılan ilk mutabakat algoritmasıdır ve günümüz itibariyle en yaygın şekilde kullanılan algoritma olmayı sürdürmektedir. Satoshi Nakamoto tarafından 2008 yılında Bitcoin white paper’ında ortaya atılmış fakat teknolojinin kendisi bundan çok daha önce yaratılmıştır.
Adam Back’in HashCash’i kripto para öncesi günlerinin ilk Proof of Work algoritması örneklerindendir. Göndericilere bir e-posta göndermeden önce küçük bir hesaplama yapma zorunluluğu getirilerek alıcıların spam postaları engelleyebilmesi sağlanmıştır. Bu hesaplama standart bir kullanıcı için hiç masraf yaratmaz ama büyük gruplar halinde e-posta gönderen bir kişi için işleri zorlaştırır.
Çift harcama nedir?
Aynı fonlar birden fazla kez harcandığında bir çift harcama yapılmış olur. Terim neredeyse tamamen dijital para bağlamında kullanılır – en nihayetinde fiziksel paralarla çift harcama yapmak oldukça zordur. Bir kahve için ödeme yaptığınızda kasiyer parayı sizden alarak yazar kasaya kilitler. Aynı parayı kullanarak başka bir dükkandan tekrar kahve alamazsınız.
Dijital para sistemlerinde bunu yapabilme ihtimaliniz mevcuttur. Mutlaka daha önce bir dijital dosyayı kopyalamışsınızdır. Bu işlem için dosyayı kopyalamanız ve yapıştırmanız yeterlidir. Aynı e-postayı on, yirmi hatta elli kişiye gönderebilirsiniz.
Dijital paralar da yalnızca verilerden oluşur, diğer kişilerin aynı birimleri kopyalamasını ve farklı yerlerde harcamasını engellemeniz gerekir. Aksi takdirde para birimi çok kısa süre içinde çökecektir.
Çift harcama hakkında daha fazla bilgi için Çift Harcama Nedir? makalemizi okuyabilirsiniz.
Proof of Work neden gereklidir?
Blockchain teknolojisi rehberimizi okuduysanız, kullanıcıların işlemlerini ağa yayınladığını biliyorsunuzdur. Fakat bu işlemler hemen geçerli sayılmaz. Yalnızca blockchaine eklenmelerinin ardından geçerli oldukları kabul edilir.
Blockchain herkesin görebileceği büyük bir veritabanıdır dolayısıyla herkes fonların daha önceden harcanıp harcanmadığını kontrol edebilir. Bunu şöyle düşünebilirsiniz: Sizin ve üç arkadaşınızın bir not defteri var. Aranızdan birinin kullandığınız birimlerden transfer yapmak istediği her sefer bu işlemi yazıyorsunuz – Alice, Bob’a beş birim ödeme yaptı, Bob Carol’a beş birim ödeme yaptı gibi.
Burada başka bir detay daha var. İşlem yaptığınız her sefer fonların geldiği işleme referans veriyorsunuz. Yani eğer Bob, Carol’a beş birim ödeme yapıyorsa girdi şu şekilde gözükür: Bob, daha önce Alice’le işleminden gelen beş birimle Carol’a ödeme yaptı.
Artık elimizde birimleri takip etmenin bir yolu vardır. Eğer Bob, biraz önce Carol’a gönderdiği birimlerle başka bir işlem yapmaya çalışırsa, herkes bunu hemen fark eder. Grup, işlemin not defterine eklenmesine izin vermez.
Bu süreç küçük bir grupta gayet güzel çalışabilir. Herkes birbirini tanır, bu nedenle kimin işlemleri not defterine ekleyeceği konusunda muhtemelen fikir birliğine varabilirler. Peki ya bu grup 10.000 katılımcıdan oluşursa? Not defteri fikri ölçeklendirme bakımından başarısız olur çünkü hiç kimse bir yabancıya kayıtların idare edilmesi konusunda güvenmek istemez.
Bu noktada Proof of Work devreye girer. Kullanıcılarının harcama hakkına sahip olmadıkları fonları harcamamalarını garanti altına alır. Bir PoW algoritması, oyun teorisinin ve kriptografinin birleşimini kullanarak herhangi birinin sistemin kuralları dahilinde blockchaini güncellemesine imkan tanır.
PoW nasıl çalışır?
Yukarıdaki not defterimiz blockchaindir. İşlemler teker teker eklenmek yerine bloklar haline getirilir. İşlemler ağa bildirilir ve blok yaratan kullanıcılar daha sonra bu işlemleri bir aday bloğa dahil eder. İşlemler yalnızca aday bloğun onaylanmış bir blok haline gelmesinin yani blockchaine eklenmesinin ardından geçerli kabul edilir.
Fakat bir blok eklemek ucuz değildir. Proof of Work, bir madencinin (blok yaratan kullanıcı) bu ayrıcalık için kendi kaynaklarının bir kısmını kullanmasını gerektirir. Bu kaynak, hesaplama gücüdür ve bulmaca için bir çözüm bulana kadar blok verilerini hash etmek için kullanılır.
Blok verisini hash etmek, bir blok hash’i oluşturmak için veriyi hash fonksiyonundan geçirmek anlamına gelir. Blok hash’i bir “parmak izi” gibi çalışır, yani veri girdiniz için bir kimlik görevi görür ve her blok için benzersizdir.
Blok hash’ini geri çevirerek veri girdisini elde etmek neredeyse imkansızdır. Fakat girdinin biliniyor olması durumunda hash’in doğru olup olmadığını kontrol etmek çok kolaydır. Yalnızca veriyi fonksiyona sokmanız ve çıktının aynı olup olmadığına bakmanız yeterlidir.
Proof of Work’te, sunduğunuz verilerin hash değeri belirli koşulları yerine getirmelidir. Fakat bu değeri nasıl elde edeceğinizi önceden bilmeniz mümkün olmaz. Tek seçeneğiniz veriyi bir hash fonksiyonundan geçirmek ve hash’in koşulları yerine getirip getiremediğini kontrol etmektir. Eğer koşulları yerine getiremiyorsa farklı bir hash elde etmek için veride küçük bir değişiklik yapmanız gerekir. Verinizdeki tek bir karakteri bile değiştirmeniz tamamen farklı bir sonuç verecektir, bu nedenle çıktının ne olacağını önceden tahmin etmeniz mümkün değildir.
Sonuç olarak bir blok yaratmak istiyorsanız bir tahmin oyunu oynamanız gerekir. Genellikle eklemek istediğiniz tüm işlemleri ve bazı diğer önemli verileri alır, bunları hep birlikte hash edersiniz. Fakat veri setiniz değişemeyeceği için, değişebilecek bir bilgi parçası daha eklenmelidir. Aksi takdirde çıktı olarak hep aynı hash’e ulaşırsınız. Bu değişken veriye nonce adı verilir. Bu sayıyı her denemenizde değiştirebilir böylece her sefer farklı bir hash elde edebilirsiniz. Ve tüm bu sürece madencilik adı verilir.
Özetle madencilik, blockchain verisini bir araya getirmekten ve belirli bir hash değeri bulana kadar veriyi bir nonce ekleyerek hash etmekten oluşan bir süreçtir. Protokolün belirlediği koşulları karşılayan bir hash bulduğunuzda yeni bloğu ağa duyurma hakkına sahip olursunuz. Bu noktada ağın diğer katılımcıları yeni bloğu eklemek için kendi blockchainlerini günceller.
Bugün başlıca kripto paralar için koşulları yerine getirmek son derece zordur. Bir ağdaki hash oranı ne kadar yüksek olursa, geçerli bir hash bulmak da o kadar zordur. Bu özellik blokların çok hızlı bir şekilde bulunmasını engeller.
Tahmin edeceğiniz üzere, çok sayıda hash tahmini yapmak bilgisayarınız açısından masraflı olabilir. Yüksek miktarlarda hesaplama döngüsü ve elektrik harcaması yaparsınız. Fakat geçerli bir hash bulursanız protokol sizi kripto para ile ödüllendirir.
Şu ana kadar öğrendiklerimizin üzerinden geçelim:
Madencilik yapmak masraflıdır.
Geçerli bir blok üretebilirseniz ödüllendirilirsiniz.
Kullanıcı bir girdiyi bilmesi durumunda girdinin hash’ini kolayca kontrol edebilir – madencilik yapmayan kullanıcılar çok fazla hesaplama gücü harcamadan bir bloğun geçerli olup olmadığını doğrulayabilir.
Şimdilik her şey yolunda. Peki ya hile yapmaya çalışırsanız? Sizi bir grup sahte işlemi bir araya getirerek geçerli bir hash bulmaktan alıkoyan nedir?
Bu noktada açık anahtar kriptografisi devreye girer. Bu makalede konunun ayrıntısına girmeyeceğiz ama kapsamlı bir inceleme için Açık Anahtar Kriptografisi Nedir? makalemizi okuyabilirsiniz. Kısaca, bir kişinin harcamaya çalıştığı fonları hareket ettirme hakkına sahip olup olmadığının herhangi bir kullanıcı tarafından doğrulamasını mümkün kılan bir takım kriptografik öğeler kullanırız.
Bir işlem yarattığınızda bu işlemi imzalarsınız. Ağ üzerindeki herhangi biri, imzanızla açık anahtarınızın örtüşüp örtüşmediğini kontrol edebilir. Aynı zamanda, fonlarınızı gerçekten harcayıp harcayamayacağınız ve girdilerinizin toplamının çıktılarınızın toplamından yüksek olup olmadığı (yani sahip olduğunuzdan daha yüksek tutarda para harcamadığınız) kontrol edilir.
Geçersiz bir işlem içeren tüm bloklar ağ tarafından otomatik olarak reddedilecektir. Hile yapmaya teşebbüs etmeniz bile masraflıdır. Hiçbir ödül etmeden kendi kaynaklarınızı harcamış olursunuz.
Proof of Work’ün güzelliği budur: hile yapmayı masraflı ama dürüst davranmayı karlı hale getirir. Rasyonel tüm madenciler ROI (yatırım getirisi) elde etmeyi hedefleyecektir, dolayısıyla kar elde etmeyi garantileyecek şekilde davranmaları beklenir.
Proof of Work ve Proof of Stake karşılaştırması
Birçok farklı mutabakat algoritması vardır ama bunların arasında en dikkat çekenlerden biri Proof of Stake’dir (PoS). Kavramın geçmişi 2011 yılına kadar uzanır ve bazı daha küçük protokoller tarafından uygulamaya konmuştur. Fakat henüz büyük blockchainler tarafından kullanılmamıştır.
Proof of Stake sistemlerinde madencilerin yerine doğrulayıcılar bulunur. Madencilik yapılmaz ve hash tahmin etmeye yönelik bir yarış yoktur. Bunun yerine kullanıcılar rastgele seçilir ve seçilen kullanıcının bir blok sunması (“yaratması”) gerekir. Blok geçerliyse kullanıcı, blokta yer alan işlemler için ödenmiş işlem ücretlerden oluşan bir ödül alır.
Fakat tüm kullanıcılar doğrulayıcı olarak seçilmeye uygun değildir. Protokol belirli faktörleri dikkate alarak seçim yapar. Seçilebilmek için kullanıcılarının bir stake’i yani blockchainin yerel para biriminden daha önceden belirlenmiş bir tutarı kilitlemiş olması gerekir. Stake, kefalet gibi çalışır: davalıları duruşmaları kaçırmaktan caydırmak için yüksek tutarlarda ödeme yapmak zorunda bırakmak gibi, doğrulayıcılar da hile yapmamaları için belirli miktarda fonu (stake) kilitlemek zorunda bırakılır. Doğrulayıcılar dürüst davranmazsa kilitlenen fonlar (ya da fonların bir kısmı) alınır.
Proof of Stake, Proof of Work’e kıyasla bazı avantajlara sahiptir. En kayda değer avantajı daha küçük bir karbon ayak izine sahip olmasıdır. Bunun nedeni PoS’te yüksek güçte madencilik çiftliklerine ihtiyaç olmaması ve harcanan elektrik miktarının PoW’da harcanana kıyasla çok daha düşük olmasıdır.
Bununla birlikte PoS, PoW kadar kapsamlı bir geçmişe sahip değildir. Madencilik çok israflı olarak görülse de kendini büyük ölçekte ispat etmiş tek mutabakat algoritmasıdır. On yıldan biraz daha uzun bir süre içinde trilyonlarca dolar değerinde işlemi güvene almıştır. PoS’in güvenlik anlamında PoW’a rakip olabileceğini kesin şekilde söyleyebilmek için öncelikle bu algoritmanın geniş çapta test edilmesi gereklidir.