Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bina projek blockchain Python pertama anda dari awal

Bina projek blockchain Python pertama anda dari awal

WBOY
WBOYke hadapan
2024-02-24 21:10:02907semak imbas

Bina projek blockchain Python pertama anda dari awal

1. Gambaran Keseluruhan Blockchain

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.

2. Pelaksanaan Blockchain dalam Python

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

3. Jalankan blockchain

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

4. Kesimpulan

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!

Kenyataan:
Artikel ini dikembalikan pada:lsjlt.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam