BigDipper

探索區塊鏈及加密貨幣,從 Big Dipper 開始。

LikeCoin 取消委託要等 21 天?從 PoW 到 PoS 談談 Cosmos 的綁定權益證明 BPoS

作者:@Terence

https://blog.malwarebytes.com/mac/2019/06/new-mac-cryptominer-malwarebytes-detects-as-bird-miner-runs-by-emulating-linux/

(溫馨提示:本文是我在 Matters 上至今最長的文章,請先有心理準備。)

自從 LikeCoin 加入 Cosmos 生態後,一下子令不少中文用戶開始接觸 Cosmos 中的各種新奇事物。對他們來說,一些本來虛無飄渺的區塊鏈知識,開始直接影響自己。近日我留意到有朋友發現 LikeCoin 取消委託拿回錢需要 21 天,這是個挺好的契機介紹 Cosmos 的構思。Cosmos 是其中一個集大成的區塊鏈生態,若你能掌握 Cosmos 相關的知識,對了解整個區塊鏈以至去中心化世代都有莫大幫助

要了解這 21 天解除綁定期 (unbonding period) ,可能要先全面了解區塊鏈的基本面。在本篇文章,我希望在不深入講解技術的情況下,令一般用戶大概理解究竟在發生甚麽事。這樣解說,無可避面地要避重就輕,甚至斷章取義,還望各位專家們多多包涵。

tl;dr:

Cosmos 生態中的區塊鏈絕大多數是採用綁定權益證明 (BPoS) 的制度,它們的的原生通證 (如 atom, likecoin) 的持有者,有權決定是否參與區塊鏈的網絡安全及治理等任務以獲取奬勵。這些任務並不是一般人能勝任,而是需要深徹了解網絡安全及底層技術,更要承擔網絡基建設備如伺服器及雲儲存及團隊等的開支。

若通證持有人不當驗證人,但又希望參與上述任務以獲取奬勵,就可以作為委托人 (delegator),將自己持有的通證委托於驗證人,由驗證人執行這些任務,這就是抵押挖礦 (staking) 的本質。參與維護區塊鏈能獲取奬勵,但若犯錯或不達標則會受到削減權益的懲罰,這懲罰是有連帶關係的,即委托於該犯錯驗證人的權益都會被削減。

相較比特幣的工作量證明 (PoW) 機制,權益證明 (PoS) 機制有兩個先天風險,分別是「無利害關係」及「遠程攻擊」。BPoS 的 21 天解除綁定期,就是為預防這兩個風險而設。

簡而言之,天下沒有免費午餐,抵押挖礦與世間上很多事情都一樣,是要承擔風險以換取潛在回報,背後的大原則就是看風險與回報,奬善罰惡。通證持有人需要慎重考慮要如何作出委托,以維護區塊鏈的安全,促進生態成長。


在去中心化網絡中尋求共識

比特幣被廣泛視為區塊鏈的首個應用,或許應該這樣說:比特幣的面世,令它背後的運作原理 - 區塊鏈 ,被廣為人知。區塊鏈實質上是一個去中心化網絡,並作為一個公眾數據庫來記賬,它沒有一個中央領袖 (獨裁?) 決定應該記錄甚麽反如何記錄,而是由公眾參與者以既定的共識規則來決定 (民主?)。這能簡單分為兩個步驟:

1、有人提議要記錄甚麽
2、參與者達到共識通過上述提議

但如果大家七嘴八舌提議這提議那,就會很混亂,所以我們要先有機制決定如何去作出提議,「工作量證明」(proof-of-work,PoW) 就是這步驟的重要部份。

工作量證明 PoW

比特幣、以太幣及不少其他早期的加密貨幣,都是以 PoW 的機制運作。無論閣下有沒有接觸區塊鏈,其實對 PoW 是不會陌生的。大家日常最常見的 PoW 例子,就是注冊或登入一些系統時 (例如注冊新電郵地址) 你被要求解答 "captcha",以證明你不是機器:

