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提示No module named images的解决方法
Sep 29 Python
使用grappelli为django admin后台添加模板
Nov 18 Python
python比较2个xml内容的方法
May 11 Python
Python爬取京东的商品分类与链接
Aug 26 Python
python处理xml文件的方法小结
May 02 Python
快速入门python学习笔记
Dec 06 Python
python使用itchat库实现微信机器人(好友聊天、群聊天)
Jan 04 Python
python批量查询、汉字去重处理CSV文件
May 31 Python
python获取命令行输入参数列表的实例代码
Jun 23 Python
python实现简单tftp(基于udp协议)
Jul 30 Python
Python 实现敏感目录扫描的示例代码
May 21 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
Oct 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
基于asp+ajax和数据库驱动的二级联动菜单
2010/05/06 PHP
基于PHP创建Cookie数组的详解
2013/07/03 PHP
thinkphp多表查询两表有重复相同字段的完美解决方法
2016/09/22 PHP
php发送http请求的常用方法分析
2016/11/08 PHP
PHP赋值的内部是如何跑的详解
2019/01/13 PHP
jQuery Ajax 全解析
2009/02/08 Javascript
风吟的小型JavaScirpt库 (FY.JS).
2010/03/09 Javascript
javascript 精粹笔记
2010/05/09 Javascript
javascript 得到变量类型的函数
2010/05/19 Javascript
JS cookie中文乱码解决方法
2014/01/28 Javascript
javascript实现动态侧边栏代码
2014/02/19 Javascript
jQuery scroll事件实现监控滚动条分页示例
2014/04/04 Javascript
JavaScript indexOf方法入门实例(计算指定字符在字符串中首次出现的位置)
2014/10/17 Javascript
使用jQueryMobile实现滑动翻页效果的方法
2015/02/04 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
2016/05/26 Javascript
Angularjs 实现动态添加控件功能
2017/05/25 Javascript
python实现超简单端口转发的方法
2015/03/13 Python
python连接远程ftp服务器并列出目录下文件的方法
2015/04/01 Python
使用SAE部署Python运行环境的教程
2015/05/05 Python
浅析Python中的for 循环
2016/06/09 Python
使用pandas实现csv/excel sheet互相转换的方法
2018/12/10 Python
VSCode Python开发环境配置的详细步骤
2019/02/22 Python
Python从文件中读取指定的行以及在文件指定位置写入
2019/09/06 Python
pytorch中的自定义反向传播,求导实例
2020/01/06 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
纽约的奢华内衣店:Journelle
2016/07/29 全球购物
施华洛世奇加拿大官网:SWAROVSKI加拿大
2018/06/03 全球购物
英国手机零售商:Carphone Warehouse
2018/06/06 全球购物
Sunglass Hut巴西网上商店:男女太阳镜
2020/10/04 全球购物
分解成质因数(如435234=251*17*17*3*2,据说是华为笔试题)
2014/07/16 面试题
连锁酒店店长职责范本
2014/02/13 职场文书
天网工程实施方案
2014/03/26 职场文书
乡镇组织委员个人整改措施
2014/09/16 职场文书
学习心理学的体会
2014/11/07 职场文书
教学质量月活动总结
2015/05/11 职场文书
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
2021/06/21 MySQL