區塊鏈的三種共識機制——PoW、PoS和DPoS原理

區塊鏈的核心是去中心化網絡的信任機制,而共識機制是實現這一目標的關鍵。共識機制可分為兩個階段:(1)提出共識內容(2)對內容達成共識(遵循最長鏈原則)。三種主流的共識機制主要有工作量證明PoW(Proof of Work),權益證明PoS(Proof of Stake),委托權益證明機制DPoS(Delegate Proof of Work),除了了解其基本內容,還需要學習其技術實現。

一、工作量證明(PoW)

PoW這個概念是1993年提出的,最早的用途不是用來實現加密貨幣的,而是用來防止垃圾郵件的。人們開始在使用電子郵件的時候會收到垃圾郵件的騷擾,如果發送垃圾郵件沒有成本,那么發送一百萬封電子郵件是很輕松的。所以人們想到了如果讓每一封郵件發送時都有一個微小的成本,那么鑒于成本,垃圾郵件就會被很大程度遏制了。而PoW就是為了服務這個目的而產生的。基本過程就是郵件接收方先廣播一道題出去,郵件發送方在發郵件時必須附帶上這道題的答案,這樣郵件才會被接受,否則就會被認為是垃圾郵件。

同理我們引入PoW機制下的哈希函數,實際上就是如何用哈希函數給計算機出題,由于計算機的解題速度很快,因此出的題目對于計算機“有挑戰性”,我們知道哈希函數最大的特點是如果輸入的數據哪怕有微小的區別,輸出的結果也會完全不同,這點保證了無法通過輸出結果去反向運算輸入,也沒有辦法縮小輸入的可能性范圍,另一方面,如果輸入相同則運算得到的輸出哈希一定相同。這一點保證了任何人都可以在一瞬間內驗證最終的哈希值是否正確。

比特幣系統的一個眾所周知的特點,就是很多礦工參與挖礦,但是每十分鐘網絡上產生的比特幣卻不是所有礦工均分的,而是誰先搶到記賬權,就把所有的比特幣獎勵給誰。記賬權的搶奪就是計算能力的比拼。比特幣的PoW機制,宏觀上就是要達成的就是判定哪個礦工的運算能力最強。這道題用到了哈希函數,但是系統要的答題結果也就是所謂的PoW,不是哈希函數的輸出,而是輸入。

為什么會這樣設置呢?因為從輸入計算哈希輸出,是一個非常直白的過程,計算機很擅長這樣的工作,不能明顯地體現出礦工之間計算能力的差異,而且系統必須要給全網廣播一個超級大的數,這樣才能比拼計算能力,涉及到網速等延遲問題,也不是很公平。所以比特幣系統的做法是反過來,給全網廣播一個哈希值,讓大家消耗自身算力嘗試不同的隨機數(nonce)找到它的輸入。因為前面提到的哈希函數獨特的特點,礦工們要想找到輸入,只能每次選一個數不斷嘗試瞎蒙,運算它的輸出和系統廣播的哈希值對比,如果不符合,換下一個數繼續,這顯然是一個概率問題,在相同的時間內誰能嘗試的次數多,大概率他會首先拿到正確的輸入,這就是PoW的基本原理了。

當然在實際中,比特幣系統是每十分鐘記賬一次,也就是需要所有礦工每十分鐘比一次,但是在十分鐘內想計算出一個精確哈希值的輸入是根本不可能的。所以系統每次給定的是一個哈希值范圍。具體規則就是,只要保證運算出的哈希值小于某個特定的數值,就認為提交的PoW是正確的,也就是說礦工們要盡力找到哈希值前幾位0越多越好(哈希值越小)對應的輸入。多年來礦工們的算力也有了很大提高,但是為什么比特幣系統還是能保證算出PoW的時間大致保證在十分鐘左右呢?答案就是系統可以通過調整0的個數來改變出題難度,雖然礦工們算力提高了,但是題也變得更難,所以需要花費的解題時間就會保持相對穩定。最快得到結果的礦工會把把自己的結果發送到全網(提交新創建的區塊),其他礦工都會驗證結果是否符合有效,如果有效,則每個節點都在自己的區塊鏈數據副本中添加這個有效區塊,開始新處理新的交易數據,努力創建新區塊。如果無效,則會被丟棄,礦工們繼續做手頭工作。

PoW共識的優點就是安全性高,隨著有效區塊的不斷積累,惡意節點需要極高的算力(超過總體的51%)來完成雙花攻擊,成本高昂。也存在著消耗算力和電力大的缺點。

二、權益證明(PoS)

在PoW中通過消耗大量的算力來爭奪記賬權,但是在每一輪共識中,只有一個節點得到了記賬權,其他節點的相當于是“陪跑”,算了被浪費了。而權益證明PoS于2013年首次提出被應用到了PeerCoin系統中,可以解決資源浪費的問題。

PoS?通過持有代幣的數量和時間(即“權益”)決定記賬權,??權益越高,被選中驗證交易的概率越大。

