#imports the Block class from block.py
from block import Block
class Blockchain:
def __init__(self):
self.chain = []
self.all_transactions = []
self.genesis_block()
def genesis_block(self):
transactions = {}
genesis_block = Block(transactions, "0")
self.chain.append(genesis_block)
return self.chain
# prints contents of blockchain
def print_blocks(self):
for i in range(len(self.chain)):
current_block = self.chain[i]
print("Block {} {}".format(i, current_block))
current_block.print_contents()
# add block to blockchain `chain`
def add_block(self, transactions):
previous_block_hash = self.chain[len(self.chain)-1].hash
new_block = Block(transactions, previous_block_hash)
# add proof of work
proof = self.proof_of_work(new_block, 2)
self.chain.append(new_block)
return proof, new_block
def validate_chain(self):
for i in range(1, len(self.chain)):
current = self.chain[i]
previous = self.chain[i-1]
if(current.hash != current.generate_hash()):
print("当前区块的哈希码与其生成的哈希码不一致。")
return False
if(current.previous_hash != previous.generate_hash()):
print("前一个区块生成的哈希码与后一个区块保存的上一区块哈希码不一致。")
return False
return True
def proof_of_work(self,block, difficulty=2):
proof = block.generate_hash()
while proof[:difficulty] != '0'*difficulty:
block.nonce += 1
proof = block.generate_hash()
block.nonce = 0
return proof
没有合适的资源?快使用搜索试试~ 我知道了~
Python实现简单的区块链
共6个文件
py:6个
需积分: 34 10 下载量 135 浏览量
2022-09-15
16:37:44
上传
评论 2
收藏 3KB ZIP 举报
温馨提示
基于区块链的原理,使用Python实现了简单的区块链。 代码的组成如下: test_sha256.py简单演示了加密算法,这是区块链的基础。 block.py实现了一个单独的区块对象。 基于区块链的原理,blockchain.py实现了区块链对象 交易数据记录在mempool.py当中,并利用proof_of_work.py演示工作量证明(PoW)算法的过程。 hack_the_blockchain.py演示区块链的安全性,比如区块内容受到恶意篡改会发生什么。
资源详情
资源评论
资源推荐
收起资源包目录
Blockchain in Python.zip (6个子文件)
Blockchain in Python
hack_the_blockchain.py 771B
mempool.py 893B
test_sha256.py 225B
blockchain.py 2KB
proof_of_work.py 750B
block.py 750B
共 6 条
- 1
JADQ
- 粉丝: 3
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0