class Blockchain(object):
# 定義兩個列表,用于記錄區(qū)塊鏈及交易信息
def __init__(self)
self.chain = []
self.current_transaction = []
def new_block(self):
# 創(chuàng)建一個新的 Block 區(qū)塊,并添加到區(qū)塊鏈中
pass
def new_transaction(self):
#在交易中添加一個交易信息
pass
@staticmethod
def hash(block):
# 通過 Hash 算法返回區(qū)塊的Hash 值
pass
'''
6.接下來我們完善區(qū)塊鏈創(chuàng)建區(qū)塊的方法,想一想在區(qū)塊鏈創(chuàng)世之初,還沒有任何區(qū)塊的時候,這個時候區(qū)塊鏈剛剛被創(chuàng)建,
因此我們需要創(chuàng)建區(qū)塊的時候,制定一個創(chuàng)世區(qū)塊,并給他添加一個工作量證明,先來理一下創(chuàng)建新區(qū)塊需要做的哪些事情,
需要記錄前面一個區(qū)塊的hash 地址,需要記錄工作量的證明,沒有工作量,誰給你發(fā)工資,類似于公司里的考核,接下來我們
就來實現(xiàn) new——block 方法
'''
def new_block(self,proof,previous_hash=None):
'''
生成新塊
:param proof:<int>工作量證明,他是一個工作量算法對應(yīng)的一個值
:param previous_hash:(Optional)<str>前一個區(qū)塊的 hash 值
:return:<dict> 返回一個新的塊,這個塊 block 是一個字典結(jié)構(gòu)
'''
block = {
# 新的 block 對應(yīng)的 index(當(dāng)前區(qū)塊長度+1)
'index':len(self,chain) + 1
# 時間戳,記錄區(qū)塊創(chuàng)建的時間(系統(tǒng)時間)
'timestamp':time(),
# 記錄當(dāng)前的交易記錄,即通過 new_transactions 創(chuàng)建的交易,記錄在這個新的 block 里
'transactions':self.current_transaction,
# 工作量證明
'proof':proof
# 前一個 block 對應(yīng)的 hash 值
'previous_hash':previous_hash or self.hash(self.chain[-1]),
}
# 重置當(dāng)前的交易,用于記錄下一次交易
self.current_transaction = []
# 將新生成的 block 添加到 block 列表中
self.chain.append(block)
# 返回創(chuàng)新的 block
return block
''' 前面說了在區(qū)塊鏈創(chuàng)建之初,需要先創(chuàng)建創(chuàng)世塊,這個創(chuàng)世塊應(yīng)該在哪個位置被創(chuàng)建呢?沒錯,就是和區(qū)塊鏈一起創(chuàng)建,自然是在__init__方法
中,接下來我們看看__init__方法。'''
def __init__(self)
self.current_transaction = []
self.chain = []
pass
Python-區(qū)塊鏈初識
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 〇、前言 本文共108張圖,流量黨請慎重! 歷時1個半月,我把自己學(xué)習(xí)Python基礎(chǔ)知識的框架詳細(xì)梳理了一遍。 ...
- Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
- 不同階段的提問類型及問題的目的難題陳述和重構(gòu)階段 全面收集信息類,還原事實,找到為什么要解決這個難題,以及有哪些資...
- 2017年6月持倉曲線 大福持倉:40%。 今日操作:做T。 操盤說明:大盤如期展開洗盤,持倉做T。 新股紅利在悄...