DOLAR
32,4375
EURO
34,7411
ALTIN
2.439,70
BIST
9.915,62
Adana Adıyaman Afyon Ağrı Aksaray Amasya Ankara Antalya Ardahan Artvin Aydın Balıkesir Bartın Batman Bayburt Bilecik Bingöl Bitlis Bolu Burdur Bursa Çanakkale Çankırı Çorum Denizli Diyarbakır Düzce Edirne Elazığ Erzincan Erzurum Eskişehir Gaziantep Giresun Gümüşhane Hakkari Hatay Iğdır Isparta İstanbul İzmir K.Maraş Karabük Karaman Kars Kastamonu Kayseri Kırıkkale Kırklareli Kırşehir Kilis Kocaeli Konya Kütahya Malatya Manisa Mardin Mersin Muğla Muş Nevşehir Niğde Ordu Osmaniye Rize Sakarya Samsun Siirt Sinop Sivas Şanlıurfa Şırnak Tekirdağ Tokat Trabzon Tunceli Uşak Van Yalova Yozgat Zonguldak
Balıkesir
Az Bulutlu
16°C
Balıkesir
16°C
Az Bulutlu
Pazar Az Bulutlu
18°C
Pazartesi Az Bulutlu
18°C
Salı Az Bulutlu
19°C
Çarşamba Az Bulutlu
23°C

Blok zincir(Blokchain) adı verilen veri kayıt sisteminin en güzel örneği olan Bitcoin en kısa tanımıyla dijital para birimidir. Merkezi yoktur kurum ve tek bir şahıs tarafından kontrol edilemez, sayısı sınırlıdır. En fazla 21 milyon adet üretilebilir.

 

Bitcoin’in (BTC) doğuşu ve avantajları

Bitcoin ilk olarak 2009 yılında Satoshi Nakamoto olarak kendisini tanıtan bilinmeyen bir programcı ya da programcılar tarafından açık kaynak kodlu yazılım olarak ortaya çıktı.

BTC; hükümetlerden, bankalardan ve şirketlerden bağımsız bir yapıda olması, herhangi bir kurumun btc işlemlerine karışamaması, işlem ücreti alamaması veya paraya el koyamaması, hareketlerin oldukça şeffaf olması çok büyük bir avantaj olarak bu kripto parayı ön plana çıkarttı. Ve yeni bir akımın başlangıcı oldu.

 

Bitcoin nasıl çalışır?

Gelelim işin iç yüzüne, Btc açık defter ile şimdiye kadar yapılmış tüm işlemlerin kaydını tutar. Bu kayıtlara blok denir. Blokların tamamı ise blok zincirini oluşturur. Bilinen adı ile Blockchain. Biri işlem bloklarındaki tek bir harfi veya sayıyı değiştirmeye çalışırsa bu durum sonraki blokları da etkileyecektir. Açık defter olması nedeniyle yapılan herhangi bir yanlışlık veya sahtekarlık kolaylıkla tespit edilebilir ve tüm kullanıcılar tarafından düzeltilebilir.

Kullanıcıların cüzdanları işlemlerin geçerliliğini onaylar. İşlemlerin güvenliği kullanıcının adresi olan dijital imzalar ile sağlanır.

Onaylama süreci ve aynı zamanda işlem yapılan platforma bağlı olarak Bitcoin ile yapılan işlemlerin tamamlanması birkaç dakika sürebilir. Bitcoin protokolü her blokun inşasının 10 dakika süreceği şekilde tasarlanmıştır.

Blockchain , Distributed ledger technology , bitcoin concept. Electric circuit graphic and infographic of Block chain , network connect , security , binary coded icons.

Blok Zincir Ne Demek ?

Blockchain yani blok zincirinin en kısa tanımı veri bloklarının bir araya gelerek oluşturduğu topluluktur. Her blok bir önceki blok ile hash dediğimiz (en çok kullanılan sha-256) şifrelemesiyle birbirine bağlıdır. Ve değiştirilemez. Çoğu kripto para ağının temel bir bileşenidir ve önceden onaylanmış tüm işlemlerin kalıcı bir kaydını tutar, merkezi olmayan, dağıtılmış ve halka açık bir dijital defter görevi görür.

Bir örnekle açıklamak gerekirse mahallede ki bakkalınızdan veresiye alışveriş yapıyorsunuz ve bakkal bu verileri borç defterinde not alıyor. Burada bakkalın yazdığına güvenmek zorundasınız. Defter onda. O ne yazdıysa ay sonunda doğru kabul edip ödeme yapmanız gerekmekte.

Bir de şu şekilde teknolojiye uyduralım senaryomuzu. Bakkalın defteri öyle bir olsa ki. Birer kopyası da müşterilerde olsa, deftere her yazılan aynı anda tüm müşterilerinde defterlerine kayıt edilse. Hatta yeni bir müşteri geldiğinde de aynı defter tüm kayıtlar ile kendisine de aktarılsa. Her müşteri sadece kendi hareketlerini görme özelliği eklense. Bakkalın defteri kaybolması çalınması gibi durumlarda müşteri defterlerinden kendisini hemen ağa dahil edebilse kaldığı yerden devam etse. Sizce hata payı kalır mı ortada? Bakkalın müşterilerine sattığı her ürün zaman damgasıyla birlikte değiştirilemez bir blok. Bakkal ve müşterilerinin oluşturduğu bu yapıya da Blockchain diyoruz.

Bakkal örneğimiz aslında bir ikilemin yansımasıdır. Karşılıklı mutabakata varılmayan her şey mutlaka hata verecektir. Bu ikilem 1982 yılında Bizans Generallerinin Sorunu olarak adlandırılmıştır. Her general karar vermeli, kararını değiştirememeli ve aynı karar üzerinde anlaşmaları ile başarı sağlanabilecektir. Ve bu yapı blok zincirin temellerini atmıştır.

