国产探花免费观看_亚洲丰满少妇自慰呻吟_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            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泰宁县| 靖宇县| 泰宁县| 阜阳市| 阿克| 大邑县| 桂阳县| 大兴区| 双桥区| 鸡东县| 江北区| 紫金县| 易门县| 漳州市| 南丰县| 南城县| 清苑县| 清水县| 商城县| 合川市| 杭锦旗| 绥芬河市| 伊春市| 永兴县| 西和县| 天长市| 乐亭县| 枣庄市| 堆龙德庆县| 滦南县| 千阳县| 井研县| 清涧县| 高阳县| 余庆县| 盘山县| 文化| 伊金霍洛旗| 务川| 射洪县| 岳普湖县|