'Polkadot:2類賬戶、2種算法、4個密鑰以及關於staking的一切'

算法 區塊鏈 技術 電腦 設計 播客 讀書 物理 經濟 Odaily星球日報 2019-09-09
"

Kusama正在準備創世治理,Polkadot也正為主網上線做準備。參與者蓄勢待發,想要成為Polkadot及實驗性網絡Kusama的驗證節點,或者用手中代幣為節點提名。

在這個NPoS共識網絡之下,staking包含哪些參與者和主要行為?多個平行鏈組成的區塊鏈網絡與單一網絡會有哪些區別?在「獎勵」和「懲罰」兩個重要設計上,我們應該瞭解哪些關鍵點?

stash和controller賬戶、會話密鑰、哨兵節點……關於staking、驗證、提名的諸多細節,也許你需要一個全面瞭解。

本週stake.fish編譯了媒體Relay Chain的新一期播客,詳細解答Polkadot和Kusama網絡中諸多細節問題。Relay Chain由負責Polkadot項目的公司Parity Technologies支持,專注Substrate、Polkadot等區塊鏈技術前沿問題。

本期播客由Parity解決方案架構師Gautam Dhameja擔任主持,Parity研究分析師Joe Petrowski擔任特別嘉賓,許多驗證和staking問題也是官方首次在公開媒體平臺詳細與聽眾分享。

閱讀本文你將瞭解:

  • 驗證節點與「共識」的關係

  • 2個重要算法:BABE和GRANDPA

  • 2類關鍵賬戶:Stash和controller

  • 4個會話密鑰及管理

  • NPoS共識的提名

  • 獎勵及罰沒

  • 驗證節點的設置

  • 澄清一些概念誤解

  • DOs & DON'Ts守則

主持人:Gautam Dhameja

嘉賓:Joe Petrowski

編譯:stake.fish

驗證節點、算法與「共識」

Gautam Dhameja:大家好,歡迎收聽Relay Chain。今天我們主要探討如何成為驗證者、需要了哪些必備知識、必備條件等諸多問題。

首先,驗證者在Kusama和Polkadot網絡中都負責什麼?

Joe Petrowski:我們可以先跳出區塊鏈的視野來看這個問題。因為驗證者是幫助一個網絡去達成共識的角色。什麼是共識?共識算法就是用一系列已經定義的消息,讓多個計算機網絡展現像同一個計算機一樣去展現,無論你與網絡中的哪一臺計算機通訊,得到的回覆都是相同的。

這可能有些抽象。但是請你想象一下,比如在一個物理的空間,如果你有一架飛機,裡面會有多臺電腦(因為人類操作的系統會傾向於有冗餘),如果你問任何一臺計算機,飛機將要往哪個方向走,不管問網絡的哪個部分,你得到的應該都是相同的答案,因為很明顯,飛機只能朝一個方向飛行。所以共識是一個算法,結合一系列信息,讓一個計算機網絡看起來像一臺計算機。這就是我們的目標,驗證節點就是為了傳遞這一系列信息的。

BABE和GRANDPA

Joe Petrowski:在Polkadot和Kusama的網絡環境中,我們讓這些算法共同工作,其中包括BABE和GRANDPA。BABE用來生產區塊,提議下一階段如何更改,GRANDPA用來最終確定(finalize)區塊。這裡我們會談到許多staking、獎勵、懲罰等問題。

要記住,獎勵和經濟因素與共識機制是不同的。共識機制就是用來下定義的,確定哪些動作需要驗證節點去做。我們要求生產有效區塊、驗證確實有效、對確定的事情達成一致等。有些有害行為會存在其中,比如說向兩個相互矛盾的區塊簽名或投票,或者提議一個無效區塊等。

當我們聊到staking、罰沒(slashing)、獎勵等情況時,我們其實是在聊如何迴應那些共識機制中定義的或好或壞的信息。

Gautam Dhameja:這很有趣。在這種情況下,如果我理解對的話是不是這麼說:在 Kusama 和 Polkadot的網絡環境下,驗證節點主要做兩件事:第一,當時機確定的時候可以生產區塊;第二,就此前或此後的區塊的最終審定進行投票。你有機會來投票或者最終確定的時候都需要採取行動,這是BABE算法裡產生區塊的一個循環方法,或者說是一個隨機方法?

