区块链python代码
时间: 2023-07-02 20:04:50 浏览: 103
区块链是一种分布式账本技术,用于记录和跟踪交易。以下是一个简单的Python实现:
```
import hashlib
import json
from time import time
class Block:
def __init__(self, index, timestamp, data, previous_hash):
self.index = index
self.timestamp = timestamp
self.data = data
self.previous_hash = previous_hash
self.hash = self.calculate_hash()
def calculate_hash(self):
block_string = json.dumps(self.__dict__, sort_keys=True)
return hashlib.sha256(block_string.encode()).hexdigest()
class Blockchain:
def __init__(self):
self.chain = [self.create_genesis_block()]
def create_genesis_block(self):
return Block(0, time(), "Genesis Block", "0")
def add_block(self, data):
previous_block = self.chain[-1]
index = previous_block.index + 1
timestamp = time()
previous_hash = previous_block.hash
new_block = Block(index, timestamp, data, previous_hash)
self.chain.append(new_block)
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.hash != current_block.calculate_hash():
return False
if current_block.previous_hash != previous_block.hash:
return False
return True
blockchain = Blockchain()
blockchain.add_block("Transaction 1")
blockchain.add_block("Transaction 2")
print("Blockchain is valid:", blockchain.is_chain_valid())
```
此代码实现了一个简单的区块链,其中:
- Block类表示一个块,其中包含索引、时间戳、数据、上一个块的哈希值和当前块的哈希值。
- Blockchain类表示整个区块链,包含一个链列表、创建创世块、添加块和验证整个链是否有效的方法。
- create_genesis_block()方法创建创世块。
- add_block(data)方法添加新块。
- is_chain_valid()方法验证整个链是否有效。
这只是一个简单的示例,实际上,区块链的实现要复杂得多。
阅读全文