溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用python怎么實現交易記錄鏈

發布時間:2021-06-01 18:22:48 來源:億速云 閱讀:224 作者:Leah 欄目:開發技術

本篇文章給大家分享的是有關使用python怎么實現交易記錄鏈,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

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)

查看打印結果:

使用python怎么實現交易記錄鏈

跟上面的邏輯完美契合,然后我們在測試下篡改數據的結果:

使用python怎么實現交易記錄鏈

以上就是使用python怎么實現交易記錄鏈,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女