2008 yılında günümüzde hala kim olduğu bilinmeyen Satoshi Nagamoto bir paper yayınlıyor. Bu paperda Satoshi, bankalara ihtiyaç duyulmadan merkeziyetsiz para transferi yapılması için bir platform oluşturuyor. 2009 yılında hayata geçen Bitcoin nasıl çalışıyor?
Bankaların bizlerin için uyguladığı en önemli rol, bizler para transferi yaptığımız zaman, biliriz ki bu transferi yapılan para, belirttiğimiz hesaba gönderilecektir. Ama Bitcoin’de güvenmenize gerek olmaması lazım. Buna “Trustless” deniyor”. Yani biz bir transaction gönderdiğimiz zaman kimseye güvenmemiz lazım. Eğer matematiksel olarak bu transaction’ın imzalandığını ve karşı tarafa geçtiğini ispatlayabiliyorsak, parayı gönderdiğimiz platforma güvenmek zorunda değiliz. Sistem şöyle çalışıyor. Örneğin Bitcoin’in kodlarının bulunduğu github.com üzerinden indirip wallet’ı çalıştırdığınız zaman birer “Node” haline geliyorsunuz (Node=bir iletişim ağının, üzerinde ki her bir nokta).Node şunu yapıyor. Network’e giriş yaptıkdan sonra kendisine PEER denilen eşler arıyor. Kendisi ile iletişim kuran eşlere bağlanıyor. Bu Nodeler aynı zamanda başka Nodeler ile de bağlantı kuruyor.
Diyelim ki A kişisinden B kişisine bir para gönderelim. Yani transaction oluşturuyoruz (kısaca tx). Node bağlı olduğu PEER larına transaction’ı bildiriyor ve bu nodelerdede bunun kopyası oluşuyor. İşlem henüz gerçekleşmiyor. Biz bunu yapacağımızın duyurusunu yapıyoruz.
Miner’lar transaction hash bulmaya çalışırlar. Hash fonksiyonları aldıkları girdinin boyutundan bağımsız olarak belirli (örneğin 20 bayt) uzunluğa sahip bir çıktı üretirler. Üretilen çıktı verilen girdiye özeldir. Aynı girdi ile sürekli aynı çıktı oluşur ve iki farklı girdinin çıktısı ile birbiriyle aynı olamaz. Kriptografik Hash fonksiyonunun çıktısı “message digest”, “hash”, “checksum” ve “digital fingerprint” olarak adlandırılabilir. Bir hash fonksiyonun en basit anlamada aşağıdaki gibidir.
f(x)=y (her x değeri için y değeri üretilir)f(a)≠y (eğer A değerini verirsek y yi elde edemeyiz. Y’yi elde etmenin tek sağlayan şey, ona doğru x’I vermek)
Yani f(5)=4 elde ediyorsak f(6)=7 elde etmeliyiz. Eğer f(6)=4 değerini elde ediyorsak o zaman bu doğru bir hash fonksiyonu değildir. Diyelimki bizim elimizde Account mevcut. Account’un adresi 1AqBcFD6CC olsun. Bir de Account hesabını kullanmak istiyorsak bir de Private key’e ihtiyaç duyarız. Eğer bitcoin yatırım yapıyorsanız herhangi bir borsada, buradaki Borsa sizin adınıza bu Private keyi kendileri tutuyor. Avrupa’da bu private keyi tutuyorsanız banka statüsündesiniz. Yani banka lisansı almanız gerekir.
Yukarıda Tx isimli bir transaction oluşturuyoruz. Bunun içinde A’dan B’ye 5 BTC transferi yapıyoruz. Bu transaction f(p,t) isimli fonksiyona giriyor (p=private key, t=transaction). Bunun sonucunda bize “imza” (signature) oluşturuyor. Bu imzanın doğruluğunu ispatlamak için transition,imza ve account kullanılıyor. Yani f(t,s,a) fonksiyonu. Böylece bu işlemin benden çıkıp çıkmadığını garantisini private key ile veririz. İmzalar tek yönlü çalışır.
Eğer Private keyimizi bir başkası ile paylaşırsak adeta o paylaştığımız kişiye kasamızın şifresini veriyoruz. Bundan dolayı Private key’inizi kimse ile paylaşmayın.