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中生成器和迭代器的区别详解
Feb 10 Python
pandas.loc 选取指定列进行操作的实例
May 18 Python
Tensorflow 查看变量的值方法
Jun 14 Python
浅析python中的迭代与迭代对象
Oct 08 Python
对Python实现累加函数的方法详解
Jan 23 Python
深入浅析python3中的unicode和bytes问题
Jul 03 Python
Django中提供的6种缓存方式详解
Aug 05 Python
python使用opencv在Windows下调用摄像头实现解析
Nov 26 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
Jun 09 Python
Python迭代器协议及for循环工作机制详解
Jul 14 Python
Python开发入门——迭代的基本使用
Sep 03 Python
python四种出行路线规划的实现
Jun 23 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
thinkphp在模型中自动完成session赋值示例代码
2014/09/09 PHP
对PHP PDO的一些认识小结
2015/01/23 PHP
PHP7 整型处理机制修改
2021/03/09 PHP
js DataSet数据源处理代码
2010/03/29 Javascript
jquery 文本上下无缝滚动,鼠标放上去就停止 小例子
2013/06/05 Javascript
js动态修改input输入框的type属性(实现方法解析)
2013/11/13 Javascript
js模仿hover的具体实现代码
2013/12/30 Javascript
JavaScript设计模式之观察者模式(发布者-订阅者模式)
2014/09/24 Javascript
JS中常用的输出方式(五种)
2016/06/12 Javascript
Node.js 中exports 和 module.exports 的区别
2017/03/14 Javascript
基于AGS JS开发自定义贴图图层
2017/03/31 Javascript
js实现图片放大展示效果
2017/08/30 Javascript
使用vue实现简单键盘的示例(支持移动端和pc端)
2017/12/25 Javascript
解决Vue大括号字符换行踩的坑
2020/11/09 Javascript
[03:12]完美世界DOTA2联赛PWL DAY7集锦
2020/11/06 DOTA
Python正则表达式匹配HTML页面编码
2015/04/08 Python
python深度优先搜索和广度优先搜索
2018/02/07 Python
python os.fork() 循环输出方法
2019/08/08 Python
Python线程障碍对象Barrier原理详解
2019/12/02 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
2020/04/14 Python
Jupyter notebook如何修改平台字体
2020/05/13 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
2020/09/09 Python
一款纯css3实现的鼠标经过按钮特效教程
2014/11/09 HTML / CSS
印尼在线精品店:Berrybenka.com
2016/10/22 全球购物
End Clothing美国站:英国男士潮牌商城
2018/04/20 全球购物
PHP面试题及答案一
2012/06/18 面试题
数据库笔试题
2013/05/09 面试题
PPP协议组成及简述协议协商的基本过程
2015/05/28 面试题
淘宝店铺营销方案
2014/02/13 职场文书
《台湾的蝴蝶谷》教学反思
2014/02/20 职场文书
英语导游词
2015/02/13 职场文书
2015年求职自荐信范文
2015/03/04 职场文书
《怀念母亲》教学反思
2016/02/19 职场文书
68句权威创业名言
2019/08/26 职场文书
Pytorch 统计模型参数量的操作 param.numel()
2021/05/13 Python
原生Javascript+HTML5一步步实现拖拽排序
2021/06/12 Javascript