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

首頁 > 編程 > Python > 正文

用Django實現(xiàn)一個可運行的區(qū)塊鏈應用

2020-02-22 23:24:26
字體:
供稿:網(wǎng)友

對數(shù)字貨幣的崛起感到新奇的我們,并且想知道其背后的技術(shù)——區(qū)塊鏈是怎樣實現(xiàn)的。

 

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

準備工作

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

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

環(huán)境準備

環(huán)境準備,確保已經(jīng)安裝Python3.5, pip , django, requests,urllib,json,hashlib

安裝方法:

pip install django requests

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

開始創(chuàng)建Blockchain

通過django-admin startproject block創(chuàng)建一個block的項目,在項目中創(chuàng)建一個demo項目django-admin startproject demo ,目錄結(jié)構(gòu):

 

Blockchain類

在views中創(chuàng)建一個Blockchain類,在構(gòu)造函數(shù)中創(chuàng)建了兩個列表,一個用于儲存區(qū)塊鏈,一個用于儲存交易。

以下是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類用來管理鏈條,它能存儲交易,加入新塊等,下面我們來進一步完善這些方法。

塊結(jié)構(gòu)

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

以下是一個區(qū)塊的結(jié)構(gòu):

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

到這里,區(qū)塊鏈的概念就清楚了,每個新的區(qū)塊都包含上一個區(qū)塊的Hash,這是關鍵的一點,它保障了區(qū)塊鏈不可變性。如果攻擊者破壞了前面的某個區(qū)塊,那么后面所有區(qū)塊的Hash都會變得不正確。不理解的話,慢慢消化,可參考區(qū)塊鏈記賬原理

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 宁国市| 兰西县| 闽清县| 汾阳市| 武清区| 安岳县| 深州市| 镇江市| 米脂县| 苏尼特左旗| 尼木县| 高雄市| 成安县| 马边| 稷山县| 吴桥县| 甘孜县| 兴山县| 合作市| 汕尾市| 长丰县| 安西县| 灌云县| 红河县| 龙江县| 政和县| 荆州市| 香港| 吉林市| 县级市| 菏泽市| 黄石市| 明光市| 修文县| 和硕县| 合川市| 罗山县| 克什克腾旗| 始兴县| 井研县| 德钦县|