一個簡單的區塊鏈程式碼實現

Gb16978 發表於 2022-07-19
區塊鏈
import hashlib as hasherimport datetime as date#定義區塊鏈是什麼樣子,比如每個鏈的索引位置,時間資料,以及雜湊值class Block:
    def __init__(self, index, timestamp, data, previous_hash):
        self.index = index
        self.timestamp = timestamp
        self.data = data
        self.previous_hash = previous_hash
        self.hash = self.hash_block()
        # 初始化引數
    def hash_block(self):
        sha = hasher.sha256()#使用sha256進行加密
        sha.update(
            bytes(
                str(self.index) + str(self.timestamp) + str(self.data) + str(
                    self.previous_hash), 'utf-8'))#更新資料,返回給我們一個16進位制的加密結果
        return sha.hexdigest()#建立一個起源塊def create_genesis_block():
    # 起源塊後續的塊鏈都會以一種方式建立
    return Block(0, date.datetime.now(), "Genesis Block", "0")#起源塊後續的塊鏈都會以一種方式建立def next_block(last_block):
    this_index = last_block.index + 1
    this_timestamp = date.datetime.now()
    this_data = "你好,我是塊鏈 " + str(this_index)
    this_hash = last_block.hash
    return Block(this_index, this_timestamp, this_data, this_hash)def main():
    # 起源塊後續的塊鏈都會以一種方式建立
    blockchain = [create_genesis_block()]
    previous_block = blockchain[0]
    # 手動構造塊鏈,索引為0的任意先前塊鏈,起源塊之後的追加塊鏈
    num_of_blocks_to_add = 100
    # 新增到鏈上
    for i in range(0, num_of_blocks_to_add):
        block_to_add = next_block(previous_block)
        blockchain.append(block_to_add)
        previous_block = block_to_add
        print("Block #{} has been added to the"
              "blockchain!".format(block_to_add.index))
        print("Hash: {}\n".format(block_to_add.hash))if __name__ == "__main__":
    main()


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70019421/viewspace-2906360/,如需轉載,請註明出處,否則將追究法律責任。