python交易记录链的实现过程详解


Posted in Python onJuly 03, 2019

接着上篇的内容,这里实现一个交易记录链,废话不多说,先看图:

python交易记录链的实现过程详解

跟之前的逻辑类似,但也有少许不同,这里多了一个payloadhash,以及对payloadhash和prehash的hash,下面看代码实现:

import hashlib
import datetime
# 交易记录类
class DaDaMessage:

  def __init__(self, data):
    self.hash = None # 自身hash
    self.preHash = None # 上一个区块hash
    self.data = data # 交易信息
    self.timestamp = datetime.datetime.now() # 交易时间
    self.payloadHash = self.payload_hash() # 交易后的哈希,防止篡改

  #对交易信息进行hash
  def payload_hash(self):
    sha = hashlib.md5()
    datastr = (str(self.data) + str(self.timestamp)).encode("utf-8")
    sha.update(datastr)
    return sha.hexdigest()
  #密封,锁定交易信息
  def seal(self):
    self.hash = self.hash_message()
  #将交易信息和上一个区块密封
  def hash_message(self):
    sha = hashlib.md5()
    datastr = (str(self.preHash) + str(self.payloadHash)).encode("utf-8")
    sha.update(datastr)
    return sha.hexdigest()
  #校验区块信息
  def validate(self):
    if self.hash != self.hash_message():
      raise InvalidateMessage("交易哈希?接?h修改")
    if self.payloadHash != self.payload_hash():
      raise InvalidateMessage("交易?r?????恍薷?)
  #?接?^?K
  def link(self,Message):
    self.preHash = Message.hash
  def __repr__(self):
    return "hash:{},preHash:{},data:{}".format(self.hash,self.preHash,self.data)

自定义异常类:

class InvalidateMessage(Exception):
  def __init__(self,*args,**kwargs):
    super(Exception,self).__init__(*args,**kwargs)

编写测试模块:

if __name__=="__main__":
  m1 = DaDaMessage("I love coins 12")
  m2 = DaDaMessage("I love coins 13")
  m3 = DaDaMessage("I love coins 14")
  try:
    m1.seal()
    m2.link(m1)
    m2.seal()
    m3.link(m2)
    m3.seal()
    m1.hash = "0xaaaajjjjj"
    m1.data = "I don't love "
    m1.validate()
    m2.validate()
    m3.validate()
    print(m1)
    print(m2)
    print(m3)
  except InvalidateMessage as e:
    print(e)

查看打印结果:

python交易记录链的实现过程详解

跟上面的逻辑完美契合,然后我们在测试下篡改数据的结果:

python交易记录链的实现过程详解

当然,你也可以尝试不用try…except 看下结果。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python模糊查询本地文件夹去除文件后缀的实例(7行代码)
Nov 09 Python
python机器学习理论与实战(二)决策树
Jan 19 Python
Numpy数据类型转换astype,dtype的方法
Jun 09 Python
机器学习之KNN算法原理及Python实现方法详解
Jul 09 Python
Python 数据库操作 SQLAlchemy的示例代码
Feb 18 Python
Python转换时间的图文方法
Jul 01 Python
PyTorch 随机数生成占用 CPU 过高的解决方法
Jan 13 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
Feb 26 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
Mar 13 Python
使用python客户端访问impala的操作方式
Mar 28 Python
在jupyter notebook中调用.ipynb文件方式
Apr 14 Python
Python 实现绘制子图及子图刻度的变换等问题
May 31 Python
python3实现二叉树的遍历与递归算法解析(小结)
Jul 03 #Python
python简单区块链模拟详解
Jul 03 #Python
python使用递归的方式建立二叉树
Jul 03 #Python
python挖矿算力测试程序详解
Jul 03 #Python
如何用Python做一个微信机器人自动拉群
Jul 03 #Python
Python中的正则表达式与JSON数据交换格式
Jul 03 #Python
python实现共轭梯度法
Jul 03 #Python
You might like
php基础教程 php内置函数实例教程
2012/08/21 PHP
php实现的AES加密类定义与用法示例
2018/01/29 PHP
基于jquery的页面划词搜索JS
2010/09/14 Javascript
基于jquery的给文章加入关键字链接
2010/10/26 Javascript
Jquery each方法跳出循环,并获取返回值(实例讲解)
2013/12/12 Javascript
JS嵌套函数调用上下文的问题解决
2014/03/26 Javascript
JS使用replace()方法和正则表达式进行字符串的搜索与替换实例
2014/04/10 Javascript
javascript页面渲染速度测试脚本分享
2014/04/15 Javascript
跟我学习javascript的垃圾回收机制与内存管理
2015/11/23 Javascript
详解jQuery中关于Ajax的几个常用的函数
2017/07/17 jQuery
浅谈AngularJS中使用$resource(已更新)
2017/09/14 Javascript
详解封装基础的angular4的request请求方法
2018/06/05 Javascript
JavaScript 正则命名分组【推荐】
2018/06/07 Javascript
python之import机制详解
2014/07/03 Python
python实现k-means聚类算法
2018/02/23 Python
Python实现简单层次聚类算法以及可视化
2019/03/18 Python
对Python中TKinter模块中的Label组件实例详解
2019/06/14 Python
用vue.js组件模拟v-model指令实例方法
2019/07/05 Python
keras模型可视化,层可视化及kernel可视化实例
2020/01/24 Python
Python 自由定制表格的实现示例
2020/03/20 Python
Python3爬虫中关于中文分词的详解
2020/07/29 Python
python 深度学习中的4种激活函数
2020/09/18 Python
Opencv常见图像格式Data Type及代码实例
2020/11/02 Python
5 个强大的HTML5 API 函数推荐
2014/11/19 HTML / CSS
世界领先的豪华床上用品供应商之一:Bedeck Home
2019/03/18 全球购物
J2EE面试题大全
2016/08/06 面试题
大学生职业生涯规划书前言
2014/01/09 职场文书
社区包粽子活动方案
2014/01/21 职场文书
大跃进口号
2014/06/16 职场文书
最新离婚协议书范本
2014/08/19 职场文书
《中国梦我的梦》大学生演讲稿
2014/08/20 职场文书
指导教师推荐意见
2015/06/05 职场文书
公务员学习中国梦心得体会
2016/01/05 职场文书
2019邀请函格式及范文
2019/05/20 职场文书
OpenCV-Python实现人脸美白算法的实例
2021/06/11 Python
Python scrapy爬取起点中文网小说榜单
2021/06/13 Python