国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python從零開始創建區塊鏈

2020-02-22 23:23:03
字體:
來源:轉載
供稿:網友

作者認為最快的學習區塊鏈的方式是自己創建一個,本文就跟隨作者用Python來創建一個區塊鏈。

對數字貨幣的崛起感到新奇的我們,并且想知道其背后的技術——區塊鏈是怎樣實現的。

但是完全搞懂區塊鏈并非易事,我喜歡在實踐中學習,通過寫代碼來學習技術會掌握得更牢固。通過構建一個區塊鏈可以加深對區塊鏈的理解。

準備工作

本文要求讀者對Python有基本的理解,能讀寫基本的Python,并且需要對HTTP請求有基本的了解。

我們知道區塊鏈是由區塊的記錄構成的不可變、有序的鏈結構,記錄可以是交易、文件或任何你想要的數據,重要的是它們是通過哈希值(hashes)鏈接起來的。

如果你還不是很了解哈希,可以查看這篇文章

環境準備

環境準備,確保已經安裝Python3.6+, pip , Flask, requests

安裝方法:

pip install Flask==0.12.2 requests==2.18.4

同時還需要一個HTTP客戶端,比如Postman,cURL或其它客戶端。

參考源代碼(原代碼在我翻譯的時候,無法運行,我fork了一份,修復了其中的錯誤,并添加了翻譯,感謝star)

開始創建Blockchain

新建一個文件 blockchain.py,本文所有的代碼都寫在這一個文件中,可以隨時參考源代碼

Blockchain類

首先創建一個Blockchain類,在構造函數中創建了兩個列表,一個用于儲存區塊鏈,一個用于儲存交易。

以下是Blockchain類的框架:

class Blockchain(object): def __init__(self):  self.chain = []  self.current_transactions = []   def new_block(self):  # Creates a new Block and adds it to the chain  pass  def new_transaction(self):  # Adds a new transaction to the list of transactions  pass  @staticmethod def hash(block):  # Hashes a Block  pass @property def last_block(self):  # Returns the last Block in the chain  pass

Blockchain類用來管理鏈條,它能存儲交易,加入新塊等,下面我們來進一步完善這些方法。

塊結構

每個區塊包含屬性:索引(index),Unix時間戳(timestamp),交易列表(transactions),工作量證明(稍后解釋)以及前一個區塊的Hash值。

以下是一個區塊的結構:

block = { 'index': 1, 'timestamp': 1506057125.900785, 'transactions': [  {   'sender': "8527147fe1f5426f9dd545de4b27ee00",   'recipient': "a77f5cdfa2934df3954a5c7c7da5df1f",   'amount': 5,  } ], 'proof': 324984774000, 'previous_hash': "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824"}

到這里,區塊鏈的概念就清楚了,每個新的區塊都包含上一個區塊的Hash,這是關鍵的一點,它保障了區塊鏈不可變性。如果攻擊者破壞了前面的某個區塊,那么后面所有區塊的Hash都會變得不正確。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鄂伦春自治旗| 乐东| 鸡泽县| 平安县| 四川省| 讷河市| 安阳市| 马鞍山市| 兴化市| 叶城县| 阳城县| 资兴市| 双鸭山市| 大方县| 称多县| 包头市| 南汇区| 息烽县| 喀什市| 林口县| 延边| 资阳市| 东乡县| 涞水县| 钟山县| 彩票| 抚远县| 土默特右旗| 会昌县| 岑溪市| 岚皋县| 呼图壁县| 吕梁市| 南皮县| 科技| 桂林市| 南平市| 仁寿县| 色达县| 彭水| 怀宁县|