Ana Sayfa Yazı Matematiğe Dayalı Para: Kripto para birimleri

Matematiğe Dayalı Para: Kripto para birimleri

Kripto para birimlerine giriş ve temel kavramlar: kriptografi, karma fonsiyonu, emeği ispat, dijital imza, madencilik, açık anahtar, adres, cüzdan...

PAYLAŞ

Kripto para birimi dünyasına giriş

Özet: Kripto para birimleri (bitcoin ve diğerleri) devletlerin, yürütme organlarının, geeklerin ve sıradan insanların dikkatini çekiyor. Bu makale, kripto para birimlerine basit bir giriş yapmanız için kriptografi, karma (hash) fonksiyonları, emeği ispat, dijital imza, açık anahtar, özel anahtar, asimetrik şifreleme, madencilik, merkle kökü, merkle ağacı, kripto para birimi adresleri, kripto para cüzdanları gibi kavramları kısaca tanıtmaktadır

Not: Bu belge çoğunlukla bitcoinden bahsetse dahi “ödemeleri işlemek ve tasdik etmek için açık anahtarlı şifreleme, uçtan uca ağ bağlantısı ve emeği ispat yöntemi kullanan” her sistem için büyük oranda geçerlidir.

1. Deniz kabuklarından blok zincirine paranın evrimi

Atalarımız takas sistemi ile başladılar. “Eğer şu harika bilenmiş baltalardan beş tane verirsen sana iki öküz veririm” tarzı bir şeyler ile. Kısa süre sonra takas sisteminin birçok yetersizliklerinin olduğunu fark ettiler. Herkes öküz almak istemediği gibi öküzleri bölmek de mümkün değildi (0.35 tane öküz almak isteyen çok fazla insan yoktur). Bu yöntem pek taşınabilir de değildi (alışverişe çıkarken omzunuzda bir öküz taşıdığınızı düşünün).

İşte bu sebeple daha elverişli, bölünebilir, türdeş (homojen) ve taşınabilir para türlerine geçiş yaptılar. Deniz kabukları, tuz, altın, gümüş ve daha neler neler. Çin’de kâğıdın icat edilmesi, nihayetinde kâğıt paranın doğuşuna yol açtı. Kâğıt para önceleri altın ve diğer kıymetli metaller ile desteklendi. Ardından dünya itibari para (fiat) kullanımına geçti. Yani bir devlet tarafından yasal bir ödeme aracı olarak tesis edilen fakat herhangi bir fiziki emtiaya dayanmayan para birimlerine [1].

Paranın dört işlevi

Bu da bizi çok temel bir soruya getiriyor: Para nedir? Paranın dört işlevi bulunmaktadır: takas aracı (vasıta), iktisadi araç (politik), değer ölçüsü ve depo (değer biriktirme ortamı). William Stanley Jevons, 1875 yılında parayı bu dörtlü ile izah etmiş. Bunun anlamı şudur, bir şeyin para olarak adlandırılabilmesi için bir takas ortamı olarak işlev görmesi, bir değer ölçüsü olarak kullanılabilmesi, ertelenen borçlar için bir standart olarak kullanılabilmesi ve değer depolayabilmesi gerekir.

Banka kartı, ön ödemeli kartlar, havale, kredi kartı, ağ bankacılığı, elektronik fatura ödeme, elektronik çekler, taşınabilir cüzdanlar, dijital altın para birimleri, satış yerinde elektronik fon nakli, taşınabilir bankacılık, SMS ile bankacılık,  İnternet bankacılığı, ödeme kartları, gerçek zamanlı brüt hesap kapatma sistemleri, SWIFT (uluslararası para nakli), tele transfer ve daha niceleri bilgisayarların ve İnternet’in doğuşu ile hayatımıza girdi.

Dünyanın ilk P2P Elektronik Para Birimi Bitcoin

Ve ardından Ekim 2008’de Satoshi Nakamoto yolları şaşırtan beyaz bülteni yayınladı: Bitcoin: A Peer-to-Peer Electronic Cash System yani Bitcoin: Uçtan Uca Bir Elektronik Para Sistemi.

Dünyanın ilk gerçek uçtan uca elektronik para birimi böylelikle doğmuş oldu [2].

Özellikle de Silk Road adlı yasa dışı bir çevrim içi pazar yerinin üyeleri bitcoin kullandığı için, bitcoin epey kötü şöhret kazandı. Silk Road sayesinde milyonlarca dolar değerinde uyuşturucu, silah, çalıntı finansal bilgiler, sahte belgeler ve daha birçok şeyin satışı mümkün oldu. Tüm Silk Road satışlarında ödeme aracı olarak yalnızca bitcoin kullanılmıştı.

Birçok kripto para birimi, bitcoinin altında yatan innovasyon olan blok zincirinin rüzgarından faydalandı [3]. Aslına bakarsanız şu anda dünya genelinde 650’den fazla sanal para birimi kullanılıyor [4]. Artık bankacıların sabah kalkıp kendilerine şu soruyu sordukları bir dünyada yaşıyoruz: “Acaba ben uyurken para ve bankacılık başka anlamlar kazandı mı?

