@BitcoinHaber: Ağustos 2013

31 Ağustos 2013 Cumartesi

Bitcoin nedir? Nasıl çalışır?

Bitcoin nedir? Nasıl çalışır?

Yazan / Orijinal Adı: Scott Driscoll /
How Bitcoin Works Under the Hood



Giriş

Bu yazı bitcoinin nasıl işlediğini anlatmaktadır. Okuyucuya bitcoine sahip olmanın, göndermenin ya da madenden çıkarmanın ne anlama geldiği konusunda ışık tutmaktadır.

bitcoin-nedir-nasil-calisir
Bitcoin Nedir? Nasıl çalışır?


Bitcoin nedir? Bitcoin'in yüzeysel tanımı

İlk önce Bitcoin'in ne olduğu hakkında genel bir tanım yapalım:

Temelinde Bitcoin 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. Defterdeki 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 bu işlemi kaydederler ve mesajınızı ağdaki diğer bilgisayarlara dağıtırlar. Buna bir parça da matematiksel güvenlik eklediğimizde bitcoin sisteminde olup biten herşey bundan ibarettir. Bir grup bilgisayarda duran bir hesap defteri.

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.

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. Bitcoin'de ise sadece kim olduğunu bile bilmediğiniz yabancılarla muhatapsınız. Dahiyene 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 ile para göndermek

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,0 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 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 elyazı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ırız.

Dijital imza iki adet farklı ama birbirine bağlı anahtar kullanır. İmzayı oluşturmak için bir "saklı anahtar" ve imzayı doğrulamak için bir "açık anahtar".

Saklı 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 Bitcoin gönderiminde 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 saklı 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 ve Muhasebe defteri

Buraya kadar Dijital imzanın transfer talimatını verek kişiye ait olduğunu kanıtladığını gördük. Hesabınızda kaç para olduğunu da ağa bağlı bilgisayarların hesap defterinde tuttuğ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 teyid edebilirler. Aynı zamanda bu girdilerin toplamının 5 BTC ya da büyük olduğunu hesaplayabilirler.

Şimdi gerçek bir işlemi ele alalım ve nasıl çalıştığına bakalım.

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çerliği önceki işlemin geçerliğ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ı (bitcoin-qt) ilk kez kurduğunuzda gerçekleşen tüm işlemlerin kayıtlarını kendi bilgisayarınıza indiriyorsunuz ve taa ilk kayıda kadar tüm işlemleri kendiniz kontrol ediyorsunuz. Unutmayın, bir yabancıdan aldığınız bilgiye güvenemezsiniz. Bu işlem 24 saati bulabilir ancak sadece bir kez yapılır.

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 teyid 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. iş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 email 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 scriptleri 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 Bitcoinleriniz sonsuza kadar kayıp demektir. Sadece sizin kaybınız değil bütün Bitcoin ekonomisi de bundan etkilenir. Saklı anahtarınızı kaybettiniz diyelim, buna bağlı bütün bitcoin'lerde uçup gider. İnsanlar doğal olarak zaman zaman sabit disk arızaları ya da farklı nedenlerle bu tür kayıplar yaşarlar. Bunun anlamı bitcoin ekonomisinde paranın sürekli azalacağı ve deflasyona uğrayacağıdır.

Anonim (isimsiz) İşlemler

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şeyi göstermedan 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 farketmeden 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. Örneğin "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ş saklı 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. Bu çok fazla kullanıcısı olan bir servis sağlayıcıdan email 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 or 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, or 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.