圖片來源:https://www.atebits.com/tips-on-managing-captcha-in-omegle/

你通過付出一些「工作量」去解答 captcha,以「證明」你不是機器。為何這些系統需要這樣做呢?就是為了預防有人試圖通過創建多個帳户身份來攻擊網絡,這種攻擊方式叫女巫攻擊 (Sybil Attack)。

區塊鏈是一個公眾的數據庫用來記賬,首先要有人提議要記錄甚麽,而區塊鏈又是由成千上萬台電腦以沒有中央領袖的方式連結而成,亦無法辨別個別電腦的身份,若有人使用女巫攻擊來提議要記錄甚麽,就可能令網絡崩潰,所以我們亦需要有 PoW 的機制來預防女巫攻擊。

這裡說的 PoW 是針對電腦而不是人類,上圖中的幾款 captcha 對有強大運算力的電腦來說太簡單了,所以我們要有連電腦都不容易完成的 PoW,所以就有挖礦 (mining) 的出現。我其實很有興趣講解挖礦,但這有點離題,所以我簡單用個比喻說明好了。大家可以想像我要求你拋硬幣 (又叫「擲公字」),拋到頭像時你記下「1」,拋到數字時你記下「0」,現在我要求電腦做同樣的事,但要求就多了很多,例如我要電腦一直拋硬幣並記下 1 或 0,直至連續 20 個位是「0」,這過程是沒有捷徑,惟一能出現連續 20 個位是「0」的做法只能是不斷拋。人類拋硬幣都要給點力氣,而電腦就是要耗電來拋。(20 個位對電腦太容易了?如果是百萬個位呢?如果是億萬個位呢?)

誰又會願意這樣耗電來挖礦?所以成功挖礦會有奬勵,有錢能使鬼推磨,甚至出現了專門設計用來挖礦的硬件設備 (ASICs) 及以工廠規模來運作的礦工 (礦場),大家都是根據風險與回報來行動。

競逐成為區塊發起者

礦工將網絡上有待處理的交易,塞進一個有容量限制的資料包中,這個包就是「區塊」 (block),礦工們並鬥快運算 (以上述例子即拋硬幣),最快計出正確答案的就可以成為區塊發起者 (block proposer),並將這區塊記錄在區塊鏈這公眾數據庫上。所以,PoW 並不是共識算法 (這是很多人的誤解),而是決定由誰來成為區塊發起者 (block proposer) 的制度。

由於礦工用了大量電力及設備來贏取這個發起區塊的機會,他們當然會力保這些交易及區塊等是符合大家既定的規則來處理 ,因為一旦不符規則,網絡上其他參與者 (即節點) 就會反對這區塊,那麽這名礦工辛苦勝出拋硬幣大賽卻會失去奬勵。

權益證明 PoS

由於 PoW 的上述特點,它的運作慢,又需要耗用大量電力,礦工又大量投資於運算用的設備,所以 PoW 的競賽其實都是鬥錢多,因為設備及電力都是錢,那麽不如直接用資本來競賽,所以就產生權益證明 (proof-of-stake, PoS) 。

在 PoS 下,礦工不再用 PoW 的方式競賽,而是按持有該區塊鏈的原生通證/加密貨幣 (如 Cosmos Hub 上的 atom 或 LikeCoin Chain 上的 likecoin) 的數量來決定誰能當區塊發起人,亦由於再沒有挖礦這過程,我們一般亦改稱礦工做驗證人 (validator),以反映他們要做的事情是有點分別的。

在討論以 PoS 取代 PoW 的初期,有一股聲音質疑 PoS 有兩個理論上的潛在風險,分別是無利害關係 (nothing at stake) 及遠程攻擊 (long range attack),要解釋這些東西可能可以寫一個系列的文章,又會離題。容我我再一次大膽地用簡單比喻而非深入技術面來試圖解釋這兩件事情。

無利害關係

無利害關係指的就是驗證人做錯事卻沒有懲罰。在 PoW 中,驗證人用了大量電力 (其實就是 $$$) 來競賽,如果他做錯事了就拿不到奬勵,白用了電力 ($$$),這就是懲罰,但 PoS 沒有 PoW 的耗電過程,即是少了這個間接懲罰的途徑。

