Bu yazı, Bitcoin’in ne olduğunu ve nasıl çalıştığını açıklamakla birlikte, okuyucuya Bitcoin’e sahip olmanın, göndermenin ya da madenden çıkarmanın ne anlama geldiği konularında da bilgi vermeyi amaçlamaktadır.
Bitcoin Nedir?
Temelinde Bitcoin (BTC) sayısal bir dosyadan başka bir şey değildir. Dosyada bir muhasebe defterine benzer şekilde hesaplar ve karşılarında para miktarı tutulur. Bu dosyanın bir kopyası Bitcoin ağındaki tüm bilgisayarlarda bulunur. Bu miktarlar fiziki dünyadaki herhangi bir şeye karşılık gelmez. Sadece insanların kendi hesap numaralarının karşısındaki miktarı artırmak istemesi ve buna karşılık gerçek dünyadaki mal ve hizmetleri takas etmeyi kabul etmesi, bu arada da diğer insanların aynısını yapacağına inanması nedeniyle bu miktarların bir değeri vardır. Sayıların maddi değeri biz onların değerine inandığımız için vardır. Tıpkı gerçek paraya değer vermemiz gibi.
Birine para yollamak için tüm ağda yayınlanmak üzere bir mesaj gönderirsiniz. Mesajda kendi hesabınızdaki paranın azalmasını, alıcının hesabındaki paranın artmasını kabul ettiğinizi yazarsınız. Ağ üzerinden bağlandığınız bilgisayarlar mesajınızı alır, kendi muhasebe defterlerine (Blockchain sistemine) bu işlemi kaydederler ve mesajınızı ağdaki diğer bilgisayarlara dağıtırlar. Bu işleme bir parça da matematiksel güvenlik eklediğimizde Bitcoin sisteminde olup biten her şey bundan ibarettir. Aslında Bitcoin sistemi bir grup bilgisayarda duran bir hesap defteridir.
Bu sistem bir banka hesabına benzese de temel farkı defterin bir merkez tarafından değil de bir grup tarafından tutulmasıdır. Bunun bir sonucu olarak banka hesabınızın bakiyesini sadece siz ve bankanız biliyor iken, Bitcoin dünyasında herkes diğer herkesin işlemlerini görür. Fakat bu işlemler kişisel bilgilerle ilişkilendirilmez.
Ayrıca bankanıza güvenebilirsiniz, güvenmek zorundasınız. En azından bir hata olursa itiraz edebilirsiniz ya da yasalarda verilen hakkınızı arayabilirsiniz. Dahiyane tasarımı sayesinde sistem güven kavramına ihtiyaç duymaz. Matematik fonksiyonları sistemin her yönünü koruma altına alır. Yazının devamında bir grup birbirini tanımayan insanın nasıl para transferlerini yönetebildiğini ayrıntılarıyla anlatacağız
Bitcoin Nasıl Çalışır?
En basit şekliyle, Ali, Veli’ye para göndermek için sadece hesap adlarını ve miktarı belirten bir mesaj yayınlar. “Ali den Veli’ye 5 BTC gönder”. Mesajı alan herkes kendi hesap defterlerini günceller ve mesajın ağdaki diğer bilgisayarlara yayılmasına yardım eder.
Peki bu mesajdaki talimatı veren kişinin gerçekten de Ali olduğundan nasıl emin olabiliriz. Bitcoin (BTC) sisteminde paranızı harcayabilmek için bir çeşit şifreye ihtiyacınız vardır. Bu şifreye “Dijital İmza” denir. Dijital imza, gerçek bir el yazısı imzada olduğu gibi mesajın size ait olduğunu belgeler. Bunu matematiksel bir algoritmayı kullanarak yapar ve elektronik ortamda sahteciliği engeller.
Basit ve değişmeyen bir şifreden farklı olarak her transfer işleminde farklı bir dijital imza kullanılır. Unutmamak gerekir ki Bitcoin dünyasında tanımadığımız kişilerle muhatabız. Şifremizi tekrar kullanırsak birinin ele geçirmesini ve kopyalamasını kolaylaştırabiliriz. Dijital imza iki adet farklı ama birbirine bağlı anahtar kullanır. İmzayı oluşturmak için bir “gizli anahtar” (private key) ve imzayı doğrulamak için bir “açık anahtar” (public key).
Gizli anahtarı şifre gibi düşünebilirsiniz. İmza ise şifrenizi başkasına göstermeden ona sahip olduğunuzu kanıtlayan bir araçtır. Açık anahtarlar aynı zamanda Bitcoin transferinde kullanılan alıcının adresleridir. Birine para gönderirken aslında onun açık anahtarına göndermiş olursunuz.
Bitcoin adresinize, yani açık anahtarınıza gönderilen paranızı harcayabilmek için bu adresin sahibi olduğunuzu kanıtlamalısınız. Bunu gizli anahtarınız ve size para gönderdikleri talimat mesajını kullanarak attığınız dijital imzanızla yaparsınız.
imza = f(talimat mesajı, saklı anahtar)
Sistemdeki diğer kullanıcılar bu imzayı diğer bir fonksiyon ile çözer ve sizin açık anahtarınızla eşleştiğini doğrular.
1 = ? doğrula(talimat mesajı,açık anahtar, imza)
Dijital imza ardındaki matematiği kullanarak göndericinin saklı anahtara sahip olduğunu bu anahtarı görmeden doğrulayabilirler.
İmzanın kendisi mesaja bağlı olduğundan her işlemde farklı bir imza üretilecektir. Bu da aynı imzanın farklı bir işlemi doğrulamak için kopyalanamayacağı anlamına gelir. Mesajın bir fonksiyonu olması aynı zamanda mesajın ağda bir uçtan diğer uca iletilirken değiştirilmesini de önler. Mesajda en ufak değişiklik bile imzayı geçersiz kılar.
Arkadaki matematik oldukça karmaşıktır. Burada bunlardan bahsetmeyeceğiz ancak aşağıdaki kelimeler ile arama yaptığınızda detaylı bilgiye erişebilirsiniz. Eliptik Eğri Kriptografisi (http://www.belgeler.com/blg/ko6/eliptik-egri-kriptografisi-elliptic-curve-cryptography), Matematikte Kapak Fonksiyonu (http://www.bilgisayarkavramlari.com/2009/03/17/kapak-fonksiyonu-trapdoor-function/)
Yazının sonunda daha fazla referans adresi bulabilirsiniz.
Bitcoin Transferi Nasıl Yapılır?
Buraya kadar dijital imzanın transfer talimatını veren kişi tarafından kanıtlanabilme sürecini işledik. Hesabınızda ne kadar Bitcoin olduğunu da ağa bağlı bilgisayarların hesap defterlerinde, yani Blockchain (blok zincir) sisteminde tutulduğunu öğrendik. Hesap defteri kısmını en başta basitleştirerek anlatmıştık. Aslında hesap bakiyelerinin yazılı olduğu bir defter bulunmuyor. Şunu sorabilirsiniz: Birinin ne kadar parası olduğunu bilmeden yaptığı harcamanın elindeki paradan fazla olmadığını nasıl garanti edebilirsiniz?
Servetiniz bir hesap bakiyesi ile gösterilmek yerine sahibi olduğunuz para hesabınıza gelen transfer talimatlarını referans gösterilerek bulunur. Şöyle ki:
Ali, Veli’ye 5 BTC göndermek için kendisine daha önceden gönderilmiş olan toplamı 5 BTC ya da daha büyük tutardaki transfer mesajlarını referans gösterir. Bu referanslara “Girdi” adını veriyoruz. İşlemi kontrol eden diğer kişiler bu girdileri kontrol eder ve Ali’nin bu girdilerin sahibi olduğunu teyit edebilirler. Aynı zamanda bu girdilerin toplamının 5 BTC ya da büyük olduğunu hesaplayabilirler. Blockchain Explorer‘dan örnek bir işlem:
Şimdi gerçek bir işlemi ele alalım ve nasıl çalıştığına bakalım. http://blockexplorer.com/tx/a117c441aa5bd3fcb442e3c47a180c584420bcd9f93c68dab9feddd1d26b767e
Bu işlemde 6 adet girdi var ve toplamda 139.6 Bitcoin ediyor. Çıktı bölümünde ise iki satır bulunduğu dikkatinizi çekmiştir. İlk satırdaki tutar gönderen kişiye para üstü olarak geri gönderilen miktar. Kural olarak bir işleme girdi olarak katılan referans işlemlerin tutarlarının tamamı kullanılır. Eğer girdilerinizin toplam tutarı gönderdiğiniz miktarı aşıyorsa bu tutarı aynı işlemde kendinize geri gönderirsiniz.
Her işlemin bir sonraki işlemde girdi olarak kullanıldığını ve bunun zincirleme devam ettiğini gördük. Her işlemin geçerliliği önceki işlemin geçerliliğine bağlı. Peki önceki işlemin geçerli olduğundan emin miyiz? Hayır! Çünkü onun geçerliği de girdi olarak gösterdiği kendinden bir öncekine bağlı ve bu böyle sürüp gidiyor.
Aslında Bitcoin cüzdanınızı ilk kez kurduğunuzda gerçekleşen tüm işlemlerin kayıtlarını kendi bilgisayarınıza indiriyorsunuz ve taaa ilk kayıta kadar tüm işlemleri kendiniz kontrol ediyorsunuz.
Bir işlem bir diğerine girdi oldu mu harcanmış sayılır ve tekrar kullanılamaz. Aksi halde birisi aynı parayı farklı işlemlerde tekrar tekrar harcamış olurdu. Bir işlemi teyit ederken diğer kontrollerin yanında girdilerin daha önce kullanılmadığı da kontrol edilir. Başka bir deyişle her girdi satırının daha önceden başka bir işlemin girdisinde var olup olmadığı sınanır. Bu sınamanın 20 milyon işlemin bulunduğu bir dosyada çok fazla zaman alacağını düşünebilirsiniz ama harcanmamış işlemlerin indeksinin tutulması işleri oldukça hızlandırır.
Hesap bakiyelerinin yerine upuzun bir işlem listesi tutulduğunu öğrendik. Bitcoin sahibi olmak demek bu listede adresinize yapılmış ve henüz başka bir işlemde girdi olarak kullanılmamış, yani harcanmamış transfer işleminin bulunması demektir.
Bu durumun bir sonucu olarak hesabınızda ne kadar bulunduğunu öğrenmek için aslında bütün harcanmamış işlemlerinizi tarayarak tutarlarını toplamanız gerekir. Neyse ki cüzdan programınız sizin haberiniz olmadan bu toplama işlemini yapar ve gösterir.
Bir başka ilginç not: Sistem farklı türde işlemlerin de yapılabilmesine olanak tanır. İşlemler sadece birine para yollama işleminden daha karışık olabilir. Önceki örnekte çıktı alanına baktığımızda şifreli gibi görünen şu satır dikkatiniz çekmiştir.
OP_DUP OP_HASH160 9abd2e0c0a63dea36b75c3128fe15d82f274e394 OP_EQUALVERIFY OP_CHECKSIG
http://blockexplorer.com/rawtx/a117c441aa5bd3fcb442e3c47a180c584420bcd9f93c68dab9feddd1d26b767e
Çıktı olarak gösterilen şey basit bir adresten çok çözülmesi gereken bir bilmeceye benziyor. Bitcoin göndermek e-posta göndermeye benzetilebilir, ancak daha çok bir kasaya parayı kilitleyip şifresini de çözülmesini beklediğiniz bir matematik bilmecesine bağlamak gibidir. Bilmece özel bir script diliyle yazılır. Bu bilmece tipik olarak sadece gizli anahtarın sahibi tarafından çözülebilir fakat daha karmaşık durumlar da mümkündür.
Mesela 3 imzadan ikisinin yeterli olduğu durumlar yaratılabilir. Bu durum çift anahtarlı bir kasaya benzetilebilir. Başka bir örnek de herkesin kolaylıkla çözebileceği bir bilmece yaratmaktır ki zincirin ilk halkası olan ilk işlem bu şekilde şifrelenmiştir.
Çoğu cüzdan yazılımı bu katmanı sıradan kullanıcıdan gizler. Kendiniz yazılımcıysanız bu script’leri programınıza ekleyebilir ve tahsilat koşullarını değiştirebilirsiniz. Ancak bunun riskli olduğunu ve şimdiye değin 2600 BTC den fazla miktarın adres oluşturmadaki hatadan dolayı zayi olduğunu da unutmayın.
Şunun altını çizmekte fayda var. Kullanıcı hatasında başvurabileceğiniz bir banka, kredi kartı merkezi vb. bulunmadığından yanlışlıkla kaybettiğiniz Bitcoin’leriniz sonsuza kadar kayıp demektir. Sadece sizin kaybınız değil bütün Bitcoin ekonomisi de bundan etkilenir.
Bitcoin’de Gizlilik
Bitcoin madenciliğinin inceliklerine geçmeden Bitcoin işlemlerinde kimliğinizi gizli tutma hakkında birkaç önemli konuya değinelim.
Bitcoin ağına IP adresinizi gizli tutarak TOR üzerinden bağlandıysanız açık anahtarınızdan başka bir şey göstermeden Bitcoin harcayabilirsiniz. Açık anahtarlarınızın birbirleriyle olan ilişkilerini gizlemek için de birinden her kabul ettiğiniz işlem için farklı adres üretmeyi deneyebilirsiniz.
Ancak siz fark etmeden açık anahtarlarınızın birbirleri ile ilişkili olduğu da açığa çıkabilir. Önceki örnekte gördüğümüz gibi 6 Girdi işlemi tek bir işlemde toplanabilir. Bu da göndericinin 6 adresin de sahibi olduğunu kanıtlamaya yeter. Bitcoin kullanıcısını davranışlarını analiz eden araştırmalar bulunmaktadır. Örnek: “Quantitative Analysis of the Full Bitcoin Transaction Graph by Dorit Ron and Adi Shamir”.
Açık anahtar, yani Bitcoin adresi üretirken gerçek kimliğinizin ortaya çıktığını düşünüyor olabilirsiniz. Ancak bu adım tamamen ağın dışındadır. Çevrimiçi olmanız bile gerekmez. Sadece bir tuşa basarak elektronik cüzdan uygulamanızda yeni ve rastgele üretilmiş gizli ve açık anahtarı yaratabilirsiniz. Mümkün olan adreslerin sayısı çok fazla olduğu için daha önceden kullanımda olduğunun kontrolüne gerek yoktur.
BTC Adresi
Bu çok fazla kullanıcısı olan bir servis sağlayıcıdan e-posta adresi almaya benzer. Aslında birinin anahtarının aynısını üretebilseniz hesabındaki parasına da erişmeniz mümkündür.
Mümkün olan tüm Bitcoin adreslerinin toplam sayısı : 1461501637330902918203684832716283019655932542976 (1.46 x 10^48 veya 2^160)
Bu büyük sayılar Bitcoin sisteminin güvenliğini birçok yönden korur. Ne kadar büyük olduğunu hayal edebilmek için bütün dünyadaki kum tanelerinin sayısını düşünün. Tahminen 7.5 x 10^18th, ya da 7,500,000,000,000,000,000. Şimdi de her kum tanesinin kumla kaplı bir dünya olduğunu düşünün. Kum tanelerini sayın. Hala toplam Bitcoin adresi sayısına yaklaşamadınız.
Aslında kullanıcı sayısı arttıkça iki adresin çakışma olasılığı da artmaktadır. (Çakışan Doğum Günleri problemini düşünün) Gene de 1 milyar adresle hala 2.9 x 10^39 aralığındayız.
Bitcoin Güvenlik Açıkları
Şimdiye kadar olan açıklamaları kısaca özetleyelim. Dijital İmzayı sınayarak transfer talimatını gerçekten harcanan Bitcoin’e sahip kişinin verdiğini teyit edebiliyoruz. Göndericinin bu kadar parasının olup olmadığını da referans gösterdiği girdi işlemlerinin başka bir işlemde harcanmadığını kontrol ederek bulabiliyoruz. Ancak buraya kadar sistemde hala bir güvenlik açığımız var ve harcanmadı kontrolüne hala güvenemeyiz. Bu açık ise transfer işlemlerinin hangi sırayla yapıldığıdır.
Transfer işlemlerinin ağ üzerinden bir bilgisayardan diğerine iletildiğini gördük. İşlemler oluştuğu anda ağdaki bütün diğer noktalara aktarılamaz. Belli bir süre alır. Bir noktaya farklı yollardan ulaşan işlemlerin gerçekleşme sıralarını bilemeyiz. İşlemde yaratılma saati yazsaydı bile buna güvenemezdik; çünkü bu kaydı oluşturan kişinin kontrolünde olacaktı. Merkezi bir yönetimi bulunan sistemlerde – örneğin bankalar, paypal – böyle bir sorunumuz olmayacaktı. İşlemlerin oluş sırası bir merkez tarafından belirlenecekti.
Bitcoin Dolandırıcılıkları
Elimizde hangi işlemin diğerinden önce ya da sonra gerçekleştiğini gösterecek bir göstergemiz yok. Bu durum da dolandırıcılığa açık kapı bırakıyor. Farz edelim kötü niyetli bir kullanıcı var. Adına da Ali diyelim. Ali, Veli’den mal satın alıyor ve bedelini Bitcoin ile ödüyor. Veli malı gönderiyor. Bu sırada Ali çabucak Veliye ödeme yaptığı işlemle aynıgGirdi’yi kullanan bir işlem daha yapıyor ve bu sefer aynı girdiyi kendi adresine gönderiyor. Mesajın ağda yayılma zamanını düşündüğümüzde bazı bilgisayarlara ikinci mesajın birincisinden önce ulaştığını görebiliriz. Bu bilgisayarlar ikinci mesajı geçerli kabul edecekler, Veli’ye gönderilen transferi ise aynı girdi ikinci kez kullanıldığı için geçerli saymayacaklar. Veli parasını almadığı malını gönderdiği ile kalacak. Bu sırada da ağdaki bilgisayarların kayıtlarında tutarsızlık olacak, bir bölümü paranın Ali’de kaldığını düşünürken diğerleri Veli’de olduğunu düşünecek çünkü hangi işlemin önce yapıldığını hiç kimse kanıtlayamayacak.
Ağdaki her birimin işlemlerin gerçekleşme sırası üzerinde mutabık kalacağı bir sistem olması gerekiyor. Merkezi olmayan bir sistemde gerçekten büyük bir problem. Bitcoin bu probleme zekice bir çözüm buluyor ve işlemlerin sırasını ve güvenliğini bir çeşit matematiksel yarış ile sağlıyor.
Bitcoin Nasıl Alınır?
Bitcoin sahibi olmak için çeşitli yollar mevcut. Örneğin bir kripto para borsası aracılığı ile Bitcoin sahibi olabilirsiniz. Bunun yanında eğer bir işletmeniz varsa ödemeleri Bitcoin ile kabul ederek yine BTC sahibi olabilirsiniz. Ayrıca madencilik de Bitcoin almanın başka bir yolu olarak tercih edilebilir.
Blockchain Ne Demek?
Bitcoin işlemleri Blok adı verilen gruplarda toplayarak sıralar. Bloklar birbirine Blockchain (blok zinciri) denilen bir yapıda bağlıdır. Bu zincir önceki bölümde anlatılan Transfer İşlemi zincirinden farklıdır. Blok zinciri işlemleri sıralar. Transfer işlemi ise Bitcoin sahipliğini bir adresten diğerine aktarır.
Her blok kendinden önceki bir bloğu referans alır. Bu şekilde bir bloğun zaman sıralamasında diğerinden önce ya da sonra yaratıldığını kanıtlayabiliriz. Bütün bağlantıları geriye doğru taradığımızda ilk yaratılan işlemlere kadar ulaşabiliriz. Aynı blok içinde yer alan işlemler teorik olarak aynı anda gerçekleşmiş kabul edilir. Henüz bir bloğa girmemiş işlemler için de “onaylanmamış” ya da sıralanmamış ifadesi kullanılır.
Blockchain Nedir?
Ağdaki tüm bilgisayarlar isterlerse bir grup onaylanmamış işlemi alıp bir blok oluşturabilir ve bunu ağdaki diğer uçlara yayabilir. Ancak henüz bu bloğun zincirdeki yeni halka olmaya hak kazandığı anlamına gelmez. Birden fazla kişi aynı anda blok yaratabildikleri için sayısız farklı blok bulunacaktır. Ağın zincire eklenecek yeni halkayı seçmesi gerekir ama bu kararı nasıl verecekler? Blokların yaratıldığı zamanı baz alarak önce geleni kabul edemezler çünkü aynı transfer işleminde olduğu gibi bloğun da ağın farklı noktalarına yayılması farklı sürelerde gerçekleşir.
Çözümün bir parçası olarak her geçerli blok içinde çok özel bir matematik probleminin çözümünü de barındırmalıdır. Bilgisayar blok içindeki tüm işlemleri ve buna ilave olarak rastgele olarak ürettiği bir sayıyı kriptografik bir fonksiyona sokar. Fonksiyonun çıktısı belli bir değere ulaşana kadar rastgele sayıları üretmeye devam eder.
Hash (Özet) fonksiyonları uzun bir metni kısa bir metne çeviren matematiksel fonksiyonlardır. Bizim konumuzda sonuç 32 Byte uzunluğunda bir sayıdır. Bitcoin SHA256 adı verilen bir özet fonksiyonunu kullanır.
SHA256(“kısa cümle”)
0x 3bebb37750ffd45d0c5cd87bd5a207e6775c2619083849d88343ab54f7b53963
SHA256(“Kırk kürkü yırtık kel kör kirpi”)
0x 7bff7fef8496d6e38da4d66dee1a4f78adc0a1c7e1528cd2d8451c94e7f206bf
SHA256(“Kırk kürkü yırtık kel kör kirpi.”) (sonuna nokta ekledik)
0x 2160451817b943e3e8433224ef1e1afe33dea801401d975684b99f09eb5f0c03
Tek bir nokta eklemenin bile sonucu nasıl eklediğine dikkat edin. Fonksiyonun çıktısını tahmin etmek tamamen imkansızdır. Belli bir özelliği taşıyan çıktı elde etmenin tek yolu rastgele girdi üretip fonksiyondan çıkan sonucu test etmektir. Bu şifreli bir kasanın şifresini tahmin etmeye benzer. Şansınız yaver gittiyse ilk denemenizde de kasayı açabilirsiniz. Ancak ortalamada çok fazla sayıda deneme yapmalısınız. Aslında sıradan bir kişisel bilgisayarın bir bloğu çözebilmesi için yıllarca deneme yapması gereklidir. Bütün Bitcoin ağındaki bilgisayarların deneme yapması sayesinde ortalamada 10 dk da bir problem çözülür.
Blockchain Giriş
Matematik problemini ilk çözenin bulduğu sayının ve bloğun blockchain’e girişi yapılır ve ağdaki diğer bilgisayarlar ile paylaşır. Blokta bulunan işlemler bu şekilde ilk onaylarını almış olurlar. Matematik problemindeki rastgelelik iki kişinin aynı anda probleme çözüm bulma olasılığını bir hayli düşürür. Arada sırada da olsa birbirine yakın zamanlarda birden fazla kişinin bloğu çözülür ve zincir çatallaşır.
Bu durumda bir sonraki turda yarışmacılar yeni zincir halkasını ilk önce kendilerine ulaşan bloğa eklemeye çalışır. Farklı noktalardaki bilgisayarlara bloklar da farklı sırada geldiğinden zincirde gördükleri son halka da farklı olabilir.
Beraberliğin bozulması için birinin yeni bir bloğu çözmesi yeter. Genel kural her zaman en uzun zinciri takip etmektir. Matematiğin zorluğu blokların aynı anda çözülmesi ihtimalini küçültür. Hele hele bunun art arda olma olasılığı imkansıza yaklaşır. Sonuç olarak blok zinciri kendini onarır ve herkesin en sondaki birkaçı haricinde blok sıralaması konusunda kesin mutabakata varmasını sağlar.
Bitcoin Çifte Harcama
Zincirin son halkalarındaki belirsizlik durumları transfer işlemlerinin tutarlılığında da bazı istenmeyen etkiler doğurur. Örneğin, işleminiz kısa kalan dallardan birindeki blok halkasına bağlıysa bir süre sonra bu blok iptal olduğunda onay kuyruğuna geri dönecek ve işin kötüsü kuyruktaki ilk yerini de kaybedip sonradan gelen işlemlerin arkalarında kalacaktır. Onay kuyruğundan çıkıp tekrar işleme sokulması için yeni bir bloğun yaratılması gerekir. Ne yazık ki bu olasılık mükerrer harcama saldırısı ihtimalini de beraberinde getirir.
Bu tür bir saldırının nasıl gerçekleştiğini inceleyelim. Sistemi kandırmak isteyen dolandırıcı Ali, Veli’ye Bitcoin yollar. Veli işlemin blok zincirinde onaylanmasını bekler ve ilk onayı aldıktan sonra ürünü Ali’ye yollar.
Bitcoin Şifresi
Blok zincirinde halkanın her zaman en uzun zincire eklenmesi kural olduğu için, eğer Ali ilk zincirden daha uzun bir zincir üretmeyi başarabilirse Veli’ye para gönderdiği transfer işlemi iptal olacak ve tekrar onaylanmayan işlemler kuyruğuna düşecek. Ali bu arada Veliye gönderdiği işlemdeki girdiyi başka bir işlemde kullanırsa Veli’nin önceden onaylanmış olarak gördüğü işlem sistemdeki diğer kullanıcılar tarafından reddedilecek.
Peki sistem Ali’nin Veli’yi bu şekilde dolandırmasını nasıl engeller? Ali’nin daha önceden birkaç bloktan oluşan bir zinciri hazır tutup tam zamanı geldiğinde ağa göndereceğini düşünenler çıkabilir. Her blokta çözülmesi gereken matematik bilmecesi zincir parçasının önceden hazırlanmasına izin vermez. Neden olduğunu anlamak için başta gördüğümüz kriptografik özet fonksiyonuna bir daha bakalım.
Başta da değindiğimiz gibi bir bloğu çözebilmek için blok ile birleştirildiğinde kriptografik özeti belli bir koşulu sağlayan rastgele sayıyı her defasında farklı sayı deneyerek bulmak zorundayız.
Bitcoin Kodu
Blok bir kere çözüldüğünde bulduğumuz kriptografik özeti (hash) tıpkı parmak izi gibi bloğu tanımlayan uzun bir sayıdır. Blok içindeki tek bir rakamın bile değişmesi özetini de tamamen farklılaştırır. Yukarıdaki örnekte cümlenin sonuna noktayı eklediğimizde olduğu gibi.
Her bloğun başında zincirde bağlandığı bir önceki bloğun özet çıktısı, ya da parmak izi bulunur. Bunun sonucu olarak zincirin ortasındaki bir bloğu dışarı atmak ya da içeriğini değiştirmek imkansızdır çünkü kendinden sonra gelen nesillerde her blok atasının parmak izinden bir parça taşıyacaktır. Daha önemlisi hiçbir blok kendinden bir önceki blok çözülmeden çözülemez. Özet fonksiyonuna giren metin transfer işlemlerine ilave olarak önceki bloğun özetini de içerir. Önceki blok değişirse özeti de değişecek bu yüzden sonraki bloğun çözümü de artık geçersiz olacaktır.
Ali’ye geri dönelim. Neden bir zinciri önceden oluşturamayacağını gördük. Bloğu çözmeye ancak ardına eklemeye çalıştığı halka çözüldükten sonra ve özeti bilinir hale geldiğinde başlayabilir. Yani çözümü bulmak için Veli ürünü gönderene kadar ağdaki diğer bilgisayarlarla yarışa girmek zorundadır. Bu sırada da kendine geri gönderdiği işlemden Veli’nin haberdar olmaması gerekir yoksa Veli ürünü yollamaktan vazgeçer.
Son bir soru: Ali’nin ağdaki herkesi yarışta geçebileceği süper hızlı bilgisayarları var diyelim. En hızlı bilgisayar kendinde olsa bile yarışta tek bir bilgisayarı değil tüm ağı geçmek zorunda. Bir şans oyunu gibi de düşünülebilir. Binlerce bilgisayarın sahibi olabilir, yani çekilişe katılacak binlerce bileti olabilir. Bu durumda bile başka birinin oyunu kazanması mümkün. Bir bloğu %50 olasılıkla başkasından önce çözmesi için tüm ağdaki işlem gücünün yarısına sahip olmalı. Bunu arka arkaya birkaç bloğun çözülme olasılığı için hesapladığımızda çok daha fazla işlem gücü gerekiyor.
Bitcoin Dosyası
Özetle, blok zincirindeki transfer işlemleri matematiksel bir yarışla korunuyor ve sistemi aldatmak isteyen kişinin karşısına ağdaki diğer bilgisayarların toplam işlem gücü çıkıyor. Blokların birbiri ardına zincir gibi eklenerek tutulması da zincirin eski halkalarındaki işlemlerin daha fazla geri alınamaz işlemlere dönüşmesini sağlıyor. Bir aldatma girişimi sadece zincirin en ucundaki birkaç halkaya yapılabilir. Bu yüzden kullanıcılara işlemi kabul etmeden önce üzerinden birkaç (genellikle en fazla 6) onay geçmesini beklemeleri öneriliyor.
Son olarak blok zinciri hakkında şuna değinmeden geçmeyelim. Şimdiye kadar sistemde tanımladığımız hiçbir yerde güven kelimesini kullanmadık. Bitcoin ağında yabancı birinden gelen bilgi her zaman güvenilmezdir. Blok çözümlerinin doğru olduğunu kendiniz kontrol edebilirsiniz. Problemlerin çözümü zor olduğundan bir dolandırıcının sahtesini tek başına üretmesi mümkün değildir. Çözümler tüm ağdaki işlem gücünün birlikte kullanıldığının bir kanıtıdır.
Bitcoin Madenciliği Nedir?
Buraya kadar parayı nasıl Dijital İmzamızı ve bir zincir gibi birbirlerine atıfta bulunan transfer işlemlerini kullanarak başka bir adrese gönderdiğimizi gördük. İşlemlerin sırasının nasıl blok zinciri ile sabitlendiğini öğrendik. Şimdi de en son bölüme gelelim: Bitcoin’lerin nereden geldiklerine. Para yollamak için önceki bir transfer işlemine atıfta bulunmamız gerekiyor. Peki Bitcoin’ler bu zincire ilk olarak nereden ve nasıl dahil oluyor?
Bitcoin’leri yavaş bir şekilde ve dengeli olarak dolaşıma çıkarmanın bir yolu onları blok çözen kişilere ödül olarak dağıtmaktır. Bu yüzden blok çözme işine “Bitcoin Madenciliği” adı verilir. Aslında blok çözmenin asıl amacı işlemleri doğrulamak ve blok zincirini işler halde tutmaktır.
Bitcoin Nasıl Üretilir?
Her 4 yılda bir blok ödülü yarıya düşer. Sonunda piyasadaki Bitcoin miktarı 21 milyona ulaştığında dağıtılacak ödül kalmayacaktır. Bu miktar az görünse de 100 milyonda bir bitcoin ile işlem yapılabildiğini düşündüğünüzde dolaşımdaki miktar ihtiyacı karşılayacaktır.
Blok ödülleri sona erdiğinde madencileri işlemleri doğrulamaları için neyle ikna edeceksiniz? Blok ödülüne ilave olarak madenciler işlemlere şu anda isteğe bağlı olarak eklenen işlem harcını (ücretini) da alırlar. Şu anda bloklarına ücretsiz işlemleri de alıyorlar çünkü asıl kazançları nispeten yüksek olan blok ödülü (12,5 BTC). İleride ödül miktarı azaldığında işlemler harç miktarlarına göre sıralanacak ve harçsız işlemler büyük ihtimalle hiç dikkate alınmayacak. Bitcoin ile para göndermek gelecekte ücretsiz olmayacak ancak gene de şu anki banka havalesi, EFT ve kredi kartlarından ucuz olacağını tahmin ederiz.
Bitcoin Nasıl Kazanılır?
Bahsettiğimiz gibi, sıradan bir işlemcinin bir bloğu çözebilmesi çok uzun zaman alır. Yani bir kişinin ağdaki tüm bilgisayarlardan önce – ortalama süre 10 dk – blok çözebilme ihtimali çok düşüktür. Sabit bir getiri elde edebilmek için birçok kişi işlem güçlerini bir havuzda birleştirir ve blokları çözmek için diğerleri ile iş bölümü yapar. Elde edilen gelir de katılım payına göre havuza katılanlara dağıtılır. Bu havuzlardan bazıları oldukça büyüktür ve neredeyse tüm ağın işlem gücünün %20 sini elinden bulundururlar.
Bitcoin Nasıl Kasılır?
Bazı havuzların bu kadar büyük olması güvenlik konusunda şüphe duymamıza neden olur. Bahsetmiş olduğumuz gibi bir saldırının başarılı olması için saldırganın elindeki işlem gücünün ağdaki diğer toplam işlem gücüne yaklaşması gerekir. Havuzlardan birisi, BTC Guild, bir defasında arka arkaya 6 bloğu kendisi çözmeyi başarmıştır. Ardından Bitcoin ağına olan güveni sarsmamak adına gönüllü olarak üye sayısını dondurmuştur.
Çok yüksek işlem gücüne sahip olsa bile bir işlem blok zincirinde ne kadar geride kaldıysa saldırgan için onu değiştirmek o kadar zorlaşır. Şu anda tavsiye edilen tahsil ettiğimiz işlemlerimizin en az 1 blokta yer almasını, yani 1 onay almasını beklemektir. Büyük miktarlar en az 6 bloğu ya da daha fazlasını da bekleyebilir.
Bitcoin Onay Süresi
Kural olarak her bloğun çözülmesi yaklaşık 10 dakika sürer. 6 bloğun çözülmesi için de bir saat beklememiz gerekir. Bir kredi kartı işleminin birkaç saniye sürdüğünü düşünürsek bu süre çok fazla gelebilir. Şunu unutmamalıyız ki kredi kartı müşterileri işlem gerçekleştikten 6 ay sonra bile çalıntı kart bildirimleri ya da başka sebeplerle iade isteyebilir. Satıcı açısından baktığımızda Bitcoin işlemin kesinleşmesinde kesinlikle daha hızlıdır.
Neden her blok yaklaşık 10 dakika içinde çözülür? Bu süre aslında biraz gelişigüzel seçilmiştir ancak sürenin dar olması tutarsızlığı artırır uzun olması ise onay sürelerini geciktirir. Her gün ağa yeni bilgisayarlar dahil oldukça ve madencilik için özelleştirilmiş donanımlar piyasaya çıktıkça blok çözme zamanı çok kısalacaktı. Bunu dengelemek içim her iki haftada bir Bitcoin sistemi matematik probleminin zorluk derecesini 10 dakikada çözülebilecek şekilde kalibre eder. Bitcoin’e benzer bir elektronik para olan Litecoin’de bu süre 2.5 dakika olarak ayarlanmıştır.
M. Rosenfeld, “Analysis of hashrate-based double-spending” başlıklı makalesinde güvenlik seviyesinin blokların aralarında geçen süre ile değil toplam blok sayısı ile bağıntılı olduğunu ortaya koyuyor, fakat varsaydığı bir saldırganın işlem gücünün zamana bağlı kalmadığı yani birkaç dakikalığına ağdaki toplam işlem gücünü yenebilirse bunu birkaç gün boyunca da sürdürebileceği.
Ayrıca Satoshi’nin aşağıdaki iletisinde blok çözme zamanı ve sistem kullanılabilirliği konusundaki yorumları da var.
Bitcoin Yorum 2020
Özet olarak Bitcoin matematik tarafından güvence altına alınan ve bir ağ dahilindeki bir grup insanın (ve tabii bilgisayarın) yönettiği bir dijital veya kripto para para birimidir. Dijital imza ile münferit transfer işlemleri onaylanır. Bitcoin’in sahipliği bir hesaptan diğerine işlem zincirleri vasıtasıyla geçer. Bu işlemlerin sırası Blok Zinciri tarafından belirlenir. Her blokta zor matematik problemini çözmeyi gerektirdiği için sistemi dolandıracak bireylerin karşısına ağın geri kalanındaki toplam bilgisayar işlem gücüyle yarışmak gibi bir zorluk çıkar.
Bitcoin birçok ilginç yenilik vaat etmektedir. Bunlardan bazıları hükümet müdahalesinden bağımsız bir para olması, anonim olması ve düşük komisyonlu para transferleridir. Bunun yanında aşılması gereken bazı engeller de vardır. Diğer para birimleri ile satın alınması hala zordur. İsmi haberlerde yasa dışı faaliyetlerle ve vergi kaçırma olaylarıyla birlikte çok geçtiği için silmesi gereken kötü bir şöhreti vardır. Bu sebepler yüzünden devletlerle arası çok iyi değildir şeklinde yorumlanır. Ayrıca blok zincirini koruyan matematik yarışının elektrik enerjisi israf ettiği yönünde eleştirilere de hedef olmaktadır.
——-
Bu yazı yazarının izni ile Türkçe’ye çevrilmiştir. Metnin orijinali: http://www.imponderablethings.com/2013/07/how-bitcoin-works-under-hood.html adresindedir.
Bu çok güzel bir yazıymış. Geç farkettim ama olsun. Yeterince öğretici.