jollen / blog

Jollen's Blog
http://www.jollen.org/blog
66 stars 4 forks source link

Blockchain Developer - 快速認識 Proof-of-Stake #33

Closed jollen closed 6 years ago

jollen commented 7 years ago

前一篇文章提到的 Proof-of-Work 是利用「運算」的方式來取得「共識」。除了 Proof-of-Work(PoW)外,還有其它「形成共識」的做法嗎?除了 Proof-of-Work 外,還有一種稱之為 Proof-of-Stake(PoS)的共識系統。不像 PoW 是以運算做為基礎,PoS 以「權益」做為基礎,來決定挖礦的難度。

除了 PoW 與 PoS 外,還有其它不同的共識系統:

PoW 與 PoS 的共通點,就是他們都是以 hash function 為基礎,來「形成共識」;也就是 mining。

PPCoin

Bitcoin 底層的區塊鏈,透過 mining 的方式來建立新的 block;mining 的 difficulty 透過 proof-of-work 系統來決定,接著,全世界各地的挖礦機,就要開始進行比賽,看誰能找出這個 difficulty 的 hash 值。

然而,Proof-of-Work 是一種消耗資源的工作;因此,開始有開發者,試圖使用其它的共識機制來建立新的加密貨幣(Cryptocurrency)系統。Peercoin(或稱為 PPCoin)就是第一個以 proof-of-stake 系統,所打造的加密貨幣 [3]。

快速認識 Proof-of-Stake

Proof-of-stake 的誕生,是為了取代 proof-of-work 系統,以減少大量運算所造成的資源消耗。此外,PoS 系統的加密貨幣,不一定要透過 mining 的過程來產生 cryptocurrency,可以採用「mint」的方式;即「鑄造」。這有點像「鑄幣廠」。在鑄造硬幣前,就要決定好「發行量」。

PoS 系統的 cryptocurrency 大多採用 mint 機制,而不是 mining 機制;所以說,貨幣是一開始就決定好數量並發行。

在 PoS 的區塊鏈系統裡,新的區塊如何產生呢?首先,要決定由哪個節點(node)來負責創造新區塊,再由該節點來建立下一個區塊。這就像是,大家一起討論,誰是下一個「鑄幣廠」,被選上的人就負責鑄造新硬幣。所有的節點都是鑄幣廠,也都有機會獲選鑄造新硬幣;所以,這不是「中央鑄幣廠」的機制,而是去中心化的機制。

至於如何決定負責創造新區塊的節點,就是以每個節點的權益(stake)來決定。這就有別於 Bitcoin 的 mining 機制了。Bitcoin mining 機制,是所有人在比賽創造新區塊,並且靠的是運算能力;誰創造了新的區塊?是無法預期的,所以是誰創造了下一個區塊,是非常隨機的(random)。

然而,PoS 機制下,創造了下一個區塊的人,是可預期的(deterministic)。PoW 系統的區塊產生是 random 方式;PoS 系統的區塊產生則是 deterministic 方式(或稱為 pseudo-random )。

小結

做為 blockchain 的底層系統開發者,有許多議題是重要的研究功課,例如:物聯網區塊鏈,適合使用 PoW 或 PoS 系統來設計?

References

[1] Practical Byzantine Fault Tolerance, http://pmg.csail.mit.edu/papers/osdi99.pdf [2] The Part-Time Parliament, https://www.microsoft.com/en-us/research/wp-content/uploads/2016/12/The-Part-Time-Parliament.pdf [3] PPCoin: Peer-to-Peer Crypto-Currency with Proof-of-Stake, https://peercoin.net/assets/paper/peercoin-paper.pdf

jollen commented 7 years ago

Published at http://www.jollen.org/blog/2017/02/blockchain-developer-proof-of-stake.html