比特幣共識pow
A. 常見的共識演算法介紹
在非同步系統中,需要主機之間進行狀態復制,以保證每個主機達成一致的狀態共識。而在非同步系統中,主機之間可能出現故障,因此需要在默認不可靠的非同步網路中定義容錯協議,以確保各個主機達到安全可靠的狀態共識。
共識演算法其實就是一組規則,設置一組條件,篩選出具有代表性的節點。在區塊鏈系統中,存在很多這樣的篩選方案,如在公有鏈中的POW、Pos、DPOS等,而在不需要貨幣體系的許可鏈或私有鏈中,絕對信任的節點、高效的需求是公有鏈共識演算法不能提供的,對於這樣的區塊鏈,傳統的一致性共識演算法成為首選,如PBFT、PAXOS、RAFT等。
目錄
一、BFT(拜占庭容錯技術)
二、PBFT(實用拜占庭容錯演算法)
三、PAXOS
四、Raft
五、POW(工作量證明)
六、POS(權益證明)
七、DPOS(委任權益證明)
八、Ripple
拜占庭弄錯技術是一類分布式計算領域的容錯技術。拜占庭假設是由於硬體錯誤、網路擁塞或中斷以及遭到惡意攻擊的原因,計算機和網路出現不可預測的行為。拜占庭容錯用來處理這種異常行為,並滿足所要解決問題的規范。
拜占庭容錯系統是一個擁有n台節點的系統,整個系統對於每一個請求,滿足以下條件:
1)所有非拜占庭節點使用相同的輸入信息,產生同樣的結果;
2)如果輸入的信息正確,那麼所有非拜占庭節點必須接收這個信息,並計算相應的結果。
拜占庭系統普遍採用的假設條件包括:
1)拜占庭節點的行為可以是任意的,拜占庭節點之間可以共謀;
2)節點之間的錯誤是不相關的;
3)節點之間通過非同步網路連接,網路中的消息可能丟失、亂序並延時到達,但大部分協議假設消息在有限的時間里能傳達到目的地;
4)伺服器之間傳遞的信息,第三方可以嗅探到,但是不能篡改、偽造信息的內容和驗證信息的完整性。
拜占庭容錯由於其理論上的可行性而缺乏實用性,另外還需要額外的時鍾同步機制支持,演算法的復雜度也是隨節點的增加而指數級增加。
實用拜占庭容錯降低了拜占庭協議的運行復雜度,從指數級別降低到多項式級別。
PBFT是一種狀態機副本復制演算法,即服務作為狀態機進行建模,狀態機在分布式系統的不同節點進行副本復制。PBFT要求共同維護一個狀態。需要運行三類基本協議,包括一致性協議、檢查點協議和視圖更換協議。
一致性協議。一致性協議至少包含若干個階段:請求(request)、序號分配(pre-prepare)和響應(reply),可能包含相互交互(prepare),序號確認(commit)等階段。
PBFT通信模式中,每個客戶端的請求需要經過5個階段。由於客戶端不能從伺服器端獲得任何伺服器運行狀態的信息,PBFT中主節點是否發生錯誤只能由伺服器監測。如果伺服器在一段時間內都不能完成客戶端的請求,則會觸發視圖更換協議。
整個協議的基本過程如下:
1)客戶端發送請求,激活主節點的服務操作。
2)當主節點接收請求後,啟動三階段的協議以向各從節點廣播請求。
[2.1]序號分配階段,主節點給請求賦值一個序列號n,廣播序號分配消息和客戶端的請求消息m,並將構造PRE-PREPARE消息給各從節點;
[2.2]交互階段,從節點接收PRE-PREPARE消息,向其他服務節點廣播PREPARE消息;
[2.3]序號確認階段,各節點對視圖內的請求和次序進行驗證後,廣播COMMIT消息,執行收到的客戶端的請求並給客戶端以響應。
3)客戶端等待來自不同節點的響應,若有m+1個響應相同,則該響應即為運算的結果。
PBFT一般適合有對強一致性有要求的私有鏈和聯盟鏈,例如,在IBM主導的區塊鏈超級賬本項目中,PBFT是一個可選的共識協議。在Hyperledger的Fabric項目中,共識模塊被設計成可插拔的模塊,支持像PBFT、Raft等共識演算法。
在有些分布式場景下,其假設條件不需要考慮拜占庭故障,而只是處理一般的死機故障。在這種情況下,採用Paxos等協議會更加高效。。PAXOS是一種基於消息傳遞且具有高度容錯特性的一致性演算法。
PAXOS中有三類角色Proposer、Acceptor及Learner,主要交互過程在Proposer和Acceptor之間。演算法流程分為兩個階段:
phase 1
a) proposer向網路內超過半數的acceptor發送prepare消息
b) acceptor正常情況下回復promise消息
phase 2
a) 在有足夠多acceptor回復promise消息時,proposer發送accept消息
b) 正常情況下acceptor回復accepted消息
流程圖如圖所示:
PAXOS協議用於微信PaxosStore中,每分鍾調用Paxos協議過程數十億次量級。
Paxos是Lamport設計的保持分布式系統一致性的協議。但由於Paxos非常復雜,比較難以理解,因此後來出現了各種不同的實現和變種。Raft是由Stanford提出的一種更易理解的一致性演算法,意在取代目前廣為使用的Paxos演算法。
Raft最初是一個用於管理復制日誌的共識演算法,它是在非拜占庭故障下達成共識的強一致協議。Raft實現共識過程如下:首先選舉一個leader,leader從客戶端接收記賬請求、完成記賬操作、生成區塊,並復制到其他記賬節點。leader有完全的管理記賬權利,例如,leader能夠決定是否接受新的交易記錄項而無需考慮其他的記賬節點,leader可能失效或與其他節點失去聯系,這時,重新選出新的leader。
在Raft中,每個節點會處於以下三種狀態中的一種:
(1)follower:所有結點都以follower的狀態開始。如果沒收到leader消息則會變成candidate狀態;
(2)candidate:會向其他結點「拉選票」,如果得到大部分的票則成為leader。這個過程就叫做Leader選舉(Leader Election);
(3)leader:所有對系統的修改都會先經過leader。每個修改都會寫一條日誌(log entry)。leader收到修改請求後的過程如下:此過程叫做日誌復制(Log Replication)
1)復制日誌到所有follower結點
2)大部分結點響應時才提交日誌
3)通知所有follower結點日誌已提交
4)所有follower也提交日誌
5)現在整個系統處於一致的狀態
Raft階段主要分為兩個,首先是leader選舉過程,然後在選舉出來的leader基礎上進行正常操作,比如日誌復制、記賬等。
(1)leader選舉
當follower在選舉時間內未收到leader的消息,則轉換為candidate狀態。在Raft系統中:
1)任何一個伺服器都可以成為候選者candidate,只要它向其他伺服器follower發出選舉自己的請求。
2)如果其他伺服器同意了,發出OK。如果在這個過程中,有一個follower宕機,沒有收到請求選舉的要求,此時候選者可以自己選自己,只要達到N/2+1的大多數票,候選人還是可以成為leader的。
3)這樣這個候選者就成為了leader領導人,它可以向選民也就是follower發出指令,比如進行記賬。
4)以後通過心跳消息進行記賬的通知。
5)一旦這個leader崩潰了,那麼follower中有一個成為候選者,並發出邀票選舉。
6)follower同意後,其成為leader,繼續承擔記賬等指導工作。
(2)日誌復制
記賬步驟如下所示:
1)假設leader已經選出,這時客戶端發出增加一個日誌的要求;
2)leader要求follower遵從他的指令,將這個新的日誌內容追加到各自日誌中;
3)大多數follower伺服器將交易記錄寫入賬本後,確認追加成功,發出確認成功信息;
4)在下一個心跳消息中,leader會通知所有follower更新確認的項目。
對於每個新的交易記錄,重復上述過程。
在這一過程中,若發生網路通信故障,使得leader不能訪問大多數follower了,那麼leader只能正常更新它能訪問的那些follower伺服器。而大多數的伺服器follower因為沒有了leader,他們將重新選舉一個候選者作為leader,然後這個leader作為代表與外界打交道,如果外界要求其添加新的交易記錄,這個新的leader就按上述步驟通知大多數follower。當網路通信恢復,原先的leader就變成follower,在失聯階段,這個老leader的任何更新都不能算確認,必須全部回滾,接收新的leader的新的更新。
在去中心賬本系統中,每個加入這個系統的節點都要保存一份完整的賬本,但每個節點卻不能同時記賬,因為節點處於不同的環境,接收不同的信息,如果同時記賬,必然導致賬本的不一致。因此通過同時來決定那個節點擁有記賬權。
在比特幣系統中,大約每10分鍾進行一輪算力競賽,競賽的勝利者,就獲得一次記賬的權力,並向其他節點同步新增賬本信息。
PoW系統的主要特徵是計算的不對稱性。工作端要做一定難度的工作才能得出一個結果,而驗證方卻很容易通過結果來檢查工作端是不是做了相應的工作。該工作量的要求是,在某個字元串後面連接一個稱為nonce的整數值串,對連接後的字元串進行SHA256哈希運算,如果得到的哈希結果(以十六進制的形式表示)是以若干個0開頭的,則驗證通過。
比特幣網路中任何一個節點,如果想生成一個新的區塊並寫入區塊鏈,必須解出比特幣網路出的PoW問題。關鍵的3個要素是 工作量證明函數、區塊及難度值 。工作量證明函數是這道題的計算方法,區塊決定了這道題的輸入數據,難度值決定了這道題所需要的計算量。
(1)工作量證明函數就是<u style="box-sizing: border-box;"> SHA256 </u>
比特幣的區塊由區塊頭及該區塊所包含的交易列表組成。擁有80位元組固定長度的區塊頭,就是用於比特幣工作量證明的輸入字元串。
(2)難度的調整是在每個完整節點中獨立自動發生的。每2016個區塊,所有節點都會按統一的公式自動調整難度。如果區塊產生的速率比10分鍾快則增加難度,比10分鍾慢則降低難度。
公式可以總結為:新難度值=舊難度值×(過去2016個區塊花費時長/20160分鍾)
工作量證明需要有一個目標值。比特幣工作量證明的目標值(Target)的計算公式:目標值=最大目標值/難度值
其中最大目標值為一個恆定值:
目標值的大小與難度值成反比。比特幣工作量證明的達成就是礦工計算出來的 區塊哈希值必須小於目標值 。
(3)PoW能否解決拜占庭將軍問題
比特幣的PoW共識演算法是一種概率性的拜占庭協議(Probabilistic BA)
當不誠實的算力小於網路總算力的50%時,同時挖礦難度比較高(在大約10分鍾出一個區塊情況下)比特幣網路達到一致性的概念會隨確認區塊的數目增多而呈指數型增加。但當不誠實算力具一定規模,甚至不用接近50%的時候,比特幣的共識演算法並不能保證正確性,也就是,不能保證大多數的區塊由誠實節點來提供。
比特幣的共識演算法不適合於私有鏈和聯盟鏈。其原因首先是它是一個最終一致性共識演算法,不是一個強一致性共識演算法。第二個原因是其共識效率低。
擴展知識: 一致性
嚴格一致性,是在系統不發生任何故障,而且所有節點之間的通信無需任何時間這種理想的條件下,才能達到。這個時候整個系統就等價於一台機器了。在現實中,是不可能達到的。
強一致性,當分布式系統中更新操作完成之後,任何多個進程或線程,訪問系統都會獲得最新的值。
弱一致性,是指系統並不保證後續進程或線程的訪問都會返回最新的更新的值。系統在數據成功寫入之後,不承諾立即可以讀到最新寫入的值,也不會具體承諾多久讀到。但是會盡可能保證在某個時間級別(秒級)之後。可以讓數據達到一致性狀態。
最終一致性是弱一致性的特定形式。系統保證在沒有後續更新的前提下,系統最終返回上一次更新操作的值。也就是說,如果經過一段時間後要求能訪問到更新後的數據,則是最終一致性。
在股權證明PoS模式下,有一個名詞叫幣齡,每個幣每天產生1幣齡,比如你持有100個幣,總共持有了30天,那麼,此時你的幣齡就為3000,這個時候,如果你發現了一個PoS區塊,你的幣齡就會被清空為0。你每被清空365幣齡,你將會從區塊中獲得0.05個幣的利息(假定利息可理解為年利率5%),那麼在這個案例中,利息 = 3000 * 5% / 365 = 0.41個幣,這下就很有意思了,持幣有利息。
點點幣(Peercoin)是首先採用權益證明的貨幣。,點點幣的權益證明機制結合了隨機化與幣齡的概念,未使用至少30天的幣可以參與競爭下一區塊,越久和越大的幣集有更大的可能去簽名下一區塊。一旦幣的權益被用於簽名一個區塊,則幣齡將清為零,這樣必須等待至少30日才能簽署另一區塊。
PoS機制雖然考慮到了PoW的不足,但依據權益結余來選擇,會導致首富賬戶的權力更大,有可能支配記賬權。股份授權證明機制(Delegated Proof of Stake,DPoS)的出現正是基於解決PoW機制和PoS機制的這類不足。
比特股(Bitshare)是一類採用DPoS機制的密碼貨幣。它的原理是,讓每一個持有比特股的人進行投票,由此產生101位代表 , 我們可以將其理解為101個超級節點或者礦池,而這101個超級節點彼此的權利是完全相等的。如果代表不能履行他們的職責(當輪到他們時,沒能生成區塊),他們會被除名,網路會選出新的超級節點來取代他們。
比特股引入了見證人這個概念,見證人可以生成區塊,每一個持有比特股的人都可以投票選舉見證人。得到總同意票數中的前N個(N通常定義為101)候選者可以當選為見證人,當選見證人的個數(N)需滿足:至少一半的參與投票者相信N已經充分地去中心化。
見證人的候選名單每個維護周期(1天)更新一次。見證人然後隨機排列,每個見證人按序有2秒的許可權時間生成區塊,若見證人在給定的時間片不能生成區塊,區塊生成許可權交給下一個時間片對應的見證人。
比特股還設計了另外一類競選,代表競選。選出的代表擁有提出改變網路參數的特權,包括交易費用、區塊大小、見證人費用和區塊區間。若大多數代表同意所提出的改變,持股人有兩周的審查期,這期間可以罷免代表並廢止所提出的改變。這一設計確保代表技術上沒有直接修改參數的權利以及所有的網路參數的改變最終需得到持股人的同意。
Ripple(瑞波)是一種基於互聯網的開源支付協議,在Ripple的網路中,交易由客戶端(應用)發起,經過追蹤節點(tracking node)或驗證節點(validating node)把交易廣播到整個網路中。
追蹤節點的主要功能是分發交易信息以及響應客戶端的賬本請求。驗證節點除包含追蹤節點的所有功能外,還能夠通過共識協議,在賬本中增加新的賬本實例數據。
Ripple的共識達成發生在驗證節點之間,每個驗證節點都預先配置了一份可信任節點名單,稱為UNL(Unique Node List)。在名單上的節點可對交易達成進行投票。每隔幾秒,Ripple網路將進行如下共識過程:
1)每個驗證節點會不斷收到從網路發送過來的交易,通過與本地賬本數據驗證後,不合法的交易直接丟棄,合法的交易將匯總成交易候選集(candidate set)。交易候選集裡面還包括之前共識過程無法確認而遺留下來的交易。
2)每個驗證節點把自己的交易候選集作為提案發送給其他驗證節點。
3)驗證節點在收到其他節點發來的提案後,如果不是來自UNL上的節點,則忽略該提案;如果是來自UNL上的節點,就會對比提案中的交易和本地的交易候選集,如果有相同的交易,該交易就獲得一票。在一定時間內,當交易獲得超過50%的票數時,則該交易進入下一輪。沒有超過50%的交易,將留待下一次共識過程去確認。
4)驗證節點把超過50%票數的交易作為提案發給其他節點,同時提高所需票數的閾值到60%,重復步驟3)、步驟4),直到閾值達到80%。
5)驗證節點把經過80%UNL節點確認的交易正式寫入本地的賬本數據中,稱為最後關閉賬本(Last Closed Ledger),即賬本最後(最新)的狀態。
在Ripple的共識演算法中,參與投票節點的身份是事先知道的。該共識演算法只適合於許可權鏈(Permissioned chain)的場景。Ripple共識演算法的拜占庭容錯(BFT)能力為(n-1)/5,即可以容忍整個網路中20%的節點出現拜占庭錯誤而不影響正確的共識。
在區塊鏈網路中,由於應用場景的不同,所設計的目標各異,不同的區塊鏈系統採用了不同的共識演算法。一般來說,在私有鏈和聯盟鏈情況下,對一致性、正確性有很強的要求。一般來說要採用強一致性的共識演算法。而在公有鏈情況下,對一致性和正確性通常沒法做到百分之百,通常採用最終一致性(Eventual Consistency)的共識演算法。
共識演算法的選擇與應用場景高度相關,可信環境使用paxos 或者raft,帶許可的聯盟可使用pbft ,非許可鏈可以是pow,pos,ripple共識等,根據對手方信任度分級,自由選擇共識機制。
B. 不可能三角與共識機制
區塊鏈不可能三角是由巴比特創始人長峽先生最早提出來的,所說的原理是:去中心化、安全、環保構成一個不可能三角形,設計一個符合其中兩個特性的數字貨幣,則必然會使得第三個特性無法達成。例如設計一個既環保又安全的密碼學貨幣,它必然是中心化的。
當時出現了很多採用其他共識機制而誕生的數字貨幣,例如PPcoin、Nextcoin、Ripple等,使得pow的共識機制在比特幣社區也飽受爭議,多數否定pow共識機制的社區成員認為這種共識機制是在浪費世界電力在做著無用的數學計算。而關鍵的是,中本聰在白皮書里對比特幣共識機制的選擇上並沒有給出解釋,pos即將取代pow的呼聲愈演愈烈。
在這種情況之下,長峽先生提出了這個不可能三角的理論,用博弈論解讀pos必然導致中心化的結果。我不否定pow,也不否定pos,但在不同的token機制下,其實有著不一樣的取捨。我們都知道,跨地域、跨國家的銀行間轉賬除了要付出很高的手續費之外,國與國之間的貨幣結算其實成本也是很高的,目前主要採用飛機運輸的方式,按月進行結算。其次在各個商業銀行將自己的儲備貨幣發放到各個分支銀行的過程中也是花費了大量的人力和物力,這其實是貨幣本身的屬性造成的。貨幣在去中心化、安全、環保這三種特性中,最重要的是安全,其次才是效率。而比特幣利用pow的共識機制,耗費了巨大的電力最大程度地保證了貨幣的安全特性,並同時兼容去中心化。在貨幣屬性的架構搭建來說已經是最優解,而類似ripple這類以犧牲去中心化而提升效率的做法則更適用於結算。
而eos採用的dpos共識機制也是飽受爭議,大家認為21個主節點的運行完全沒有施行區塊鏈去中心化的特點。但是各位得想一想,在這個不可能三角的框架下,對於智能合約這種商業的產品,是效率更加重要還是去中心化更加重要,相信在不同人的心裡已經有了答案了。所以或者我們無法確認到底哪些共識機制最好,但我們可以在不同的應用場景和不同的token屬性中找到那個最優的一種。
C. 什麼是POW和POS,二者區別聯系
POW:全稱Proof of Work,工作量證明。
POS:全稱Proof of Stake,權益證明。
這兩者都區塊鏈的共識機制,是數字貨幣的記賬方法。
區別是:
1、POW機制:工作量證明機制即對於工作量的證明,是生成要加入到區塊鏈中的一筆新的交易信息(即新區塊)時必須滿足的要求。在基於工作量證明機制構建的區塊鏈網路中,節點通過計算隨機哈希散列的數值解爭奪記賬權,求得正確的數值解以生成區塊的能力是節點算力的具體表現。
2、POS機制:權益證明要求證明人提供一定數量加密貨幣的所有權即可。權益證明機制的運作方式是,當創造一個新區塊時,礦工需要創建一個「幣權」交易,交易會按照預先設定的比例把一些幣發送給礦工本身。權益證明機制根據每個節點擁有代幣的比例和時間,依據演算法等比例地降低節點的挖礦難度,從而加快了尋找隨機數的速度。
(3)比特幣共識pow擴展閱讀:
比特幣(BitCoin)的概念最初由中本聰在2009年提出,根據中本聰的思路設計發布的開源軟體以及建構其上的P2P網路。比特幣是一種P2P形式的數字貨幣。點對點的傳輸意味著一個去中心化的支付系統。
與大多數貨幣不同,比特幣不依靠特定貨幣機構發行,它依據特定演算法,通過大量的計算產生,比特幣經濟使用整個P2P網路中眾多節點構成的分布式資料庫來確認並記錄所有的交易行為,並使用密碼學的設計來確保貨幣流通各個環節安全性。P2P的去中心化特性與演算法本身可以確保無法通過大量製造比特幣來人為操控幣值。
D. 區塊鏈中PoW是指什麼
是指工作量證明機制,是區塊鏈的一種共識機制。指在區塊鏈系統中,根據每個節點在運算的過程中所做出的貢獻來確定許可權的一種演算法。工作量證明機制是現在區塊鏈應用最為廣泛的一種共識機制。共識機制是區塊鏈系統中很重要的一部分,如果出現問題,那麼整個系統都會出問題,在區塊鏈開發中是必須要注意的。這是之前我一個在煊凌科技上班的人告訴我的,他雖然只是裡面的銷售,但是對區塊鏈的了解也比大部分人要全面。
E. POW共識機制是什麼意思
比特幣系統會讓加入網路的每一個節點進行哈希運算,誰先求出一個合適的解,誰就可以獲得本次記賬權。一旦本次記賬權被人搶走,所有的節點就會開始進行下一個記賬權的爭奪,也就是進行哈希運算。
F. 比特幣的四大弊端你知道嗎
論述題:請回答比特幣有哪四大弊端?並論述目前有哪些技術能彌補這些不足?
答:比特幣的四大弊端分別是:交易確認時間長、需要大量算力投入、難以承載商用場景、社區治理過於片面。目前Bitterfly——蝴蝶矩陣熵權共識演算法能彌補上述不足。
1. 交易時間縮短至15秒,賦能商業應用新生態
比特幣交易的生命周期始於交易的創建,目前比特幣系統中一般取6個區塊作為交易確認時間,即在交易被寫入區塊後再等待6個基於該區塊生成(一般是60分鍾),再實際進行該交易其他資產的交接,而這個過程所需的時間是非常漫長的。
針對這個問題,Bitterfly改進了工作量證明機制:首先,Bitterfly的共識達成發生在驗證節點之間。參與投票節點的身份是事先知道的,每個驗證節點都預先配置了一份可信任節點名單,在名單上的節點可對交易達成進行投票。其次,Bitterfly共識演算法的拜占庭容錯(BFT)能力為(n-1)/5,即可以容忍整個網路中20%的節點出現拜占庭錯誤而不影響正確的共識。因此,演算法的效率比POW等匿名共識演算法要高效,商用級的區塊鏈確認速度(5000+TPS)將交易的確認時間縮短到了幾秒鍾,完全可以滿足絕大多數的交易不受時間限制,實時進行。
2. Cloud-API雲伺服器挖礦,減少算力+電力投入
從2010年開始挖礦,隨著越來越多的礦工加入比特幣網路中,挖礦的難度急劇增大,全網每秒要進行幾萬億次的哈希計算,挖礦對電腦的硬體和礦機的性能提出了更加苛刻的要求。隨著被挖出的比特幣數量逐漸減少,礦工們為了確保有利可圖,成千上萬台礦機每天24小時挖礦,用電量消耗十分龐大。據英國《每日電訊報》報道,開采這種加密貨幣所需電力激增至每年77.78太瓦時,相當於智利的總耗電量。
Bitterfly作為一條具有開放性和包容性的公鏈,改進了比特幣的挖礦方式,首次提出雲伺服器挖礦Cloud-API的概念。Cloud-API支持多種類型計算設備,包括接入全球多個雲伺服器供應商,如亞馬遜雲、微軟雲、阿里雲、谷歌雲、IBM雲等,通過高效聚合全球算力資源,實現挖礦裂變效應,不僅大幅度降低了挖礦門檻,還能有效避免資源浪費。從投資成本角度來說,在保證礦機高性能運作下,節約電力將使傳統的專用礦機不再具有優勢甚至面臨被淘汰的境地。
3. POW+Bitterfly雙層演算法,承載商業應用之需
比特幣由於系統吞度量(TPS)每秒處理的數量過低,很容易造成網路擁堵嚴重,難以滿足用戶交易的核心訴求。在落地應用方面,由於擴展性差、交易費用高、確認時間長等問題,導致比特幣難以承載更大的商用場景。隨著「區塊鏈+」的概念不斷深入推進,用戶已從單純的關注數字貨幣價格和交易,逐步轉為更加重視其使用范圍的大小。根據市場需求提高落地應用能力是比特幣和其他數字貨幣的發展趨勢。
Bitterfly開創性地提出了POW+Bitterfly雙層演算法,即改進型 PBFT 演算法。Bitterfly通過 POW 演算法確保底層區塊足夠安全的同時,以價值儲存、去中心化數字資產兌換、支付與清算等技術,服務多種商業生態和應用。根據使用者(個人、企業、政府)、資產所有者、服務運營商、產業鏈上不同經營主體(設備供應商、在線電商、金融機構、物流企業等),以及區塊鏈業務特點,對底層進行模塊化拆分,達到應對多維度、多角色的安全防護、數據隱私保密、分布式數據存儲、可信數據資產接入和交易。
4. 21個創世節點,凝聚社區共識
比特幣社區的上層管理就算是最低門檻也是大部分人的天花板,因為比特幣的社區治理更側重於技術的升級與維護,且治理體系非常復雜,需要極強的專業能力。雖然社區「人人可參與」,只要大體上認同比特幣的核心價值並願意參與其中相關活動,就可以被認為是社區成員,但相較於金字塔頂部而言這些人缺乏認同感,流動性較大。
所以,Bitterfly從機制上首要倡導的就是讓每個節點主動推廣Bitterfly的價值觀,在理念上達成一致。其次,以「做貢獻,得獎勵」的方式促進社區共享共治,形成合力穩健發展。Bitterfly社區將不設准入門檻,不論是否擁有技術背景,均可競爭節點資格。Bitterfly總共誕生210個節點,節點會通過多種方式來幫助社區未來的發展。
近來在國外科研社交服務網站Researchgate上,一篇由哈佛大學學生發表的文章:「Bitterfly:蝴蝶熵權共識演算法」引起了廣泛關注。文章在肯定比特幣價值的同時,也指出了POW共識演算法的弊端,並表明在技術方面比特幣對區塊鏈的未來難以為繼。
在比特幣問世11年後,它能否繼續支撐整個區塊鏈行業被再一次放在話題桌上討論,
而該名學生在提出問題的同時,也同樣給出了解決方案,那就是蝴蝶熵權共識演算法。蝴蝶振翅,颶風將起。Bitterfly變革世界的力量從每一次全力以赴的展翅而始。
點擊頭像關注更多內容
G. POW & POS,傻傻分不清楚的共識機制
什麼是共識機制?
我在開更的第一篇文章,就簡單講解了數字貨幣世界的16個最高頻名詞,其中一個就是共識機制,還記得嗎?
為什麼要有共識機制呢?
這就必須要解釋一下在分布式系統中不得不了解的「拜占庭將軍問題」了。
拜占庭將軍問題(The Byzantine Generals Problem)可以總結為一句話:
在古代,11位忠誠的、不同位置的將軍,如何排除叛徒的影響,對進攻或撤退達成一致。
當然,拜占庭將軍問題並不是如今才提出的,我們大中華在春秋戰國時期就發明了「虎符」這個神奇的方式來保障命令的正確執行。
在分布系數系統中,各個節點就是「拜占庭將軍」,演算法執行中的任意一個錯誤就是「叛徒」。
為了盡可能地排除錯誤、快速達成一致,來讓系統有效地、正確地運行,便應運而生了各種「共識機制」。
————————————————
下面,我們就來一起學習數字貨幣世界中常見的幾種共識機制:
PoW,工作量證明 Proof of Work
PoW是比特幣所採用的共識機制,最早是由Adam Back為了解決垃圾郵件的問題而開發的一個「哈希現金Hashcash」程序。
比特幣採用的是SHA256的單向函數,其具體的工作原理實在太專業,我們只需要理解到「SHA256的結果很容易驗證,但是要將其計算出來,需要不斷嘗試運算,直到匹配到某個隨機數;技術上而言,任何新增區塊都需要經過232394億運算才能得到」的程度,感興趣的小夥伴可以搜索SHA256去深入學習。
因此,只要礦工出示運算結果,那通過PoW,全網節點就認可了他所付出的成本,承認新的區塊獎勵屬於他。
如此大量的運算相當浪費資源,實際上並沒有任何科學或實際用途,只是為了實踐工作量證明機制、阻止攻擊者偽裝成節點來控制網路。
雖然在2009年時為了構建這種去中心化的、允許所有人可以免費參與的全球貨幣網路,沒有更好的選擇;但是發展到如今,已經有了其他不需要大量浪費算力的證明機制,比如我們下面就要提到的,PoS權益證明。
————————————————
PoS,權益證明 Proof of Stake
主要思想是:節點記賬權的獲得難度與節點持有的權益成反比,也就是說,一個節點擁有的幣越多、時間越久,越容易獲取記賬權,也就越容易獲取區塊獎勵。
實際上,最初的PoS是PoW的一種升級,根據每個節點的幣齡,來等比例地降低挖礦難度,從而加快找到隨機數的速度。
什麼是幣齡呢?
幣齡=數量*擁有天數。
由於區塊鏈中的每筆交易記錄都會被標記時間戳,這個時間戳就可以作為幣齡的證明,因此幣齡也不可能被輕易偽造。
比如A從B那裡收到10個幣,並且持有了90天,那麼,A就擁有了900的幣齡;如果A賣了這10個幣,這900幣齡就被消耗了;
後來,為了徹底擺脫PoW這種依靠算力的共識機制,PoS引入了「利息」的概念;年利率是在PoS機制最初確認時就設定的,一般不會變化。
利息=(幣齡*年利率)/365 ,如果利率是1%,在上個例子中,A就可以得到0.02466個幣的利息。
如此一來,PoS區塊鏈的作用過程就可以這樣描述:
在初期,通過PoW機制,產生創世幣;
在創世幣達到一定規模時,PoS機制開始作用,交易時消耗幣齡、獲得產生區塊的優先權,並獲取利息,同時PoW機制由於消耗太多資源、浪費算力而逐漸淡出;
最終系統中僅剩PoS來維持正常運作。
目前大家所熟悉的以太坊,主要還是採用PoW的機制,不過正在轉向PoS。
————————————————
大家了解了PoW和PoS,在遇到其他共識機制的時候,相信也會比較快得就能理解。
比如:股份授權證明DPOS,類似於董事會投票;燃燒證明POB;沉澱證明POD;能力證明POC;消逝時間證明PODT,等等。
就不在這里為大家一一展開了,感興趣的同學可以網路或知乎一下~
H. 就目前來看,比特幣設計之初有哪些設計的不完善的地方
比特幣設定了最大發售數量,並且比特幣執行分布式系統買賣,游離於世界各國政府以外,不會受到政府的行政職能管束。更為重要的是,造成比特幣的程序必須用電腦來執行,必須耗費電力能源,因而,形成了成本,而且造成一枚一個新的比特幣的成本非常高。比特幣的數量比較有限,並且成本非常高。這種體制毫無疑問製造了比特幣能夠「資本增值」的營銷手段,讓比特幣成為一種天然的投機性標底。
難度系數調整管理機制周期時間過長可能導致卒死、投資模型設計方案太簡單這些…很多數字貨幣一開始設定的目標就是要擊敗比特幣,因此立在利益相關的一方大多以批判比特幣和描述自己怎樣解決比特幣並沒有改進的地方為立腳點,但大多數以失敗告終,因此只能偷偷的修改了自己的目標和跑道,默默地承認了比特幣的地位。也有很多人口中不斷在發布著比特幣存有如何如何問題的言論,人體卻異常誠實的大佔比配備比特幣。
I. 區塊鏈共識機制之一:POW工作量證明機制
區塊鏈可以理解為一個不可篡改的公共賬本,所有參與者都能驗證交易並進行記賬,即為分布式賬本。那到底由誰來記賬?又如何保證賬本的一致性、准確性呢?也就是區塊鏈的共識機制是如何的?
區塊鏈的共識機制就是解決由誰來記賬(構造區塊),以及如何維護區塊鏈的一致性問題。目前區塊鏈項目採用的共識機制有多種,如:POW工作量證明機制,POS權益證明機制,DPOS股份授權證明機制等等。本文說明POW工作量證明機制。
區塊鏈的第一個成功應用比特幣系統採用的POW工作量證明機制。即以比特幣系統為例說明POW機制,首先比特幣系統有一套激勵機制讓所有參與者競爭記賬的權利,即誰擁有記賬權誰將獲取構造新區塊的比特幣獎勵(目前獎勵為12.5比特幣),同時獲取新區塊內所有交易的手續費作為獎勵。
參與者如何競爭記賬權利呢?參與者通過自己的算力計算一道數學難題,誰先計算的結果,誰就擁有了記賬的權利,也就可獲得構造新區塊的獎勵。這道數學難題就是尋找一個隨機數Nonce,使得對區塊頭的哈希計算的結果小於目標值,Nonce本身是區塊頭中的一個欄位,所以通過不斷的嘗試Nonce的值,以滿足區塊頭的哈希計算結果小於目標值。通過動態調整目標值,即可調整計算的Nonce值的難度。
關於哈希計算Nonce的過程通常類比為擲篩子游戲,基於參與游戲的篩子的個數通過調整擲得篩子的點數可調整游戲的難度。例如:100個人參與擲篩子,總共有100個篩子,要求擲得點數為100為贏,則100個人誰先擲得點數100即為勝利者,即擁有了記賬權。如果發現大家擲出100點的時間太快,則可增加難度,要求擲得點數為80為贏。如果又有100個人參與游戲,則游戲中增加了篩子數,如:篩子數增加為200個,同樣通過設置擲得點數來調整游戲的難度。
篩子類似於比特幣網路的算力,擲得點數類似於比特幣網路可動態調整的目標值。
區塊鏈以最長的鏈條視為正確的鏈條,如果存在同時出現兩個區塊,會暫時並行記錄兩個區塊,後續再生成的區塊基於其中的某一個區塊,將會形成的最長的鏈條作為一致性的鏈條,另外一個區塊將會被丟棄,比特幣是基於6個區塊的確認,所以被丟棄的區塊將不會獲得比特幣系統的獎勵,也就是白白將競爭記賬權的算力(電費)浪費了。基於工作量的激勵,參與者必然盡最大能力構造正確的區塊,也就是滿足區塊鏈的一致性。即全網的所有用戶可以達成唯一的一致性的公共賬本。
目前比特幣系統全網算力已達到驚人的24.75EH/s,其中1E=1000P,1P=1000T,1T=1000G,1G=1000M,1M=1000K,1K=1000,H/s為每秒一次哈希計算(哈希碰撞),也就是每秒進行24.75E次哈希計算,且仍有持續的算力加入比特幣系統。比特幣記賬權的競爭,提供算力的硬體從CPU,GPU,專業礦機,礦池。目前單機版的專業礦機已無法競爭到記賬權,必須由多台礦機組合為礦池才能競爭到記賬權。
J. pos機制解決了pow的問題
基於權益證明(PoS),通常將金錢作為股權使用。POA指的是身份的使用。這背後的想法是,人們會注意自己的名聲,因此會被勸阻不要惡意行事。POW 工作量證明支持不可信的分布式共識,這對於加密貨幣等行業非常重要。它涉及挖掘過程,最好描述為執行計算以驗證交易的合法性和創建新貨幣。第一個完成計算的礦工將獲得一枚新代幣,並將區塊添加到鏈中。POS 權益證明的定義是在決定誰將創建新塊時使用權益關系。這個權益的取決於每個人持有的代幣數量。持有更多代幣的人更有可能被選為下一個塊的驗證器。獎勵來自交易費用,因為在這個過程中不會產生新的代幣。