Küresel para ekosistemindeki bu hızlı değişim hepimizi etkileyecek. Kara para aklama, vergi kaçırma ve terörün finansmanı gibi şeyleri engellemeye çalışan devletlerden tutun da blok zinciri teknolojisinin ne gibi şeylere yol açacağını anlamaya çalışan bankalara kadar. Bitcoin kullanan Mafia ile mücadele eden kolluk kuvvetlerinden tutun da küresel para gönderme ve almak işleri daha hızlı ve daha güvenilir yollar arayan işletmelere kadar.

2. Tüm bunların altındaki matematik

Sanya, bir haftalık oda hapsi cezası almış olan yaramaz bir kızdır. Arkadaşlarıyla tatlı yemek için evden kaçmayı planlamaktadır, tabi babasının haberi olmadan. Cep telefonunu kullanmasına izin yoktur. Yani arkadaşlarını aramasının tek yolu, babasının odasındaki emektar sabit hatlı telefondur.

Düzenli olarak ceza aldığı için, Sanya ve arkadaşları gizlice haberleşmek üzere basit bir yöntem geliştirmişlerdir. “Sana bahsettiğim kitabı okudun mu?” diye sorduğunda aslında “hadi bu akşam gizlice dışarı çıkalım” demiş olmaktadır. Kitabın “10. sayfasından” bir şeyler anlattığında bu “akşam 10’da beni almaya gel” anlamına gelmektedir. Aynı mantıkla, 11. sayfa akşam 11 anlamına gelmektedir.

Hal böyleyken Sanya arkadaşına “sana bahsettiğim kitabı okudun mu? 12. sayfa gerçekten çok eğlenceli” derken aslında “hadi bu akşam gizlice dışarı çıkalım, gece yarısı beni almaya gel” kastetmektedir.

Kriptografi nedir?

İşte az önce anlattığımız hikâye hayatın içinden, hakiki bir kriptografi (ve asi ergen) hikâyesidir.

“Hadi bu akşam gizlice dışarı çıkalım, gece yarısı beni almaya gel” cümlesi açık metin, plain text örneğidir; Yani Sanya’nın aslen ifade etmek istediği şey.

“Sana bahsettiğim kitabı okudun mu? 12. sayfa gerçekten çok eğlenceli” cümlesi ise şifreli metin, cipher text örneğidir. Yani muhaliflerin (bu örnekte babanın) anlam veremeyeceği herhangi bir şey.

Açık metini şifreli metine dönüştürme sürecine şifreleme, encryption adı verilmektedir. Tersine ise şifre çözme adı verilmektedir.

Mesajları şifreleyip, şifre çözmeye dayanan bu bilim (kriptografi) binlerce yıldır kullanılmaktadır. Julius Sezar’ın generallerine haber yollarken, mesajdaki A harflerini D ile, B harflerini E ile ve alfabenin tümünü buna benzer şekilde değiştirdiğine inanılmaktadır. Böylece “3 kere kaydır” kuralını bilmeyen birinin, mesajın içeriğini çözmesi mümkün olmuyordu.

Simetrik Şifreleme

Mesela, Sezar’ın anahtar değeri olan 3’ü kullanarak “SIFRE” kelimesini şifrelemek istersek, İngiliz alfabesini D harfi ile başlayacak şekilde 3 sıra kaydırmamız gerekiyor.

Yani ABCDEFGHIJKLMNOPQRSTUVWXYZ ile başlayıp, her şeyi 3 sıra kaydırıp şunu elde ediyoruz:

DEFGHIJKLMNOPQRSTUVWXYZABC

D=A, E=B, F=C, diye giden bir seri elde ettik.

Bu taslağa göre “SIFRE” kelimesinin şifrelenmiş hali “VLIUH” olmaktadır. Şifrelenmiş mesajı okumak isteyen birine, anahtar olarak 3’ü kullanmasını söyleyebilirsiniz. Buna simetrik kriptografi (simetrik şifreleme) denmektedir. Bu yöntem, mesajı hem şifrelemek hem de çözmek için aynı anahtarın kullanılmasına dayanmaktadır. Bu doğal olarak çok ciddi bir probleme yol açmaktadır: Ya bir hasım bu şifreyi ele geçirirse? Mesajı yollayan ve alan, bir noktada, anahtarı birbirlerine söylemek zorundalar. İşte o anda, bir düşman şifreyi ele geçirebilir. Çağdaş kriptografide kullanılan anahtarlar epey, epey uzun rakamlardır.

Asimetrik Şifreleme: açık ve özel anahtar

Bu “güvenli anahtar paylaşma” problemi asimetrik kriptografi veya Türkçe’deki diğer adı ile açık anahtarlı şifreleme tekniğinin doğuşu ile çözüme kavuşmuştur. Sanya Karan’a şifreli bir mesaj göndermek istediğinde mesajı, Karan’ın tüm dünyaya açık olan açık anahtarı ile şifreleyecektir. Şifrelenen mesaj, ancak ve ancak Karan’ın özel anahtarı kullanılarak çözülebilecektir. Bu anahtar ise yalnızca Karan’da bulunmaktadır.

