Python’da Blockchain Nasıl Oluşturulur?

Bir blockchain’in nasıl inşa edileceğini öğrenmek istiyorsanız, o zaman doğru yere geldiniz. Python’da nasıl blok zinciri oluşturabileceğinizi öğrenmek için derinlere dalalım.

Blockchain ile ilgili tonlarca makale var, ancak hepsi sıfırdan bir blok zinciri oluşturmaktan bahsetmiyor. Bir geliştirici olarak teoriler önemlidir, ancak arkasındaki konsepti tamamen anlamak için bir blok zinciri oluşturmanız da gerekir..

Blok zincirlerinin arkasındaki temel fikir, merkezi olmayan doğasıdır. İçeride her şeyin nasıl çalıştığına hayran kalacaksınız. Blockchain kulağa basit gelebilir, ancak içinde bunu gerçekleştiren birçok protokol ve algoritma vardır. Sıfırdan bir blok zinciri oluşturmak için Python kullanacağız.

Ayrıca makaleyi kaydedebilir ve “Blok zincirimiz nasıl oluşturulur?” Şeklinde yer işareti koyabilirsiniz. İnan bana; makale uzun vadede size yardımcı olacak.

Blockchain’i hiç duymadınız mı? O halde 101Blockchain’in ücretsiz kursuna göz atın. Kariyerinizi ilerletmek istiyorsanız, kurumsal blok zincirinin nasıl çalıştığını öğrendiğiniz Sertifikalı Kurumsal Blok Zinciri Kursuna göz atın. Başlayalım.

Blockchain’de acemi misiniz? Blockchain Ücretsiz Kursuna kaydolun ve Blockchain yolculuğunuza şimdi başlayın.

Bir Blockchain Nasıl Oluşturulur

Herhangi bir şeyi öğrenmenin en iyi yolu yaparak öğrenmektir. Benimle aynı sayfada olduğunuzdan emin olmak için önce gereksinimleri kontrol edelim. Ayrıca blockchain’i kısaca açıklayacağız, böylece ikimiz de aynı sayfada olacağız..

Python'da Bir Blockchain Nasıl Oluşturulur

Gereklilik

Kılavuzu izlemenin temel şartı, kodlamanın nasıl yapılacağını bilmektir. Hayatınızda hiç kod yazmadıysanız, bu rehber size göre değildir. Çevrimiçi olarak mevcut olan çeşitli başlangıç ​​seviyesi kurslarına göz atmanızı öneririm. En iyi öğrenme deneyimi için EdX, Udacity ve Coursera’yı öneririm.

Zaten kodlayıcı mısınız? O halde, temel Python hakkında bilgi sahibi olmalısınız. Ayrıca, “Bir Blok Zinciri Nasıl Oluşturulur” eğitimini takip etmenize yardımcı olacaktır..

Şimdi Okuyun: Quorum Blockchain Ultimate Guide


Öğreticiyi herkesin takip edebilmesi için oluşturduk. Öyleyse, sıfırdan bir blok zinciri oluşturmayı bilmiyor ve öğrenmek istiyorsanız, bunu yapabilirsiniz.!

Python’u bilmiyorsanız, alması kolay olduğu için endişelenmeyin. Kontrol et Python belgeleri başlamak.

Eğitim için Python 3.6+ kullanacağız. Python’un diğer sürümlerini kullanmaya karar verirseniz, kodun çalışması için daha fazla araştırma yapmanız gerekebilir. Eğitim amaçlı olarak, kullandığım sürümü yüklemenizi tavsiye ederim..

Son olarak, internette iki taraf arasında iletişim kurmak için kullanılan protokol olan HTTP’yi de bilmelisiniz..

Python’u pip kullanarak kurma

Python’u pip kullanarak kurmanız gerekir. Ayrıca harika Requests and Flask kitaplığı yüklemeniz gerekir. Bunu yapmak için aşağıdaki komutu çalıştırmanız yeterlidir.

$ pip yükleme şişesi == 0.12.2 istek == 2.18.4

Windows ortamını kullanıyorsanız, Python’un en son sürümünü indirmek için doğrudan python.org’a gidebilirsiniz..

