Blockchain taraflar arasında aracılara ihtiyaç duymadan güvenli ve şeffaf işlemler yapılmasını sağlayan bir dijital defter teknolojisidir. Python, web geliştirme, veri analizi ve makine öğrenimi gibi çeşitli uygulamalar için kullanılan popüler bir programlama dilidir. Bu yanıtta, Python kullanarak temel bir blok zincirinin nasıl oluşturulacağını ele alacağız.
Bir blok zinciri oluşturmak için aşağıdaki bileşenleri tanımlamamız gerekecek:
- Engellemek: Bir blok, bir dizi işlem, bir zaman damgası ve bir önceki bloğun karmasını içerir.
- Blockchain: Bir blok zinciri, karmaları aracılığıyla birbirine bağlanan bir blok zinciridir.
- madencilik: Madencilik, yeni bloklar oluşturma ve bunları blok zincirine ekleme işlemidir.
İşte basit bir uygulama Python kullanarak blok zinciri:
import hashlib
import json
from time import timeclass Blockchain:
def __init__(self):
self.chain = ()
self.current_transactions = ()
self.create_block(proof=1, previous_hash='0')
def create_block(self, proof, previous_hash):
block = {
'index': len(self.chain) + 1,
'timestamp': time(),
'transactions': self.current_transactions,
'proof': proof,
'previous_hash': previous_hash or self.hash(self.chain(-1))
}
self.current_transactions = ()
self.chain.append(block)
return block
def add_transaction(self, sender, recipient, amount):
self.current_transactions.append({
'sender': sender,
'recipient': recipient,
'amount': amount
})
@staticmethod
def hash(block):
block_str = json.dumps(block, sort_keys=True).encode()
return hashlib.sha256(block_str).hexdigest()
def proof_of_work(self, last_proof):
proof = 0
while self.valid_proof(last_proof, proof) is False:
proof += 1
return proof
@staticmethod
def valid_proof(last_proof, proof):
guess = f'{last_proof}{proof}'.encode()
guess_hash = hashlib.sha256(guess).hexdigest()
return guess_hash(:4) == "0000"
Bu uygulamayı parçalayalım.
bu Blockchain
sınıf, uygulamanın çekirdeğidir. Blok zincirini boş bir zincir ve boş bir işlem listesiyle başlatan bir yapıcı yöntemi vardır. bu create_block
method yeni bir blok oluşturur ve onu zincire ekler. İki argüman alır: proof
işin ve previous_hash
. bu add_transaction
yöntemi, geçerli işlem listesine yeni bir işlem ekler.
bu hash
yöntem bir bloğu bağımsız değişken olarak alır ve onun SHA-256 hash değerini döndürür. bu proof_of_work
yöntemi, geçerli bir kanıt bulunana kadar bir sayacı artırarak yeni bir çalışma kanıtı oluşturur. bu valid_proof
yöntem, önceki kanıt ile mevcut kanıtı özetleyerek ve elde edilen sağlamanın ilk dört karakterinin sıfır olup olmadığını kontrol ederek kanıtın geçerli olup olmadığını kontrol eder.
Bu uygulamayı test etmek için, yeni bir örnek oluşturabiliriz. Blockchain
class ve bazı işlemler ekleyin:
bc = Blockchain()
bc.add_transaction('Alice', 'Bob', 1)
bc.add_transaction('Bob', 'Charlie', 2)
bc.add_transaction('Charlie', 'Alice', 3)
Daha sonra yeni bir blok çıkarabilir ve onu zincire ekleyebiliriz:
last_block = bc.chain(-1)
last_proof = last_block('proof')
proof = bc.proof_of_work(last_proof)
previous_hash = bc.hash(last_block)
block = bc.create_block(proof, previous_hash)
Bu, daha önce eklediğimiz işlemlerle yeni bir blok oluşturur ve zincire ekler.
Bu, Python ile bir Blockchain’in yalnızca temel bir uygulamasıdır.
💬 Görüşlerinizi, yorumlarınızı veya gelecekteki makaleler için isteklerinizi belirterek bu makaleye bir yanıt bırakın.
📲 Makaleleri sosyal medyada arkadaşlarınız ve iş arkadaşlarınızla paylaşın.
➕ Medium’da beni takip edin ve diğer makalelere göz atın.
Takip ve alkış için teşekkürler 😋
İletişime Geçelim! Beni takip et:
>GitHub: @gajanan0707
>Linkedin’de: Gajanan Rajput