Joe Petrowski:兩者都是。在BABE算法中存在一個隨機方法和一個循環回撤,所以我們可以得到一個恆定的區塊產生時間。

還有一點也很重要。Polkadot特有的一點就是,驗證節點負責在平行鏈之間傳遞信息,這是在單一區塊鏈網絡中不具備的。但當你有了多鏈網絡之後,驗證節點就需要有額外的責任在鏈與鏈之間傳遞信息,並使其能夠重構。

Gautam Dhameja:這麼說來,驗證節點有三個主要責任了:第一,在需要時生產區塊;第二,為此前需要最終審定的區塊投票;第三,在不同的區塊鏈間傳遞信息。

Joe Petrowski:沒錯。這裡有個細微的區別:我們不是在區塊上投票,而是在不同的鏈上投票。所以我們考慮的是一連串需要最終確定的區塊而不是單一區塊。

Gautam Dhameja:厲害。在最終確定方面,這相當有效率。

Joe Petrowski:你可以在最後一個區塊之前的5個區塊投票,它會將這些簽名和投票添加到其後的區塊中,然後我們可以在同一時刻最終確認所有的區塊。

Gautam Dhameja:如果我用另一種方式思考,那真是太神奇了,因為你實際上是在用區塊鏈的特徵來最終審定區塊鏈。

Joe Petrowski:是的。

stash和controller賬戶

Gautam Dhameja:哇哦,我的同事Ben在解釋GRANDPA算法的時候,指出了這一點,這相當酷。我們現在已經知道了驗證節點的作用,現在想聊一聊關於賬戶、密鑰、代幣的問題。

那麼到底staking了什麼?如何控制?如何存取?如何對你的信息進行簽名?

Joe Petrowski:Polkadot 有兩種賬戶:一個叫stash一個叫controller。兩者僅僅是語義學上的區別。相同的密碼學原理,相同的密鑰對,其實完全就是同樣的賬戶。但是我們不推薦這麼去看待他們。區別僅僅在於,你如何使用它以及我們希望你如何使用它。

stash賬戶應該總體上離線保管,就像存儲你的大量不常用的積蓄一樣。

但是如果你是治理和提名的參與者,希望進行staking,又不想用stash賬戶進行太多次簽名以防被別人更容易的發現。你可以用stash賬戶對一條信息進行簽名,相當於簽發了一個證書。然後你就得到了另一個賬戶,也就是controller賬戶的公鑰。你只需從你的stash賬戶中籤上例如「這是另一個地址的公鑰,我想要讓它成為我的controller。」

在controller賬戶中,你只需放一點點資金,能夠支付交易費即可。

這個controller賬戶的密鑰僅僅是用來告訴系統你想要做什麼。比如說想要提名驗證節點,想要給自己做驗證,或者想要為治理提議投票等等。controller與stash賬戶具有相同的權重,因為他得到了相應的許可,但是資金並沒有風險,因為你沒有用stash賬戶進行簽名,真正有風險的資金僅僅是controller裡那一小部分。如果你擔心controller賬戶的密鑰被別人控制了,為你的stash賬戶指定一個新的controller就可以了。

Gautam Dhameja:就是說,stash賬戶用來存儲資金,controller是一個操作賬戶,用來控制和管理。

Joe Petrowski:是的。

會話密鑰

Gautam Dhameja:接下來我們談談會話密鑰(session keys)。

首先什麼是會話密鑰?

Joe Petrowski:首先,會話密鑰是一個比較抽象的概念。我們用一個Polkadot上比較具象的例子來解讀。不過更抽象的是,你可以聲明你用Substrate在一個區塊鏈上使用多少會話密鑰,在 Polkadot 網絡上是4個。你可以聲稱這些密鑰與驗證節點執行的某些信息相聯繫。

要注意,這些密鑰並不意味著是賬戶,因此也與一個賬戶的加密方法不盡相同,事實上可以完全不同,儘管目前還不是這樣。這些密鑰只用來簽署消息,因此與資金並無關聯。

Polkadot中有4個會話密鑰:

一個是給BABE算法用作區塊產生的;

一個是給GRANDPA用作最終確定的;

一個是用來表明「我正在線」,類似於幫助信息,每隔幾個小時向區塊鏈進行報告;

還有一個被稱為平行鏈ID,幫助驗證節點與平行鏈進行匹配。