遠程攻擊

遠程攻擊指的是篡改歷史。要說明這點,又要先回頭看看區塊鏈的結構。我常躍躍欲試用兩個比喻來說明,機會終於來了!

  • 包裹的比喻

    上文說到區塊就是裝著一些交易的資料包。大家幻想一下,下一個資料包 (B02),除了裝著一些新的交易資料外,又會裝著上一個資料包 (B01),然後,再下一個資料包 (B03),除了裝著一些新的交易資料外,又會裝著資料包 (B02)。一個包包住另一個包,生生不息。

    若去到 B10,如果你想更改 B01 裝著的資料,你要如何做?你要先打開 B10,再打開 B09,再打開 B08,如此類推。

    再想像一下,每個包都有一條封條封著,你要打開這個包,就要破壞這封條。

    再想像一下,這封條只能是經過耗電甚多的運算工序生成,你要再做這封條,就要重新做一次相對應的運算工序。

    可以說,每多一個包 (即多了一些 PoW),資料就更安全。
  • 族譜的比喻

    再用另一個比喻,就是族譜。小弟姓林,從小就很喜愛看中國的歷史人物故事,但一直有個心結:為何沒有多少名將名相是姓林的?近代似乎有個叫林則徐,有時幻想如果我是林則徐的後人都挺威風,我能不能偽造林則徐的族譜來達到這目的呢?

    若我要這樣做,首先我要將林則徐家族至今的族譜,一代代地改寫,改到去反映出我的出生,大家想像一下這工程有多艱鉅。

    如果只是我自己拿著這族譜,要如何寫或許我都有權掌控。但問題是,林則徐原本的代代後人都有族譜,我是要將林則徐的所有子孫的族譜都要改寫,而改寫完後要他們都承認 (或至少有大部份人會承認)。所以要眾目睽睽下篡改歷史,談何容易?

    (真的有一位天皇巨星改了自己的姓氏,因為他追查到了自己是唐朝一個名相的後人。)

    遠程攻擊中的「遠程」,指的不是地點上的距離,而是時間上的距離。以族譜的比喻,若我二百年多前的祖先要部署二百多年後作為子孫的我要篡改歷史,就用辦法在林則徐的族譜上加插一個妾氏甚麽的 ,為二百多年後的我去篡改族譜做準備。(話說回來,妾氏會寫在族譜上嗎?)

守護歷史為何重要?如果你本來有十個比特幣,卻被人修改成為一個,這樣的賬本,還有沒有人相信?

無論是無利害關係或遠程攻擊,在採用 PoW 的區塊鏈是很難辦到的,因為有一層層的 PoW 來守護歷史,缺乏 PoW 就是 PoS 的先天不足。(題外話:以上的兩個風險是理論上的風險,是否真的會發生,或是否真的符合經濟運行規律呢?有些人提出質疑,例如 PoS 其中一個先驅 Sunny King 在其發明的區塊鏈 V Systems 中採用的 Supernode PoS 的白皮書就對 nothing at stake 有另一番見解,對我有很大啟發,我甚至計劃將 Supernode PoS 結合至 BPoS 在 @Desmos 中體現,日後有機會再談。)

(補充:我們對遠程攻擊亦理應一點也不陌生,因為在現實上亦有些人試圖篡改歷史。例如現在全球處於新型肺炎的疫情中,我們見到某些國家正以舉國之力試圖篡改感染及死亡人數,甚至是病毒來源,要篡改自己的歷史已很難,你可以篡改新聞上顯示的人數,但又能否篡改痛失親友的每一個人的回憶?你有能力向自己每個國民洗腦篡改他們的思想,又能否篡改全球受新型肺炎影響的每個國家的每個人的經歷及思想?要在眾目睽睽下篡改歷史,即使窮一國之力量也做不到,因為隨時間推演,你越去篡改歷史,就會發現需要篡改的故事情節越來越多,涉及的人與事又會越來越多。勸君一句:若要人不知,除非己莫為。)

