從POW到Casper來感受下以太坊共識機制演進藝術(上)

囚徒戈多第4篇文章,閱讀需要5分鐘

這或許是全網解釋區塊鏈的價值核心--共識機制最詳細的文章。

前言

區塊鏈起源於比特幣,發展於以太坊。想對區塊鏈有系統性的認知,最好先熟知比特幣和以太坊的知識。這是我從比特幣和以太坊寫起的原因。

而對區塊鏈專案來說,共識機制是其根本價值所在。

共識是區塊鏈應用落地的基礎,指的是參與者如何在此係統中進行協作。所以,本文希望能對比特幣和以太坊的共識機制做總結,幫助大家更好地認識區塊鏈的價值。

正文

初遇比特幣,很多人看到的是一個周身被貪婪、欺騙所圍繞,充滿暴戾與醜聞的事物。

而當有人試著吹散泡沫,探尋本源時,他們會為比特幣所構建的“共識”所折服。感覺像是走入一個全自動化工廠,每個處理事情的節點,都按照既定規則運轉。

從廣義上講,共識是一種社會協作方式,可在不同領域應用,提升效率,是比特幣區別於“鬱金香”、“密西西比”等泡沫事件最本質的不同。

另一方面,比特幣共識並不完美。由於中本聰的原意是創造一種“錢”,所以在CAP原則(指的是在一個分散式系統中,一致性Consistency、可用性Availability、分割槽容錯性Partition tolerance,三者不可得兼)框架下,他選擇了一致性和分割槽容錯性,弱化了可用性,使比特幣共識在擴充套件應用時,遇到了難題。

從POW到Casper來感受下以太坊共識機制演進藝術(上)

CAP原則,文字內容來源於百度百科

基於此,有人試著去研究不同的共識機制,彌補比特幣在應用性上的不足。

以太坊社群是其中最著名的一群人,他們正嘗試把權益證明POS引入到以太坊中,並將此計劃命名為Casper(取自同名電影,中文譯為《鬼馬小精靈》)。

本文將圍繞比特幣工作量證明POW與以太坊權益證明計劃Casper展開敘述。

比特幣工作量證明POW

起初,中本聰想創造一種提前約定好發行機制,並且一旦發行,任何人都無法操控的貨幣。這樣就避免了有人因一己私利,透過控制貨幣發行量,變相盤剝民眾利益。

為了達成目的。首先,中本聰將比特幣總量設定在2100萬個,並利用動態函式,規定每10分鐘產出一定數量。這2100萬個幣,將於2140年全部流通於世。

其次,比特幣交易記錄不受任何資料中心控制,而是利用點對點技術(P2P),讓使用者之間直接轉賬,過程就像用微信互傳檔案一樣。

為了維護系統正常執行,中本聰將新產出的比特幣與轉賬手續費,獎勵給記賬參與者(礦工,又稱節點)。幹活的人得到了獎勵,這樣便有人心甘情願的為系統付出了。

為了不出差錯,中本聰需要採取一套執行規則來使系統符合以下原則:

1。 結果一致。每個節點記錄的全網交易記錄是一致的。

2。 不可篡改。任何人無法篡改交易記錄。

3。 有效率。貨幣系統工作效率高。

4。 可持續。貨幣系統可一直執行下去。

而用以保證系統正常執行的規則,便是共識機制。

比特幣共識機制是如何運轉的呢?

當用戶A給使用者B轉賬時,節點(包括AB自己)的比特幣客戶端,會收到這一資訊。

同時,所有參與者會在客戶端內,利用計算裝置(礦機)每隔10分鐘計算一道“雜湊難題”。這道難題出現時間及難度,受動態函式控制,以保證10分鐘間隔。

這個過程被稱作工作量證明(POW)。

率先計算出正確結果的節點,將根據程式碼審查交易資訊是否屬實,將包括AB使用者在內、一定時間段內的轉賬資訊,打包在一起確認(打包成“塊”),並將當前的“塊”,連線到此前的“塊”上,生成“區塊鏈”,並同步(廣播)至全網所有比特幣節點。

此時,A給B的轉賬交易會判定為有效。

從POW到Casper來感受下以太坊共識機制演進藝術(上)

記賬節點獲得新產生的比特幣及轉賬手續費,作為獎勵,並開始新一輪的雜湊難題計算。

此外,記賬結果以“最長鏈”為準。若有2個參與者同時完成工作量證明,並打包區塊,則他倆會開始“競賽”,誰最先產生新的區塊,就以誰為準。

工作量證明機制(POW)使每次參與記賬的節點是唯一的,計算結果會被廣播至全網且以最長鏈為準,這保證了全網節點交易記錄是一致的。

此外,在記賬時,節點同時會檢查與該交易有關的、所有地址的“未被花費的餘額”(UTXO)。比如,檢查A是否有未被花費的餘額,則需檢查A是否收到過更早的轉賬,以此類推,直到“創世交易”。

理論上,只要“創世交易”不變,當前每個人未被花費餘額就是確定的。

