本文的主要目的是提醒大家參與被稱為 “以太坊 2.0” 或 “Eth2.0” 的權益證明(PoS)項目的風險,也希望在這種講解中幫助大家理解它本身,鑒于該項目在當前具備具體形態的只有其設計組件之一 “信標鏈”,下文都將用 “信標鏈” 來指稱所謂的 “Eth2.0”。相信大家看完這些常見問題的解答(及其附帶材料之后),會理解這種選擇,
一. 我需要掌握哪些基本概念?
什么叫 Eth2.0?
Eth2.0 是由以太坊基金會(Ethereum Foundation,簡稱 “EF”)的研究團隊提出的一種區塊鏈架構,旨在實現以權益證明為共識機制、分片化執行的區塊鏈。該部分的研究源自 EF 自設立之初便公開的愿景(實現權益證明共識的區塊鏈)并且一直由 EF 研究團隊主導,并且,按照預期,在這樣一種架構可用之后,其啟動狀態將繼承當前的以太坊主網(Ethereum Blockchain Mainnet)在某個時刻的賬戶狀態,因此被稱為 “以太坊 2.0”,
在實現的步驟上,EF 的計劃是分三個階段推出,每個階段都增加一個組件和一部分功能,到目前為止,第三個階段(“Phase 2”)的設計尚未全部完成;Phase 1 的技術目標,也可能發生調整。
當前,以太坊區塊鏈上的 ETH 持幣者可以參與的,是以權益證明(PoS)機制來運行的 “信標鏈”(Phase 0)。在設計上,信標鏈是整個分片化執行系統的核心,但這個核心沒有執行的功能(后文我們會看到這一點的影響)。
詳情可見:https://ethereum.org/en/eth2/vision/
什么是驗證者?
在談論信標鏈時,驗證者(Validator)是 PoS 共識過程的參與者(就像 PoW 共識中提交工作量證明的礦工),信標鏈驗證者通過對區塊的投票來形成區塊鏈,完成共識后獲得出塊獎勵。
什么是權益證明共識機制?
權益證明(Proof of Stake)是這樣一類共識機制:它以參與者占有系統內資源(比如 token)的多少來決定其成為出塊者的概率和對區塊投票時的投票權重;獲得多數參與者支持的區塊則成為主鏈的一部分;而主鏈區塊的支持者也將獲得增發的 token 作為獎勵。
信標鏈所用的 PoS 機制為 “Casper FFG 算法” + “LMD-Ghost 分叉選擇規則”,兩套規則聯合定義了驗證者在不同時機應當做什么和不應當做什么,遵循了規則的指引就能獲得獎勵,而違反了規則就會被懲罰,
信標鏈多久出一次塊?
信標鏈的基本時間單位不是 “區塊”,而是 slot 和 epoch,一個 slot 是 12 秒鐘;一個 epoch 是 32 個 slot,即 6.4 分鐘。每當一個 epoch 終止時,驗證者們就根據預先確定的規則(以及信標鏈當時的狀態)將每一位驗證者分配到下一個 epoch 的某一個 slot 當中參與投票(稱為 “見證者(attestator)”);與此同時,每個 slot 也會有專門的一個驗證者負責提議區塊(稱為 “提議者(proposer)”)。如果某個 slot 的提議者在當時離線了,該 slot 就無法出塊,形成了一個 “跳過(missed)” 的 slot。所以多久出一個塊在信標鏈上是不確定的,理想情況下是每 12 秒就能形成一個區塊。
那么驗證者的獎勵是每出一個塊就發放一次嗎?
并不是。驗證者的獎勵和懲罰是每個 epoch 結算一次,每當一個 epoch 結束,新一個 epoch 開始的時候,驗證者們就根據預先確定的規則結算該 epoch 的驗證者獎懲,從而確定新一個 epoch 中不同驗證者的投票權重。
怎么成為驗證者?
首先,你需要在當前的以太坊區塊鏈上,向押金合約 0x00000000219ab540356cbb839cbe05303d7705fa 發送 ETH 并提供自己為驗證者安排的取款公鑰和驗證公鑰,然后等待約 7.5 個小時,就能注冊成為驗證者了,注冊成功后,你的驗證者還需在候選隊列中排隊一段時間,才會實際參與 PoS 共識并獲得獎勵,這個時間的長短視隊列的長短而定(因為每個 epoch,能從候選隊伍進入 “活躍驗證者” 集合的驗證者數量是有限的),
此中的操作非常復雜,請千萬不要自己手動操作,務必使用 https://launchpad.ethereum.org/ (驗證者快速啟動器)完成存入押金的操作,請認準這個網站并多方檢查你的交易發往的合約的地址,不要存入 ETH 以外的 token,
該網站的簡介可見:https://ethfans.org/posts/eth2-validator-launchpad
其次,你需要有一臺保證自己能控制、電力和網路供應穩定,并且硬件具備一定水準的計算機,運行一種客戶端軟體,由軟體來控制您的驗證者私鑰并實時地參與信標鏈的共識,具體要求可見后文 “運營建議” 章節,
什么是驗證者密鑰?
跟一個信標鏈驗證者相關的密鑰對有兩對,一對我們稱為 “驗證密鑰對”,該密鑰對的私鑰用于驗證者在參與共識的時候簽名發送見證消息(attestation);另一對我們稱為 “取款密鑰對”,該密鑰對的私鑰用于在驗證者完全退出驗證者隊伍后取回自己的驗證者名下的資金。
兩把私鑰都需要自己保管,如果驗證私鑰泄露,則他人可用你的私鑰發送見證消息,導致你的驗證者被大力懲罰;如果取款私鑰泄露,則他人可在你的驗證者退出之后先你一步取走你屬于你的全部資金,
兩把公鑰都需要在存入押金時提交到押金合約(再強調一遍,除非你非常了解相關的密碼學及智能合約,否則請老老實實使用 https://launchpad.ethereum.org/ 的引導流程及其提供的工具,完成操作),
簡介可見:https://ethfans.org/posts/validated-staking-on-eth2-4-keys
你剛剛還提到什么客戶端軟體?
沒錯,你需要運行一些軟體,由該軟體托管你的驗證私鑰并不斷地在網路中收發消息,來參與信標鏈的 PoS 共識。畢竟,從信標鏈(其他驗證者)的角度來看,一個驗證者就是名下有一些錢、需要不斷發送見證消息的密鑰對,如果你不參與共識,你的錢就血本無歸了,
具體而言,你的計算機需要運行兩種軟體:(1)“Eth1 客戶端”,例如 Geth、OpenEthereum、Nethermind、TurboGeth;(2)“Eth2 客戶端”,例如 Lighthouse、Prysm、Teku、Nimbus。兩類都只需選擇一個即可。
不同軟體的性能不同、硬件要求不同、編譯難度也不同,至于其安全性,很抱歉,這里沒有辦法為任何一個軟體的安全性背書,這里有一些部署教程:
- Ubuntu OS + Geth + Prysm: https://ethfans.org/posts/guide-to-staking-on-ethereum-2-0-ubuntu-medalla-prysm
- Linux + Nethermind + Lighthouse: https://ethfans.org/posts/using-nethermind-to-run-a-validator-in-eth2
- 視訊教程:https://www.bilibili.com/video/BV1x541157FC
二. 獎勵、懲罰、風險
我想參加信標鏈,聽說早期參與者的收益率很高,是真的嗎?
快速啟動器網站同時也提供了一個計算(純粹數量意義的)年化收益率的粗略工具,一言以蔽之:信標鏈上資產的增發率與驗證者有效余額的總和成反比;有效余額越低(一開始存入的押金較少)、增發率越高、驗證者的年化收益率越高,反之亦然,
有效余額可以視為驗證者的投票權重,跟驗證者的現存余額(如果當下就退出能取回多少錢)是兩個概念,介紹可見:https://ethfans.org/posts/understanding-validator-effective-balance
另外,在信標鏈上,獎勵并不是均分的,Casper FFG 和 LMD-Ghost 形成了一套相當復雜的規則、根據每個 epoch 內各驗證者的不同表現來為它們安排獎懲,所以,你可以說每個驗證者的收益率都是不一樣的,有些驗證者能獲得比全網均值更高的收益率,
但是,另有一些因素使得你不能把它簡單地當成 “ETH 本位的年化收益率”,因為如前所述,在設計上,信標鏈僅有形成共識的能力,沒有執行能力,所以用戶在信標鏈上獲得的收益是無法在信標鏈上轉賬的;其次,在當前階段,這些收益(以及本金)也無法退回到以太坊區塊鏈上來;最后,在協議的層面支持這些收益及本金的流通,必須等到以信標鏈為核心的系統具備執行功能才行,而這一點尚未有明確的時間表。(從目前來看,一年內推出執行功能是不太可能的,即使大家都以盡快實現可用性為目標,也會面臨短期需要和長期需要的一些沖突。)
那些獎懲措施都是怎么回事?聽說只要不離線就沒事?
信標鏈(Casper FFG + LMD Ghost)的設計哲學是:扣押了驗證者的押金之后,就可以通過懲罰來遏制驗證者作出破壞性的行為;同時,還可以通過獎勵的差別來鼓勵他們相互合作。
懲罰基本上可分為三類:
(1)針對破壞共識的行為,如一個提議者在所在 Slot 提議了兩個不同的區塊(雙重提議);在執行 Casper FFG 投票時雙重投票和環繞投票;此類行為是最嚴重的,會觸發所謂的 “罰沒(Slashing)”;
(2)對離線驗證者的懲罰,稱為 “怠工懲罰”,在網路具備終局性的時期,這種懲罰的力度會比較小,大體相當于如果你正常參與共識會得到的獎勵(如果你參加共識會得到 3 塊錢,那么你不參加會倒扣 3 塊錢)。而在網路不具備終局性的時期,這一懲罰會隨著缺乏終局性狀態的延長而不斷加碼,
(3)在整個網路缺乏終局性的時期,在線的驗證者也會遭到懲罰,但這個懲罰的力度是固定的,不會不斷加大,所以并不是你一直在線就沒事了,如果驗證者大規模出錯,你的正常驗證者也會被懲罰,只不過被懲罰得少一些。(之所以這樣設計是為了防止驗證者在缺乏終局性的時期有意不傳播、不打包其他驗證者的見證消息來漁利,)
怎么定義 “離線” 呢?答案是,在一個 epoch 結束的時候,該 epoch 內的所有區塊都不包含某個驗證者的見證消息,則視其為離線,所以 “在線” 的要求并不會特別嚴格。
獎勵則更簡單一些:
(1)作為在線的區塊提議者,可以獲得 “區塊提議獎勵” 和 “檢舉人獎勵”(如果所打包的區塊內包含了對被罰沒行為的檢舉消息的話,區塊提議者可獲得這部分被罰沒的押金;在后續的發展中,這一設計可能會改變)
(2)作為在線的見證者,可以獲得正常的 “FFG 投票獎勵”,
其中,區塊提議者在自己的區塊內打包的見證消息越多(要求消息都是首次被打包),“區塊提議獎勵” 越高;而見證者在發出見證消息后,該條見證消息越快被打包,見證者獲得的獎勵也越高 —— 這就是在鼓勵驗證者們相互合作了,
關于信標鏈驗證者的獎懲,最詳細的簡介見:https://ethfans.org/posts/rewards-and-penalties-on-ethereum-20-phase-0
關于 Capser FFG (終局性、雙重投票、環繞投票)的簡介,見:https://ethfans.org/posts/casper-ffg-explainer-by-adiasg 和 https://ethfans.org/posts/casper-ffg-in-eth2-0
罰沒的力度到底有多大?
會被罰沒的行為有:雙重提議區塊、FFG 雙重投票、FFG 環繞投票。
遭到罰沒之后,被罰沒的驗證者將面臨三種懲罰:
(1)在遭到罰沒時當下執行的一次性基本罰沒;為該驗證者有效余額的 1/32(在當前推出的信標鏈上,罰沒和懲罰力度都被虛弱了,日后可能會再提高;話說回來這事也沒公開討論過呀)
(2)連續不斷的 “離線懲罰”;這是因為,被罰沒的驗證者的狀態會被強制改成 “slahing(被罰沒)”,在該狀態下,每個 epoch 他都會被懲罰(力度固定為基本獎勵的 3 倍);待被罰沒的驗證者 “完全退出(exicted)” 之后,這種懲罰會中止;(這個時長與等待退出的驗證者的數量正相關)
(3)被罰沒的驗證者轉成完全退出狀態之后,還需要等待 8192 個 epoch 才能取回自己剩余的資金,在此期間,系統還會根據該驗證者作惡被抓的的時間點前后 18 天內被罰沒的押金數量施加進一步的懲罰。如果被罰沒的押金數量超過 33%,這個懲罰力度可高達有效余額的 100%(即最高可達 32 BETH),
我如果疏忽了,放任自己的驗證者一直離線,押金會被罰到變成 0 嗎?
一般來說不會,當驗證者的有效余額低于 16 BETH 時,驗證者就會從 “活躍” 狀態轉入 “即將退出” 狀態,等待排隊退出,
但值得注意的是,即將退出的驗證者仍需正常提交見證消息,如不,則仍會遭到怠工懲罰,在此期間仍會繼續損失資金,直至完全退出。
關于驗證者的狀態轉換,見:https://ethfans.org/posts/understanding-the-eth2-validator-lifecycle
我的驗證者可以主動退出嗎?
可以,在成為活躍驗證者的 9 天后,可以發起主動退出請求,將驗證者狀態轉為即將退出,進入等待退出的隊列。
驗證者完全退出之后,馬上就能取回我剩余的資金嗎?
不是,如果你沒有被罰沒,則完全退出后等待 256 個 epoch 即可取出資金;如果你遭到了罰沒,則要等待 8192 個 epoch,但需要注意的是,在當前階段,該資金仍無法轉賬。
完全退出之后是否還能再加入成為活躍驗證者?
很遺憾,在當前的信標鏈上,無論是被罰沒還是主動退出,抑或被動退出,相關的密鑰對都不能再重新成為驗證者。不過,你可以在自己的驗證者還是活躍狀態時,在以太坊區塊鏈上通過押金合約為自己的驗證者補充押金(但這種補充不是即時到賬的)。
除了被懲罰的風險、開發路線的風險之外,還有什么風險?
最顯然的是,還有客戶端軟體實現的風險,即客戶端軟體可能出錯。如果你使用了出錯的客戶端,當然會直接受到影響;但即使你沒有使用出錯的客戶端,仍然可能因為掉線的驗證者太多、網路缺乏終局性而間接被波及,
什么時候信標鏈可能開放轉賬的功能?還面臨哪些技術困難?
任一功能完成,都能使信標鏈開放轉賬功能:(1)讓信標鏈具備單純的轉賬功能(甚或僅在驗證者之間開啟轉賬功能);(2)實現以太坊區塊鏈與 “信標鏈-分片” 系統的合并,
前者可能較簡單,但是與項目的長期目標不符,也違背了項目對參與者的承諾(提高了硬件需求);至于后者,則顯然需要更長的開發時間和謀求社會共識的時間。
而且,無論選擇什么技術目標,為了使之足夠安全,都必須花費很長時間。所以我個人并不預期一年內能開放轉賬功能。但這只是我的個人看法,而且變數也非常多,
三. 運營建議
如果我自己運營驗證者,需要什么樣的硬件?
你需要一顆還不錯的 CPU、16 GB 的內存,固態硬碟(為了保險,考慮 1 TB及以上的規模),還要有穩定的電力供應和網路供應。如沒有發生大規模的掉線事件,則在線 50% 時間以上就可保證正收益(但你可別連續長時間不在線呀),
我可以把私鑰放在硬件錢包里嗎?
你的取款私鑰可以放在硬件錢包里,但驗證私鑰則必須放到客戶端軟體中,這樣才能保證正常簽發見證消息,
是不是可以在硬件的架構或者私鑰的生成上下一些功夫來提高安全性?
是的,但是相關的方法都非常專業,請務必尋求專業人士的幫助。
舉例,驗證者客戶端本身可以說就是一個簽名器,那么你可以將簽名器與其它功能隔離開來,保證簽名器不對外網暴露。等等。
有沒有去中心化的第三方運營方案?
沒有,所有的第三方托管方案都要求你信任第三方。舉例,如果第三方托管了你的驗證私鑰(你保留自己的取款私鑰),你還是必須信任該第三方會妥善運營驗證者,不會導致你被罰沒(所以你跟第三方之間必須實現分配好責任),如果你直接把錢交給第三方,連取款私鑰都不保留,則信任程度更甚(與把錢存入中心化交易所等同)。在當前,沒有人能兌現 BETH,
那加入一些智能合約和 token 呢?
也不行,智能合約和 token 只能讓你在以太坊區塊鏈上獲得與信標鏈資產數量一一對應的 token,但 token 的增發資訊仍然資訊輸入機制來輸入,而這個資訊輸入機制也是需要信任的(因為收益的變量太多,服務提供商也需要一定的中心化來保護自己的利益,這是難免的),
四. 其他
有什么工具方便我查看信標鏈上現在的情況嗎?
區塊瀏覽器:https://beaconscan.com/ 及 https://beaconcha.in/。
但是網站所用的術語可能跟此處提供的不同,
驗證者是不是進出都得排隊啊?
是的,信標鏈 PoS 協議本身的設計,驗證者隨意自由進出會使網路非常不穩定。所以進入和退出都需要現存的活躍驗證者來協調。
(如果有其他問題,歡迎留言)