Maison  >  Article  >  développement back-end  >  Construisez votre premier projet blockchain Python à partir de zéro

Construisez votre premier projet blockchain Python à partir de zéro

WBOY
WBOYavant
2024-02-24 21:10:02933parcourir

Construisez votre premier projet blockchain Python à partir de zéro

1. Aperçu de la blockchain

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.

2. Implémentation de la blockchain en Python

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

3. Exécutez la blockchain

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",
}
]

4.Conclusion

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer