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网络编程学习笔记(一)
Jun 09 Python
更改Python命令行交互提示符的方法
Jan 14 Python
使用Python写CUDA程序的方法
Mar 27 Python
python 创建弹出式菜单的实现代码
Jul 11 Python
Python中import机制详解
Nov 14 Python
python3 对list中每个元素进行处理的方法
Jun 29 Python
python调用摄像头显示图像的实例
Aug 03 Python
解决win64 Python下安装PIL出错问题(图解)
Sep 03 Python
浅谈python函数调用返回两个或多个变量的方法
Jan 23 Python
Python 实现取多维数组第n维的前几位
Nov 26 Python
python 检查数据中是否有缺失值,删除缺失值的方式
Dec 02 Python
pandas apply多线程实现代码
Aug 17 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
mysql中存储过程、函数的一些问题
2007/02/14 PHP
PHP判断是否有Get参数的方法
2014/05/05 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
2014/06/23 PHP
php实现html标签闭合检测与修复方法
2015/07/09 PHP
Zend Framework实现具有基本功能的留言本(附demo源码下载)
2016/03/22 PHP
php使用str_shuffle()函数生成随机字符串的方法分析
2017/02/17 PHP
PHP实现 APP端微信支付功能
2018/06/22 PHP
发一个自己用JS写的实用看图工具实现代码
2008/07/26 Javascript
javascript调试过程中找不到哪里出错的可能原因
2013/12/16 Javascript
2014年最火的Node.JS后端框架推荐
2014/10/27 Javascript
javascript实现图片轮播效果
2016/01/20 Javascript
jQuery实现的导航下拉菜单效果示例
2016/09/05 Javascript
微信小程序 简单教程实例详解
2017/01/13 Javascript
解析Vue2.0双向绑定实现原理
2017/02/23 Javascript
jQuery实现文章图片弹出放大效果
2017/04/06 jQuery
关于foreach循环中遇到的问题小结
2017/05/08 Javascript
Angular中自定义Debounce Click指令防止重复点击
2017/07/26 Javascript
Angularjs 事件指令详细整理
2017/07/27 Javascript
详解vantUI框架在vue项目中的应用踩坑
2018/12/06 Javascript
easyUI 实现的后台分页与前台显示功能示例
2020/06/01 Javascript
Antd的Table组件嵌套Table以及选择框联动操作
2020/10/24 Javascript
Python3用tkinter和PIL实现看图工具
2018/06/21 Python
浅述python2与python3的简单区别
2018/09/19 Python
Python中利用LSTM模型进行时间序列预测分析的实现
2019/07/26 Python
Python 音频生成器的实现示例
2019/12/24 Python
Python文本文件的合并操作方法代码实例
2020/03/31 Python
快速了解Python开发环境Spyder
2020/06/29 Python
CSS3的 fit-content实现水平居中
2017/09/07 HTML / CSS
Myprotein意大利官网:欧洲第一运动营养品牌
2018/11/22 全球购物
Nebula美国官网:便携式投影仪
2019/03/15 全球购物
应届生的求职推荐信范文
2013/11/30 职场文书
大学同学十年聚会感言
2014/02/21 职场文书
一年之计:2019年下半年的计划
2019/05/07 职场文书
某某店铺的开业庆典主持词范本
2019/11/25 职场文书
python图片灰度化处理的几种方法
2021/06/23 Python
90后经典动画片排行:《数码宝贝》第二,《小鲤鱼历险记》在榜
2022/03/18 日漫