最近學習了一點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()
defhash_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()
defcreate_first_dadablock
():# 創世區塊
return dadablockcoin(0, datetime.datetime.now(), "love dadacoin", "0")
# last_block,上乙個區塊
defcreate_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) # 建立乙個區塊鏈的節點
head_block = dadablock_add
print(dadablock_add.idex, dadablock_add.timestamp, dadablock_add.self_hash, dadablock_add.last_hash)
列印結果如下:
與開頭的指導思路完美契合,雖然只是很簡單的模擬。
CCF CSP 區塊鏈 模擬
只有90分,最後乙個點沒通過,想不明白,放這裡晾著吧,有時間反思一下,大概思路如下 首先建立乙個圖的資料結構來描述它,然後建立乙個以時間為順序的任務表,這個表我們利用map內建的紅黑樹來實現 插入即排序的功能 然後以這個時間序為事件發生順序,按照邏輯模擬就可以了,當然我們會發現同一時刻查詢和更新事件...
python 區塊鏈 區塊鏈Python實現
區塊鏈是如同鍊錶的一組記錄。每個區塊含有一些資訊以及與其他區塊關聯的方法。每個區塊有前乙個區塊的雜湊值 時間戳 資料。class block def init self,timestamp,data,previous hash self.timestamp timestamp self.data d...
python入門區塊鏈技術 區塊鏈教程
區塊鏈 blockchain 技術源於位元幣。在位元幣中,為了保證每筆交易可信並不可篡改,中本聰發明了區塊鏈,它通過後乙個區塊對前乙個區塊的引用,並以加密技術保證了區塊鏈不可修改。隨著位元幣的逐漸發展,人們發現區塊鏈本質上其實是乙個分布式的,不可篡改的資料庫,天生具有可驗證 可信任的特性,它不但可用...