python简单区块链模拟详解


Posted in Python onJuly 03, 2019

最近学习了一点python,那就试着做一做简单的编程练习。

首先是这个编程的指导图,如下:

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 相关文章推荐
Python中的__new__与__init__魔术方法理解笔记
Nov 08 Python
python操作excel的方法
Aug 16 Python
用Q-learning算法实现自动走迷宫机器人的方法示例
Jun 03 Python
Python空间数据处理之GDAL读写遥感图像
Aug 01 Python
关于PyTorch 自动求导机制详解
Aug 18 Python
python判断两个序列的成员是否一样的实例代码
Mar 01 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
Jun 05 Python
MATLAB数学建模之画图汇总
Jul 16 Python
Python importlib模块重载使用方法详解
Oct 13 Python
深度学习tensorflow基础mnist
Apr 14 Python
实例详解Python的进程,线程和协程
Mar 13 Python
Python 一键获取电脑浏览器的账号密码
May 11 Python
python使用递归的方式建立二叉树
Jul 03 #Python
python挖矿算力测试程序详解
Jul 03 #Python
如何用Python做一个微信机器人自动拉群
Jul 03 #Python
Python中的正则表达式与JSON数据交换格式
Jul 03 #Python
python实现共轭梯度法
Jul 03 #Python
python实现微信自动回复及批量添加好友功能
Jul 03 #Python
Python 中Django安装和使用教程详解
Jul 03 #Python
You might like
PHP之数组学习
2011/05/29 PHP
php中filter_input函数用法分析
2014/11/15 PHP
以实例全面讲解PHP中多进程编程的相关函数的使用
2015/08/18 PHP
Zend Framework动作助手Json用法实例分析
2016/03/05 PHP
php curl 模拟登录并获取数据实例详解
2016/12/22 PHP
PHP实现的简单对称加密与解密方法实例小结
2017/08/28 PHP
golang实现php里的serialize()和unserialize()序列和反序列方法详解
2018/10/30 PHP
javascript 读取XML数据,在页面中展现、编辑、保存的实现
2009/10/27 Javascript
jquery post方式传递多个参数值后台以数组的方式进行接收
2013/01/11 Javascript
juery框架写的弹窗效果适合新手
2013/11/27 Javascript
js交换排序 冒泡排序算法(Javascript版)
2014/10/04 Javascript
jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法
2015/03/25 Javascript
莱鸟介绍window.print()方法
2016/01/06 Javascript
NodeJS使用Range请求实现下载功能的方法示例
2018/10/12 NodeJs
微信小程序自定义单项选择器样式
2019/07/25 Javascript
jquery.pager.js分页实现详解
2019/07/29 jQuery
vue中watch和computed为什么能监听到数据的改变以及不同之处
2019/12/27 Javascript
vue-cli单页面预渲染seo-prerender-spa-plugin操作
2020/08/10 Javascript
Python脚本实现格式化css文件
2015/04/08 Python
Python对列表排序的方法实例分析
2015/05/16 Python
python针对excel的操作技巧
2018/03/13 Python
python迭代dict的key和value的方法
2018/07/06 Python
python制作抖音代码舞
2019/04/07 Python
cProfile Python性能分析工具使用详解
2019/07/22 Python
手把手教你安装Windows版本的Tensorflow
2020/03/26 Python
快速了解Python开发环境Spyder
2020/06/29 Python
amazeui 验证按钮扩展的实现
2020/08/21 HTML / CSS
英国比较机场停车场网站:Airport Parking Essentials
2019/12/01 全球购物
Linux中如何用命令创建目录
2015/01/12 面试题
高中生校园生活自我评价
2013/09/19 职场文书
财务总监岗位职责
2014/03/07 职场文书
销售岗位职责范本
2014/06/12 职场文书
高三霸气励志标语
2014/06/24 职场文书
太行山上观后感
2015/06/05 职场文书
MySQL系列之十 MySQL事务隔离实现并发控制
2021/07/02 MySQL
python开发的自动化运维工具ansible详解
2021/08/07 Python