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

首頁 > 編程 > Python > 正文

Python學習入門之區塊鏈詳解

2020-02-16 01:57:44
字體:
來源:轉載
供稿:網友

前言

本文將給大家簡單介紹關于區塊鏈(BlockChain)的相關知識,并用Python做一簡單實現。下面話不多說,來一起看看詳細的介紹:

什么是區塊鏈

簡單來說,區塊鏈就是把加密數據(區塊)按照時間順序進行疊加(鏈)生成的永久、不可逆向修改的記錄。具體來說,它區塊鏈是由一串使用密碼學方法產生的數據塊組成的,每一個區塊都包含了上一個區塊的哈希值(hash),從創始區塊(genesis block)開始連接到當前區塊,形成塊鏈。每一個區塊都確保按照時間順序在上一個區塊之后產生,否則前一個區塊的哈希值是未知的。它是比特幣的一個重要概念。

特點

區塊鏈有如下特點:

去中心化:區塊鏈不依賴于某個中心節點,而是依賴于分布式的各個節點。 無須信任系統:區塊鏈中基于密碼學算法,數據需要網絡內其他用戶的批準,所以不需要一套第三方中介結構或信任機構背書。 不可篡改和加密安全性:區塊鏈采取單向哈希算法,同時每個新產生的區塊嚴格按照時間線形順序推進,時間的不可逆性導致任何試圖入侵篡改區塊鏈內數據 信息的行為都很容易被追溯,導致被其他節點的排斥,從而可以限制相關不法行為。

以上特點使得區塊鏈在銀行、證券市場和金融等諸多領域有著越來越多的應用。

區塊鏈工作原理

區塊鏈式一系列加密的數據塊。這些區塊由一個包含元數據的區塊頭和緊跟其后的構成區塊主體的一長串交易組成。比特幣中的區塊結構如下:

區塊頭

區塊頭中包含了與區塊鏈中其它區塊中的連接信息、時間戳和nonce等信息,具體如下:

區塊標識符

區塊有兩個標示符,一是區塊頭的哈希值,二是區塊高度。區塊頭的哈希值是通過SHA256算法對區塊頭進行二次哈希計算而得到的數字。區塊哈希值可以唯一、明確地標識一個區塊,并且任何節點通過簡單地對區塊頭進行哈希計算都可以獨立地獲取該區塊哈希值。區塊高度是指該區塊在區塊鏈中的位置。區塊高度并不是唯一的標識符。雖然一個單一的區塊總是會有一個明確的、固定的區塊高度,但反過來卻并不成立,一個區塊高度并不總是識別一個單一的區塊。兩個或兩個以上的區塊可能有相同的區塊高度,在區塊鏈里爭奪同一位置。

了解了以上基礎后下面開始用Python實現一個簡單的區塊鏈。

區塊鏈的Python實現

一、定義區塊結構

In [16]:

# block.pyimport hashlibimport uuidclass Block(object): def __init__(self, data=None, previous_hash=None):  self.identifier = uuid.uuid4().hex # 產生唯一標示  self.nonce = None     # nonce值  self.data = data      # 區塊內容  self.previous_hash = previous_hash # 父節點哈希值   def hash(self, nonce=None):  '''  計算區塊的哈希值  '''  message = hashlib.sha256()  message.update(self.identifier.encode('utf-8'))  message.update(str(nonce).encode('utf-8'))  message.update(str(self.data).encode('utf-8'))  message.update(str(self.previous_hash).encode('utf-8'))  return message.hexdigest() def hash_is_valid(self, the_hash):  '''  校驗區塊哈希值有否有效  '''  return the_hash.startswith('0000') def __repr__(self):  return 'Block<Hash: {}, Nonce: {}>'.format(self.hash(), self.nonce)            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 娱乐| 乐山市| 洪泽县| 南漳县| 肇源县| 盈江县| 许昌市| 景洪市| 延边| 青川县| 抚州市| 乐平市| 晋城| 石柱| 景谷| 桐城市| 遂溪县| 鄂伦春自治旗| 宝山区| 延寿县| 隆回县| 望谟县| 景宁| 永泰县| 灌阳县| 瑞昌市| 西乌珠穆沁旗| 台山市| 平陆县| 龙陵县| 南充市| 吕梁市| 张家界市| 贺州市| 柳河县| 梓潼县| 泸西县| 张掖市| 镇坪县| 盈江县| 平邑县|