Blockchain ialah diedarkanpangkalan data digunakan untuk merekod urus niaga dengan cara yang selamat, telus dan kalis gangguan. Ia terdiri daripada struktur seperti rantai di mana setiap blok mengandungi sejumlah maklumat transaksi, cincangan blok sebelumnya dan metadata lain. Teknologi teras rantaian blok diedarkan lejar dan mekanisme konsensus, yang pada asasnya merupakan pangkalan data terpencar.
Pertama, kami mencipta pythonprojek baharu dan memasang perpustakaan yang diperlukan.
Python import hashlib import JSON from datetime import datetime
Kemudian, kami mencipta kelas blockchain baharu.
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
Kini, kami boleh menjalankan blockchain kami.
python blockchain = Blockchain() blockchain.add_block("Hello, world!") blockchain.add_block("This is a test.") print(blockchain.chain)
Hasil keluaran adalah seperti berikut:
[ { "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", } ]
Melalui artikel ini, anda telah memahami konsep asas blockchain dan mempelajari cara menggunakan Python untuk melaksanakan blockchain mudah. Anda boleh menggunakan ini sebagai asas untuk meneroka lebih lanjut aplikasi blockchain dan pembangunan.
Atas ialah kandungan terperinci Bina projek blockchain Python pertama anda dari awal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!