Kripto paraların nasıl işlediğinin inceliklerine girmeden önce, karma yani hash fonksiyonlarının nasıl işlediğine dair birkaç kavramı daha anlamamız gerekiyor. Tek yönlü bir karma fonksiyonu ya da diğer Türkçe adıyla özet fonksiyonu, PDF dosyası, video, eposta, sayı dizisi gibi bir girdiyi alır ve ondan belirli uzunlukta bir çıktı türetir. Mesela 160 bit uzunluğunda.

Karma fonksiyonu şunu temin etmektedir: Eğer girdi kısmındaki veriler herhangi bir değişikliğe uğrar ise, tek bir bit değişse dahi, karma fonksiyonu tamamen farklı bir çıktı üretecektir. Aşağıdaki tabloda SHA1 (40) karma fonksiyonu ile üretilmiş bazı örnek çıktılar görüyoruz [6].

Girdi: mehmet
Karma: c8bdb43571a00f5e3218593bf1e2d71b2626cd7c

Girdi: MEHMET
Karma: 15cc86f57489824e009958caa6b50e991b28e01a

Girdi: Mehmet
Karma: eba0b6441874f643fb06d04905e2060d720b6b61

Yukarıdaki tabloda görülebileceği üzere girdi mehmet yerine MEHMET yapılırsa, tamamen farklı bir karma değeri elde ediliyor. Girdi hangi uzunlukta olursa olsun, karma çıktısının her zaman aynı uzunlukta olacağı unutulmamalıdır.

Kriptografik karma fonksiyonlarının iki önemli özelliği

Tek yönlü fonksiyonlar ile ilgili iki şeyi akılda tutmak gerekir.

  1. Bilgi işlem tekniği açısından, aynı karma (özet) değerini üretecek iki farklı girdi bulmak olası değildir.
  2. Bilgi işlem tekniği açısından, karma çıktısına (özetine) bakarak mesajın özgün halini yeniden oluşturmak da mümkün değildir.

Emeği ispat – Proof-of-Work

Karma fonksiyonlarını anladığımıza göre, ilginç bir diğer kavrama geçelim: Emeği ispat yani proof-of-work. Bu yöntem, istenmeyen iletiler yollama (spam) ve hizmet dışı bırakma (denial of service) saldırılarına karşı koruma sağlamak için, bilgisayarların biraz zaman ve işlemci gücü harcayarak, bir şey çözmelerini gerektirmeye dayanıyor.

Hashcash, kripto para birimlerinde kullanılan emeği ispat sistemlerine verilebilecek bir diğer örnek. Hashcash şu gerekçe ile ortaya çıkmıştır: Eğer eposta gönderen bir kullanıcı, bir bulmacayı çözmek için kayda değer miktarda bilgi işlem gücü harcadığını ispatlayabiliyor ise, o kullanıcının istenmeyen epostalar yollayan bir spammer olmadığı varsayılabilir. Bu mantığa göre, yollanan her eposta için önemsiz sayılamayacak miktarda zaman ve bilgi işlem gücü harcamak gerekirse, istenmeyen posta yollamak ekonomik açıdan makul (fizibl) olmaktan çıkacaktır.

Emeği ispat tekniği ile spam engellemek

Birlikte hashcash tabanlı, istenmeyen epostaları engellemekte kullanılabilecek olan basit bir emeği ispat sistemi geliştirelim. Farz edelim ki uygar@blokzinciri.org adresi iletisim@blokzinciri.org adresine eposta yollamak istiyor. Gönderici, epostanın üstveri (üstbilgi, header) kısmına şuna benzer bir şey eklemek zorundadır:

uygar@blokzinciri.org:iletisim@blokzinciri.org:16062017:xxxx

Bu gördüğümüz, iki nokta ile ayrılmış 4 parça bilgiden oluşmaktadır. İlk parça göndericinin eposta adresidir, ikinci ise alıcının. Üçüncü ise GGAAYYYY şeklinde güncel tarihtir. Dördüncü parça ise göndericinin bilgisayarı tarafından hesaplanması gereken bir parçadır. Ona İngilizce’de “anlamsız” anlamına gelen “nonce” diyelim.

Hedefimiz 5 tane sıfır ile başlayan bir SHA256 karması oluşturacak olan bir girdi bulmak. Nonce değerini 0’dan başlatıp 1, 2, 3, … diye artıracağız ve karmayı hesaplayacağız. Şunun gibi:

Girdi: uygar@blokzinciri.org:iletisim@blokzinciri.org:16062017:1
Karma: 4c92c169eca1a57ee62a8a1b715f985ba5d1f72f4486145b1f912b17958e0add

Girdi: uygar@blokzinciri.org:iletisim@blokzinciri.org:16062017:2
Karma: a8ede42f0f42109c99baa66dff50f7a17e057c170597ab2de68a3cf731f675f4

Girdi: uygar@blokzinciri.org:iletisim@blokzinciri.org:16062017:3
Karma: 941592c669ad079e061696e64213eb1b30939c179b45691f1777cb6764867ecb

Diye devam eder, ta ki nonce değeri 471929’e gelene kadar.

Girdi: uygar@blokzinciri.org:iletisim@blokzinciri.org:16062017:471929
Karma: 0000036fb3614e6e62c7bf0ada897d9b373e3c1bc688856dfa95b0f0810e92c4