Gautam Dhameja:總體來說這些都與身份相關。所以說會話密鑰主要是為了驗證節點在不同場景下表明身份。四個會話密鑰彼此分離,因此可以很容易地進行更改、維護,或者只是為了更好地控制。

那麼如何去維護這些密鑰呢?

Joe Petrowsk:沒錯,這些密鑰是連接驗證節點及其行為的,就像你通過簽署一段信息從stash分配一個controller賬戶一樣,你將會用你的controller賬戶告訴網絡你的會話密鑰信息。

在你告訴所有人你想成為驗證節點之後,你將獲得你所有的4個會話密鑰,它們的一半是公共的,然後用你的controller帳戶來簽署這個消息。也就是說,這些會話密鑰是為我的驗證節點簽名的密鑰,它與stash帳戶綁定在一起。當網絡收到來自你的消息,說它已簽名,GRANDPA進投票最終審定,然後它可以說,這個投票來自這個stash帳戶,因為它鏈接到了這個會話密鑰。

Gautam Dhameja:但為了便於聽眾理解還是要多解釋一下,當我有2類賬戶,4個密鑰後,我如何確定我執行對了相關操作,或者需要做的事情呢?

Joe Petrowski:這就比一般用戶要知道的更深一些了,更多的是對於驗證節點的探討。如果你僅僅想要做提名人,你無需擔心這些問題。產生會話密鑰的方式是在實際節點上調用RPC端點,在實際節點上你將成為驗證節點。它將為你生成這4個會話密鑰,將其放到包含在客戶端中的密鑰庫中。之後你可以用controller賬戶對消息簽名,以關聯你的節點和controller賬戶。

這些密鑰都可以在客戶端中進行管理,因此不用擔心。你已經告訴這個鏈這些都是你的會話密鑰,它們位於客戶端中,客戶端也知道應該使用哪些密鑰。你只需要在第一次使用時操作一次,然後你可以在每個會話中改變這些密鑰。

所以你可以通過調用RPC生成新一組密鑰,然後給鏈上發送該消息說「嘿,這是我的新會話密鑰,」你的節點會進行檢查的最新會話密鑰並使用和記錄它們。

Gautam Dhameja:用更簡單的話說,我只需要把這四個公鑰作為參數傳遞給外部調用,因為消息將用我的controller密鑰簽名,外部調用就會把這些公鑰與我的controller賬戶關聯起來,這樣就設置好了。

Joe Petrowski:是的。還有一些更進階的驗證節點希望在客戶端外部生成會話密鑰。所以如果你想這樣做,有一種方法可以把你的會話密鑰注入客戶端,儘管這樣做的動機之一是使用備份驗證節點。因此,如果你需要設置兩個具有相同會話密鑰對的驗證節點以防其中一個離線的情況,也建議試一試。

我想這部分比較適用於進階的專業人士。你想要在線並有一個後備方案的想法很好,但要知道對兩個相互矛盾的區塊簽名的懲罰要比離線的懲罰大得多。所以如果你不能100%確信你所做的事,你應該讓客戶端自己來做決定。但是,如果你想要生成這些密鑰並在客戶端外部管理它們,並根據選擇將它們注入客戶端,也是有一些工具供使用的。

密鑰管理

Gautam Dhameja:我還想了解一些密鑰管理的問題。我知道,我現在僅需管理stash和controller兩個賬戶。stash賬戶不需要我們操作太多,可以先暫不考慮。controller賬戶如何管理密鑰?

Joe Petrowski:現在我們的密鑰是基於SR 25519的。你現在需要使用桌面錢包或者紙錢包,因為我們沒有全面支持硬錢包,我們已經有人正做 Ledger和Trezor的集成。

對於Kusama來說,你只需要管理一個密碼並把這個文件保存在你的電腦上,當然是以加密的形式。如果你設置了密碼,當我們啟動Polkadot時,我們應該已經支持Ledger和Trezor了,屆時你就可以用硬件錢包來管理這些密鑰了。我們現在還沒有硬件安全模塊( HSM,hardware security module)或者硬錢包支持,但是正在準備中。

硬件安全模塊會被移動到驗證節點中,因為可以將它們用於會話密鑰,其他一些PoS網絡也是這麼做的。現在也不可能,因為我們有4個會話密鑰,而且目前沒有任何硬件安全模塊可以處理SR 25519。

HSM硬件安全模塊內存非常有限。這是特地設計的,用來限制了攻擊者做任何操作的空間。我們也因此不能真正做出SR 25519的簽名,當然,4個會話密鑰就更不可能了。目前,我們還沒有HSM支持,但我們正在開發一些替代方案。

作為路線圖中的規劃,我們不僅能夠支持會話密鑰的客戶端內部管理,還能夠支持外部管理。也就是說讓客戶端發送一個有效負載並表述「我需要將其簽名」,然後你可以將它簽名並返回給任何想要的人。

HSM硬件安全模塊實際上有一種提供虛假安全感,因為它們只是一種虛擬的簽名條款,無論你發送什麼,它們都會簽名並將其返還。如果如果你確實發送兩個互相沖突的不同區塊,HSM也會給它們簽名。它什麼都不知道,因為裡面沒有任何相應的邏輯。

一些更高級的方法,比如SGX或者x86通用機器實際上有所幫助。它有一些簽名邏輯比如說永遠不會給兩個相同高度的區塊簽名。每個人都把HSM當作第一要務,但實際上這並不一定是安全保護的最佳方式。通過加入一些邏輯,你可以實現更安全的設置。

NPoS及staking

Gautam Dhameja:讓我們接著聊一下staking、NPoS方面的話題。提到staking,我們自然就會問到staking獎勵和懲罰,請先簡要介紹一下吧。

Joe Petrowski:NPoS網絡會有很多人想要運行驗證節點,但也有很多人不想成為驗證節點,因為要做事的實在太多。但是這些人還是想要在網絡通脹中去獲益。PoW和PoS網絡的區別之一就是,PoW中,礦工是那些真正「捕獲通脹」的人,PoS中則取決於網絡如何配置,許多人能夠以提名、委託或者其他的特定方式「捕捉」部分的通脹收益。

而Polkadot是基於提名方式PoS共識。有許多人將願意成為驗證節點,如果不想可以提名你想要的候選人。而且你可以提名這樣的候選人。我們的目的是想要在驗證節點間實現同等的staking。所以如果我們想要設置100個驗證節點,我們會想要每個節點都有1%的staking份額。我們讓人們提名不止一個驗證節點,用fragment的算法,自動分配提名的staking份額,以不斷優化驗證節點的組合。

實際上我們也正在進行兩種優化。第一是,找到驗證節點和提名者的最佳組合,以獲得最佳的DOT代幣staking數量;第二是,找到最佳的提名人分配額使其分佈最均勻。

Gautam Dhameja:如果說算法自動決定提名,那我是否還對自己的提名有所控制?例如,算法或者網絡允許我提名多個驗證節點,我手中有10個DOT或者KSM代幣,想要投給4個特定節點,我能決定分給每個節點的具體代幣數量嗎?還是算法替我決定?

Joe Petrowski:你不能,是算法給你決定的,讓過程簡易。

Gautam Dhameja:我大概瞭解NPoS如何運作了,那麼就是說,提名者可以是持幣的任何人,被提名者就是驗證節點,或者下一個被選的驗證節點,或者是想要成為驗證節點的人。

Joe Petrowski:是的。

提名、獎勵及通脹設計

Gautam Dhameja:下一個問題是,人們如何提名以及如何要求提名?因為我們要分清兩種不同角色,也要了解如何操作。如果我有代幣,想要提名Joe和Joe的3個朋友,我如何在系統操作?

Joe Petrowski:超簡單。你只需用你想要提名的驗證節點地址簽署一條消息。並且應該是驗證節點的stash帳戶地址,因為controller賬戶的會話密鑰是可以更改的。並且,這些都是通過UI處理的。在驗證節點地址的消息上簽名這些問題聽起來比較複雜,但是在Polkadot JS中,實際就是點按鈕「提名」按鈕,人們就可以自由選擇了。

作為一個提名者,你可以有stash和 controller兩個賬戶。你不應該把你的stash資金置於風險之中。用在你的controller賬戶簽名來表明你想提名的人就可以。

Gautam Dhameja:驗證節點通過驗證來獲得獎勵,提名人通過提名獲得獎勵,這是兩種staking形式。那麼具體我們怎麼拿到獎勵?

Joe Petrowski:Polkadot與其他網絡不同的就是,獲得獎勵的金額與你個人staking的金額不成正比,而與總的staking金額成正比。在這個範圍內,所有驗證節點得到相同的獎勵,無論每個節點staking金額的多少。

我們希望全網的staking的數量達到50%,這是我們的目標。那麼剩下50%會用於平行鏈的插槽拍賣,我們希望平行鏈有DOT代幣的綁定用於他們自己的平行鏈。一小部分代幣作為流動代幣用戶交易、轉賬等。

我們希望保證用於在驗證節點進行staking的代幣的安全性,所以會有一個隨著通脹從0%到50%不斷上升的staking額的曲線,這樣一來總體staking數量越多,得到的獎勵就越多。當這個比例超過50%,收益就會直線下降,人們成為驗證節點或提名節點的激勵也會隨之下降。

一旦設置了網絡的膨脹率,無論有多少staking的代幣,都會在所有驗證節點中平均分配。即使一個節點擁有的staking數量是另一個驗證節點的兩倍,他們也會得到相同的回報。

這麼設計出於兩點考慮:

第一點,從第一性原理來講,驗證節點是在做同樣的事情,他們有同樣的責任。他們在投票,在生產區塊,做同樣的工作,得到同樣的報酬。

第二點,希望人們在所有驗證節點能夠同等的進行staking。如果你提名一個節點,你是希望給最低staking的節點的。因為如果大家在一個驗證節點上staking了100個DOT代幣,另一個是500個DOT代幣,作為一個提名人,你給100個DOT那個節點提名,將會得到更多的回報。這就自然鼓勵了人們為更低staking數量的那些節點提名,這樣就將形成一個趨於平均的staking網絡。

slashing懲罰機制設計

Gautam Dhameja:接下來,讓我們聊聊罰沒(slashing)。我們得到回報,但後來搞砸了,咋辦呢?

Joe Petrowski:那你就得接受懲罰了。

作為一個驗證節點,你需要承擔許多責任,心存敬畏感。當然不同層面需要有不同的考慮,比如需要讓網絡保持均衡等等。罰沒的比例與staking金額成正比,其基於百分比,而不是絕對值。

如果你把許多資金staking給一個驗證節點,但這個節點發生故障或者行為不當,你失去的絕對數量實際上將比一個低staking數量的驗證節點要多。當涉及更大的驗證節點時,你將會發現應該在多個驗證節點、而不是僅僅在一個驗證節點上staking。

那麼如果我們單談罰沒,有幾種不同驗證程度的行為不當,程度較輕的是離線。

驗證節點應該保持在線因為這是你的工作。我們也意識到糟糕的事情時有發生,比如隔一段時間會失去幾分鐘的聯繫這種事。我想我們會給一定的試錯機會,比如,錯一次沒關係,錯兩次將罰沒。

罰沒的金額比較小,比如staking數量的0.01%或0.1%,但它實際上是迫使進行新的選舉,然後你將被踢出下一時期的驗證節點名單並即時生效,讓你不得想辦法等一段時間重新加入。

當發生更嚴重的錯誤後,懲罰也將增加,比如說雙籤區塊,也就是說為兩個相互矛盾的區塊簽名,這種情況會有大概10%的罰沒;

再比如攻擊網絡,例如向給一個與已經最終確定的鏈相沖突的鏈進行投票,這可能將受到100%罰沒。

那麼總結起來就是:離線、發生錯誤、雙籤等因素將會觸發罰沒機制。

當你用同樣的密鑰設置了兩個節點,他們意外的簽名了不同的區塊,那你將受到嚴重懲罰。如果你做了類似於雙籤的操作然後被最終確定下來,就等於說把軟件系統修改了,在Polkadot的執行過程中,是不允許引入一個與最終確認的鏈相矛盾的區塊的。如果你這麼做了,證明你沒有運行標準化的系統軟件,這就不僅僅是搞砸了的問題了,你這叫攻擊網絡。如果這樣你將受到很重的罰沒。

思考這一問題的另一個維度就是協作。

假如說全網20%的驗證節點離線了,罰沒就不像單一節點掉線那種0.01%或者一小部分了,因為這看起來是一種讓網絡變慢甚至停止的協同攻擊。但也可能是疏忽大意,比如說許多驗證節點連接在同一個數據中心等情況。我們希望各個節點保持獨立,這樣能夠儘量避免大量離線的發生。

