原標題:《信標鏈Staking常見問題》

編者註:本文的主要目的是提醒大家參與被稱為“以太坊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)機制來運行的“信標鏈”。在設計上,信標鍊是整個分片化執行系統的核心,但這個核心沒有執行的功能(後文我們會看到這一點的影響)。

詳情可見: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-prysmLinux + Nethermind + Lighthouse: https://ethfans.org/posts /using-nethermind-to-run-a-validator-in-eth2視頻教程:https://www.bilibili.com/video/BV1x541157FC(感謝ECN 社區)

二. 獎勵、懲罰、風險

我想參加信標鏈,聽說早期參與者的收益率很高,是真的嗎?

快速啟動器網站

同時也提供了一個計算(純粹數量意義的)年化收益率的粗略工具。一言以蔽之:信標鏈上資產的增發率與驗證者有效餘額的總和成反比;有效餘額越低(一開始存入的押金較少)、增發率越高、驗證者的年化收益率越高,反之亦然。

有效餘額可以視為驗證者的投票權重,跟驗證者的現存餘額(如果當下就退出能取回多少錢)是兩個概念。介紹可見: 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 倍);待被罰沒的驗證者“完全退出(exited)” 之後,這種懲罰會中止;(這個時長與等待退出的驗證者的數量正相關)

(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 協議本身的設計,驗證者隨意自由進出會使網絡非常不穩定。所以進入和退出都需要現存的活躍驗證者來協調。