區塊鏈是近年來備受矚目的技術,而Python 作為一門易學易用的編程語言,可用于開發簡單的區塊鏈。
下面我們來實現一個基于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): """ 創建一個新的塊,并將它添加到鏈上 :param proof:工作證明算法提供的證明值 :param previous_hash: (可選) 前一個塊的hash值 :return: 新的塊 """ 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): """ 創建新的交易,并添加到transaction列表中 :param sender: 發送方的地址 :param recipient: 接收方的地址 :param amount: 交易金額 :return: 返回當前塊的索引 """ self.current_transactions.append({ 'sender': sender, 'recipient': recipient, 'amount': amount, }) return self.last_block['index'] + 1 @staticmethod def hash(block): """ 對塊進行sha256加密,生成hash值 :param block: 塊 :return: 哈希值 """ # 必須保證字典排列一致性,否則會得到不同的hash值 block_string = json.dumps(block, sort_keys=True).encode() return hashlib.sha256(block_string).hexdigest() @property def last_block(self): # 獲取最后一個塊 return self.chain[-1]
以上代碼實現了一個簡單的區塊鏈的基本功能,包括新建一個區塊、創建新的交易、對塊進行 sha256 加密等操作。如需深度了解區塊鏈,可在此基礎上繼續擴展。
上一篇python 波浪線函數
下一篇vue全局密碼修改