python简单区块链模拟详解
2019-07-03 14:56
1081 查看
最近学习了一点python,那就试着做一做简单的编程练习。
首先是这个编程的指导图,如下:
对的,类似一个简单区块链的模拟。
代码如下:
class DaDaBlockCoin: #index 索引,timestamp 时间戳,data 交易记录,self_hash交易hash,last_hash,上个hash def __init__(self,idex,timestamp,data,last_hash): self.idex = idex self.timestamp = timestamp self.data = data self.last_hash = last_hash self.self_hash=self.hash_DaDaBlockCoin() def hash_DaDaBlockCoin(self): sha = hashlib.md5()#加密算法,这里可以选择sha256,sha512,为了打印方便,所以选了md5 #对数据整体加密 datastr = str(self.idex)+str(self.timestamp)+str(self.data)+str(self.last_hash) sha.update(datastr.encode("utf-8")) return sha.hexdigest() def create_first_DaDaBlock(): # 创世区块 return DaDaBlockCoin(0, datetime.datetime.now(), "love dadacoin", "0") # last_block,上一个区块 def create_money_DadaBlock(last_block): # 其它块 this_idex = last_block.idex + 1 # 索引加1 this_timestamp = datetime.datetime.now() this_data = "love dada" + str(this_idex) # 模拟交易数据 this_hash = last_block.self_hash # 取得上一块的hash return DaDaBlockCoin(this_idex, this_timestamp, this_data, this_hash) DaDaBlockCoins = [create_first_DaDaBlock()] # 区块链列表,只有一个创世区块 nums = 10 head_block = DaDaBlockCoins[0] print(head_block.idex, head_block.timestamp, head_block.self_hash, head_block.last_hash) for i in range(nums): dadaBlock_add = create_money_DadaBlock(head_block) # 创建一个区块链的节点 DaDaBlockCoins.append(dadaBlock_add) head_block = dadaBlock_add print(dadaBlock_add.idex, dadaBlock_add.timestamp, dadaBlock_add.self_hash, dadaBlock_add.last_hash)
打印结果如下:
与开头的指导思路完美契合,虽然只是很简单的模拟。
以上就是本文的全部内容,希望对大家的学习有所帮助
您可能感兴趣的文章:
相关文章推荐
- python简单模拟登陆详解
- 对python多线程中互斥锁Threading.Lock的简单应用详解
- Python详解(一)Python的基本语法,简单数据类型,和while,for循环控制,ifesle控制
- python采用requests库模拟登录和抓取数据的简单示例
- 用python写的模拟系统登录三次验证简单程序
- python——模拟一个简单的登录接口程序
- python基础知识(一)变量与简单数据类型详解
- python模拟登录并且保持cookie的方法详解
- Python 简单装饰器白话文详解
- python创建简单区块链
- python模拟简单ftp
- 使用Go语言简单模拟Python的生成器
- Python实现简单的文本相似度分析操作详解
- python爬虫2之简单模拟浏览器
- Python爬虫学习(简单的模拟登陆(二))
- 区块链技术之数字签名的简单Python代码实现
- python http、模拟服务器返回相关页面(简单案例)
- 详解python之简单主机批量管理工具
- 详解python项目实战:模拟登陆CSDN
- python操作MySQL 模拟简单银行转账操作