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

首頁 > 編程 > Python > 正文

Python實現基于POS算法的區塊鏈

2020-02-15 22:41:57
字體:
來源:轉載
供稿:網友

區塊鏈中的共識算法

在比特幣公鏈架構解析中,就曾提到過為了實現去中介化的設計,比特幣設計了一套共識協議,并通過此協議來保證系統的穩定性和防攻擊性。 并且我們知道,截止目前使用最廣泛,也是最被大家接受的共識算法,是我們先前介紹過的POW(proof of work)工作量證明算法。目前市值排名前二的比特幣和以太坊也是采用的此算法。

雖然POW共識算法取得了巨大的成功,但對它的質疑也從來未曾停止過。 其中最主要的一個原因就是電力消耗。據不完全統計,基于POW的挖礦機制所消耗的電量是非常巨大的,甚至比絕大多數國家耗電量還要多。這對我們的資源造成了極大的浪費,此外隨著比特大陸等公司的強勢崛起,造成了算力的高度集中。

基于以上種種原因,更多的共識算法被提出來 POS、DPOS、BPFT等等。 今天我們就來認識POS(proof of stake)算法。

Proof of stake,譯為權益證明。你可能已經猜到了,權益證明簡單理解就是擁有更多token的人,有更大的概率獲得記賬權利,然后獲得獎勵。 這個概率具體有多大呢? 下面我們在代碼實現中會展示,分析也放在后面。 當然,POS是會比POW更好嗎? 會更去中心化嗎? 現在看來未必,所以我們這里也不去對比誰優誰劣。 我們站在中立的角度,單純的來討論討論POS這種算法。

代碼實戰

生成一個Block

既然要實現POS算法,那么就難免要生成一條鏈,鏈又是由一個個Block生成的,所以下面我們首先來看看如何生成Block,當然在前面的內容里面,關于如何生成Block,以及交易、UTXO等等都已經介紹過了。由于今天我們的核心是實現POS,所以關于Block的生成,我們就用最簡單的實現方式,好讓大家把目光聚焦在核心的內容上面。

我們用三個方法來實現生成一個合法的區塊

calculate_hash 計算區塊的hash值 is_block_valid 校驗區塊是否合法 generate_block 生成一個區塊
from hashlib import sha256from datetime import datetimedef generate_block(oldblock, bpm, address): """ :param oldblock: :param bpm: :param address: :return: """ newblock = {  "Index": oldblock["Index"] + 1,  "BPM": bpm,  "Timestamp": str(datetime.now()),  "PrevHash": oldblock["Hash"],  "Validator": address } newblock["Hash"] = calculate_hash(newblock) return newblockdef calculate_hash(block): record = "".join([  str(block["Index"]),  str(block["BPM"]),  block["Timestamp"],  block["PrevHash"] ]) return sha256(record.encode()).hexdigest()def is_block_valid(newblock, oldblock): """ :param newblock: :param oldblock: :return: """ if oldblock["Index"] + 1 != newblock["Index"]:  return False if oldblock["Hash"] != newblock["PrevHash"]:  return False if calculate_hash(newblock) != newblock["Hash"]:  return False return True            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 赫章县| 隆子县| 隆回县| 延津县| 永和县| 巴林右旗| 株洲县| 东平县| 乌鲁木齐县| 丹寨县| 全椒县| 巴青县| 康马县| 甘孜| 西丰县| 丹寨县| 麻城市| 县级市| 正蓝旗| 无锡市| 响水县| 德清县| 永安市| 辛集市| 绥阳县| 林州市| 翼城县| 分宜县| 高台县| 桐柏县| 九寨沟县| 金阳县| 无极县| 奇台县| 夏河县| 山丹县| 莒南县| 蒙自县| 文登市| 马尔康县| 合肥市|