Hakiki bir gönderici için bu hesaplamaları yapmak çok fazla bir bilgi işlem gücü gerektirmez. Fakat bu basit işi bir milyon tane istenmeyen posta için yapmaya çalışan bir spamcinin ciddi bir işlem gücü ve zaman harcaması gerekecektir.

Alıcı tarafında ise bilgisayar sadece eposta üstverisinde bulunan alttaki satırı alacaktır ve onun karmasını hesaplayacaktır.

uygar@blokzinciri.org:iletisim@blokzinciri.org:16062017:471929

Eğer karma önceden belirlenmiş sayıda sıfır içeriyorsa (bu örnekte 5), istenmeyen eposta olarak değerlendirilmeyecektir. Alıcının bu işlemi yapması dikkate değmeyecek bir işlem gücü ve zaman gerektirecektir çünkü sadece bir girdinin karmasını hesaplaması yeterlidir. Tarih, ek bir tasdik değişkeni olarak kullanılabilir. Mesela zaman damgası, iletinin alınış anından önceki 24 saat içinde ise epostanın indirilmesi için onay verilebilir.

Dijital İmza

Açık anahtarlı şifrelemenin en önemli uygulamalarından birine dijital imza denmektedir. Buna göre imzacı öncelikle dijital imza atmak istediği mesajın karmasını hesaplar. Ardından kendi özel anahtarını ve karmayı kullanarak, ilgili algoritma aracılığıyla dijital bir imza oluşturur.

Bu dijital imza mesaja özeldir yani unique, benzersizdir.

Ardından imzacı mesajı ve dijital imzayı alıcıya yollar. Alıcı mesajı kullanarak tekrar karma değerini hesaplar. Alıcı, dijital imzayı ve imzacının açık anahtarını kullanarak (ilgili algoritma aracılığıyla), başka bir dizi daha hesaplar. Eğer bu dizi ve karma birbirini tutuyorsa, dijital imza (sayısal imza) doğrulanmış olmaktadır.

Bunu takiben, dijital paralarda ve kriptografik oy verme sistemlerinde kullanılmak üzere kör dijital imza geliştirilmiştir. Bu sistemde imzalanmadan önce mesajın içeriği gizlenmektedir. Sonuçta ortaya çıkan kör imza, “körlüğü giderilmiş” olan özgün mesaj ile karşılaştırılarak doğrulanabilmektedir [7].

Çoğaltılamayan dijital sikke için blok zinciri

Ne var ki kör dijital imzalar çifte harcama (tekrar harcama, double-spending) problemine çözüm sunmamaktadır. Fiziksel para birimlerinde çifte harcama yapamazsınız çünkü parayı birine verdiğinizde elinizde tekrar harcayacak para kalmaz. Elektronik kayıtlar ise kolayca çoğaltılabildiğinden ötürü “dijital sikkeler” defalarca harcanabilirler.

Bitcoin, çifte harcama problemini blok zinciri aracılığıyla çözmektedir. Blok zinciri tüm nakillerin zaman damgası vurulmuş kayıtlarını düzenli bir biçimde tutan kamuya açık bir kütük defteridir. Çifte harcamayı engellemenin yanı sıra, blok zinciri geçmiş nakil kayıtlarının tahrif edilmesini de engellemektedir.

Bir veya daha fazla para nakil işlemi, bloğun nakillere ayrılmış kısmında alt alta yazılır. Her nakil işlem kaydının karması alınır, ardından karmalar eşleştirilir, tekrar karmaları alınır ve tekrar eşleştirilir. Ta ki tek bir karma elde edene kadar. İşte bu karma bir merkle ağacının merkle köküdür [8].

Blok zinciri nasıl işler?

Bir blok zincirinin nasıl işlediğini basitçe gösterelim. a, b, c, d, e ve f nakil işlemlerini içeren bir blok düşünelim.

Merkle ağacı (merkle tree) şu şekildedir:

d1 = çift-karma (a)

d2 = çift-karma (b)

d3 = çift-karma (c)

d4 = çift-karma (d)

d5 = çift-karma (e)

d6 = çift-karma (f)

d7 = çift-karma (d1 ile ardışık d2)

d8 = çift-karma (d3 ile ardışık d4)

d9 = çift-karma (d5 ile ardışık d6)

d10 = çift-karma (d7 ile ardışık d8)

d11 = çift-karma (d9 ile ardışık d9)

d12 = çift-karma (d10 ile ardışık d11)

Tek sayılı karma işlemi yapıldığı için d9 iki kere kullanılıyor.

Bu bloktaki 6 nakil işleminin merkle kökü (merkle root) d12’dir. Bu bilgi, bloğun üstveri kısmına yazılmaktadır. Ek olarak her blok, bir önceki bloğun üstverisinin karmasını içerir. Böylelikle bloklar birbirlerine zincir gibi bağlanmış olurlar ve bir nakil işlemini kayıt eden blok ile birlikte ardındaki tüm blokları değiştirmeksizin, o işlem ile ilgili değişiklik yapmak mümkün olmaz. Nakil işlemleri de birbirlerine zincirleme bağlıdırlar.

