Jednoduchý príklad blockchainu v Pythone
Čo je blockchain?
Blockchain je distribuovaná databáza alebo kniha, ktorá obsahuje záznamy o transakciách. Tieto záznamy sú usporiadané v blokoch, ktoré sú vzájomne prepojené do reťazca. Každý blok obsahuje zoznam transakcií a odkaz na predchádzajúci blok, čím sa zabezpečuje integrita a neodvolateľnosť údajov.
Ako funguje blockchain?
Transakcie: Každá transakcia, ktorá sa má pridať do blockchainu, musí byť najprv overená a schválená. V našom jednoduchom príklade budeme mať transakcie, ktoré obsahujú údaje o odosielateľovi, prijímateľovi a sume.
Bloky: Transakcie sú zhromažďované do blokov. Každý blok obsahuje zoznam transakcií a niekoľko metaúdajov, ako je časová pečiatka a odkaz na predchádzajúci blok.
Hashovanie: Každý blok je zakódovaný pomocou hashovacieho algoritmu, ktorý vytvára unikátny kód pre každý blok. Tento kód sa nazýva hash. Hash zabezpečuje, že akékoľvek zmeny v bloku sa okamžite prejavia v jeho hashe, čo umožňuje detekciu akýchkoľvek manipulácií.
Distribúcia: Kopie blockchainu sú distribuované medzi rôznymi uzlami v sieti. Každý uzol má svoju vlastnú kópiu blockchainu, čo zabezpečuje, že všetky verzie blockchainu sú rovnaké.
Konsenzus: Aby sa nový blok mohol pridať do blockchainu, musí byť schválený väčšinou uzlov v sieti. Tento proces sa nazýva konsenzus. Konsenzus zabezpečuje, že všetci účastníci siete sa zhodnú na platnosti nových blokov.
Jednoduchá implementácia blockchainu v Pythone
Tu je jednoduchý príklad implementácie blockchainu v Pythone:
pythonimport hashlib import json from time import time class Blockchain: def __init__(self): self.chain = [] self.current_transactions = [] self.new_block(previous_hash='1', proof=100) def new_block(self, proof, previous_hash=None): 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 new_transaction(self, sender, recipient, amount): self.current_transactions.append({ 'sender': sender, 'recipient': recipient, 'amount': amount, }) return self.last_block['index'] + 1 @staticmethod def hash(block): block_string = json.dumps(block, sort_keys=True).encode() return hashlib.sha256(block_string).hexdigest() @property def last_block(self): return self.chain[-1] 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" # Vytvorenie blockchainu a pridanie transakcií blockchain = Blockchain() blockchain.new_transaction(sender="Alice", recipient="Bob", amount=10) blockchain.new_block(proof=blockchain.proof_of_work(blockchain.last_block['proof'])) # Výpis blockchainu for block in blockchain.chain: print(json.dumps(block, indent=4))
Vysvetlenie kódu:
Blockchain
trieda: Tento kód definuje trieduBlockchain
, ktorá obsahuje metódy na pridanie nových blokov, transakcií a implementuje algoritmus proof-of-work.new_block
metóda: Táto metóda pridáva nový blok do blockchainu a resetuje zoznam aktuálnych transakcií.new_transaction
metóda: Táto metóda pridáva novú transakciu do zoznamu aktuálnych transakcií.hash
metóda: Táto statická metóda vytvára hash pre blok pomocou algoritmu SHA-256.proof_of_work
metóda: Táto metóda implementuje algoritmus proof-of-work, ktorý hľadá hodnotu proof, ktorá spĺňa podmienku začiatku hashu s preddefinovanými nulami.valid_proof
metóda: Táto statická metóda kontroluje, či hash začína s požadovaným počtom núl.
Záver
Tento jednoduchý príklad ukazuje, ako môžete implementovať základný blockchain v Pythone. Skutočné blockchainové systémy sú oveľa komplexnejšie a zahrňujú rôzne mechanizmy na zabezpečenie, decentralizáciu a konsenzus. Avšak, tento základný príklad poskytuje dobrý základ na pochopenie základných princípov blockchainu.
Populárne komentáre
Zatiaľ žiadne komentáre