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中操作文件之write()方法的使用教程
May 25 Python
在Django中同时使用多个配置文件的方法
Jul 22 Python
python脚本设置超时机制系统时间的方法
Feb 21 Python
Python+树莓派+YOLO打造一款人工智能照相机
Jan 02 Python
解决Pycharm中import时无法识别自己写的程序方法
May 18 Python
django admin后台添加导出excel功能示例代码
May 15 Python
Python爬虫:url中带字典列表参数的编码转换方法
Aug 21 Python
python-视频分帧&多帧合成视频实例
Dec 10 Python
Python中的特殊方法以及应用详解
Sep 20 Python
详解Python openpyxl库的基本应用
Feb 26 Python
Python网络编程之ZeroMQ知识总结
Apr 25 Python
Python使用psutil库对系统数据进行采集监控的方法
Aug 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
xajax写的留言本
2006/11/25 PHP
PHP生成验证码时“图像因其本身有错无法显示”的解决方法
2013/08/07 PHP
php+ajax无刷新分页实例详解
2015/12/07 PHP
Yii数据库缓存实例分析
2016/03/29 PHP
24条货真价实的PHP代码优化技巧
2016/07/28 PHP
PHP $O00OO0=urldecode & eval 解密,记一次商业源码的去后门
2020/09/13 PHP
extjs 列表框(multiselect)的动态添加列表项的方法
2009/07/31 Javascript
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2010/02/04 Javascript
Js四则运算函数代码
2012/07/21 Javascript
JavaScript NaN和Infinity特殊值 [译]
2012/09/20 Javascript
如何改进javascript代码的性能
2015/04/02 Javascript
jquery实现两边飘浮可关闭的对联广告
2015/11/27 Javascript
JQuery点击行tr实现checkBox选中的简单实例
2016/05/26 Javascript
javaScript中定义类或对象的五种方式总结
2016/12/04 Javascript
详解JavaScript中this的指向问题
2017/01/20 Javascript
关于NodeJS中的循环引用详解
2019/07/23 NodeJs
node.js express框架实现文件上传与下载功能实例详解
2019/10/15 Javascript
vue实现随机验证码功能(完整代码)
2019/12/10 Javascript
微信小程序getLocation 需要在app.json中声明permission字段
2020/03/03 Javascript
vue实现点击按钮“查看详情”弹窗展示详情列表操作
2020/09/09 Javascript
浅谈es6中的元编程
2020/12/01 Javascript
Python之ReportLab绘制条形码和二维码的实例
2018/01/15 Python
对Python中list的倒序索引和切片实例讲解
2018/11/15 Python
浅谈python 中类属性共享的问题
2019/07/02 Python
python getopt模块使用实例解析
2019/12/18 Python
Python Selenium参数配置方法解析
2020/01/19 Python
国际花店:Pickup Flowers
2020/04/10 全球购物
致跳远、跳高运动员广播稿
2014/01/09 职场文书
弘扬职业精神演讲稿
2014/03/20 职场文书
学生请假条格式
2014/04/11 职场文书
个人收入证明模板
2014/09/18 职场文书
说谎欺骗人检讨书300字
2014/11/18 职场文书
巾帼文明岗汇报材料
2014/12/24 职场文书
教师学期个人总结
2015/02/11 职场文书
《雪域豹影》读后感:父爱的伟大
2019/12/23 职场文书
tensorflow+k-means聚类简单实现猫狗图像分类的方法
2021/04/28 Python