具體的技術實現是每個節點在每一輪共識中只需要計算一次Hash,當擁有的權益越多,滿足Hash目標的機會越大,獲得記賬權的機會越大。可以說,PoS是一個資源節省的共識協議。PeerCoin定義的權益除了與代幣數量有關,引入了幣齡(Coin Age),100個代幣持有兩天,幣齡為200,因此持有的代幣數量越多,時間越長,獲得記賬權的機會越大。

PoS的優點是??節能高效??:無需大量計算,能耗降低99%以上;缺點就是存在??“富人更富”問題??:代幣越多,收益越高,可能導致財富集中;
??改進方案??:以太坊2.0引入??Casper協議??,結合質押懲罰機制;Cardano采用分層PoS提升可擴展性。這里提到的一些前沿的技術先挖個坑,后面再補充。

三、委托權益證明機制(DPoS)

DPoS是由PoS演化而來的,持幣用戶通過抵押代幣獲得選票,以投票的方式選出若干的節點作為區塊生產者,代表持幣用戶履行產生區塊的義務。用戶投票最多的若干節點成為出塊節點,以EOX為代表是21個節點。在每一輪共識中,輪流選出一個出塊節點產生區塊,并廣播給其他的出塊節點進行驗證。若節點在規定時間內無完成出塊,或產生無效區塊,就會被取消資格,取而代之的事重新投票選取新的出塊節點。

?

值得一提的是,EOS初期的DPoS的共識方法才采用的是最長鏈共識,意味著與PoW一樣區塊沒有絕對的最終性,交易的不可逆需要等待多個區塊確認。在18年時,EOS使用拜占庭共識代替最長鏈共識,名為BFT-DPoS。?

優點是高吞吐量??:區塊生成速度快(EOS可達3000+ TPS);??低延遲??:適合高頻交易場景

缺點是??中心化爭議??:超級節點數量少,權力集中;賄選風險??:代幣大戶可能操控選舉。

四、三種共識對比

  1. ??公有鏈場景??:注重去中心化與安全性時,PoW或PoS更合適;
  2. ??聯盟鏈/高頻應用??:追求效率時,DPoS或PBFT更優;
  3. ??新興方向??:混合機制(如Hedera Hashgraph)或分片技術(如Zilliqa)正在探索更高性能的解決方案。

?

?

?

?

?

?

?


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/89009.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/89009.shtml
英文地址,請注明出處:http://en.pswp.cn/web/89009.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

React 和 Vue的自定義Hooks是如何實現的,如何創建自定義鉤子

目的:將公共邏輯提取出來,類似于 mixin,解決了mixin的設計缺陷。 React 和 Vue 自定義 Hooks 實現對比 React 自定義 Hooks React 的自定義 Hooks 是 JavaScript 函數,它們以 use 開頭,可以調用其他 Hooks。 基本規則 …

構建高效事件驅動架構:AWS S3與SQS集成實踐指南

引言 在現代云架構中,事件驅動的設計模式越來越受到開發者的青睞。AWS S3與SQS的集成為我們提供了一個強大的事件處理機制,能夠在文件上傳、刪除或修改時自動觸發后續的業務邏輯。本文將詳細介紹如何配置S3事件通知到SQS隊列,并分享實際項目中的最佳實踐。 架構概述 S3事…

C++ -- STL-- List

////// 歡迎來到 aramae 的博客,愿 Bug 遠離,好運常伴! ////// 博主的Gitee地址:阿拉美 (aramae) - Gitee.com 時代不會辜負長期主義者,愿每一個努力的人都能達到理想的彼岸。1. list的介紹及使用 2. list的深度剖…

rt-thread 線程間同步方法詳解

rt-thread 線程間同步方法詳解一、什么是線程間同步線程同步的必要性線程同步的挑戰二、同步方式1、信號量信號量工作機制信號量的管理方式信號量的創建與刪除信號量的獲取與釋放信號量的典型應用場景信號量的注意事項2、互斥量互斥量工作機制互斥量的特性互斥量的操作接口互斥…

Spring Boot + Vue2 實現騰訊云 COS 文件上傳:從零搭建分片上傳系統

目錄 一、項目目標 二、騰訊云 COS 基本配置 1. 創建存儲桶 2. 獲取 API 密鑰 3. 設置跨域規則(CORS) 三、后端(Spring Boot)實現 1. 依賴配置 2. 配置騰訊云 COS(application.yml) 3. 初始化 COS…

使用 Java 獲取 PDF 頁面信息(頁數、尺寸、旋轉角度、方向、標簽與邊框)

目錄 引言 一、安裝和引入PDF處理庫 二、獲取 PDF 頁數 三、獲取頁面尺寸(寬高) 四、獲取頁面旋轉角度 五、判斷頁面方向(橫向 / 縱向) 六、獲取頁面標簽 七、獲取頁面邊框信息 八、總結 引言 了解 PDF 頁面屬性是我們在…

基于 AI 的大前端安全態勢感知與應急響應體系建設

