工作量證明挖礦
在“區塊”這個章節簡短的說明了一下區塊難度這個概念。給予區塊難度意義的演算法叫做工作量證明(PoW)。
以太坊的工作量證明演算法稱之為“Ethash” (之前叫做Dagger-Hashimoto)。
演算法正式定義為:
m代表的是mixHash,n代表的是nonce,Hn代表的是新區塊的頭(不包含需要計算的nonce和mixHash),Hn是區塊頭的nonce,d是DAG ,就是一個大資料集。
在”區塊”章節,我們討論了存在於區塊頭中的多項。其中兩項叫做mixHash和nonce。也許你會回憶起:
PoW函式就是用來估算這兩項的。
mixHash和nonce到底是如何使用PoW函式來計算出來的有點複雜,如果深入瞭解的話,我們可以另寫一篇文章來講解了。但是在一個高層面上,它大致就是這樣計算的:
會為每個區塊計算一個”種子”。每個“時期”的種子都不一樣,每個時期是30,000個區塊長度。對於第一時期,種子就是32位0的hash值。對於後續的每個時期,種子就是前一個種子hash值的hash值。使用這個種子,節點可以計算一個偽隨機“快取”。
這個快取是非常有用的,因為它可以使“輕節點”的概念變成現實,輕節點概念在這篇文章的前面討論過。輕節點的目的就是讓某個節點有能力高效的校驗交易而用不著儲存整個區塊鏈的資料集。一個輕節點可以僅基於快取來校驗一個交易的有效性,因為快取可以重新生成需要校驗的特定塊。
使用這個快取,節點可以生成DAG“資料集”,資料集中的每項取決於快取中少量偽隨機選擇項。為了成為礦工,你需要要生成全資料集,所有全客戶端和礦工都儲存這個資料集,並且這個資料集隨著時間線性增長。
然後礦工可以隨機抽取資料集中的部分並將它們放入一個數學函式中Hash出一個”mixHash”。礦工會重複生成mixHash直到輸出的值小於想要的目標值nonce。當輸出的值符合這個條件的時候,nonce就被認為是有效的,然後區塊就被新增到鏈中。
挖礦作為安全機制
總的來說,PoW的目的就是以加密安全的方式證明生成的一些輸出(也就是nonce)是經過了一定量的計算的。因為除了列舉所有的可能性,沒有更好的其他方法來找到一個低於要求閾值的nonce。重複應用Hash函式的輸出均勻分佈,所以我們可以確保,在平均值上,找到滿足要求的nonce所需時間取決於難度閾值。難度係數越大,所需時間越長。這樣的話,PoW演算法就給予難度這個概念的意義了:用來加強區塊鏈的安全。
我們所說的區塊鏈的安全又是什麼意思?這非常簡單:我們想要創造一個每個人都信任的區塊鏈。像我們之前在這篇文章中討論的那樣,如果存在超過1條以上的鏈,使用者的信任就會消失,因為他們沒有能力合理的確認哪條鏈才是“有效的”。為了讓一群使用者接受儲存在區塊鏈中的潛在狀態,我們需要有一群人信任的一個權威區塊鏈。
這完完全全就是Pow演算法所做的事情:它確保特定的區塊鏈直到未來都一直保持著權威性,讓攻擊者創造一個新區塊來重寫某個歷史部分(例如清除一個交易或者建立一個假的交易)或者保持一個分叉變得非常困難。為了首先讓他們的區塊被驗證,攻擊者需要總是比網路上的其他人要更快的解決掉nonce問題,這樣網路就會相信他們的鏈是最重的鏈(基於我們之前提到的GHOST協議原則)。除非攻擊者擁有超過一半的網路挖礦能力(這種場景也被稱為大多數51%攻擊 ),要不然這基本上是不可能的。
挖礦作為財富分配機制
除了提供一個安全的區塊鏈,PoW同樣也是分配財富給那些為提供這個安全而花費自己計算力的人的一種方法。回憶一下,一個礦工挖出一個區塊的時候會獲得獎勵,包括:
為“獲勝”區塊提供的5 ether靜態區塊獎勵(馬上就會變成3 ether )
區塊中的交易在區塊內所消耗的gas
納入ommers作為區塊的一部分的額外獎勵
為了保證PoW共識演算法機制對安全和財富分配的使用是長期可持續的,以太坊努力灌輸這兩個特性:
儘可能的讓更多的人可訪問。換句話說,人們不需要特殊的或者與眾不同的硬體來執行這個演算法。這樣做的目的是為了讓財富分配模式變的儘可能的開放,以便任何人都可以提供一些算力而獲得Ether作為回報。
降低任何單個節點(或小組)能夠創造與其不成比例的利潤可能性。任何可以創造不成比例的利潤的節點擁有比較大的影響力來決定權威區塊鏈。這是件麻煩的事情,因為這降低了網路的安全性。
在區塊鏈網路中,一個與上面兩個特性有關的一個問題是PoW演算法是一個SHA256雜湊函式。這種函式的缺點就是它使用特殊的硬體(也被稱之為ASCIs)可以更加快速高效的解決nonce問題。
為了減輕這個問題,以太坊選擇讓PoW演算法(Ethhash) 提高記憶體級別難度。意思是此演算法被設計為計算出要求的nonce需要大量的記憶體和頻寬。大量記憶體的需求讓電腦平行的使用記憶體同時計算多個nonce變得極其困難,高頻寬的需求讓即使是超級電腦同時計算多個nonce也變得十分艱難。這種方式降低了中心化的風險,併為正在進行驗證的幾點提供了更加公平的競爭環境。
有一件值得注意的事情是以太坊正在從PoW共識機制漸漸轉換為一個叫做“權益證明(PoS)”的共識演算法。這就是一個比較野心的話題了,我們希望可以在未來的文章中探索這個話題。
相關文章
- 2.2 工作量證明
- 4.5 工作量證明——PoW
- BTCV欲開發「合併採礦」輔助工作量證明(AuxPoW)UX
- Go實現Pow工作量證明Go
- 工作量證明(PoW)的內部攻擊模型模型
- 比特幣CPU挖礦、GPU挖礦、礦池及礦機挖礦技術原理比特幣GPU
- LaravelZero 從零實現區塊鏈(二)工作量證明Laravel區塊鏈
- PAXG質押挖礦節點系統開發/dapp單雙幣挖礦/流動性挖礦/詳情說明/案例分析/原始碼部署APP原始碼
- MetaX質押挖礦系統開發方案說明
- 基於Java語言構建區塊鏈(二)—— 工作量證明Java區塊鏈
- USDT質押挖礦/系統開發說明/SUDT流動性挖礦技術開發搭建詳情
- 挖礦病毒
- Stratum挖礦協議&XMR挖礦流量分析協議
- 嚴打“挖礦”,對“挖礦”活動零容忍
- EPK怎麼挖礦?EPK挖礦教程詳情
- 使用Go構建區塊鏈 第2部分:工作量證明Go區塊鏈
- 區分點評挖礦說明 —— 你的見解很重要
- IPPswap丨DAPP質押挖礦/算力挖礦/LP挖礦系統開發詳情APP
- 支援雙系統挖礦,警惕新型挖礦病毒入侵
- IPP挖礦技術開發/Defi挖礦/IPPswap理財挖礦系統開發元件解析元件
- 挖礦難度
- 區塊鏈小白入門019——工作量證明機制(POW)是什麼?區塊鏈
- LP流動性挖礦系統開發(案例開發),LP流動性挖礦系統開發(詳解說明)
- 警惕國產挖礦木馬CPLMiner利用WMI駐留挖礦
- 整治“挖礦”, 綠盟科技挖礦專項治理方案來助力
- 門羅挖礦JSJS
- linux挖礦處置Linux
- IPFS/Filecoin挖礦流程
- ETH2.0,以太坊顯示卡挖礦還能挖多久,以太坊挖礦之路
- DeFi 質押挖礦系統丨DeFi 質押挖礦系統
- 區塊鏈共識機制技術一--POW(工作量證明)共識機制區塊鏈
- 區塊鏈的基石:工作量證明機制,如何驅動數字貨幣革命?區塊鏈
- IPFS挖礦開發解決方案及IPFS礦機挖礦原理及最優規劃
- 以太坊原始碼分析(42)miner挖礦部分原始碼分析CPU挖礦原始碼
- 區塊鏈挖礦演變史,一鍵挖礦逐漸成主流區塊鏈
- go-ethereum原始碼解析-miner挖礦部分原始碼分析CPU挖礦Go原始碼
- IPP算力挖礦|IPPSWAP質押挖礦系統開發詳情
- IPP質押挖礦系統開發|IPPSWAP挖礦開發系統