綁定權益證明 BPoS

不同的 PoS 區塊鏈的運作方式都有點不一樣,絕大部份都有針對無利害關係及遠程攻擊這兩大風險的措施,Cosmos Hub 及其他大部份基於 Cosmos 技術的區塊鏈 (例如 LikeCoin Chain) 所採用的綁定權益證明 (bonded proof-of-stake 或 BPoS) 就是其中一個表表者。

在 BPoS 的制度下,驗證人的角色是維護區塊鏈安全,這涉及幾大任務:

  1. 營運一個全節點 (full-node)
  2. 遴任成為區塊發起人以創建區塊並就區塊達致共識
  3. 在鏈上治理議案 (governance proposal) 中投票

可想而之,這些任務並不是一般人能勝任,驗證人需要深徹了解區塊鏈,網絡安全及底層技術,更要承擔營運穩健可靠的全節點所需要的網絡基建設備如伺服器及雲儲存以及團隊等的開支。再者,因為是 PoS,所以似乎還要有足夠的資本 - 要有錢才能買到足夠的通證權益來擔任驗證人。

委托 (delegate)

不過,正正因為驗證人所需的知識及技術要求很高,通證擁有者並不一定勝任作驗證人,亦有一些是根本不願意當驗證人 (例如一些創投純椊希望做通證的投資者),這產生一個微妙的供求關係:有人有能力當驗證人但不夠資本,有人夠資本但不想當驗證人。所以有了委托 (delegate) 這做法。

若通證持有人不能夠或不願意當驗證人,但又希望參與上述任務以獲取奬勵,就可以作為委托人 (delegator),將自己持有的通證委托於驗證人,這就相當於將權益綁定 (bond) ,所有來自委托人的委托權益 (包括驗證人自己委托給自己的),就成為了該驗證人的投票權 (voting power),只有投票權達一定要求的驗證人才能成為有效的驗證人以參與上述任務,在 Cosmos Hub 上指的就是投票權佔比最高的 125 個節點,在 LikeCoin Chain 上就是 10 個節點。

投票權佔比

投票權的佔比是按委托權益的總數 (而非通證的總數) 來算。例如,假設 Cosmos Hub 上的 atom 總數是 2.5 億個,當中綁定了的 atom 數目為 1.8 億個,如果 @Forbole 獲委托的權益是 200 萬個,Forbole 擁有的投票權就是 1.11% (2,000,000 / 180,000,000)。1.11% 的投票權佔比的含義就是,長期平均來說,每 10,000 次的區塊發起人遴選,Forbole 就會當選 111 次。

綁定 (bonding) 與權益削減 (slashing)

上文提到 PoS 相對於 PoW 有兩大風險,包括無利害關係及遠程攻擊,兩者結合起來,說的就是犯錯 (試圖篡改歷史就是其中一個大錯) 要如何懲罰。在網絡世界,構思懲罰制度時更要特別思考如何能有效地執行懲罰。

在 PoW,犯錯時會失去原本以為可以拿到的奬勵,所以白耗了電力 ($$$) 。要在 PoS 上產生類似的阻嚇效果,就是在權益著手:當犯錯時就要削減 (slash) 權益 ($$$)。聽起來很直接,若驗證人被發現犯錯,就當場削減他已綁定的權益就可以了。但在 PoS 上要這樣做,又有一些特別的考慮。

解除綁定 (unbonding)

在 PoS 上削減權益,要特別考慮遠程攻擊,如前述,遠程攻擊即試圖在以前的某一時間佈局,以部署日後篡改歷史。如果我今天佈局,有可能是在 21 天後才會出現篡改歷史的事件,如果我在綁定權益後先佈局,然後解綁馬上遠走高飛,到網絡發現我的過錯時可能已是 21 天後,我已溜了,削不到我的權益了。