Bana gelince, öğreticiyi yazarken en son yapı olan Python 3.8.1’i indirdim.

IDE için PyCharm kullanmayı tercih ediyorum. Eğitim için Python Community sürümünü kullanıyorum. İstediğiniz herhangi bir IDE’yi kullanmakta özgürsünüz. Diğer bir harika alternatif ise ücretsiz, açık kaynaklı bir entegre geliştirme ortamı olan Visual Studio Code’dur.

İhtiyaç duyacağınız son araç, bir HTTP istemcisi olan Postman’dır. Alternatif olarak, cURL de kullanabilirsiniz..

Ayrıca geliştirmeniz için tamamen farklı bir ortam oluşturmak için sanal bir ortam kurmanızı tavsiye ederim. Takip edebilirsin bu rehber doğru şekilde kurmak için.

Blockchain Yeniden Ziyaret Edildi

Blockchain’i oluşturmadan önce blockchain fikrimizi yenilememiz gerekiyor. Bu aynı sayfada kalmamıza yardımcı olacak.

Blockchain, eşlerin merkezi bir varlığa ihtiyaç duymadan katılabileceği, etkileşim kurabileceği ve işlemleri gerçekleştirebileceği dağıtılmış bir defter teknolojisidir. Her eş, defterin bir kopyasına sahiptir, bu da bilgisayar korsanlarının sistemde dolandırıcılık yapmasını imkansız kılar. Blockchain’in temel özellikleri arasında şeffaflık, değişmezlik ve güvenlik bulunur. Veri güvenliğini sağlamak için gelişmiş kripto para birimi algoritmaları kullanır. Ayrıca, fikir birliğine varmak için, bir blockchain ağı, Proof-of-Work, Proof-of-Stake ve benzeri gibi fikir birliği algoritmalarını kullanacaktır..

Ayrıca Okuyun: Yeni Başlayanlar İçin Blockchain: Başlangıç ​​Kılavuzu

Bir Blok Zinciri Oluşturmaya Başlarken

Tüm önkoşul kurulumları tamamladıktan sonra, artık “Bir Blok Zinciri Nasıl Oluşturulur” başlıklı eğiticimize başlamaya hazırız.

Başlamak için bir blockchain.py dosyası oluşturmanız gerekir.

1. Blockchain Oluşturma

İlk adım, işlevsel bir blockchain çözümü yapmaktır. İlk önce bir Blockchain sınıfı oluşturmamız gerekiyor. Orada zinciri ve işlem listesini başlatacak bir kurucu oluşturacağız. Zincir listesi blok zincirimizi saklayacak, işlemler ise current_transacations dizisinde saklanacaktır..

def __init __ (self): self.chain = [] self.current_transactions = []

Daha sonra, yeni bloklar oluşturmak ve ardından bunları mevcut zincire eklemek için kullanılacak bir new_block işlevi oluşturmamız gerekiyor. New_block işlevinin kodu aşağıdaki gibidir:

def new_block (self): #Bu işlev yeni bloklar oluşturur ve ardından mevcut zincir geçişine ekler

New_transcaction yöntemi yeni bir işlem yaratacak ve ardından işlemi zaten var olan işlem listesine ekleyecektir..

def new_transaction (self): #Bu fonksiyon, mevcut işlem geçişine yeni bir işlem ekler. Ayrıca bir blok için hash oluşturmak için kullanılan bir hash fonksiyonumuz da vardır. @staticmethod def hash (block): # Bir bloğa hashing uygulamak için kullanılır

Last_block oluşturacağımız son işlev. Zincirdeki son bloğu çağırmak için kullanılır..

Ayrıca burada üç işlev daha oluşturabiliriz.

  • register_node () → Yeni bir düğüm kaydetmek ve onu ağa eklemek için
  • valid_proof () → Zincire gönderilen bir bloğun sorunu çözmesini sağlar
  • valid_chain () → Bu, zincirdeki sonraki blokların geçerli olup olmadığını kontrol eder.

Blockchain.py’nin planı aşağıdaki gibidir.