Bitcoin, bu makalede daha önce bahsedilen türde (fakat daha karmaşık) bir emeği ispat yöntemi kullanmaktadır. İyi bir kriptografik karma algoritması, herhangi bir girdiden “rastgele gibi görünen” bir karma ürettiği için, karma işleminin çıktısını tahmin edecek şekilde girdileri değiştirmek mümkün değildir. Bir blok üretmek için fazladan iş yaptığını ispat etmek isteyen bir madenci, belirli bir değeri aşmayan bir blok üstveri karma değeri üretmek zorundadır.

Bilgisayarlı madencilik

Madenci terimi gerçek hayattaki kömür ya da altın madenciliği gibi bir madencilik ile ilgili değildir. Altın madencisi altın bulmak için yeri kazarken, bitcoin madencisi karma değeri hesaplamak için bilgi işlem gücü kullanmaktadır. Blok zincirine tam bir blok eklemek için bir bitcoin madencisi, belirli bir eşik değerin altında bir blok üstveri karma değeri hesaplamayı başarmak zorundadır. İşlem gücü ve elektrik için, bitcoin madencileri epey para harcamaktadır. Bu harcama kazdıkları her blok için bir ödül ödenerek karşılanmaktadır. Bu ödül blok başına 50 bitcoin olarak başlamıştır ve her 210 bin blokta bir yarılanmaktadır. Madenciler para nakil bedellerinden de gelir elde etmektedirler. Madenciler genellikle bireysel değil, büyük bir havuzun parçası olarak çalışmaktadırlar.

İlginç bir biçimde, kâğıt-kalem kullanarak bitcoin madenciliği yapmak da mümkündür [9].

İlk bitcoin bloğu genesis block yani yaratılış bloğu, köken blok olarak bilinmektedir. Takip eden her blok, blok yüksekliği (block height) numarasına göre isimlendirilmektedir. Bu sayı, ilgili blok ile köken blok arasında bulunan blok sayısını ifade etmektedir.

Bitcoin protokolü ve zorluk derecesi

Bir bloğun karma değeri, bitcoin mutabakat protokolü (consensus protocol) ile belirlenmiş olan zorluk derecesi (block difficulty) kadar zorlu ise, o blok zincire eklenmektedir. Bitcoin protokolüne göre, 2016 blok üretilmesi için 2 hafta süre geçmelidir (yani ortalama 10 dakikada bir blok üretilmiş olmalıdır). Eğer bu sayıda blok üretilmesi 2 haftadan uzun ya da kısa sürüyor ise, zorluk derecesi uygun şekilde artırılmakta ya da azaltılmaktadır.

Bitcoin sürecinin nasıl işlediğine yönelik güzel izah edilmiş bir değerlendirmeyi Ken Shirriff’in blog adresinde bulabilirsiniz [10].

Bitcoin adresleri

Bir bitcoin adresi, bitcoin ödemeleri için muhtemel bir istikamet tanımlayan, 1 veya 3 rakamı ile başlayan ve 26 ile 35 arası alfa numerik karakterden oluşan bir belirteçtir (tanımlayıcı). Herhangi bir bitcoin kullanıcısı tarafından ücretsiz olarak oluşturulabilirler [11].

Şu anda yaygın olarak kullanılan iki adres biçimi bulunmaktadır.

1 rakamı ile başlayan alışıldık P2PKH türü
Örnek: 1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2

3 rakamı ile başlayan daha yeni P2SH türü
Örnek: 3QJmV3qfvL9SuYo34YihAf3sRCW3qSinyC

Bitcoin Cüzdanları

Bitcoin cüzdanları özünde, özel anahtarlardan oluşan derlemelerdir. Bu derlemeler dijital olarak bir dosyada saklanmaktadır. Bir parça kâğıt üzerine yazarak saklamak da mümkündür. En basit hali ile bir bitcoin cüzdanı, şu işlevleri yerine getirebilen bir bilgisayar yazılımıdır [12]:

  • özel anahtarlar üretir
  • bunlara karşılık gelen açık anahtarları türetir
  • bu açık anahtarları gerektiği şekilde dağıtmaya yardımcı olur
  • bu açık anahtarlara yapılan ödemeleri takip eder
  • bu ödemeleri harcamak için gerekli emirleri üretir ve onları imzalar
  • imzalı emirleri ağa yayınlar

İsmi cüzdan olsa da bitcoin cüzdanları bitcoin depolamazlar. Cüzdan açık ve özel anahtarların bir derlemesinden ibarettir.

Sanal para ile gerçek para arasındaki fark

İzah edildiği üzere, blok zinciri para nakil işlemlerini kaydeden bir veri tabanıdır. Sürekli büyümektedir ve bitcoin ağındaki tüm düğümlere (node) yollanmaktadır. Tüm nakil işlemleri ağ genelinde dağıtılmaktadır ve geçerli tüm işlemler kazılan bir sonraki bloğa dâhil edilmektedir.

