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