接着上篇的内容,这里实现一个交易记录链,废话不多说,先看图:
跟之前的逻辑类似,但也有少许不同,这里多了一个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("交易哈希鏈接唄修改")
if self.payloadHash != self.payload_hash():
raise InvalidateMessage("交易時間與數據被修改")
#鏈接區塊
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)
查看打印结果:
跟上面的逻辑完美契合,然后我们在测试下篡改数据的结果:
当然,你也可以尝试不用try…except 看下结果。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
标签:
python,交易记录链,实现
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
暂无“python交易记录链的实现过程详解”评论...
更新动态
2025年11月07日
2025年11月07日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]