class Blockchain (nesne): def __init __ (self): self.chain = [] self.current_transactions = [] def new_block (self): #Bu fonksiyon yeni bloklar oluşturur ve ardından mevcut zincir geçişine def new_transaction (self) ekler: # Bu işlev, @staticmethod def hash (blok) pass mevcut işlemlere yeni bir işlem ekler: # Bir bloğu hashing için kullanılır @ özellik def last_block (self): # Zincir geçişinin son bloğunu çağırır ve döndürür

Blockchain sınıfı, tüm zinciri yönetir. Sınıf altında tanımlanan tanımlar, blok zinciri içindeki farklı eylemleri yönetir..

Aşağıdaki yöntemlerin her birini inceleyelim.

Şimdi Okuyun: Blockchain parçalama nedir: Blockchain ölçekleme çözümüne giriş

Bir bloğun yapısı

Bir blok, işlemler ve zincirler hakkında hayati bilgiler içerir. Zincirdeki herhangi bir blok aşağıdaki bilgileri içerecektir

  • indeks
  • Unix zamanında zaman damgası
  • işlemler listesi
  • kanıt
  • Önceki blok karması

Bloktaki bilgilerin çoğu kendinden açıklamalıdır. Burada, iki önemli değişken, önceki bloğun hash değerini içeren previous_hash’tır. Bu, blok zincirinin değişmez olmasını sağladığından ve hiçbir kötü niyetli kişinin zincire herhangi bir veriyi güncelleyemeyeceği, silemeyeceği veya ekleyemeyeceği için önemlidir..

Şimdi Okuyun: Blockchain Neden Dünyayı Değiştirecek??

Bir Bloğa İşlem Ekleme

Bloğun yapısı anlaşıldığında, şimdi bloğa nasıl işlem ekleneceğini öğrenelim. Kod aşağıdaki gibidir.

def new_transaction (self): #Bu işlev, mevcut işlemlere yeni bir işlem ekler """Bu, bir sonraki bloğa gönderilecek yeni bir işlem yaratacaktır. Gönderen, alıcı ve tutar dahil olmak üzere üç değişken içerecektir """ self.current_transactions.append ({‘gönderen’: gönderen, ‘alıcı’: alıcı ‘miktar’: miktar,}) dönüş self.last_block [‘dizin’] + 1 Gördüğünüz gibi, geçerli_transaction listesine bir üç değişken içeren nesne → gönderen, alıcı, tutar.

Ekleme yapıldıktan sonra, yöntem blok indeksini zincire gönderir. Maden çıkarılacak bir sonraki blok.

Yeni Bloklar Oluşturmak

Yeni bloklar oluşturmaya başlamadan önce, genesis bloğunu oluşturmamız gerekiyor. Bunu yapmak için, aşağıdaki gibi basit bir kod satırı kullanmamız gerekiyor.

self.new_block (previous_hash = 1, ispat = 100)

Bu satır, Blockchain sınıfınıza eklenmelidir.

New_block () yöntemi için, parametreleri olarak iki değişken göndermeniz gerekir. Kanıt ve previous_hash içerir.

Şimdi aşağıdaki new_block () yöntemine bir göz atalım.

def new_block (self, proof, previous_hash = None): # Bu işlev yeni bloklar oluşturur ve ardından mevcut zincire ekler """Bu yöntem iki parametre kanıtı, önceki hash içerecektir""" block = {‘index’: len (self.chain) + 1, ‘timestamp’: time (), ‘prova’: prova, previous_hash: previous_hash veya self.hash (self.chain [-1]),}

# Mevcut işlem listesini boş olarak ayarlayın.

   self.current_transactions = [] self.chain.append (blok) dönüş bloğu

New_block kodunu açıklayalım. Üç önemli parametreyi içeren bir blok listesi oluşturuyoruz. Tanımlandıktan sonra, geçerli_işlem listesini sıfırlamak için kodu da yazarız ve ardından bloğu zincire ekleriz. New_block yöntemi çağrıldığında, bloğu döndürür.

Şimdi Okuyun: Başlangıç ​​Kılavuzu: Ethereum Classic Nedir?

