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中使用zlib模块进行数据压缩的教程
Jun 26 Python
Windows下安装python2和python3多版本教程
Mar 30 Python
Python使用正则表达式实现文本替换的方法
Apr 18 Python
python实现录音小程序
Oct 26 Python
python 重命名轴索引的方法
Nov 10 Python
PyCharm配置mongo插件的方法
Nov 30 Python
对Python3.x版本print函数左右对齐详解
Dec 22 Python
Python之数据序列化(json、pickle、shelve)详解
Aug 30 Python
使用python-opencv读取视频,计算视频总帧数及FPS的实现
Dec 10 Python
python基于celery实现异步任务周期任务定时任务
Dec 30 Python
如何通过python实现IOU计算代码实例
Nov 02 Python
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
Nov 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编写PDF文档生成器
2006/10/09 PHP
ThinkPHP实现跨模块调用操作方法概述
2014/06/20 PHP
php实现的简单多进程服务器类完整示例
2020/02/01 PHP
获取DOM对象的几种扩展及简写
2006/10/09 Javascript
JavaScript对象之间的转换 jQuery对象和原声DOM
2011/03/07 Javascript
Node.js中的缓冲与流模块详细介绍
2015/02/11 Javascript
jquery移动端TAB触屏切换实现效果
2020/12/22 Javascript
java必学必会之static关键字
2015/12/03 Javascript
基于JavaScript实现动态添加删除表格的行
2016/02/01 Javascript
JavaScript 中 avalon绑定属性总结
2016/10/19 Javascript
js以分隔符分隔数组中的元素并转换为字符串的方法
2016/11/16 Javascript
slideToggle+slideup实现手机端折叠菜单效果
2017/05/25 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
2017/06/13 Javascript
详解微信小程序 登录获取unionid
2017/06/27 Javascript
通过fastclick源码分析彻底解决tap“点透”
2017/12/24 Javascript
JS弹窗 JS弹出DIV并使整个页面背景变暗功能的实现代码
2018/04/21 Javascript
JavaScript中发出HTTP请求最常用的方法
2018/07/12 Javascript
中级前端工程师必须要掌握的27个JavaScript 技巧(干货总结)
2019/09/23 Javascript
[41:52]2018DOTA2亚洲邀请赛3月29日 小组赛A组 TNC VS OpTic
2018/03/30 DOTA
[40:06]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第一场
2018/04/04 DOTA
[01:10:24]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第一场 2月28日
2021/03/11 DOTA
详解C++编程中一元运算符的重载
2016/01/19 Python
详解python3中tkinter知识点
2018/06/21 Python
Python Pandas批量读取csv文件到dataframe的方法
2018/10/08 Python
Python之qq自动发消息的示例代码
2021/02/18 Python
通信专业个人自我鉴定
2013/10/21 职场文书
小学生演讲稿
2014/01/12 职场文书
路政管理求职信
2014/06/18 职场文书
师德师风的心得体会
2014/09/02 职场文书
奥巴马当选演讲稿
2014/09/10 职场文书
计划生育证明书写要求
2014/09/17 职场文书
运动会广播稿50字
2015/08/19 职场文书
python的变量和简单数字类型详解
2021/09/15 Python
Spring中的使用@Async异步调用方法
2021/11/01 Java/Android
pytorch中的 .view()函数的用法介绍
2022/03/17 Python
JAVA springCloud项目搭建流程
2022/05/11 Java/Android