1 工作量證明(PoW,Proof of Work)
為防止惡意攻擊,節點需完成複雜計算任務(即“挖礦”)來證明他們的工作量。這是一種共識機制,確保只有合法的區塊可被添入區塊鏈。
第一代共識機制,比特幣的基礎,即“按勞取酬”,你付出多少工作量,就獲得多少報酬。
網路世界裡,勞動就是你為網路提供的計算服務(算力x時長),提供這種服務的全過程就是“挖礦”,能力越強獲得越多。
2 PoW機制
主要是透過競爭記賬的方式來解決區塊鏈網路中各個節點的一致性問題,其原理:
- 區塊鏈中的每個節點都能自由參與資料處理,即打包區塊
- 為保證網路中的各個節點能達成一致,PoW就規定,當一筆交易產生後,每一個想要記賬的節點都需要依靠自己的計算能力與他人競爭、爭奪記賬的權利
- 最終,獲得記賬權的人,他所打包的區塊會連線到區塊鏈的鏈上,同時他處理的資料,也會被全網的其他節點記入各自的小賬本中
PoW演算法中最基本的技術原理是使用雜湊法。假設求雜湊值Hash(r),若原始資料為r(raw),則運算結果為R(Result)。
雜湊函式Hash()的特性是,對任意輸入值r,得出結果R,並且無法從R反推回r。
當輸入的原始資料r變動1位元時,其結果R值完全改變。在比特幣的PoW演算法中,引入演算法難度d和隨機值n,得到以下公式:
該公式要求在填入隨機值n的情況下,計算結果Rd的前d位元組必須為0。
由於雜湊函式結果的未知性,每個礦工都要做大量運算之後,才能得出正確結果,而算出結果廣播給全網之後,其他節點只需要進行一次雜湊運算即可校驗。
PoW演算法就是採用這種方式讓計算消耗資源,而校驗僅需一次。
3 PoW模型
token每一筆交易都會透過廣播的方式,把交易內容傳送到所有的節點。
我們知道計算Hash值的時候是包含Data資料的,總不能一筆交易就是一個Block,所以比特幣還有一些其他的規定。如每個區塊至少包含500筆交易,每筆交易至少以250位元組,每一個區塊的大小上限是2MB等。
所以挖礦的過程就是啟動挖礦軟體,成為一個節點,能夠接收到系統中交易的廣播訊息,為了得到記賬權當收到500筆交易的時候就開始執行上面工作量證明過程的計算。
當計算出滿足條件的Hash值時就廣播告訴其他節點,如果是第一個完成的就會獲得記賬權,也會獲得獎勵。
當然,其他節點也會做一下驗證,因為Block中有Nonce值,所以只需要做一次Hash計算就可以了,這讓驗證變得非常容易。
4 優點
省資源
不需要挖礦,不需要大量耗費電力和能源。
更去中心化
相對於比特幣等PoW型別的token,更加去中心化,相比PoW演算法的51%算力攻擊,PoS需要購買51%的token,成本更高,沒有攻擊意義。
避免通貨膨脹
PoS機制的加密貨幣按一定的年利率新增貨幣,可以有效避免緊縮出現,保持基本穩定。
5 缺點
POS會面臨發token的問題,起初只有創世塊上有token,意味著只有這個節點可以挖礦,所以讓token分散出去才能讓網路壯大,所以早期採取的是POW+POS,即第一階段POW挖礦,第二階段POS挖礦,後來ERC20合約token出現後,可以只存在POS的挖礦形式。
開發者作惡:純PoS機制的token,只能透過IPO的方式發行,這就導致“少數人”(通常是開發者)獲得大量成本極低的token,很有可能造成大面積的拋售。
幣齡其實就是時間,一旦挖礦者囤積一定的token,很久很久之後發起攻擊,這樣將很容易拿到記賬權。
礦工可囤積token從而導致貨幣流通困難。
POS面臨的最嚴重的一個問題就是無成本利益問題,在PoS系統中做任何事幾乎沒有成本,比如在PoS系統上挖礦幾乎沒有成本,這也就意味著分叉非常方便。
6 比特幣錢包
關於比特幣錢包,有兩個概念,一個是指"錢包應用"丹一個是指"存放私鑰的檔案"。我們只需要知道錢包中有金鑰就可以了。
錢包可分兩大類:
- 第一類是非確定性錢包,就是一對金鑰,金鑰之間沒有關聯性
- 第二類是確定性錢包,所有的金鑰都是由一個金鑰生成的,這個金鑰被稱為錢包的種子sed)
使用確定性錢包只需要記住種子就可以,透過相同的種子會生成相同的金鑰
透過種子生成金鑰的方式也有很多種,最常使用的就是樹狀結構
透過這種方式生成的錢包就是我們常用的HD 錢包(分層確定性錢包)
7 錢包原理
生成助記詞:
- 生成一個長度為 128~256 位 (bits) 的隨機序列(熵)
- 取熵雜湊後的前n位作為校驗和(n=熵長度/32)
- 隨機序列+校驗和
- 把步驟三得到的結果每 11 位切割
- 步驟四得到的每 11 位位元組匹配詞庫的一個詞
- 步驟五得到的結果就是助記詞串
關注我,緊跟本系列專欄文章,咱們下篇再續!
作者簡介:魔都架構師,多家大廠後端一線研發經驗,在分散式系統設計、資料平臺架構和AI應用開發等領域都有豐富實踐經驗。
各大技術社群頭部專家博主。具有豐富的引領團隊經驗,深厚業務架構和解決方案的積累。
負責:
- 中央/分銷預訂系統效能最佳化
- 活動&券等營銷中臺建設
- 交易平臺及資料中臺等架構和開發設計
- 車聯網核心平臺-物聯網連線平臺、大資料平臺架構設計及最佳化
- LLM Agent應用開發
- 區塊鏈應用開發
目前主攻市級軟體專案設計、構建服務全社會的應用系統。
參考:
- 程式設計嚴選網
本文由部落格一文多發平臺 OpenWrite 釋出!