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实现list反转实例汇总
Nov 11 Python
详细介绍Ruby中的正则表达式
Apr 10 Python
python字典的常用操作方法小结
May 16 Python
基于Python的关键字监控及告警
Jul 06 Python
简单谈谈python中的lambda表达式
Jan 19 Python
异步任务队列Celery在Django中的使用方法
Jun 07 Python
Python中如何使用if语句处理列表实例代码
Feb 24 Python
Tensorflow读取并输出已保存模型的权重数值方式
Jan 04 Python
TensorFlow 显存使用机制详解
Feb 03 Python
Python MOCK SERVER moco模拟接口测试过程解析
Apr 13 Python
Python能做什么
Jun 02 Python
使用python实现学生信息管理系统
Feb 25 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转换文件夹下所有文件编码的实现代码
2013/06/06 PHP
对PHP依赖注入的理解实例分析
2016/10/09 PHP
JavaScript中“+=”的应用
2007/02/02 Javascript
Javascript String对象扩展HTML编码和解码的方法
2009/06/02 Javascript
jQuery Flash/MP3/Video多媒体插件
2010/01/18 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
2015/11/25 Javascript
jQuery实时显示鼠标指针位置和键盘ASCII码
2016/03/28 Javascript
JS实时弹出新消息提示框并有提示音响起的实现代码
2016/04/20 Javascript
jQuery点击导航栏选中更换样式的实现代码
2017/01/23 Javascript
Jquery中attr与prop的区别详解
2017/05/27 jQuery
jQuery:unbind方法的使用详解
2017/08/14 jQuery
Vue组件全局注册实现警告框的实例详解
2018/06/11 Javascript
React 项目迁移 Webpack Babel7的实现
2018/09/12 Javascript
JS实现点击li标签弹出对应的索引功能【案例】
2019/02/18 Javascript
Vue2.x通用条件搜索组件的封装及应用详解
2019/05/28 Javascript
重置Redux的状态数据的方法实现
2019/11/18 Javascript
Vue实现简易计算器
2020/02/25 Javascript
用python实现面向对像的ASP程序实例
2014/11/10 Python
详解Python的Django框架中的templates设置
2015/05/11 Python
Python自动发邮件脚本
2017/03/31 Python
kaggle+mnist实现手写字体识别
2018/07/26 Python
浅谈Python基础—判断和循环
2019/03/22 Python
python global关键字的用法详解
2019/09/05 Python
在python中计算ssim的方法(与Matlab结果一致)
2019/12/19 Python
python 监控logcat关键字功能
2020/09/04 Python
Python的3种运行方式:命令行窗口、Python解释器、IDLE的实现
2020/10/10 Python
迪士尼英国官方商店:shopDisney UK
2019/09/21 全球购物
美国乒乓球设备、配件和服装品牌:Killerspin
2020/06/07 全球购物
护士毕业自我鉴定
2014/02/07 职场文书
收银员岗位职责
2014/02/07 职场文书
银行职员自我鉴定
2014/04/20 职场文书
党支部承诺书
2015/01/20 职场文书
初二物理教学反思
2016/02/19 职场文书
只用40行Python代码就能写出pdf转word小工具
2021/05/31 Python
人物搭配车车超萌联名预备中 【咒术迴战】 ⨯ 【天竺鼠车车】 展开合作
2022/04/11 日漫
Ruby序列化和持久化存储 Marshal和Pstore介绍
2022/04/18 Ruby