Bitcoin bu sistemin parasal olarak öncüsü olduğu için en gözde olan kendisidir. Her birey, blok zincirinin bir kopyasını tutar ve ağın işleyişine ve güvenliğine katkıda bulunur. Bitcoin’i sınırsız, sansüre dayanıklı ve üçüncü taraf aracılığı gerektirmeyen merkezi olmayan bir dijital para birimi yapan şey budur. Bitcoin protokolü açık kaynak kodludur ve herkes kodu inceleyebilir veya kopyalayabilir.

 

Blockchain Yapısı Oluşturmak

Bunun için vs .net kullanacağız. Ben yazılım da vb kullanıyorum. Nesnel olarak json ve diğer bilgisayarlarla haberleşmek için P2P ağı kuracağız. WebSocket (katman7) ile, tek bir TCP bağlantısı üzerinden tam çift yönlü iletişim kanalları sağlarız.

Yapımızda index ve zaman değerleri ile birlikte her bloğun taşıdığı bilginin (Data) yanı sıra hashi yani şifremiz olacak. Aynı zamanda önceki bloğun şifresini (PreviousHash) kontrol edecek ve bu bilgiyi de kendi bloğunda tutacaktır. Bu doğruluk kontrolü olacak ve blokların güvenliği arttıracaktır. Hashin kaç denemede bulunduğu bilgisini ise Nonce da tutacağız.

Vb de sınıflarımızı oluşturalım. Oluşturacağımız sınıflar;

  • Block
  • Blockchain
  • P2PClient
  • P2PServer
  • Data

 

 

Block: (blok sınıfımızı kodlayalım)

Burada kullanacağımız yöntem Calculatehash yöntemidir. Bu yöntem ile belirlediğimiz içeriği SHA256 ile sabit uzunlukta ve güvenli bir halde şifrelemiş oluyoruz.

 

Public Function CalculateHash() As String

Dim sha256 As SHA256 = sha256.Create()

Dim inputBytes As Byte() = Encoding.ASCII.GetBytes($”{Zaman}-{If(oncekisifre, “”)}-{JsonConvert.SerializeObject(icerik)}-{Denemesayisi}”)

Dim outputBytes As Byte() = sha256.ComputeHash(inputBytes)

Return Convert.ToBase64String(outputBytes)

End Function

 

Burada giriş bilgilerimizi yani inputbytes’ı zaman,taşıdığımız içerik ve bloğun kaç denemede oluşturulduğu şeklinde birleştirerek şifreli hale dönüştürülmüş bir çıkış bilgisi oluşturuyoruz. Outputbytes. Bu bilgiyi veri türü olarak byte yaptık.

Birde herkes tarafından bilinen madencilik kısmımız var. Aslında üretilen yeni bloğun zorluk seviyesini ayarlamanın diğer adıdır.

 

Public Sub Mine(ByVal difficulty As Integer)

Dim leadingZeros = New String(tanimlar.aranandeger, tanimlar.zorluk)

Dim say As Integer = 0

While sifre Is Nothing OrElse sifre.Substring(0, tanimlar.zorluk) <> leadingZeros

Denemesayisi += 1

sifre = CalculateHash()

say = say + 1

Main.ListBox1.Items.Add(sifre)

Main.Label10.Text = say

Main.Label9.Text = sifre

End While

End Sub

 

Burada ana form oluşturduk ve oluşturduğumuz formda oluşturulacak hash kodun kriterlerini belirledik. Say değeri ile kaç denemede istediğimiz kriterde ki hash kodumuzun üretildiği bilgisini aldık. Ve ana formumuza hash ile birlikte yazdırdık. Burada bu işlemler servis halinde yapılmalı ama ekran görselini ve çalışma yapısını paylaşmam için form oluşturdum.

Form ekranımızda zorluk seviyemizi 1 olarak ayarladım ve aranacak değeri M olarak girdim. Bunun anlamı üretilen kodun ilk değeri M olana kadar üretime devam et demektir. Zaten nonce da 8 denemede bulunmuş. Zorluk seviyesini 2 yapmış olsaydım tahmini 4000 deneme de falan bulabilirdi. İlk ürettiğimiz blok genesis yani yaradılış bloğudur ve index i 0, önceki şifresi yok. İçinde data da yok. Bu özellikler sadece genesis blokta bulunur. Daha sonra ki bloklarımız oluşturulurken kendinden bir önce ki bloğun şifresini kontrol edecek PreviousHash kısmına yazacaktır.

Genesis Blok içeriğine bakarsak önceki şifre ve data (içerik) kısımlarının boş olduğunu görüyoruz. Nonce değeri ise 8 olarak ayarlanmıştır. Blok şifremiz formda belirlediğimiz kriterlere uyuyor. Başlangıcın 1 adet M harfi olmasını istemiştik.

Şimdilik burada sonlandıralım . Yazımı 4 bölümde tamamlamayı düşünüyorum. Yazının 2. Bölümünde blockchain sınıfının içini doldururuz. Hatta data sınıfını da anlatırız. 3. Bölümde ise WebSocket ile sistemimizi yayınlar diğer bilgisayarlarında ağımıza katılmasına imkan sağlarız. 4. Tüm kullanıcıların madencilik yapmasına imkan vererek ve üretilen yeni bloklara hediye vererek, sanal paramızı güncel tutarız.

Saygılar.

Metin ÖKSÜZ

Yazarın Diğer Yazıları
Yorumlar

Henüz yorum yapılmamış. İlk yorumu yukarıdaki form aracılığıyla siz yapabilirsiniz.