İşvereninizin, internet bankacılığı kullanarak banka hesabınıza maaşınızı yatırdığı gerçek hayattan bir örneği gözümüzde canlandıralım. Ardından akşam yemeğiniz için bankamatik kartınız ile ödeme yapıyorsunuz. Bu şekilde paranızın bir kısmını restoranın hesabına nakil etmiş oldunuz. Bu iki nakil işleminde, tek bir banknot gördünüz mü? Hayır. Öyleyse günümüz dünyasındaki paranın büyük bir kısmının, nakil işlemi ve bakiye kayıtlarından ibaret olduğu söylenebilir.

Bitcoin ve diğer sanal para birimlerinin çoğu aynen bu şekilde iş görmektedir. Kelimenin gerçek anlamıyla “var oldukları” söylenemez. Sadece, oradadırlar!

Bir bitcoini 8 basamaklı ondalık kesirlere kadar bölebilirsiniz. Elde edilebilecek en küçük meblağ olan 0.00000001 değerine satoshi denmektedir. Yeni bitcoin üretecek olan son blok numarası 6 929 999’dur. Bu bloğun 2140 yılı civarında üretileceği tahmin edilmektedir. O noktadan sonra, toplam bitcoin sayısı 21 milyondan biraz eksik olarak, sabit kalacaktır.

3. İleri okuma ve diğer kaynaklar

  1. Blind Digital Signatures – Kör Dijital İmzalar
  2. Bitcoin: A Peer-to-Peer Electronic Cash System – Uçtan Uca Elektronik Para Sistemi
  3. Bitcoin Wiki
  4. FATF Report on Virtual Currencies Key Definitions and Potential AML/CFT Risks – Sanal Paralar Temel Kavramlar ve Kara Para Aklama / Terörizmin Finanse Edilmesiyle Mücadele alanındaki Muhtemel Riskler üzerine FATF Raporu

Referanslar:

[1]

100 Hint rupisi banknotuna bir göz atın. Üzerinde Hindistan Merkez Bankası Başkanı’nın imzalı bir sözü bulunmaktadır. “Taşıyıcıya 100 rupilik meblağ ödemeyi taahhüt ederim.” Bunu bankanın başkanına götürdüğünüz takdirde size toplam 100 rupi değerinde madeni veya bir rupilik banknotlar verecektir. Hindistan Merkez Bankası tedavüle banknot sürme gücünü 1934 tarihli Merkez Bankası Kanununun 31. maddesinden almaktadır. Bu bölümde merkez bankası yahut kanun ile açıkça yetkilendirilenler dışında Hindistan’daki hiç kimsenin hamiline ödemeli ticari (kambiyo) senetler piyasaya süremeyeceği izah edilmektedir.

[2]

Sanal para birimleri, değeri dijital biçimde ifade etmektedir. Dijital olarak ticaretleri yapılabilmektedir. Şu şekillerde işlev görmektedirler: (1) Takas aracı ve/veya (2) hesap birimi ve/veya (3) değer deposu. Fakat kanuni para statüsüne sahip değildir, yani alacaklılara ödeme yapmak için geçerli bir araç olarak kabul edildiği herhangi bir yasal çerçeveye yoktur. Herhangi bir yasal dayanak ile tedavüle sokulmamıştır ve herhangi bir yasal garanti altında değildir. Sanal parayı kullanan topluluğun mutabakatı sayesinde yukarıdaki işlevleri görebilmesi mümkün olmaktadır.

Sanal para ile itibari para (diğer adıyla “gerçek para” veya “ulusal para”, fiat) arasında fark vardır. İtibari para, bir ülkenin kanuni ödeme aracı olarak belirlediği madeni ve kâğıt paralardan oluşur ve onu tedavüle sokan ülkede alışılagelmiş ticari ödeme aracı olarak kullanılır. Sanal para, itibari parayı elektronik olarak transfer etmek üzere dijital ortamda temsil eden e-paradan da farklıdır. E-para, itibari para birimleri için dijital bir nakil mekanizmasıdır. Yani kanuni statüsü bulunan bir değeri, elektronik olarak transfer etmektedir. [Kaynak: FATF report on Virtual Currencies – Key Definitions and Potential AML/CFT Risks]

[3]

Kripto para birimi, kriptografi ile korunan, matematik tabanlı, çevrimi yapılabilir dağıtılmış bir sanal para birimini ifade etmektedir. Yani dağıtılmış, merkezsiz ve güvenli bir bilgi ekonomisi uyarlamak için kriptografi kaidelerinden faydalanıldığını belirtmektedir. Kripto para birimleri bir şahıstan diğerine (birey ya da oluşuma) değer aktarımı yapmak için açık ve özel anahtarlardan istifade etmektedirler ve her nakil işleminin kriptografik olarak imzalanmasını gerektirmektedirler.

Kripto para birimlerinin kütük defterlerinin güvenliği, sağlamlığı ve dengesi, karşılıklı olarak birbirlerine güvensiz taraflardan oluşan bir ağ tarafından sağlanmaktadır. Bitcoin ağında bunlara madenci adı verilmektedir. Madenciler, rastgele bir biçimde dağıtılan ödül karşılığında ağı korumaktadırlar. Bitcoin örneğinde bu ödül, “blok ödülü” adlı yeni üretilen küçük bir miktar bitcoin ile ödemelerinin bir sonraki bloğa dâhil edilmesi için kullanıcılar tarafından madencilere verilebilen gönderim ücretlerinden oluşmaktadır.

