Jednoduchý príklad blockchainu v Pythone

Blockchain je technológia, ktorá umožňuje bezpečné a transparentné spravovanie digitálnych informácií pomocou decentralizovanej databázy. V tomto článku sa pozrieme na jednoduchý príklad implementácie blockchainu v Pythone, ktorý nám pomôže pochopiť, ako blockchain funguje.

Č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?

  1. 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.

  2. 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.

  3. 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í.

  4. 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é.

  5. 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:

python
import 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 triedu Blockchain, 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
Komentáre

0