Aşağıda last_block yöntemini de tanımlayalım.

@Emlak

def last_block (self):

# Zincirin son bloğunu çağırır ve döndürür

self.chain’e dönüş [-1]

Ayrıca, hash () yönteminin kodu aşağıdaki gibidir:

def hash (block): # Bir bloğa hashing uygulamak için kullanılır """Aşağıdaki kod bir SHA-256 blok karması oluşturacak ve ayrıca sözlüğün sıralanmasını sağlayacaktır.""" block_string = json.dumps (block, sort_keys = True) .encode () return hashlib.sha256 (block_string) .hexdigest () Şimdiye kadar tüm kodu birleştirirseniz, aşağıdaki blockchain.py’ye sahip olacağız. Aşağıda kontrol edin.

class Blockchain (nesne): def __init __ (self): self.chain = [] self.current_transactions = [] self.new_block (previous_hash = 1, proof = 100) def new_block (self, proof, previous_hash = None): #Bu fonksiyon yeni bloklar oluşturur ve ardından mevcut zincire ekler """Bu yöntem iki parametre kanıtı, önceki hash içerecektir""" block = {‘index’: len (self.chain) + 1, ‘timestamp’: time (), ‘proof’: proof, previous_hash: previous_hash veya self.hash (self.chain [-1]),} # Set mevcut işlem listesi boşaltılacak. self.current_transactions = [] self.chain.append (blok) dönüş bloğu def new_transaction (self): # Bu işlev, zaten var olan işlemlere yeni bir işlem ekler """Bu, bir sonraki bloğa gönderilecek yeni bir işlem yaratacaktır. Gönderen, alıcı ve tutar dahil olmak üzere üç değişken içerecektir """ self.current_transactions.append ({‘gönderen’: gönderen, ‘alıcı’: alıcı, ‘miktar’: miktar,}) self.last_block [‘dizin’] + 1 @staticmethod def hash (blok): # Karma için kullanılır bir blok """Aşağıdaki kod bir SHA-256 blok karması oluşturacak ve ayrıca sözlüğün sıralanmasını sağlayacaktır.""" block_string = json.dumps (block, sort_keys = True) .encode () return hashlib.sha256 (block_string) .hexdigest () @property def last_block (self): # Zincirin son bloğunu çağırır ve döndürür self.chain [ -1]

Çalışma Kanıtı Uygulaması

Blockchain.py’yi oluşturmadaki bir sonraki adımımız, Proof-of-Work uygulamasıdır.

Peki Proof of Work nedir? Zincire yeni bloklar eklemek için kullanılan bir fikir birliği yöntemidir. Madenciye zorluk çıkarır ve madenci sorunu çözdükten sonra blok doğrulanır. Madenci, karşılığında, sorunun karmaşıklığına bağlı olarak bir ödül alır..

Bitcoin’in Proof of Work’ü Hashcash olarak bilinir. Bitcoin ağ konsensüsünün amaçlandığı gibi çalışmasını sağlar.

Ayrıca Okuyun: Mutabakat Algoritmaları: Blockchain Teknolojisinin Kökü

Proof_of_work () yöntemini tanımlayalım. Yöntem, Blockchain sınıfının bir parçası olacak.

def proof_of_work (self, last_proof): """Bu yöntem, fikir birliği algoritmasının uygulandığı yerdir. Self ve last_proof dahil olmak üzere iki parametre alır""" Proof = 0 while self.valid_proof (last_proof, proof) False ise: ispat + = 1 dönüş kanıtı @staticmethod def valid_proof (last_proof, ispat): """Bu yöntem bloğu doğrular""" tahmin = f ‘{last_proof} {kanıt}’. encode () tahmin_hash = hashlib.sha256 (tahmin) .hexigest () tahmin_hash döndür [: 4] == "0000"

İlk çalışma kanıtı yöntemi basittir; sadece ispatı 0 olarak ayarlar ve sonra valid_proof yöntemini çalıştırmak için bir while döngüsü çalıştırır. Yanlışsa, kanıta bir tane ekleyin.

Daha fazla sıfır ekleyerek hash’in zorluğunu artırabilirsiniz..

