什么是区块链?
区块链是一种分布式记账技术,它使用加密技术将数据存储在一系列分布式的节点中,从而使数据安全可靠,可以被任何人访问和验证。它是由一系列由用户交易组成的“区块”组成的,每个区块都包含一组交易数据,每个区块之间都有一个“链接”,这个链接是由一个指向前一个区块的散列值组成的。
Python实现简单的区块链结构
在Python中实现区块链结构非常简单,需要定义一个区块类,该类将包含所有必要的属性,如区块中的数据,区块的索引,区块的时间戳,以及指向前一个区块的散列值。
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.calc_hash()
def calc_hash(self):
sha = hashlib.sha256()
sha.update(str(self.index).encode('utf-8') +
str(self.timestamp).encode('utf-8') +
str(self.data).encode('utf-8') +
str(self.previous_hash).encode('utf-8'))
return sha.hexdigest()
我们需要定义一个区块链类,该类将包含一些方法,用于添加新的区块,获取区块链中的所有区块,以及检查区块链是否有效。
class Blockchain:
def __init__(self):
self.chain = []
self.create_genesis_block()
def create_genesis_block(self):
genesis_block = Block(0, time.time(), "Genesis Block", "0")
self.chain.append(genesis_block)
def get_last_block(self):
return self.chain[-1]
def add_block(self, new_block):
new_block.previous_hash = self.get_last_block().hash
new_block.hash = new_block.calc_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.calc_hash():
return False
if current_block.previous_hash != previous_block.hash:
return False
return True
我们可以使用以下代码来创建新的区块链,添加新的区块,以及检查区块链的有效性:
# 创建新的区块链
blockchain = Blockchain()
# 添加新的区块
blockchain.add_block(Block(1, time.time(), {amount: 4}, blockchain.get_last_block().hash))
blockchain.add_block(Block(2, time.time(), {amount: 8}, blockchain.get_last_block().hash))
# 检查区块链的有效性
print("Is blockchain valid? %s" % blockchain.is_chain_valid())
通过使用Python实现简单的区块链结构,可以轻松地创建一个分布式记账系统,使用户能够安全可靠地存储数据。