創世交易不變,加上交易記錄分散式儲存,使得任何人無法篡改交易記錄。

從POW到Casper來感受下以太坊共識機制演進藝術(上)

比特幣生態

能源消耗與“下議院悲劇”

事實上,比特幣為了保證系統一致性,犧牲了可用性,並引出一系列問題。

首先,比特幣不是有效率的。

一方面,受到大小的限制,每個“塊”包含4000條交易資料,按10分鐘的生成時間換算,相當於每秒處理6。67條交易,以至比特幣的全網未確認交易數一度達12134筆,這對貨幣來說是不合格的。

另一方面,工作量證明機制消耗大量無謂資源。每次打包成塊時,所有節點分別計算雜湊難題,而最終有資格記賬權的節點卻是唯一的。其餘節點所做工作皆是浪費。

此外,為了有更大機率獲得記賬權,人們發明了專門的礦機來提高算力。而礦機在計算雜湊難題過程中,消耗大量電力。據統計,目前全球比特幣礦場年耗電量,超過捷克等全球159個國家。

其次,比特幣或許不是可持續的,獨特的發行機制或許會讓比特幣陷入“下議院悲劇”。

由於中本聰規定,每產出21萬個區塊,新比特幣獎勵減半。到2140年,比特幣全部被挖出時,礦工獎勵僅剩使用者轉賬手續費。

同時,別忘了“塊”的大小是有限制的,所以手續費數量是一定的。

於是,在未來某一時刻,當礦工記賬獲得的比特幣獎勵,與礦機硬體、電力地租等成本持平時,大量礦工將退出比特幣系統,算力集中在少數人手裡。

他們可以憑藉已掌握的算力,在之前的區塊上,延伸出新的“最長鏈”,從而將另一條鏈作廢,從而將自己已經支付的幣取回。這會對比特幣系統造成毀滅性打擊。

從POW到Casper來感受下以太坊共識機制演進藝術(上)

算力攻擊

事實上,比特幣社群早已認識到問題的存在,近年來他們討論過擴大“塊”的容量,或者引入隔離見證、閃電網路等方案,提高每秒可處理的交易數(TPS)。他們甚至還討論過是否擴大發行總量。但始終沒有達成一致。

好訊息是,儘管比特幣支付還不像法幣一樣方便,但美國、日本、德國、加拿大、白俄羅斯、瑞士等國家已接受比特幣支付,並在一定法律範圍內,承認其合法地位,部分國家還設定了比特幣ATM機。

本質上,作為一種貨幣,比特幣正向著初衷邁進。相比之下,以太坊需要解決的問題,就要複雜很多了。

拓展閱讀:

Bitcoin: A Peer-to-Peer Electronic Cash System

https://bitcoincore。org/bitcoin。pdf

Next-Generation Smart Contract and Decentralized Application Platform

https://github。com/ethereum/wiki/wiki/White-Paper

Ethereum Casper 101

https://medium。com/@jonchoi/ethereum-casper-101-7a851a4f1eb0

A Proof of Stake Design Philosophy

https://medium。com/@VitalikButerin/a-proof-of-stake-design-philosophy-506585978d51

Proof of Stake FAQs

https://github。com/ethereum/wiki/wiki/Proof-of-Stake-FAQs

Casper Proof of Stake compendium

https://github。com/ethereum/wiki/wiki/Casper-Proof-of-Stake-compendium

Proof of Stake: How I Learned to Love Weak Subjectivity

https://blog。ethereum。org/2014/11/25/proof-stake-learned-love-weak-subjectivity/

Critique of Buterin’s “A Proof of Stake Design Philosophy”

https://medium。com/@tuurdemeester/critique-of-buterins-a-proof-of-stake-design-philosophy-49fc9ebb36c6

Cryptocurrencies without Proof of Work

https://arxiv。org/pdf/1406。5694。pdf

casper_basics。pdf

https://github。com/ethereum/research/blob/master/papers/casper-basics/casper_basics。pdf

The Triangle of Harm

https://vitalik。ca/general/2017/07/16/triangle_of_harm。html

Casper Proof of Stake compendium

https://github。com/ethereum/wiki/wiki/Casper-Proof-of-Stake-compendium

slasher

https://blog。ethereum。org/2014/01/15/slasher-a-punitive-proof-of-stake-algorithm/

The History of Casper — Chapter1

https://blog。ethereum。org/2016/12/06/history-casper-chapter-1/

The History of Casper — Chapter2

https://blog。ethereum。org/2016/12/07/history-casper-chapter-2/

The History of Casper — Chapter3

https://medium。com/@Vlad_Zamfir/the-history-of-casper-chapter-3-70fefb1182fc

The History of Casper — Chapter4

https://medium。com/@Vlad_Zamfir/the-history-of-casper-chapter-4-3855638b5f0e

The History of Casper — Chapter 5

https://medium。com/@Vlad_Zamfir/the-history-of-casper-chapter-5-8652959cef58