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 22 Python
对python的bytes类型数据split分割切片方法
Dec 04 Python
Python图像处理实现两幅图像合成一幅图像的方法【测试可用】
Jan 04 Python
Python完成哈夫曼树编码过程及原理详解
Jul 29 Python
Python+opencv+pyaudio实现带声音屏幕录制
Dec 23 Python
使用遗传算法求二元函数的最小值
Feb 11 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
Feb 17 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
Mar 28 Python
python由已知数组快速生成新数组的方法
Apr 08 Python
python实现二分查找算法
Sep 18 Python
最新pycharm安装教程
Nov 18 Python
python实现简单的聊天小程序
Jul 07 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中MD5函数使用实例代码
2008/06/07 PHP
国外PHP程序员的13个好习惯小结
2012/02/20 PHP
laravel withCount 统计关联数量的方法
2019/10/10 PHP
laravel请求参数校验方法
2019/10/10 PHP
javascript对象的property和prototype是这样一种关系
2007/03/24 Javascript
“不能执行已释放的Script代码”错误的原因及解决办法
2007/09/09 Javascript
jQuery实现鼠标经过图片预览大图效果
2014/04/10 Javascript
node.js中的fs.openSync方法使用说明
2014/12/17 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
2015/05/03 Javascript
详解JavaScript中的blink()方法的使用
2015/06/08 Javascript
AngularJS的表单使用详解
2015/06/17 Javascript
Node.js使用Koa搭建 基础项目
2018/01/08 Javascript
微信小程序调用微信支付接口的实现方法
2019/04/29 Javascript
Vue 实现前端权限控制的示例代码
2019/07/09 Javascript
Vue检测屏幕变化来改变不同的charts样式实例
2020/10/26 Javascript
js实现简单商品筛选功能
2021/02/02 Javascript
[58:57]2018DOTA2亚洲邀请赛3月29日小组赛B组 Effect VS VGJ.T
2018/03/30 DOTA
[01:01]青春无憾,一战成名——DOTA2全国高校联赛开启
2018/02/25 DOTA
Python实现的简单发送邮件脚本分享
2014/11/07 Python
在Django中输出matplotlib生成的图片方法
2018/05/24 Python
Python3 读、写Excel文件的操作方法
2018/10/20 Python
Python计算IV值的示例讲解
2020/02/28 Python
Python标准库shutil模块使用方法解析
2020/03/10 Python
意大利灯具购物网站:Lampade.it
2018/10/18 全球购物
伦敦鲜花递送:Flower Station
2021/02/03 全球购物
贷款委托书范本
2014/04/08 职场文书
企业趣味活动方案
2014/08/21 职场文书
党员个人查摆剖析材料
2014/10/16 职场文书
维稳工作承诺书
2015/01/20 职场文书
2015年体育教师个人工作总结
2015/05/12 职场文书
2015年大班保育员工作总结
2015/05/18 职场文书
python爬虫之selenium库的安装及使用教程
2021/05/23 Python
mysql 索引合并的使用
2021/08/30 MySQL
Python基本知识点总结
2022/04/07 Python
python实现手机推送 代码也就10行左右
2022/04/12 Python
webpack介绍使用配置教程详解webpack介绍和使用
2022/06/25 Javascript