Gautam Dhameja:也就是說,作為驗證節點,我們獲得的獎勵是平均的;作為提名人,得到的獎勵基於自己在節點上staking的金額。比如,如果一個驗證節點得到了10個代幣的獎勵,一個提名人staking的數量佔10%,那麼他將得到1個代幣的獎勵。但是如果發生了罰沒事件那就要另說了,因為每個人被罰沒的金額不是相同的,因為犯錯誤的是特定的節點,他們將按比例被罰沒。

Joe Petrowski:沒錯。你應該謹慎的考慮為哪些節點投票,最大限度的防止被罰沒,如果發生此類情況,驗證節點和提名人都將收到同等比例的處罰。

Gautam Dhameja:我如何才能看到是否被懲罰了,以及是否大家都公平的參與其中呢?有沒有dashboard?去哪兒看目前有哪些驗證節點在工作,他們的信譽如何?在這方面你們是如何計劃的呢?

Joe Petrowski:已經在計劃之中了,有可能會請Parity外部的參與者來做這件事。也非常希望人們以論壇、dashboard的形式來報告驗證節點的活動。因為像罰沒這種事都發生在區塊鏈上。事件發生後你可以重放來看看究竟發生了什麼。你可以看到賬戶餘額的實時變化,總體來說這樣的事情會逐漸出現的。

驗證中有很多物理基礎設施,如果你沒有資金或物理資源來做這件事,而且你對staking和驗證很感興趣,這完全可以作為一個軟件項目來做。創建一個這樣的網站來證明他們是在線的,這對優秀的驗證節點來說很有好處。

部署驗證節點

Gautam Dhameja:在瞭解了許多關鍵概念後,讓我們來看看如何進行操作。如果有人想成為驗證節點,與其他PoS網絡相比,有哪些不同的事情要做?Kusama 和Polkadot網絡中,思考方式或者期待的事情會有什麼不同?

Joe Petrowski:我認為從設置的角度來看非常相似,開發運營和基礎設施在任何地方都是一樣的。有一些不同之處,比如你是否採取HSM硬件安全管理,但是總體架構與其他PoS網絡非常相似。目前,這是一個非常小眾和新興行業,我們已經看到最有經驗的驗證節點在其他PoS網絡上進行驗證了。

最安全的設置之間有類似的東西是很好的,比如保持在線、禁止雙重簽名等,這些在所有的PoS網絡中都是通用的。

Gautam Dhameja:好的。那麼當我要部署節點,首先要注意在哪兒部署呢?

Joe Petrowski:我在 Web3峰會上與一些正在做一鍵部署的參與者交流過,希望打開都能比較簡單的操作。但是我們如果仔細看看什麼是一鍵部署,你可能會注意到雲端哨兵節點這樣的方案。哨兵節點不會洩露驗證節點的IP地址,因為可以很容易的拒絕服務讓其離線。它不會讓任何攻擊者有利可圖,但也會有被罰沒並損失資金的風險。

你不希望實際的驗證節點暴露給網絡,但是要又有很多工作需要在網絡中處理,那麼我們就需要引入哨兵節點(sentry nodes)的概念。它只是運行在雲端上的完全節點,是唯一有權連接到驗證節點的節點。這就實現了讓你的驗證節點不在公共網絡上,而只有一個虛擬專用網絡連接到雲端上的一些完整節點。這可以成為AWS或Azure等雲端服務的EC2實例。

如果有人試圖通過發送100萬份相同的消息副本進行攻擊,哨兵節點將進行檢查,他們只會向實際的驗證節點發送一份副本。如果這些哨兵節點受到攻擊,就很容易使它們運轉起來。我們建議在私有數據中心運行此功能,或者如果你具備在自己服務器基礎設施上運行此功能的技能也可以。

我們不建議把實際的驗證節點放在雲端中,因為那相當於把你的密鑰管理交給別人了。很多小企業甚至是中型企業都不希望把信息被放到雲端,因為不確定是否安全。要知道staking在一個Polkadot的驗證節點的代幣價值將有可能達到數百萬美元。

不過從一個開發運營者角度來說,在雲端上運行實際的驗證節點相對簡單。

Gautam Dhameja:如果staking數量足夠那麼我就可以成為驗證節點。如果不夠,沒成為驗證節點,怎麼辦呢?

Joe Petrowski:堅持下去。如果你運行多個驗證節點,你可能只需要關閉一個,然後在另一個驗證節點staking更多,或者找更多的人來為你提名。

