BİTCOİN PAYLAŞIYORUZ -P2P EŞLER ARASI - 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 PAYLAŞIYORUZ -P2P EŞLER ARASI

Bu haber 16 Mart 2022 - 11:14 'de eklendi ve 2.495 kez görüntülendi.

Tekrar merhabalar.  Önceki yazılarımızda Blockchain ( blok zincir) uygulaması anlatmış ve programlamasına geçmiştik. Yaptığımız örnek tek bir bilgisayarda çalışmaktaydı. Şimdi ise birden fazla bilgisayarda çalışmasını sağlayacağız. Bunun için Peer-to-Peer (P2P) ağ protokolünü kullanacağız. Eğer Bitcoin hakkında bilgi sahibi olmak isteniyorsa P2P protokolünü bilmek gerekmektedir.

Merkezi kontrole ihtiyaç duymadan, iki veya daha fazla bilgisayarın veri paylaşmak amacıyla birbirine bağlandığı ağ protokolüne Peer-to-Peer ya da P2P denir. Buradaki “peer” sözcüğü “eş” anlamında kullanılır. Eşler, herhangi bir otoriteye ihtiyaç duymadan ya da merkezi kontrol olmadan kendilerine ait veri depolama donanımlarını ağın kullanımına açarlar.

Merkezi ağ yapılarında tüm bilgisayarlar aynı sunucuya bağlanırken, P2P yapılarında ağ içindeki her ullanıcı birbirine bağlanarak veri paylaşımında bulunur.

Bitcoin ağında “node” ismi verilen, veri doğruluğunu ve bütünlüğünü sağlayan bilgisayarlar bulunur. Node’lar, diledikleri zaman ağa dahil olur veya ayrılırlar. Blockchain üzerindeki kayıtların birer örneğini ellerinde tutan node’lar verilerin bozulmadığına dair güvenlik mekanizması oluştururlar.

Dileyen herkes Bitcoin.org adresinden Bitcoin Core dosyasını indirerek ağa destek verebilir.

Bu kadar bilgiden sonra gelelim programımıza.  Websocket üzerinden yapacağız ve server client olarak ikili sistem olacak. Bağlanan her bilgisayar hem sunucu hem de terminal olabilecek. Öncelikli olarak projemize WebSocketSharp import ediyoruz. Server tarafında;

Private chainSynched As Boolean = False

Private wss As WebSocketServer = Nothing

 

Public Sub Start()

wss = New WebSocketServer($”ws://127.0.0.1:{Main.Port}”)

wss.AddWebSocketService(Of P2PServer)(“/Blockchain”)

wss.Start()

Main.RichTextBox1.Text = Main.RichTextBox1.Text + ($”Started server at ws://127.0.0.1:{Main.Port}”)

End Sub

 

Protected Overrides Sub OnMessage(ByVal e As MessageEventArgs)

If e.Data = “Giris” Then

Main.RichTextBox1.Text = (e.Data)

 

Send(“Sisteme Giriş Yapıldı”)

Else

Dim newChain As Blockchain = JsonConvert.DeserializeObject(Of Blockchain)(e.Data)

 

If newChain.IsValid() AndAlso newChain.Chain.Count > Main.MtnCoin.Chain.Count Then

Dim newTransactions As List(Of Transaction) = New List(Of Transaction)()

newTransactions.AddRange(newChain.PendingTransactions)

newTransactions.AddRange(Main.MtnCoin.PendingTransactions)

newChain.PendingTransactions = newTransactions

Main.MtnCoin = newChain

End If

 

If Not chainSynched Then

 

Send(JsonConvert.SerializeObject(Main.MtnCoin))

chainSynched = True

End If

End If

End Sub

End Class

 

Client tarafında ise ;

Public Class P2PClient

Private wsDict As IDictionary(Of String, WebSocket) = New Dictionary(Of String, WebSocket)()

 

Public Sub Connect(ByVal url As String)

If Not wsDict.ContainsKey(url) Then

Dim ws As WebSocket = New WebSocket(url)

 

AddHandler ws.OnMessage, Function(sender As Object, e As WebSocketSharp.MessageEventArgs)

 

If e.Data = “Sisteme Giriş Yapıldı” Then

Main.RichTextBox1.Text = Main.RichTextBox1.Text + (e.Data)

Else

Dim newChain As Blockchain = JsonConvert.DeserializeObject(Of Blockchain)(e.Data)

 

If newChain.IsValid() AndAlso newChain.Chain.Count > Main.MtnCoin.Chain.Count Then

Dim newTransactions As List(Of Transaction) = New List(Of Transaction)()

newTransactions.AddRange(newChain.PendingTransactions)

newTransactions.AddRange(Main.MtnCoin.PendingTransactions)

newChain.PendingTransactions = newTransactions

Main.MtnCoin = newChain

End If

End If

End Function

 

ws.Connect()

ws.Send(“Giris”)

ws.Send(JsonConvert.SerializeObject(Main.MtnCoin))

wsDict.Add(url, ws)

End If

End Sub

 

Public Sub Send(ByVal url As String, ByVal data As String)

For Each item In wsDict

 

If item.Key = url Then

item.Value.Send(data)

End If

Next

End Sub

 

Public Sub Broadcast(ByVal data As String)

For Each item In wsDict

item.Value.Send(data)

Next

End Sub

 

Public Function GetServers() As IList(Of String)

Dim servers As IList(Of String) = New List(Of String)()

 

For Each item In wsDict

servers.Add(item.Key)

Next

 

Return servers

End Function

 

Public Sub Close()

For Each item In wsDict

item.Value.Close()

Next

End Sub

End Class

 

Bu yazımızda bu kadardı. Umarım faydalı olabilmiştir. Blockchain yapıları burada sonlandırmayı düşünüyorum. Bir sonra ki yazımlarımda NFT ve Metaverse sistemleri inceleyeceğiz.  Saygılar

Metin ÖKSÜZ

HABER HAKKINDA GÖRÜŞ BELİRT

Yorum Yok

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

casino siteleri slot siteleri
fotos de mujeres hermosas en la playasister in law saves my marriagejulia osten viral video

pet shopKedi mamasıKöpek maması