溫馨提示×

溫馨提示×

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

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

怎么用Python創建加密貨幣

發布時間:2021-06-24 10:42:10 來源:億速云 閱讀:236 作者:chen 欄目:編程語言

這篇文章主要介紹“怎么用Python創建加密貨幣”,在日常操作中,相信很多人在怎么用Python創建加密貨幣問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么用Python創建加密貨幣”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

本文將向大家介紹如何使用Python  3.9.4建立屬于自己的區塊鏈和加密貨幣。在構建自己的加密貨幣或區塊鏈之前,您需要了解Python和區塊鏈的基礎知識。區塊鏈或許看起來很復雜,但可以肯定的是其核心概念確實非常簡單。

要求

確保您已安裝最新版本的Python。

入門

創建一個新的Python文件,文件名app.py。首先,我們應該創建一個Block類。

我將參考dzone.com的代碼:

class Block(object):     def __init__(self):         pass      def compute_hash(self):         pass

我們還需要創建Blockchain類藍圖:

class Blockchain(object):     def __init__(self):         pass      def build_genesis(self):         pass      def build_block(self):         pass      @staticmethod     def confirm_validity(block, previous_block):         pass      def get_data(self, sender, receiver, amount):         pass      @staticmethod     def proof_of_work(last_proof):         pass      @property     def latest_block(self):         pass

積木類

現在,讓我們看一下我們剛剛創建的這些類。塊類將如下所示:

import hashlib import time  class Block(object):     def __init__(self, index, proof_number, previous_hash, data, timestamp=None):         self.index = index         self.proof_number = proof_number         self.previous_hash = previous_hash         self.data = data         self.timestamp = timestamp or time.time()      @property         def compute_hash(self):         string_block = "{}{}{}{}{}".format(self.index, self.proof_number, self.previous_hash, self.data, self.timestamp)         return hashlib.sha256(string_block.encode()).hexdigest()

Block類采用幾個參數:index,proof_number,previous_hash,data和timestamp。

  • 索引用于查看塊在鏈中的哪個位置。

  • 我認為,前者是不言而喻的。

  • 數據是一個對象,它收集有關該區塊的所有信息(id,金額,發送者,接收者等)。

  • 時間戳是指生成塊的時刻。

在def compute_hash()方法中,我們的哈希將使用hash方法創建。

鏈條類

單獨的塊沒有任何價值,并且使用鏈來加密數據,因此很重要。讓我們為Chain類創建構造函數:

class Blockchain(object):     def __init__(self):         self.chain = []         self.current_data = []         self.nodes = set()         self.build_genesiss()

讓我們看一下這些參數的作用。

  • 該self.chain是一個變量,它存儲所有的塊。

  • 該self.current_data是一個變量,它存儲所有關于該塊的信息。

  • 這self.nodes是用于設置節點的示例方法。

  • 所述self.build_genesis方法變量是創建第一塊中的方法。

建立創世方法

此方法將用于創建初始塊。因此,我們需要調用該build_block()方法。

def build_genesis(self):         self.build_block(proof_number=0, previous_hash=0)      def build_block(self, proof_number, previous_hash):         block = Block(             index=len(self.chain),             proof_number=proof_number,             previous_hash=previous_hash,             data=self.current_data         )          self.current_data = []         self.chain.append(block)          return block

在此方法中,創建一個新Block對象并輸入所需的參數:索引,證明,previous_hash和數據。然后,我們設置當前數據并將該塊附加到鏈中。

確認有效性方法

創建加密貨幣/區塊鏈的重要部分是檢查區塊是否有效。我們用一種新方法來做到這一點。

@staticmethod     def confirm_validity(block, previous_block):         if previous_block.index + 1 != block.index:             return False          elif previous_block.compute_hash() != block.previous_hash:             return False          elif block.timestamp & lt; = previous_block.timestamp:             return False          return True

讓我們解釋一下:此方法使用幾個if語句來檢查Block是否是它應該的塊。它compute_hash()再次使用該方法。

獲取數據方法

當然,您希望能夠讀取您的塊和區塊鏈的數據,這是通過以下get_data()方法完成的:

def get_data(self, sender, receiver, amount):             self.current_data.append({                 'sender': sender,                 'receiver': receiver,                 'amount': amount             })              return True

該方法非常簡單,它采用三個參數并將它們添加到對象中。

工作證明

在這個項目中,我們將添加一個工作量證明算法以使挖掘成為可能。

讓我們創建def block_mining方法:

def block_mining(self, details_miner):         self.get_data(             sender="0",             receiver=details_miner,             quantity=1,         )          last_block = self.latest_block         last_proof_number = last_block.proof_number         proof_number = self.proof_of_work(last_proof_number)         last_hash = last_block.compute_hash          block = self.build_block(proof_number, last_hash)          return vars(block)

定稿

為了結束我們的項目,我們將以下代碼行添加到def latest_block方法中,

return self.chain[-1]

現在,我們將測試我們的項目:

bc = Blockchain() print("READY") print(bc.chain) #output: READY [<__main__.Block object at 0x00000241A23C5EE0>]

當您看到類似的結果時,您的區塊鏈藍圖已成功構建。如果您想添加額外的功能,則可以這樣做,請告訴我您所構建的內容!

完整代碼示例:

import hashlib import time   class Block(object):     def __init__(self, index, proof_number, previous_hash, data, timestamp=None):         self.index = index         self.proof_number = proof_number         self.previous_hash = previous_hash         self.data = data         self.timestamp = timestamp or time.time()      @property     def compute_hash(self):         string_block = "{}{}{}{}{}".format(             self.index, self.proof_number, self.previous_hash, self.data, self.timestamp)         return hashlib.sha256(string_block.encode()).hexdigest()   class Blockchain(object):     def __init__(self):         self.chain = []         self.current_data = []         self.nodes = set()         self.build_genesis()      def build_genesis(self):         self.build_block(proof_number=0, previous_hash=0)      def build_block(self, proof_number, previous_hash):         block = Block(             index=len(self.chain),             proof_number=proof_number,             previous_hash=previous_hash,             data=self.current_data         )          self.current_data = []         self.chain.append(block)          return block      @staticmethod     def confirm_validity(block, previous_block):         if previous_block.index + 1 != block.index:             return False          elif previous_block.compute_hash() != block.previous_hash:             return False          elif block.timestamp >= previous_block.timestamp:             return False          return True      def get_data(self, sender, receiver, amount):         self.current_data.append({             'sender': sender,             'receiver': receiver,             'amount': amount         })          return True      @staticmethod     def proof_of_work(last_proof):         pass      @property     def latest_block(self):         return self.chain[-1]      def block_mining(self, details_miner):         self.get_data(             sender="0",             receiver=details_miner,             quantity=1,         )          last_block = self.latest_block         last_proof_number = last_block.proof_number         proof_number = self.proof_of_work(last_proof_number)         last_hash = last_block.compute_hash          block = self.build_block(proof_number, last_hash)          return vars(block)   bc = Blockchain() print("READY") print(bc.chain)

終于我們使用Python創建了自己的區塊鏈。

到此,關于“怎么用Python創建加密貨幣”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

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

AI

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