Gautam Dhameja:驗證節點集合大概一天就會變換一次,人們可以在這個週期來競選成為節點。

Joe Petrowski:對的。

Gautam Dhameja:前面說到離線會被罰沒一部分代幣,如果說一個驗證節點開始驗證之後,出於一些原因,比如基礎設施升級維護或者換一個更好的地方需要離線,該怎麼辦?

Joe Petrowski:如果你確實需要離線,你有兩個選擇。

一個是設置Chill,立即表明你想要停止驗證的意圖。你仍然需要完成這一時期的相關驗證工作。但是在下一輪提名選舉中,將從驗證節點集合中被移出,不會有懲罰或其他影響。此後,當你做完了要處理的工作繼續上線,可以發送“我想要繼續驗證”的消息,然後為下一輪提名競選作準備。

如果你不想中途退出驗證節點結合,你可以設置第二驗證節點,給他設置會話密鑰,然後告知網絡你想要用一組新的會話密鑰進行驗證。但不要把同樣的會話密鑰放在不同的兩個節點中使用,避免雙籤。

要明確告訴網絡你用哪組會話密鑰,然後用你的第二驗證節點接著工作。我認為你需要連接相同的哨兵節點,因為網絡連接中,節點用分佈式哈希表來確定其他節點的位置以及找到他們的方式,如果你增加或者移除哨兵節點,分佈式哈希表就變了。所以還是保持相同的哨兵節點比較好。

明確幾個重要概念

Gautam Dhameja:那麼節目最後我們還是想請你澄清一些對概念的誤解。因為許多概念很新,我們也是第一次詳細的介紹這些概念並在公開領域發佈。那麼請你介紹哪些概念容易理解錯,哪些事情應該避免?

Joe Petrowski:第一大需要明確的是,驗證節點無論staking金額多少都會有相同的收益。我幾乎每天都在解釋這個概念,因為這是Polkadot跟其他PoS網絡的明顯區別。

第二個需要明確的是,在GRANDPA算法中你在鏈上投票,而不是區塊上。我們之前聊過,這個算法跟別的區塊鏈算法很不同。它不是以區塊為基礎的,是以鏈為基礎的。

其他的誤解不是很多,因為實際上各個網絡上,無論是不是區塊鏈的,基礎設施大多比較相似。

Gautam Dhameja:我認為最大的誤解是關於罰沒和獎勵的。獎勵在驗證節點間是平均分配的,提名人根據在各個節點上staking的份額獲取獎勵。當罰沒發生的時候,按比例罰沒代幣。

DOs & DON’Ts

Gautam Dhameja:那麼如果提醒廣大潛在的驗證節點什麼需要做,什麼不要做,你有什麼建議?

Joe Petrowski:需要做的是,第一,認真對待,因為staking金額將會很大。PoS網絡中,以至所有區塊鏈網絡中、共識網絡中,我們看的都是與經濟密切相關的。網絡的安全性總體是基於有多少金額staking在網絡中的。

我們期望驗證節點能夠收到更多的staking金額,那麼這就不是一個在網絡上做實驗的事情了,你需要確定的是在主網上的活動確實是經過審慎考慮過的,設置是被嚴格審計過的,以及諸多問題,而不能夠想當然的去做。

什麼不能做?別把事情搞砸。也就是說,別離線,別雙籤區塊,別作惡,類似為與已經最終確定的鏈相矛盾的鏈進行投票這種事就不要做。

Gautam Dhameja:謝謝,我覺得以上是我們需要聊的一些重要話題,希望這些能夠對想要成為Kusama或者Polkadot網絡驗證節點的參與者提供幫助。

stake.fish一直密切關注Kusama和Polkadot的網絡進展,並籌備成為其驗證節點,建設網絡生態。PoS網絡中,驗證節點需要運行具有多重安全功能、 7×24 小時在線的強大硬件,還要進行大量細緻的工作,而這恰恰是我們的強項。作為專業的驗證節點,我們能夠為staking參與者提供放心的全天候服務。

官方網站:https://stake.fish

Telegram社區:https://t.me/stakefish

Twitter:@stakedotfish

YouTube:bitfish

微信公眾號:stakefish

新浪微博:@stakefish

We Know Validating.

"

相關推薦

推薦中...