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查看zip包中文件及大小的方法
Jul 09 Python
Python解析树及树的遍历
Feb 03 Python
python中requests小技巧
May 10 Python
python实现发送邮件及附件功能
Mar 02 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
Feb 26 Python
python3库numpy数组属性的查看方法
Apr 17 Python
使用python读取.text文件特定行的数据方法
Jan 28 Python
pytorch自定义初始化权重的方法
Aug 17 Python
Python生态圈图像格式转换问题(推荐)
Dec 02 Python
3分钟看懂Python后端必须知道的Django的信号机制
Jul 26 Python
Python与C/C++的相互调用案例
Mar 04 Python
python中的random模块和相关函数详解
Apr 22 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
用cookies来跟踪识别用户
2006/10/09 PHP
Windows下利用Gvim写PHP产生中文乱码问题解决方法
2011/04/20 PHP
php Session存储到Redis的方法
2013/11/04 PHP
php实现aes加密类分享
2014/02/16 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
2016/05/27 PHP
用JavaScript和注册表脚本实现右键收藏Web页选中文本
2007/01/28 Javascript
xheditor与validate插件冲突的解决方案
2010/04/15 Javascript
五个jQuery图片画廊插件 推荐
2011/05/12 Javascript
jqPlot 图表中文API使用文档及源码和在线示例
2012/02/07 Javascript
Javascript的各种节点操作实例演示代码
2012/06/27 Javascript
jquery 使用简明教程
2014/03/05 Javascript
javascript解三阶幻方(九宫格)
2015/04/22 Javascript
Nodejs的express使用教程
2015/11/23 NodeJs
js实现的简单图片浮动效果完整实例
2016/05/10 Javascript
使用node.js中的Buffer类处理二进制数据的方法
2016/11/26 Javascript
微信小程序 数据交互与渲染实例详解
2017/01/21 Javascript
浅谈基于Vue.js的移动组件库cube-ui
2017/12/20 Javascript
vue+express 构建后台管理系统的示例代码
2018/07/19 Javascript
js/jQuery实现全选效果
2019/06/17 jQuery
用Python的Django框架完成视频处理任务的教程
2015/04/02 Python
python定时检查某个进程是否已经关闭的方法
2015/05/20 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
2017/05/11 Python
python MysqlDb模块安装及其使用详解
2018/02/23 Python
Python面向对象程序设计多继承和多态用法示例
2019/04/08 Python
python读写csv文件的方法
2019/08/13 Python
python编写计算器功能
2019/10/25 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
2020/05/12 Python
使用css3背景渐变中的透明度来设置不同颜色的背景渐变
2014/03/31 HTML / CSS
Myprotein比利时官方网站:欧洲第一运动营养品牌
2020/10/04 全球购物
12月红领巾广播稿
2014/02/13 职场文书
yy婚礼主持词
2014/03/14 职场文书
优秀的2014年两会精神解读
2014/03/17 职场文书
法人授权委托书样本
2014/09/19 职场文书
基层工作经验证明样本
2014/11/16 职场文书
推广普通话的宣传语
2015/07/13 职场文书
学校教师培训工作总结
2015/10/14 职场文书