Bu bizi Blockchain.py’nin sonuna götürür. Kodumuz aşağıdaki gibidir.

class Blockchain (nesne): def __init __ (self): self.chain = [] self.current_transactions = [] self.new_block (previous_hash = 1, proof = 100) def proof_of_work (self, last_proof): """Bu yöntem, fikir birliği algoritmasının uygulandığı yerdir. Self ve last_proof dahil olmak üzere iki parametre alır""" Proof = 0 while self.valid_proof (last_proof, proof) False ise: ispat + = 1 dönüş kanıtı @staticmethod def valid_proof (last_proof, ispat): """Bu yöntem bloğu doğrular""" tahmin = f ‘{last_proof} {kanıt}’. encode () tahmin_hash = hashlib.sha256 (tahmin) .hexigest () tahmin_hash döndür [: 4] == "0000" def new_block (self, proof, previous_hash = None): # Bu işlev yeni bloklar oluşturur ve ardından mevcut zincire ekler """Bu yöntem iki parametre kanıtı, önceki hash içerecektir""" block = {‘index’: len (self.chain) + 1, ‘timestamp’: time (), ‘proof’: proof, previous_hash: previous_hash veya self.hash (self.chain [-1]),} # Set mevcut işlem listesi boşaltılacak. self.current_transactions = [] self.chain.append (blok) dönüş bloğu def new_transaction (self): # Bu işlev, zaten var olan işlemlere yeni bir işlem ekler """Bu, bir sonraki bloğa gönderilecek yeni bir işlem yaratacaktır. Gönderen, alıcı ve tutar dahil olmak üzere üç değişken içerecektir """ self.current_transactions.append ({‘gönderen’: gönderen, ‘alıcı’: alıcı, ‘miktar’: miktar,})

return self.last_block [“dizin”] + 1

@hayalhanemersin

def hash (blok):

# Bir bloğa hashing uygulamak için kullanılır

“” “Aşağıdaki kod bir SHA-256 blok karması oluşturacak ve ayrıca sözlüğün sıralanmasını sağlayacaktır” “”

block_string = json.dumps (blok, sort_keys = True) .encode ()

hashlib.sha256 (block_string) .hexdigest () döndür

@Emlak

def last_block (self):

# Zincirin son bloğunu çağırır ve döndürür

self.chain’e dönüş [-1]

2. API Entegrasyonu

Harika, çalışan bir blok zinciri oluşturuyoruz! Şimdi, etkili bir şekilde kullanmak için bir API (Uygulama Programlama Arayüzü) oluşturmamız gerekiyor..

Bunu yapmak için popüler Python Framework’ü kullanacağız: Flask.

Flask bir mikro çerçevedir, yani hafiftir ve ihtiyacınız olan kitaplıkları ekleyebilirsiniz. Ayrıca Python işlevi uç noktasını kolayca oluşturmanıza da olanak tanır.

API’ler oluşturmak için öncelikle blok zincirimizin HTTP üzerinden istekleri kabul edebildiğinden emin olmalıyız. Bunu yapmak için daha fazla yöntem oluşturmalıyız.

Şimdi blockchain.py’yi değiştireceğiz..

# Uygulama düğümü uygulaması oluşturma = Flask (__ name__) node_identifier = str (uuid4 ()). Replace (‘-‘, ”) # Blockchain’i başlatma blok zinciri = Blockchain () @ app.route (‘/ mine’, yöntemler = [ ‘GET’]) def mine (): dönüş "Yeni bir Blok Madenciliği" @ app.route (‘/ hareketler / yeni’, yöntemler = [‘POST’]) def new_transaction (): dönüş "Yeni bir işlem eklemek" @ app.router (‘/ chain’, methods = [‘GET’]) def full_chain (): response = {‘chain’: blockchain.chain, ‘length’: len (blockchain.chain)} return jsonify (yanıt) , __Name__ == ‘__main__’ ise 200: app.run (host ="0.0.0.0", bağlantı noktası = 5000)