Yeryüzündeki tüm kum tanelerinden daha fazla bitcoin adresi vardır
Yeryüzündeki tüm kum tanelerinden daha fazla bitcoin adresi vardır


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. (http://www.hawaii.edu/suremath/jsand.html)

Mükerrer harcama

Şimdiye değin gördüğümüzü kısaca özetleyelim. Dijital İmzayı sınayarak transfer talimatını gerçekten harcanan bitcoin'e sahip kişinin verdiğini teyid 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ığı.

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.

Elimizde hangi işlemin diğerinden önce ya da sonra gerçekleştiğini gösterecek bir göstergemiz yok. Bu durum da sahteciliğe açık kapı bırakıyor. Farzedelim 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ı Girdi'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 tranferi 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.

Blok Zinciri: İşlemlerin Sıralanması

Bitcoin işlemleri Blok adı verilen gruplarda toplayarak sıralar. Bloklar birbirine 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.

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ızsı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.

Matematik problemini ilk çözen bulduğu sayıyı ve bloğu 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ı birhayli 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 ardarda 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.

Blok zincirinde mükerrer harcamalar

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.

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.

Mükerrer harcamanın önlenmesi

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.

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ı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.

Ö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.

Madencilik ve havuz sistemi

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 bitcoinler bu zincire ilk olarak nereden ve nasıl dahil oluyor?

Bitcoinleri 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 "Madencilik" adı verilir. Aslında blok çözmenin asıl amacı işlemleri doğrulamak ve blok zincirini işler halde tutmaktır.

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ı nisbeten yüksek olan blok ödülü (25 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.

Maden Havuz Sistemi

Bahsettiğimiz gibi, sıradan bir PC nin bir bloğu çözebilmesi ortalama birkaç sene 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.

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.

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.

https://bitcointalk.org/index.php?topic=130222.60

Sonuç ve özet

Ö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ğ dijital bir 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 vaadetmektedir. 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 yasadışı 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. 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 bitkoyun.com tarafından Türkçe'ye çevrilmiştir. Metnin orjinali
http://www.imponderablethings.com/2013/07/how-bitcoin-works-under-hood.html
adresindedir.




İlgili diğer yazılar: Satoshi Nakamoto'nun bitcoin makalesi: "Bitcoin: Eşten Eşe Nakit Ödeme Sistemi"


24 Ağustos 2013 Cumartesi

Kısaca Bitcoin

Bitcoin dünyada kullanımı her geçen gün artan dijital bir para birimidir. Bu rehberde nasıl çalıştığını ve nasıl kullanabileceğinizi bulacaksınız. 

Bitcoin nedir? 

Bitcoin bir dijital para birimidir. Elektronik olarak üretilir ve saklanır. Hiç kimsenin kontrolü altında değildir. Dolar, Avro ya da TL gibi kağıda basılmaz. Tüm dünyaya yayılan bir bilgisayar ağına bağlı ve üzerinde matematik problemi çözen programlar çalışan bilgisayarlarda üretilirler. Kriptopara olarak bilinen ve sayıları son günlerde çoğalan para birimlerinin ilk örneğidir. Bitcoin mal ve hizmet alımında kullanılabilir. Bu anlamda klasik para birimlerine benzer. Ancak bitcoin'in diğer klasik paralardan en önemli farkı merkezinin olmamasıdır. Bitcoin ağını kontrol eden bir kurum yoktur. Paranın üzerinde büyük bir bankanın kontrolünün olmaması insanları daha rahat hissettirmektedir.

Kim buldu? 

Satoshi Nakamoto takma adındaki bir yazılım geliştirici matematiksel kanıta dayanan ödeme sistemi Bitcoin fikrini ilk ortaya atan kişidir. Çıkış noktası merkezi bir otoriteden bağımsız, elektronik olarak hızlıca ve düşük masrafla transfer edilebilen bir para sistemi yaratmaktı.

Kim basıyor? 

Hiçkimse. Bu para fiziksel olarak merkez bankalarının çatısı altında basılmaz. Merkez bankaları iç borçları kapatmak için para basar ve arzını artırarak paranın değerini düşürürler. Buna karşılık bitcoin dijital olarak herkesin serbestçe dahil olabileceği bir topluluk tarafından yaratılır. Bitcoinler birbirine bağlı binlerce bilgisayarın hesaplama gücünü kullanarak 'kazılır' ya da başka bir deyişle 'toprak altından yeryüzüne çıkarılır'. Bu bilgisayar ağı aynı zamanda yapılan transfer işlemlerinin geçerliğini kontrol eder. Böylece kendi kendini kontrol eden bir ödeme sistemi ortaya çıkar.

Yani sınırsızca bitcoin üretemez miyiz? 

Doğrudur. Bitcoin protokolü , yani kuralları, sadece 21 milyon bitcoin'in madenciler tarafından üretilip dolaşıma çıkmasına izin verir. Ancak bu para birimi küçük parçalara da ayrılabilmektedir. En küçük birim 100 milyonda bir bitcoin'e eşittir ve mucidin adı olan Satoshi olarak adlandırılır.

Altyapısı nedir? 

Bitcoin matematiğe dayanmaktadır. Sıradan para birimleri altın ya da gümüşe dayalıdır. Teorik olarak bankaya paranızı götürdüğünüzde karşılığını altın olarak alabileceğini bilirsiniz. Tabii pratikte bu hiçbirzaman mümkün olamaz çünkü bankanın elinde herkese dağıtacak kadar altını yoktur. Bitcoin ise altın ile değil matematik ile desteklenir. Tüm dünyada insanlar matematik formülleri ile bitcoin üreten bilgisayar programları kullanırlar. Bu matematik formülü gizli değildir ve herkes tarafından doğruluğu sınanabilir. Yazılım da açık kaynaklıdır. Bunun sayesinde isteyen herkes yazılımın doğru ve gerektiği gibi çalıştığını test edebilir.

Özellikleri nelerdir? 

Bitcoin'in birçok özelliği bulunmaktadır:

1. Merkezi değildir. Bitcoin ağı baştaki bir kişi veya kurum tarafından kontrol edilmemektedir. Bitcoin üreten ve işlemleri denetleyen her bilgisayar ağın bir parçasıdır ve birlikte çalışırlar. Yani teorik olarak bir merkezi birim para politikaları ile oynayarak değerini eritemez ya da insanların elinden bitcoin lerini alamaz. (2013 de kıbrıstaki bankalarda olduğu gibi) Eğer ağın bir bölümü erişilemez olsa bile para akışı devam eder.

2. Kurması kolaydır. Bankalar basit bir hesap açtırmak için bile deveye hendek atlatmaktadır. Hele ki kurumsal bir hesap açtırıp ödemelerinizi kredi kartıyla tahsil etmek için bürokrasinin çarklarını aşmanız gerekir. Bitcoin adresiniz ise saniyeler içinde alıp tahsilata başlayabilirsiniz. Kimse soru sormaz, ücret istemez.

3. Anonimdir. Bir noktaya kadar kimliğiniz gizlidir. Kullanıcılar birden fazla bitcoin cüzdanı/adresi edinebilirler ve bu adresler isimler ya da kişisel bilgiler ile ilişkilendirilmemektedir. Ancak...

4. Tamamen şeffaftır ... bitcoin ağı her transfer işleminin kaydını çok uzun bir muhasebe defterinde tutar. Bu deftere blok zinciri adı verilir. Blok zinciri tüm bilgiyi içerir. Eğer bitcoin adresinizi bir yerde ifşa ederseniz herkes bu adrese ne kadar bitcoin gönderildiğini görebilir. Sadece bu adresin sizin olduğunu blok zincirinde göremez.

5. Transfer ücretleri cüz'idir. Bankanız havale ve EFT ücreti olarak yüksek miktarlar alır. Bitcoinde ise transfer ücreti çok düşüktür.

6. Hızlıdır. Dünyanın her yerine dakikalar içinde bitcoin yollayabilirsiniz. Yüksek miktarda tranferler en fazla 1 saat içinde 6 kez onaylanarak kabul edilir.

7. Transferler iptal edilemez. Bir kez gönderildiği zaman geri dönüşü yoktur. Kredi kartında olduğu gibi ödemenin sonradan iptali sözkonusu değildir. Harcayan için dezavantajlı gibi görünse de bitcoin ile ödeme kabul eden satıcı için işlemin geri döndürülmemesi tahsilat riskini sıfıra indirir.

bitkoyun.com

Bitcoin hakkında yanlış bilinenler - 1

Bu yazımızda bitcoin hakkında Türkçe basında ve popüler bloglarda yazılan bazı yazılardaki yanlış bilgileri ve dolayısıyla yanlış bilgilendirmeleri ele alacağız. Amacımız kesinlikle yazarların bilgi eksikliklerini yüzlerine vurmak değil. Bitcoin hakkında Türkçe içeriğin oluşmasına katkıda bulunan tüm yazarlara saygı duyuyoruz ve yazılarının ulaştığı kitlenin büyüklüğü dolayısıyla bilgi kirliliğini azaltmayı hedefliyoruz.

Başlık: Sanal para bitcoin’in vergilemesi
http://www.vergidegundem.com/tr_TR/blog?blogid=1274857
Yazar: Onur Elele
Tarih: 26/05/2013

"Bitcoin sistemi kurulduğunda havuza belli miktarda sanal para konulmuş. Sonradan üretimi algoritmik şifreli yazılımlar marifetiyle gerçekleştiriliyor. Açık kaynak kodlu. Çok iyi düzeyde yazılım bilgisine sahip herkes üretebiliyor. Ancak yeni bitcoin üretimi her geçen zaman daha da zorlaşıyor ve arzı sınırlı, sistem tarafından 21 milyon ile sınırlandırılmış. Mevcut bitcoin sayısı bu rakamın yarısı düzeyinde. Günlük üretimi 3000-4000 adet civarında. Arz sınırına ulaşmasının 20-30 yılı bulması bekleniyor.

Üretiminin kolay olmadığı söyleniyor. Sadece yüksek yazılım bilgisi olan kişilerin üretebildiği göz önünde bulundurulduğunda, 120 dolar değerinde bir Bitcoin üretmek için harcanacak zamanın alternatif maliyeti daha yüksek olabiliyor."


Bitcoin sistemi kurulduğunda havuza konulan para yok. Tüm sanal para madencilik ile üretiliyor. Sistemde yaratılış bloğu adı verilen ilk yapılan işlem bloğu var ve büyük bir ihtimalle de bitcoin'i ortaya çıkaran kişi tarafından gerçekleştirilmiş. Ancan bu bloktan elde edilen bitcoin bile maden kazma işlemi ile elde edilmişti.

Sadece yüksek yazılım bilgisine sahip kişilerce üretilebildiği doğru değil. Hatta hiç yazılım bilgisi olmayan birisi de üretebilir. Madencilik benzetmesinde ağır işi yapan programını yazan ya da şifreyi çözen insanlar değil tamamıyla bilgisayarların işlem gücüdür. İlk başlarda sıradan bilgisayarla çözülebilen problemler artık sadece bu iş için özelleştirilmiş donanıma sahip bilgisayarlardan oluşan devasa işlem gücüne sahip ağlarda çözülebiliyor.


Başlık: Bitcoin ne menem iştir?
http://www.aksam.com.tr/yazarlar/bitcoin-ne-menem-istir/haber-186893
Yazar: Deniz Gökçe
Tarih: 14 Nisan 2013
Not: Yukarıdaki bağlantıdaki orjinal metin Akşam gazetesi tarafından sonradan düzeltilmiştir.

"Miktarı sınırlı olduğu için bir de kural getirilmiş. Yeni bitcoin almak için bir matematik veya bilgi teknolojisi problemini çözerek de yeni bitcoin alma hakkı kazanabiliyorsunuz. Yeni bitcoin alma hakkı kazanamazsanız da, mevcut bitcoin sahiplerinden piyasa fiyatından bedelini ödeyerek satın alabilirsiniz.
Bitcoin'in taklitleri çoktan çıktı. Şimdiden Second Life adlı sistemde Linden Dollars adlı para ile ödeme başladı. Tencent adlı dev Çin şirketinde QQ Coin denen para sirkülasyonda. Bitcoin internette en yaygın olarak Tor adlı yerde Silk Road adlı pazarda kullanılmakta."


Yeni bitcoin alma hakkı kazanmak diye birşey sözkonusu değil. İsteyen herkes bitcoin alabilir. Yazarın burada anlatmak istediğinin bitcoin madenciliği yaparak yeni bitcoin üretmek olduğunu varsayarsak da getirilen kuralın miktarın sınırlı olmasıyla bir alakası yok. Sözü geçen matematik probleminin çözülmesi ise sistemdeki işlemlerin güvenliğinin sağlanması, mükerrer harcamaların önlenmesine dair kontrolleri kendi bilgisayarlarında yapanların harcadıkları emek ve enerjinin karşılığına alabilmeleri için ürettikleri bir çeşit hakediş kanıtı. Bu kanıtı gösteren herkese anında ödeme yapılmıyor fakan 10 dk da bir şanslı numara hakedişini tahsil ediyor. Şanslının belirlenmesindeki matematik formül o kadar adaletli ki şimdiye kadar milyon dolarların dağıtıldığı bu sisteme itiraz eden olmadı. Açık kaynak kodlu olması sistemde yolsuzluğa meydan vermiyor.

Linden Dollars'ın Bitcoin ile uzaktan yakından alakası yok. Yazar bitcoin'den önce de var olan ve özel bir şirketin kontrolünde olan sanal para birimleri ile P2P ağında çalışan ve merkezi bulunmayan para birimlerini birbirine karıştırmış. Aynı mantıkla bakarsak tatil köylerinde ödeme yapılan boncuk, otobüse binerken kullandığımız akbil hatta çay tabağına bıraktığımız plastik markalar bile birer
sanal para sayılabilir ancak bu örneklerin hepsinde paranın arzı ve kullanımı merkezden kontol ediliyor.
Bitcoin ile benzer sistemler olarak sayılabilecek LiteCoin ve diğer P2P elektronik para birimlerine ise yazıda değinilmemiş.

Sizin de medyada rastladığınız yazılarda (bu yazı da dahil) bulduğunuz yanlışlar varsa lütfen bitkoyun@bitkoyun.com adresine yazın. Bir sonraki yazımızda ele alalım.

bitkoyun.com

İlgili yazılar:
Bitcoin Hakkında Yanlış Bilinenler - 2

20 Ağustos 2013 Salı

Bitcoin Cüzdanı Nedir ve Nasıl Çalışır

Soru:

Merhaba,

Bir türlü anlayamadığım bir konu var, bitcoin'de sınırsız sayıda cüzdan oluşturulabiliyor. Ve bu cüzdanlar bir dosyada saklanıyor. Dosyaya erişim yoksa bu cüzdan tekrar oluşturulamıyor, yani aynı cüzdandan 2 tane olamıyor.

Herkes cüzdan oluşturabiliyorsa ve bunu p2p ağında doğruluyorsa, bu cüzdanın tekrar oluşturulması nasıl engelleniyor, sonuçta bu cüzdan p2p ağında açık bir şekilde görülebiliyor.


Cevap

Önce sabırsızlar için kısa cevap: Cüzdanların oluşturulması sırasında ağ tarafından doğrulanması gerekmiyor. Hatta aynı cüzdanın oluşturulması da mümkün ama ihtimali o kadar düşük ki neredeyse imkansız. Geçtiğimiz günlerde Android işletim sistemlerinde bulunan güvenlik açığı bunun mümkün olduğunu bize gösterdi.

Şimdi de uzun cevap:

Bitcoin mimarisini oluşturan temel yapı saklı anahtar kriptolama algoritmasıdır. Basit kripto algoritmaları saklanan metni aynı anahtarla şifreler ve şifrelenmiş metni aynı anahtarla geri döndürebilir.

Örneğin şifrelenmiş metin: ABCDEFGHIJ olsun. Anahtar olarak da 123 seçelim. Kripto algoritmamız da her harfi anahtardaki rakam kadar ilerisindeki harfle değiştirmek olsun. Metni ve anahtarı (tekrarlayarak) altalta yazıyoruz. En alta da şifrelenmiş metni yazıyoruz.

Şifrelenecek metin: ABCDEFGHIJ
Anahtar (tekrarlı): 1231231231
Şifrelenmiş metin: BDFEGIHJLK

Şifreli metni çözme algoritmamız da her harfi anahtardaki sayı kadar geri çekme olsun. En üste şifreli metni ortaya anahtarı (tekrarlı) yazıyoruz ve an alta da şifresini çözdüğümüz orjinal metni.

Şifreli metin: BDFEGIHJLK
Anahtar (tekrarlı): 1231231231
Orjinal metin: ABCDEFGHIJ

Bu basit bir kriptolama algoritmasıydı. Saklı anahtarlı kriptolama sistemlerinde ise 1 yerine 2 adet anahtar bulunur. Bunlardan biri metni şifrelemek için kullanılır ve açık anahtar adı verilir. Diğeri de şifreyi çözmek için kullanılır ve saklı anahtar adı verilir. (Aslında her ikisinin de şifreleme ve şifreyi açma amacıyla kullanıldığı durumlar da vardır ama buna ileride değineceğiz)

Saklı ve açık anahtarlar birbirini tamamlar ve her zaman beraber üretilirler. Bir anahtarı bilmek eşi olan anahtarı tahmin etmek için yeterli değildir. Örnek olarak bir saklı-açık anahtar çifti üretmek için kitabımızdan rastgele bir cümle seçiyoruz:

TÜRK ÖĞÜN ÇALIŞ GÜVEN

Bu cümledeki SESLİ harfleri saklı anahtar, sessiz harfleri ise açık anahtar yapalım

Saklı anahtar: ÜÖÜAIÜE
Açık Anahtar: TRKĞNÇLŞGVN

Gördüğünüz gibi bir anahtardan diğerini elde etmek elinizde deyimler sözlüğü yoksa imkansız. Örneğimizdeki anahtar çifti çift anahtarlı şifreleme algoritması için gerekli koşulları sağlamadığı için geçerli değil. Ama geçerli anahtar çiftlerini bulan matematik denklemleri var.

Bitcoin cüzdanı ve Bitcoin adresi kavramlarını tanımlayalım:

Bitcoin adresi yukarıdaki açık anahtara eşdeğer. Ağ içinde herkesin görmesinde bir sakınca yok, hatta gerekli. Birisinden Bitcoin isterken açık anahtarımızı veriyoruz. Bitcoin ağında kullanılabilen adresler 1 rakamı ile başlıyor ve 27-34 arası harf ve rakamdan oluşuyor.

Bitcoin cüzdanı ise bizim bilgisayarımızda duruyor. Cüzdanda ürettiğimiz tüm adreslere yani açık anahtarlara karşılık birer saklı anahtarımız var. Cüzdanımızda bu anahtarları saklıyoruz.

Birisi bizim adresimize Bitcoin gönderdiğinde ne oluyor?

Bitcoin ağında bizim açık anahtarımızın olduğu bir mesaj yayınlanıyor. Bu sırada aslında bizim cüzdanımıza gelen hiçbirşey yok. Ağa bağlı olmamız bile gerekmiyor. Adrese ne kadar Bitcoin geldiğini herkes görebiliyor. Aynı adrese birden fazla kez Bitcoin da gelebiliyor. Güvenlik sorunu oluşturmasaydı aynı adresi herkese verebilirdik ve sürekli yeni adreslerle uğraşmamız gerekmezdi. Yalnız kimden ne kadar geldiğini takip etmemiz zorlaşırdı.

Cüzdanımıza, ya da başka bir deyişle saklı anahtarımıza ancak adresimize gelen Bitcoinları başka bir adrese transfer etmek istediğimizde ihtiyacımız var. Sistemde bizim adresimizin geçtiği kayıtlar açık anahtarımızla şifreli. Şifreyi açabilecek tek anahtar da cüzdanımızda sakladığımız saklı anahtarımız.

İmzalama

Saklı anahtarımızın bir işlevi daha bulunuyor. Bu da imzalama işlevi. Saklı anahtarımızla imzaladığımız bir belgenin bizden çıktığını, daha doğrusu açık anahtarın sahibinden çıktığını ispatlamak çok kolay.

Cüzdanımızdaki Bitcoinu başka bir adrese göndermek için de imzalama fonksiyonunu kullanıyoruz. İşlemi saklı anahtarımızla imzalıyoruz ve Bitcoin ağına salıyoruz.

Peki bu işlemin bizden çıktığını doğrulama işlemini kim yapıyor? Tabii ki emektar Bitcoin madencileri...

bitkoyun.com