Büyük bir kısmı blok zincirini idame etmek ve ödemeleri tasdik etmek için emeği ispat sistemi kullanan bitcoinden türetilmiş olan, yüzlerce kripto para birimi şartnamesi tanımlanmıştır. Tamamen uyarlaması yapılmış olan ilk kripto para birimi protokolü bitcoin olsa da, menfaati ispat (proof-of-stake) gibi daha verimli olması muhtemel kanıt (proof) yöntemleri kullanan alternatifler geliştirmeye yönelik artan bir eğilim bulunuyor. [Kaynak: FATF report on Virtual Currencies – Key Definitions and Potential AML/CFT Risks]

[4]

Kaynak: www.mapofcoins.com

[5]

Kaynak: https://www.cs.utexas.edu/~mitra/honors/soln.html

[6]

Elektronik bir kaydın karmasını hesaplamak basit bir iştir. Mesela PHP kullanarak şu şekilde yapılabilir: hash_file(‘sha256’, $dosyaismi).

[7]

Kaynak: https://en.wikipedia.org/wiki/Blind_signature

Kriptografik kör imzayı anlatmak için sık başvurulan benzetmelerden bir tanesinde kör imza süreci, gizli bir biçimde işaretlenmiş oy pusulasını, seçmenin kimlik bilgileriyle işaretlenmiş olan özel karbon kâğıdı kaplı bir mektuba koyan bir seçmene benzetilmiştir. Karbon kâğıdı sayesinde, mektubun içindeki pusulaya işaret koymak mümkündür. Seçmen mühürlenmiş zarfı, kimlik bilgilerini tasdik edip imzalaması için bir görevliye teslim eder. İmzalanan zarf seçmene geri teslim edilir. Seçmen imzalanmış olan pusulayı, işaretsiz normal bir başka zarfa yerleştirir. Böylelikle imzalayan, mesajın içeriğini görmemiş olur. Fakat daha sonra üçüncü bir taraf imzayı tasdik ederek, altta yatan imzalama yönteminin sınırları dâhilinde imzanın geçerli olduğunu anlayabilir.

[8]

Kaynak: https://bitcoin.org/en/developer-guide#block-chain-overview

[9]

Bkz: http://www.righto.com/2014/09/mining-bitcoin-with-pencil-and-paper.html

[10]

Biraz basitleştirmek adına, bitcoinler, bitcoin aidiyetinin takibini yapan dağıtılmış bir veri tabanındaki girdilerden ibarettirler. Bankalarda olanın aksine, bitcoinler kullanıcılara veya hesaplara bağlı değildirler. Bunun yerine bitcoinlerin sahipleri adreslerdir. Mesela 1HB5XMLmzFVj8ALj6mfBsbifRoD4miY36v. Bir transfer yani nakil işlemi, bitcoin harcamak için kullanılan mekanizmadır. Bir nakil işlemi sırasında, bir miktar bitcoin, sahibi tarafından yeni bir adresin mülkiyetine geçirilir. Bitcoinin getirdiği anahtar nitelikteki yeniliklerden bir tanesi, madencilik işlemi aracılığıyla nakil işlemlerini dağıtılmış veri tabanında kaydetme biçimidir.

Ödemeler bloklar halinde kümelenirler ve her 10 dakikada bir yeni bir ödeme bloğu üretilerek, blok zinciri adlı nakil kaydının bir parçası haline getirilir. Bu sayede ödeme şöyle ya da böyle resmi bir hal almış olmaktadır. Nakil kayıtlarını herkesin tutarlı bir biçimde görebilmesi için ödeme işlemlerini bir bloğa yerleştiren sürece bitcoin madenciliği denmektedir. Bir blok kazabilmek için, madencilerin (başka bir amaç uğruna çözülmesi anlamsız) kriptografik bir probleme oldukça nadide bir çözüm bulmaları gerekmektedir. Bu çözümü bulmak, resmî blok zincirinin bir parçası haline gelecek olan bir bloğu, madencilik ile üretmek anlamına gelmektedir.

Madencilik, yeni bitcoinlerin sisteme girmesinin de yoludur. Bir blok başarı ile kazıldığında, madenciye blok içinde yeni üretilen bitcoinler ödenmektedir. Bu madenci ödülü epey büyüktür: şu anda blok başına 12.5 bitcoin seviyesindedir. Ek olarak, blok içindeki tüm nakil bedellerini de madenci almaktadır. Bu sebeple, madencilikte rekabet yoğundur ve blok kazmaya çalışan birçok insan bulunmaktadır. Zorluk ve madenci rekabeti, bitcoin güvenliğinin anahtar bir parçasıdır çünkü herhangi birinin kötü bloklar ile sistemi bombalamasını engellemektedir.

Merkezi bir bitcoin sunucusu bulunmamaktadır.

