溫馨提示×

溫馨提示×

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

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

python簡單區(qū)塊鏈模擬詳解

發(fā)布時間:2020-10-04 10:08:09 來源:腳本之家 閱讀:142 作者:charles_lun 欄目:開發(fā)技術(shù)

最近學習了一點python,那就試著做一做簡單的編程練習。

首先是這個編程的指導圖,如下:

python簡單區(qū)塊鏈模擬詳解

對的,類似一個簡單區(qū)塊鏈的模擬。

代碼如下:

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
  #對數(shù)據(jù)整體加密
  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(): # 創(chuàng)世區(qū)塊

 return DaDaBlockCoin(0, datetime.datetime.now(), "love dadacoin", "0")

# last_block,上一個區(qū)塊
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) # 模擬交易數(shù)據(jù)
 this_hash = last_block.self_hash # 取得上一塊的hash
 return DaDaBlockCoin(this_idex, this_timestamp, this_data, this_hash)

DaDaBlockCoins = [create_first_DaDaBlock()] # 區(qū)塊鏈列表,只有一個創(chuàng)世區(qū)塊
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) # 創(chuàng)建一個區(qū)塊鏈的節(jié)點
 DaDaBlockCoins.append(dadaBlock_add)
 head_block = dadaBlock_add
 print(dadaBlock_add.idex, dadaBlock_add.timestamp, dadaBlock_add.self_hash, dadaBlock_add.last_hash)

打印結(jié)果如下:

python簡單區(qū)塊鏈模擬詳解

與開頭的指導思路完美契合,雖然只是很簡單的模擬。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節(jié)

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

AI