大前端應用(Web、APP、小程序)作為用戶交互的入口,面臨日益復雜的安全威脅:從傳統的 XSS 攻擊、CSRF 偽造,到新型的供應鏈投毒、AI 驅動的自動化爬蟲,再到針對業務邏輯的欺詐攻擊(如薅羊毛、賬號…

Java 與 MySQL 性能優化:MySQL全文檢索查詢優化實踐

文章目錄一、引言二、InnoDB引擎下的全文檢索功能詳解2.1 全文索引的基本概念與原理2.2 全文索引的創建與管理2.3 全文檢索的三種查詢模式2.4 中文全文檢索的挑戰與解決方案三、CMS 場景下的全文檢索性能瓶頸分析3.1 索引構建與維護開銷3.2 查詢性能瓶頸3.3 鎖機制與并發性能問…

應用軟件格式滲透 利用word去滲透(MS10-087)

用到的靶機為:WinXP漏洞原理:一、漏洞觸發機制與核心組件 漏洞根源:RTF文件解析邏輯缺陷 觸發組件:Microsoft Word的RTF(Rich Text Format)解析引擎,具體涉及 mso.dll 模塊中的 路徑規范化函數&…

解密AWS VPC路由表:顯式關聯與隱式關聯,誰決定了網絡出口?

大家好,今天我們來聊一個在 AWS 云計算世界里既基礎又關鍵的話題:VPC 路由表。 很多剛接觸 AWS 的朋友,在配置網絡時可能會遇到這樣的困惑:為什么我的 EC2 實例無法訪問互聯網?為什么某些子網的網絡策略和其他子網不一…

LeetCode題解---<203.移除鏈表元素>

文章目錄題目代碼及注釋關鍵點題目 給你一個鏈表的頭節點 head 和一個整數 val ,請你刪除鏈表中所有滿足 Node.val val 的節點,并返回 新的頭節點 。 示例 1: 輸入:head [1,2,6,3,4,5,6], val 6 輸出:[1,2,3,4,…

【JavaScript高級】構造函數、原型鏈與數據處理

目錄構造函數和原型構造函數實例成員和靜態成員構造函數的問題構造函數原型 prototype對象原型 \_\_proto\_\_constructor 構造函數構造函數、實例、原型對象三者之間的關系原型鏈JavaScript 的成員查找機制(規則)原型對象的this指向擴展內置對象繼承cal…

項目進度與預算脫節,如何進行同步管理

項目進度與預算脫節會導致資源浪費、成本超支和項目延期。進行同步管理的方法包括:建立統一的項目進度預算管理體系、實施實時監控與反饋機制、采用項目管理工具輔助同步管理。尤其是實施實時監控與反饋機制,通過持續監測進度與預算的匹配情況&#xff0…

TCP半關閉

理解TCP半關閉:像水管一樣的網絡連接控制 從全關閉到半關閉:為什么需要這種機制? 想象你和朋友正在通電話討論一個重要項目: 全關閉:就像突然掛斷電話,雙方都無法再說話半關閉:你說"我說完…

衡石科技技術手冊--儀表盤過濾控件詳解

過濾控件說明 過濾控件 的定義 過濾控件用于在儀表盤中過濾圖表數據,分為儀表盤內過濾控件和全局過濾控件。 過濾控件結構說明 字段類型描述uidSTRING過濾控件唯一識別 idappIdLONG過濾控件所屬的應用 iddataAppIdLONG字段來源是數據包時的數據包 iddashboar…

ASP.NET Core中數據綁定原理實現詳解

在ASP.NET Core 中,數據綁定是將 HTTP 請求中的數據(如表單、查詢字符串、請求體等)映射到控制器動作方法參數或模型對象的過程。以下將從原理、核心組件、執行流程及關鍵機制等方面詳細解析其實現邏輯。 一、數據綁定的核心原理與組件 1. 數…

牛客:HJ24 合唱隊[華為機考][最長遞增子集][動態規劃]

學習要點 求最長遞增字列求最長遞減子列 題目鏈接 合唱隊_牛客題霸_牛客網 題目描述 解法&#xff1a;動歸求最長遞增子列 #include <iostream> #include <vector> using namespace std;int main() {int n;while (cin >> n) {// 輸入的數組int tmp;vect…

C語言的相關基礎概念和常用基本數據類型

1.相關概念變量與常量的定義常量&#xff1a;在程序運行中其值不能改變的量。變量&#xff1a;在程序運行中其值可以改變的量。存儲器的區分 RAMROM中文名易失存儲器不易失存儲器特點掉電丟失數據&#xff0c;但存取快掉電不丟失數據&#xff0c;但存取幔標識符標識符只能…

Spring boot整合dubbo+zookeeper

Spring boot整合dubbozookeeper 下文將簡述springboot整合dubbozookeeper實現apiproviderconsumer模式&#xff0c;Api用于定于interface,provider和consumer依賴Api,provider實現api接口&#xff0c;consumer調用provider。 spring boot版本&#xff1a;3.5.3 jdk版本&#xf…

ImportError: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.32‘ not found

簡介&#xff1a;在復現 VLM-R1 項目并嘗試將其中的 GRPO 算法應用到自己的任務時&#xff0c;按照官方文檔配置好環境后&#xff0c;運行過程中遇到了一個非常離譜的錯誤&#xff1a; ImportError: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.32 not found 這個問題極…