BİTCOİN YAPIYORUZ (BLOCKCHAİN PROGRAMLAMA) - Bandırma Şehir | Yaşadığınız Şehirden Haberiniz OlsunBandırma Şehir | Yaşadığınız Şehirden Haberiniz Olsun

SON DAKİKA

BİTCOİN YAPIYORUZ (BLOCKCHAİN PROGRAMLAMA)

Bu haber 10 Mart 2022 - 18:01 'de eklendi ve 1.341 kez görüntülendi.

Merhabalar; önceki yazımızda Blockchain yapısını anlatmıştım ve yazılım tarafına geçiş yapmıştık. Blocklarımızın içeriğini blok sınıfımızı kodlamış ve genesis bloğumuzu oluşturmuştuk. Blok içeriğine index,zaman, bir önceki bloğun hash kodu, mevcut bloğun hash kodu , taşıyacağı data ve mining deneme sayısını eklemiştik. Bu yazımızda Blockchain sınıfımızı oluşturup diğer yeni üreteceğimiz blokları ve birbiri arasındaki bağlantıyı oluşturalım

Görselde zorluk seviyemizi 2 yapıp şifremizin ilk iki karakterininde 9 olana kadar hash denemesi yapmış ve 247 denemede istediğimiz genesis Bloğu oluşmuş gözüküyor. Ve genesis bloğumuzun hash kodu “990UX1XIyoZ2A8pL/WiSu7OhG4IwwLsMB22gNMU+DM0=”

Üstteki görselde ikinci blok oluşturuldu ve fark edildiyse index1 olan yani ikinci bloğumuz 9625 deneme de bulundu ve hash kodu üretildi.  Fark ettiyseniz önceki hash kodumuzda yeni bloğumuzda eklenmiş oldu. Şimdi bu işlemlerimizin kodlamasını yapalım.

Blockchain: (blok zincir sınıfımızı kodlayalım)

Imports System
Imports System.Collections.Generic
Imports System.Text
Namespace BlockchainMTN
    Public Class Blockchain
        Public PendingTransactions As IList(Of Transaction) = New List(Of Transaction)()
Public Sub InitializeChain()
            Chain = New List(Of Block)()
            AddGenesisBlock()
End Sub
       
Public Function CreateGenesisBlock() As Block
            Dim block As Block = New Block(DateTime.Now, Nothing, PendingTransactions)

 

  block.Mine(Difficulty)
            PendingTransactions = New List(Of Transaction)()
            Return block
End Function
Public Sub AddGenesisBlock()
            Chain.Add(CreateGenesisBlock())
 End Sub
Public Sub ProcessPendingTransactions(ByVal minerAddress As String)
            PendingTransactions = New List(Of Transaction)()
            CreateTransaction(New Transaction(Main.TextBox2.Text, minerAddress, Main.TextBox3.Text))
            Dim block As Block = New Block(DateTime.Now, GetLatestBlock().sifre, PendingTransactions)
            AddBlock(block)
End Sub
       Public Sub CreateTransaction(ByVal transaction As Transaction)
            PendingTransactions.Add(transaction)
End Sub
Public Function GetLatestBlock() As Block
            Return Chain(Chain.Count – 1)
End Function
       
Public Sub AddBlock(ByVal block As Block)
            Dim latestBlock As Block = GetLatestBlock()
            block.Index = latestBlock.Index + 1
            block.oncekisifre = latestBlock.sifre
            block.Mine(Difficulty)
            Chain.Add(block)
End Sub

Veri doğruluğunu kontrol etmek için IsValid yöntemini kullanıyoruz. Burada extra olarak önceki hash kodumuzu da kontrol edip sistemimizin bloklarının korumasını arttırmış oluyoruz. Olası bir saldırı halinde mevcut blok bozulsa bile, block zincirinin bozulması imkansızdır. Diğer kullacılar etkilenmeyecektir.

Public Function IsValid() As Boolean
            For i As Integer = 1 To Chain.Count – 1
                Dim currentBlock As Block = Chain(i)
                Dim previousBlock As Block = Chain(i – 1)
                If currentBlock.sifre <> currentBlock.CalculateHash() Then
                    Return False
                End If
                If currentBlock.oncekisifre <> previousBlock.sifre Then
                    Return False
                End If
            Next
            Return True
 End Function
Public Function GetBalance(ByVal address As String) As Integer
            Dim balance As Integer = 0
            For i As Integer = 0 To Chain.Count – 1
                For j As Integer = 0 To Chain(i).icerik.Count – 1
                    Dim transaction = Chain(i).icerik(j)
                    If transaction.Kimden = address Then
                        balance -= transaction.Tutar
                    End If
                    If transaction.Kime = address Then
                        balance += transaction.Tutar
                    End If
                Next
            Next
            Return balance
End Function

Transaction sınıfında ise taşıyacağımız verinin içeriği bulunmaktadır.  Örneğimizde oluşturduğumuz class da kimden kime ve miktar mevcut.

Namespace BlockchainMTN
    Public Class Transaction
        Public Property Kimden As String
        Public Property Kime As String
        Public Property Tutar As Integer

Transaction Bir sonraki yazımızda WebSocket ile sistemimizi yayınlamayı diğer bilgisayarların ağımıza katılmasını sağlayacağız.

 

 

 

Bandırma Araba Servisi

&nbps;

Bandırma Laptop Tamiri

Bandırma Web Tasarım

HABER HAKKINDA GÖRÜŞ BELİRT

Yorum Yok

Yorum yapabilmek için giriş yapmalısınız.

Superiority inside the the watchmaking arena method will be the first step toward rolex replicas swiss made .