Kod, çoğunlukla kendi kendini açıklar niteliktedir. Önce bir düğüm başlatma yapıyoruz. Ardından rastgele bir düğüm oluşturuyoruz. Bittiğinde, Blockchain sınıfımızı başlatıyoruz. Bir kez bittiğinde, aşağıdaki gibi üç uç nokta oluşturmamız gerekir.

  • / benim uç nokta
  • / hareketler / yeni uç nokta
  • / zincir uç noktası

Son olarak sunucuyu 5000 port üzerinde çalıştırıyoruz.

Uygulama artık neredeyse oluşturuldu. Tek yapmamız gereken işlemler sınıfı yöntemini oluşturmaktır..

@ app.route (‘/ hareketler / yeni’, yöntemler = [‘POST’]) def new_transaction (): değerler = request.get_json () # Gerekli verilerin orada olup olmadığını veya gerekli olmadığını kontrol ediyor = [‘gönderen’, ‘ hepsi değilse alıcı ‘,’ miktar ‘] (gerekli k için değerlerde k):’ Eksik değerler ‘döndür, 400 # yeni bir işlem oluşturma indeksi = blockchain.new_transaction (değerler [‘ gönderen ‘], değerler [‘ alıcı ‘ , değerler [‘miktar’]]) yanıt = {‘mesaj’: f’Transaction Blok No.’ya eklenmek üzere planlandı {dizin} ‘} dönüş jsonify (yanıt), 201

Ayrıca Okuyun: İşte Blockchain Proof of Work Hakkında Bilmeniz Gerekenler

Madencilik Bitiş Noktası

Oluşturacağımız son uç nokta, madencilik uç noktasıdır. Bunu yapmak için, aşağıdaki üç şeyi yaptığından emin olmalıyız.

  • İş Kanıtı hesaplaması
  • Yeni blok zinciri oluşturun ve ardından zincire ekleyin
  • Madenciyi işi için ödüllendirin

@ app.route (‘/ mine’, yöntemler = [‘GET’]) def mine (): """Burada iş kanıtı algoritmasının çalışmasını sağlıyoruz""" last_block = blockchain.last_block last_proof = last_block [‘kanıt’] kanıt = blockchain.proof_of_work (last_proof) # madenciyi katkısı için ödüllendiriyor. 0, yeni madeni paranın çıkarıldığını belirtir blockchain.new_transaction (gönderen ="0", alıcı = node_identifier, miktar = 1,) # şimdi yeni bloğu oluşturun ve bunu zincire ekleyin previous_hash = blockchain.hash (last_block) block = blockchain.new_block (kanıt, previous_hash) yanıt = {‘mesaj’: ‘Yeni blok sahte ‘,’ dizin ‘: blok [‘ dizin ‘],’ işlemler ‘: blok [‘ işlemler ‘],’ kanıt ‘: blok [‘ kanıt ‘],’ previous_hash ‘: blok [‘ previous_hash ‘]} dönüş jsonify (yanıt), 200

Şimdi Okuyun: Başlangıç ​​Kılavuzu: AION nedir? Dünyanın Birinci Üçüncü Nesil Blockchain Ağı

3. Blockchain Etkileşimi

Son adım, blok zinciri ile etkileşim kurmaktır. Postman’ı yeni oluşturduğumuz API’yi kullanarak blockchain ağıyla etkileşim kurmak için kullanacağız..

Python Konsolunda aşağıdaki kodu çalıştırın

python blockchain.py

Sonuç

Bu bizi bir blok zinciri nasıl inşa edeceğimizin sonuna götürür. Yukarıdaki adımların ve kodların Python’da bir Blockchain oluşturmanıza yardımcı olacağını umuyoruz. Bu nedenle, acemiyseniz ve Blockchain’de kariyer yapmak istiyorsanız, blockchain kariyerinize Ücretsiz Blockchain Temelleri Kursumuzla başlamanızı öneririz. Bizi çalışma ortağınız olarak seçin, hayalinizdeki işi bulana kadar yanınızdayız.

Peki, blockchain ve uygulaması hakkında ne düşünüyorsunuz? Aşağıya yorum yapın ve bize bildirin.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me
Like this post? Please share to your friends:
Adblock
detector
map