所以,Cosmos 的 BPoS 設有 21 天解除綁定期,已綁定權益的人,在執行解除綁定的指示後,要等 21 天過去,相關權益才會正式回復自由身,在這 21 天期間,若涉及的驗證人犯了錯,這些正在解除綁定期間的權益仍然會被削減。

這又衍生另一個問題:驗證人犯錯,委托人有沒有責任?

變更委托 (re-delegating)

在 Cosmos BPoS 的世界,驗證人犯錯,除了他自我委托的權益會被削某個百分比 (視乎犯錯的嚴重性),所有委托給他的權益亦會被削同一個百分比。所以作為委托人,是需要認真分析哪個驗證人可靠及對網絡作出貢獻,才作出委托的決定。以現實的比喻,就是投票選代表你的議員時,你都需要慎重考慮。(這只是 Cosmos 的情況,不代表其他 PoS 都是這樣考慮,例如 Tezos,在很多情況下委托人並不會受罰)

基於這原則,當你打算從已委托於驗證人 A 的權益直接以變更委托 (re-delegating) 的方式改為委托予驗證人 B,表面上看起來你的變更委托是立即生效,但你仍然面對 21 天的期間。在這期間結束前,如驗證人 A 需要接受削減權益的懲罰,你所涉及的正在處於變更委托期的權益仍然會被削。

通證持有人不一定需要參與保衛區塊鏈的任務

上述 Cosmos Hub 的例子亦是現在大概的情況,綁定了的 atom 數目其實只佔總數的約 72%,可見並不是所有的通證持有人都會進行委托。事實上,是否參與維護區塊鏈安全 (作為驗證人直接參與或作為委托人間接參與) 是通證持有人的權利而不是義務

參與維護區塊鏈安全的任務能獲取來自通脹率及交易費用的回報,但若工作犯錯或不達標 (例如重覆簽名 (double-sign) 或長時間下綫) 則會受到懲罰 (權益削減 (slash) ,奬善罰惡。

若然認為回報與風險的比例不吸引,通證持有人完全可以不參與,只單純持有通證,有通脹設定的區塊鏈 (如 Cosmos Hub) 持續有新增的 atom (年化通脹率為 7% 至 20% 之間) 以作為奬勵,所以不參與綁定權益的人,其權益將會被通脹攤薄。所以,通證經濟的重要一環就是如何構思這回報與風險的比例,以吸引更多的人選擇參與維護區塊鏈。

結語

參與維護區塊鏈安全是件嚴肅的事,大家不應該只看回報及驗證人收費,要考慮箇中的風險及對區塊鏈生態的意義,有責任地選擇驗證人並作出委托,是你貢獻區塊鏈安全的重要一步,亦能支持你的驗證人對社區作出更多貢獻,因為他們往往最最熟悉該區塊鏈的專家,最終有助生態成長,令你亦能受惠。

這文章不短卻又不深,希望能為初進入 LikeCoin,Cosmos,加密貨幣及區塊鏈的各位打開一個入口,我未必能全面掌握每一個環節,亦不一定解釋好,甚至會有錯誤,還望大家多多包涵,請留言𧶽教。如覺得這文章幫到大家,亦希望你能分享這文章,令更多人參與區塊鏈世界。


參考:

A Deep Look Into Cosmos — the Internet of Blockchains
,Julian Koh
A-to-Z of Blockchain Consensus,Julian Koh & Cheryl Sew Hoy
Bitcoin Q&A: The mining process,Andreas Antonopoulos
Emin Gün Sirer 教授解釋有關區塊鏈共識算法的謬誤
Is proof of work a waste?Brett "Maverick" Musser
Proof of Stake: How I Learned to Love Weak Subjectivity,Vitalik Buterin
(Re)Delegations in the Cosmos Hub,Aleksandr Bezobchuk
Validator FAQ,Cosmos website

LikeCoin取消委託拿回錢竟然要21天!

Cosmos 不是甚麽?

珍惜你的一票:淺談 Cosmos 區塊鏈的鏈上治理

發佈評論

看不過癮?

一鍵登入,即可加入全球最優質中文創作社區