Maison > Article > développement back-end > Construisez votre premier projet blockchain Python à partir de zéro
Blockchain est une distribuéebase de données utilisée pour enregistrer les transactions de manière sécurisée, transparente et inviolable. Il s'agit d'une structure en forme de chaîne dans laquelle chaque bloc contient une certaine quantité d'informations sur la transaction, le hachage du bloc précédent et d'autres métadonnées. La technologie de base de la blockchain est le registre distribué et le mécanisme de consensus, qui est essentiellement une base de données décentralisée.
Tout d'abord, nous créons un nouveau pythonprojet et installons les bibliothèques nécessaires.
Python import hashlib import JSON from datetime import datetime
Ensuite, nous créons une nouvelle classe blockchain.
python class Blockchain: def __init__(self): self.chain = [] self.create_genesis_block() def create_genesis_block(self): """ 创建创世区块 """ genesis_block = { "index": 0, "timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S"), "data": "Genesis block", "previous_hash": "0", } self.chain.append(genesis_block) def add_block(self, data): """ 添加新区块到区块链中 """ new_block = { "index": len(self.chain), "timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S"), "data": data, "previous_hash": self.chain[-1]["hash"], } self.chain.append(new_block) def get_block_hash(self, block): """ 获取区块的哈希值 """ block_string = json.dumps(block, sort_keys=True).encode() return hashlib.sha256(block_string).hexdigest() def is_chain_valid(self): """ 检查区块链是否有效 """ for i in range(1, len(self.chain)): current_block = self.chain[i] previous_block = self.chain[i - 1] if current_block["previous_hash"] != self.get_block_hash(previous_block): return False if self.get_block_hash(current_block) != current_block["hash"]: return False return True
Maintenant, nous pouvons exécuter notre blockchain.
python blockchain = Blockchain() blockchain.add_block("Hello, world!") blockchain.add_block("This is a test.") print(blockchain.chain)
Les résultats de sortie sont les suivants :
[ { "index": 0, "timestamp": "2023-03-08 15:46:17", "data": "Genesis block", "previous_hash": "0", }, { "index": 1, "timestamp": "2023-03-08 15:46:18", "data": "Hello, world!", "previous_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", }, { "index": 2, "timestamp": "2023-03-08 15:46:19", "data": "This is a test.", "previous_hash": "0a753b9f3c2650581980d3D1d1b47f56d63e6c27b813b7ec4461863b4c724a2f", } ]
Grâce à cet article, vous avez compris les concepts de base de la blockchain et appris à utiliser Python pour implémenter une blockchain simple. Vous pouvez l'utiliser comme base pour explorer davantage les applications blockchain et le développement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!