Bunun yerine bitcoin uçtan uca (peer-to-peer, p2p) bir ağ üzerinde çalışmaktadır. Eğer bir bitcoin istemcisi çalıştırırsanız, bu ağın bir parçası haline gelirsiniz. Ağ üzerindeki düğümler (node) nakil işlemlerini, blokları, diğer uçların adreslerini birbirleriyle paylaşmaktadırlar. Ağa ilk bağlandığınızda, istemciniz rastgele bir düğüm ya da düğümlerden blok zincirini indirir. Bunun karşılığında istemciniz diğer düğümlere veri temin edebilir. Bir bitcoin ödemesi oluşturduğunuzda onu bir uca (peer) yollarsınız. O uç da onu diğer uçlara yollar ve bu şekilde ödeme tüm ağa yayılır. Madenciler bu ödeme emrini alırlar ve ödemeyi içeren bir blok kazarlar. Ardından kazılan (madenciliği yapılan) bu bloğu tüm uçlara yollarlar. Nihayetinde istemciniz bloğu alır ve işlemin onaylandığını gösterir.
Bitcoinleri yalnızca sahiplerinin harcayabilmesi için bitcoin, dijital imzalardan faydalanmaktadır. Bir bitcoin adresinin sahibi, o adresle ilintili özel anahtarın da sahibidir. Bitcoin harcamak için harcama emrini bu özel anahtar ile imzalamaları, o bitcoinlerin sahibi olduklarını ispat eder. (Geçerli hale getirmek için bir çeki imzalamaya benziyor.) Her bitcoin adresi ile ilintili bir açık anahtar vardır ve dijital imzayı doğrulamak isteyen herkes bu açık anahtarı kullanabilir.

Bloklar ve ödemeler, içeriklerinin 256-bitlik kriptografik karması sayesinde ayırt edilmektedir. Bu karma değeri bitcoin protokolü içinde birçok yerde kullanılmaktadır. Ek olarak, bir blok kazmanın zorlu tarafı, özel bir karma bulmaktır.

[11]

Kaynak: https://en.bitcoin.it/wiki/Address

Bir bitcoin adresi oluşturmanın teknik detayları aşağıdaki gibidir:

18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725

  • 1. Adım: Birlikte üretilen ilgili açık anahtarı alalım

0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6

  • 2. Adım: Özel anahtara SHA-256 karma işlemini uygulayalım

600FFE422B4E00731A59557A5CCA46CC183944191006324A447BDB2D98D4B408

  • 3. Adım: SHA-256 çıktısına RIPEMD-160 karma işlemi uygulayalım

010966776006953D5567439E5E39F86A0D273BEE

  • 4. Adım: RIPEMD-160 karmasının başına sürüm bilgisi ekleyelim (Asıl ağ için 0x00)

00010966776006953D5567439E5E39F86A0D273BEE

(Aşağıdakilerin Base58Check kodlama olduğuna dikkat ediniz [11])

  • 5. Adım: Uzatılmış RIPEMD-160 sonucuna SHA-256 karma işlemini uygulayalım

445C7A8007A93D8733188288BB320A8FE2DEBD2AE1B47F0F50BC10BAE845C094

  • 6. Adım: Bir önceki SHA-256 karmasını tekrar SHA-256 karma işleminden geçirelim

D61967F63C7DD183914A4AE452C9F6AD5D462CE3D277798075B107615C1A8A30

  • 7. Adım: İkinci SHA-256 karmasının ilk 4 baytını alalım. Adresin checksum değeri yani sağlama toplamı şudur

D61967F6

  • 8. Adım: Bir önceki adımda elde ettiğimiz sağlama toplamındaki 4 bayt veriyi, 4. adımdaki uzatılmış RIPEMD-160 karmasının sonuna ekleyelim. 25 bayt uzunluğundaki ikili (binary) bitcoin adresi şudur

00010966776006953D5567439E5E39F86A0D273BEED61967F6

  • 9. Adım: Base58Check kodlama kullanarak, sonucu bayt dizisinden base58 dizisine çevirelim. En sık kullanılan bitcoin adres biçimi budur.

16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM

[12]

https://bitcoin.org/en/developer-guide#wallet-programs

[13]

Gördüğünüz karma değerlerini hesaplamak için kısayollardaki çevrim içi araçları kullanabilirsiniz fakat bu şekilde belirli kriterleri karşılayan bir hash bulmak çok uzun zaman alacaktır. Makalenin yazarı bunu nasıl başarmış bilmiyorum ama ben ne kadar denediysem de Hashnest.exe programını çalıştırarak, makalede anlatılan hesapları yaptıramadım. PHP’de yerleşik karma hesaplayıcı fonksiyonlar olduğu için, makaleyi çabuk yetiştirmek adına aşağıdaki PHP kodunu hazırlayarak, uygun bir karma değeri ürettirdim.

Kodu çevrim içi çalıştırmak isteyenler bir kopyasını onlinephpfunctions.com üzerinde bulabilirler.Belirli bir karma hedefi tutturmak için PHP kodu

Math Money: A simple introduction to crypto-currencies

Abstract: Crypto-currencies (bitcoin et al) have caught the attention of Governments, enforcement agencies, geeks and the general public. This document provides a simple introduction to crypto-currencies and briefly introduces terms such as cryptography, hash functions, proof-of-work, digital signatures, mining, merkle root & tree, crypto-currency addresses and wallets.