以太坊科普:Eth2驗證者如何生成和保護取款密鑰
以太坊 2.0 的密鑰與以太坊 1.0 的密鑰在生成和使用方式上大致相同,但二者并不兼容,也就是說,在以太坊 1.0 上生成的密鑰不能在以太坊 2.0 上使用。
取款密鑰是什么?
取款密鑰(withdrawal key)是以太坊 2.0 中的驗證者用來提現(xiàn)以太幣的密鑰 1。
以太坊 2.0 的密鑰與以太坊 1.0 的密鑰在生成和使用方式上大致相同,但二者并不兼容,也就是說,在以太坊 1.0 上生成的密鑰不能在以太坊 2.0 上使用。
以太坊 2.0 中的密鑰總是以公鑰與私鑰的形式成對出現(xiàn)。取款密鑰由 權益人(staker) 自己持有,因為他們是資金的提供者,當然也想保有撤資的權利。
取款密鑰是用來干什么的?
在以太坊 2.0 中,取款密鑰的信息主要用于以下兩種情況:在以太坊 1.0 中創(chuàng)建押金存入交易;在以太坊 2.0 中提現(xiàn)以太幣。
當用戶在以太坊 1.0 上存入押金時,取款公鑰的作用是使該筆押金與取款私鑰關聯(lián)起來。這就是為什么以太坊 2.0 能通過取款公鑰知道誰有權提款(與該取款公鑰對應的取款私鑰才有權提取該筆保證金)。取款公鑰還用于將數(shù)據(jù)整合到以太坊的押金存入交易中,如下圖所示:
圖一:在存款流程中使用取款公鑰
要注意的一點是,每個押金要約(deposit agreement)中都要用到取款公鑰 2。
在以太坊 2.0 上提現(xiàn)以太幣的操作細節(jié)還未確定,但無論將來采取怎么樣的方式,都需要提款私鑰來簽名授權。
圖二:提現(xiàn)操作框架
在上圖的示例中,權益人使用提款私鑰對提現(xiàn)操作的細節(jié)進行簽名。然后,以太坊 2.0 網(wǎng)絡就可以比較提款操作中的簽名授權與存款協(xié)議中的提款身份標識(withdrawal identification)(如圖一所示)。如果兩者匹配,提款操作就能進行下去。
直到可以使用提款功能之前,我們都無需用到提款私鑰。提款功能可能要等存入押金后一年以上才可以使用。即使功能可用后,也不一定要使用。對于那些想要長期獲得獎勵的權益人來說,能否提款對他們的日常操作幾乎沒有影響。
這就意味著,我們應該保護好自己的提款私鑰,短期內不需要使用它,即使從長期來看也只需要偶爾使用它。也就是說,在平衡密鑰的安全性和可用性時,安全性應該是我們更看重的。
要保護多少個私鑰?
還有一個需要回答的問題是:我們一共需要保護多少個私鑰?
如果你只創(chuàng)建一個驗證者身份,那么答案很簡單:一個私鑰。如果你要創(chuàng)建多個驗證者身份,那么答案會變得復雜起來。我們可以為每個驗證者身份創(chuàng)建一個不同的提款私鑰,但這不是必須的。那么,每個驗證者身份的提款私鑰應該是唯一的嗎?
使用多個提款私鑰的理由主要有兩個。第一個原因是,如果不同的驗證者身份共享一個密鑰,這些驗證者身份之間就有了聯(lián)系:顯然,這些賬號下的押金同屬一個實體。由此,也就很容易計算出使用這個私鑰可以訪問的資金量,以及該實體持有的以太幣總量。不過,使用不同的私鑰并不能防止他人從其它渠道獲取這些信息,例如,發(fā)起這些存款交易的以太坊 1.0 地址同樣反映了這些信息。因此,除非我們在使用以太坊 1.0 地址時足夠謹慎,否則使用多個提款私鑰對安全性的提升不值一提。
第二個原因是,使用同一個私鑰會讓這個私鑰的價值過高,也就更容易遭竊。但是,如果將不同的私鑰存放在同一個地方,也會導致相同的問題。也就是說,應該從物理和邏輯上將不同的私鑰分開,以減少丟失所帶來的影響。
總之,如果你想防止其他人發(fā)現(xiàn)多個驗證者身份背后的同一個實體(假設你的每筆存款來自不同的以太坊 1.0 地址),并且將你的每個提款私鑰分別儲存在不同地方,或者采用了不同的密鑰保護機制,那么使用多個私鑰會帶來實質性的好處。由于普通用戶一般不會這樣操作,本文的余下部分只介紹了單個提款私鑰是如何使用的,如有需要,本文內容也將適用于持有多個私鑰的情況。
步驟
我們已經(jīng)了解了基本要求,現(xiàn)在來看看怎么創(chuàng)建并保護取款密鑰。創(chuàng)建新密鑰的步驟如下:
創(chuàng)建提款錢包;
創(chuàng)建提款賬戶;
記錄取款公鑰;
刪除提款錢包;
確認提款錢包可以恢復。
我們來看一下圖解:
圖三:創(chuàng)建并保護取款密鑰的步驟
這些步驟必須在電腦上完成,要小心防止電腦被入侵。本文篇幅有限,不展開討論如何防止電腦遭到入侵,但是用戶至少要做到的一點是:在執(zhí)行上述過程時,電腦不能聯(lián)網(wǎng)。
創(chuàng)建提款錢包
本文截稿時,尚未開發(fā)出基于 BLS12-381 曲線的以太坊 2.0 密鑰硬件錢包,也就是說,目前還沒有可以儲存以太坊 2.0 密鑰的硬件錢包(編者注:在本譯本出版時好像已經(jīng)有了)。因此,密鑰必須在軟件中生成。本文以 ethdo 命令行工具為例,你也可以使用其它工具來實現(xiàn)。
ethdo 采用了 錢包 的概念。一個錢包可以包含一個或多個賬戶,而且可以從邏輯上將不同賬戶分隔開來(例如,將提款賬戶和驗證賬戶分開)。一個賬戶包括私鑰、公鑰以及其它一些數(shù)據(jù)(如,一個好記的賬戶名),這樣就不用直接使用公鑰登陸了 3。如果要為提款賬戶創(chuàng)建錢包,請運行以下代碼:
ethdo wallet create –wallet=”Staking wallet” –type=hd –walletpassphrase=secret1
這行代碼會創(chuàng)建一個帶有 助記詞 的錢包。助記詞由 24 個單詞組成,可用來恢復之前創(chuàng)建的錢包和錢包內的所有賬戶,應該立即保護好。上述命令會輸出助記詞,應該離線保存好。如果輸入命令后并沒有顯示助記詞,說明錢包無法恢復,那么我們不應使用這個錢包。
保存助記詞的方法有很多,如 Blockplate 和 Cryptosteel,但你也可以把它抄下來,放在一個安全(最好防火)的地方。記住,一旦助記詞丟失,你就無法提款,因此要采取恰當?shù)拇胧┍4婧弥浽~。
助記詞保存好后,我們就可以開始創(chuàng)建提款賬戶了。
創(chuàng)建提款賬戶
創(chuàng)建提款賬戶的命令如下:
ethdo account create –account=”Staking wallet/Withdrawal account” –walletpassphrase=secret1 –passphrase=secret2
錢包口令(walletpassphrase)必須與你在上一部分提供的口令保持一致。后面一個口令則僅僅是這個賬戶的口令,只在刪除賬戶前暫時使用。
記錄取款公鑰
顧名思義,公鑰是 公開 的,無需采取特殊的安全保護措施。運行下列代碼查看公鑰:
ethdo account info –account=”Staking wallet/Withdrawal account”
如果該代碼沒有輸出取款公鑰,可能說明賬戶創(chuàng)建過程出錯。仔細查看之前運行的代碼是否有錯。
請注意,雖然公鑰不是私密的,但我們應該采取合理措施保證惡意攻擊者無法將你的公鑰換成他們的公鑰。
刪除提款錢包
如果上述步驟均正確執(zhí)行,我們就可以安全地刪除這個提款錢包了。請運行下方代碼:
ethdo wallet delete –wallet=”Staking wallet”
隨后,你可以運行下方代碼來訪問錢包,以確認該錢包是否已經(jīng)刪除:
ethdo wallet info –wallet=”Staking wallet”
正常情況下,會返回一條錯誤消息,原因是無法找到錢包。
確認提款錢包可以恢復
在用取款密鑰進行任何存款前,最好先重建提款錢包。這不僅可以保證我們熟悉操作流程,還可以在你放入資金之前最后檢查一遍可能出現(xiàn)的錯誤。
首先使是用助記詞重建錢包。請運行下方代碼:
ethdo wallet create –wallet=”Recovery wallet” –type=hd –walletpassphrase=temp1 –mnemonic=”MNEMONIC”
將上方代碼中的 mnemonic 換成你的助記詞。
然后運行下方代碼重建提款賬戶:
ethdo account create –account=”Recovery wallet/Withdrawal account” –walletpassphrase=temp1 –passphrase=temp2
運行下方代碼獲取其公鑰:
ethdo account info –account=”Recovery wallet/Withdrawal account”
這時,要注意確認該命令輸出的公鑰與之前抄下來的公鑰一致。若一致,則表明你的助記詞是正確的。
若要再次刪除該錢包,請運行下方代碼:
ethdo wallet delete –wallet=”Recovery wallet”
然后運行下方代碼來嘗試訪問錢包,確認其是否已經(jīng)刪除:
ethdo wallet info –wallet=”Recovery wallet”
正常情況下,會返回一條錯誤消息,原因是無法找到錢包。
以上步驟也能用于驗證者密鑰嗎?
不可以。以太坊 2.0 的驗證者密鑰與取款密鑰在使用方式上差異很大,而且與你熟悉的絕大多數(shù)密鑰都不相同。我們將在下一篇文章中細述驗證者密鑰,及其用法和保護措施。
腳注
注 1:取款密鑰和以太坊 2.0 的其它密鑰并無特殊區(qū)別,我們使用這個名字只是為了直觀地表達出其用途。
注 2:如圖所示,實際操作中我們只需要提款身份標識。但是,我們建議也要保存好取款公鑰,因為公鑰可能有其他用途(如,驗證簽名)。
注 3:因為公鑰長這樣:0xa9ca9cf7fa2d0ab1d5d52d2d8f79f68c50c5296bfce81546c254df68eaac0418717b2f9fc6655cbbddb145daeb282c00,所以會很麻煩。
以上就是以太坊科普:Eth2驗證者如何生成和保護取款密鑰的詳細內容,更多關于以太坊2.0(Eth2)的資料請關注腳本之家其它相關文章!
你可能感興趣的文章
-
以太坊合約交易怎么玩?以太坊合約交易教程
這篇文章主要介紹了以太坊合約交易怎么玩?以太坊合約交易教程的相關資料,需要的朋友可以參考下,以太坊合約交易是指交易雙方,在交易所通過買賣以太坊合約,并根據(jù)約定在…
2021-11-29 -
科普:以太坊轉賬手續(xù)費怎么算?教你省錢的方法
這篇文章主要介紹了科普:以太坊轉賬手續(xù)費怎么算?的相關資料,希望這篇關于以太坊轉賬手續(xù)費怎么算的文章,讓大家都能明白以太坊轉賬手續(xù)費的算法,下面一起來看看吧!…
2021-11-10 -
如何轉移以太坊ETH錢包數(shù)據(jù)?以太坊C盤數(shù)據(jù)轉移教程
這篇文章主要介紹了如何轉移以太坊ETH錢包數(shù)據(jù)?以太坊C盤數(shù)據(jù)轉移教程的相關資料,需要的朋友可以參考下,首先以太坊的數(shù)據(jù)保存在user用戶名當中需要在硬盤的位置,一是可…
2021-11-10 -
怎么注冊以太坊錢包?以太坊(ETH)錢包下載,教你快速申請以太坊ETH錢包
這篇文章主要介紹了怎么注冊以太坊錢包?以太坊(ETH)錢包下載,教你快速申請以太坊ETH錢包的相關資料,需要的朋友可以參考下今天這篇文章我們講一講以太坊錢包的注冊流程 ?!?/p> 2021-11-10
-
支持HECO火幣生態(tài)鏈錢包有哪些?如何設置PC端以太坊錢包?
這篇文章主要介紹了支持HECO火幣生態(tài)鏈錢包有哪些?如何設置PC端以太坊錢包?的相關資料,希望這篇關于如何設置PC端以太坊錢包的文章,能讓投資者深入的了解HECO火幣生態(tài)鏈錢…
2021-11-10 -
一文弄懂區(qū)塊鏈和以太坊智能合約的由來和運行原理
這篇文章主要介紹了一文弄懂區(qū)塊鏈和以太坊智能合約的由來和運行原理的相關資料,希望這篇關于區(qū)塊鏈和智能合約的文章,讓大家能夠深入的了解區(qū)塊鏈和以太坊智能合約的由來…
2021-11-08 -
以太坊ETH錢包要用比特派的五大理由
這篇文章主要介紹了以太坊ETH錢包入門:以太坊ETH錢包要用比特派的五大理由的相關資料,希望這篇關于以太坊ETH錢包要用比特派的五大理由的文章,能讓更多的朋友,深入的了…
2021-11-04 -
The DAO眾籌事件與以太坊分叉
這篇文章主要介紹了The DAO眾籌事件與以太坊分叉的相關資料,以太坊的代幣眾籌曾經(jīng)歷了一次大的災難性事件,這次事件甚至導致了以太坊區(qū)塊鏈的分叉。…
2021-11-03 -
V神說以太坊的Token系統(tǒng)
這篇文章主要介紹了V神說以太坊的Token系統(tǒng)的相關資料,以太坊的重要應用是在它上面用智能合約發(fā)行通證。在白皮書中,維塔利克(人稱“V神”)詳細地討論了所謂的“Token 系…
2021-11-03 -
以太坊智能合約是什么?以太坊的智能合約有什么用
這篇文章主要介紹了以太坊智能合約是什么?以太坊的智能合約有什么用,下面小編W為大家整理一篇比較詳細的教程,希望能幫助到投資君!…
2021-11-03