公钥和私钥怎么生成_科普 | Eth2 验证者如何生成和保护取款密钥
生活随笔
收集整理的這篇文章主要介紹了
公钥和私钥怎么生成_科普 | Eth2 验证者如何生成和保护取款密钥
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
來源 |?以太坊愛好者
作者|Jim McDonald責(zé)編|晉兆雨取款密鑰是什么?
取款密鑰(withdrawal key)是以太坊 2.0 中的驗證者用來提現(xiàn)以太幣的密鑰 [1]。以太坊 2.0 的密鑰與以太坊 1.0 的密鑰在生成和使用方式上大致相同,但二者并不兼容,也就是說,在以太坊 1.0 上生成的密鑰不能在以太坊 2.0 上使用。以太坊 2.0 中的密鑰總是以公鑰與私鑰的形式成對出現(xiàn)。取款密鑰由?權(quán)益人(staker)?自己持有,因為他們是資金的提供者,當(dāng)然也想保有撤資的權(quán)利。取款密鑰是用來干什么的?
在以太坊 2.0 中,取款密鑰的信息主要用于以下兩種情況:在以太坊 1.0 中創(chuàng)建押金存入交易;在以太坊 2.0 中提現(xiàn)以太幣。當(dāng)用戶在以太坊 1.0 上存入押金時,取款公鑰的作用是使該筆押金與取款私鑰關(guān)聯(lián)起來。這就是為什么以太坊 2.0 能通過取款公鑰知道誰有權(quán)提款(與該取款公鑰對應(yīng)的取款私鑰才有權(quán)提取該筆保證金)。取款公鑰還用于將數(shù)據(jù)整合到以太坊的押金存入交易中,如下圖所示:- 圖一:在存款流程中使用取款公鑰(預(yù)知詳情,請參見這篇文章)(編者注:見文末超鏈接《驗證者的生命流程》)-要注意的一點是,每個押金要約(deposit agreement)中都要用到取款公鑰 [2]。在以太坊 2.0 上提現(xiàn)以太幣的操作細(xì)節(jié)還未確定,但無論將來采取怎么樣的方式,都需要提款私鑰來簽名授權(quán)。- 圖二:提現(xiàn)操作框架 -在上圖的示例中,權(quán)益人使用提款私鑰對提現(xiàn)操作的細(xì)節(jié)進(jìn)行簽名。然后,以太坊 2.0 網(wǎng)絡(luò)就可以比較提款操作中的簽名授權(quán)與存款協(xié)議中的提款身份標(biāo)識(withdrawal identification)(如圖一所示)。如果兩者匹配,提款操作就能進(jìn)行下去。直到可以使用提款功能之前,我們都無需用到提款私鑰。提款功能可能要等存入押金后一年以上才可以使用。即使功能可用后,也不一定要使用。對于那些想要長期獲得獎勵的權(quán)益人來說,能否提款對他們的日常操作幾乎沒有影響。這就意味著,我們應(yīng)該保護(hù)好自己的提款私鑰,短期內(nèi)不需要使用它,即使從長期來看也只需要偶爾使用它。也就是說,在平衡密鑰的安全性和可用性時,安全性應(yīng)該是我們更看重的。要保護(hù)多少個私鑰?
還有一個需要回答的問題是:我們一共需要保護(hù)多少個私鑰?如果你只創(chuàng)建一個驗證者身份,那么答案很簡單:一個私鑰。如果你要創(chuàng)建多個驗證者身份,那么答案會變得復(fù)雜起來。我們可以為每個驗證者身份創(chuàng)建一個不同的提款私鑰,但這不是必須的。那么,每個驗證者身份的提款私鑰應(yīng)該是唯一的嗎?使用多個提款私鑰的理由主要有兩個。第一個原因是,如果不同的驗證者身份共享一個密鑰,這些驗證者身份之間就有了聯(lián)系:顯然,這些賬號下的押金同屬一個實體。由此,也就很容易計算出使用這個私鑰可以訪問的資金量,以及該實體持有的以太幣總量。不過,使用不同的私鑰并不能防止他人從其它渠道獲取這些信息,例如,發(fā)起這些存款交易的以太坊 1.0 地址同樣反映了這些信息。因此,除非我們在使用以太坊 1.0 地址時足夠謹(jǐn)慎,否則使用多個提款私鑰對安全性的提升不值一提。第二個原因是,使用同一個私鑰會讓這個私鑰的價值過高,也就更容易遭竊。但是,如果將不同的私鑰存放在同一個地方,也會導(dǎo)致相同的問題。也就是說,應(yīng)該從物理和邏輯上將不同的私鑰分開,以減少丟失所帶來的影響。總之,如果你想防止其他人發(fā)現(xiàn)多個驗證者身份背后的同一個實體(假設(shè)你的每筆存款來自不同的以太坊 1.0 地址),并且將你的每個提款私鑰分別儲存在不同地方,或者采用了不同的密鑰保護(hù)機(jī)制,那么使用多個私鑰會帶來實質(zhì)性的好處。由于普通用戶一般不會這樣操作,本文的余下部分只介紹了單個提款私鑰是如何使用的,如有需要,本文內(nèi)容也將適用于持有多個私鑰的情況。步驟
我們已經(jīng)了解了基本要求,現(xiàn)在來看看怎么創(chuàng)建并保護(hù)取款密鑰。創(chuàng)建新密鑰的步驟如下:創(chuàng)建提款錢包;
創(chuàng)建提款賬戶;
記錄取款公鑰;
刪除提款錢包;
確認(rèn)提款錢包可以恢復(fù)。
創(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 個單詞組成,可用來恢復(fù)之前創(chuàng)建的錢包和錢包內(nèi)的所有賬戶,應(yīng)該立即保護(hù)好。上述命令會輸出助記詞,應(yīng)該離線保存好。如果輸入命令后并沒有顯示助記詞,說明錢包無法恢復(fù),那么我們不應(yīng)使用這個錢包。保存助記詞的方法有很多,如 Blockplate 和 Cryptosteel,但你也可以把它抄下來,放在一個安全(最好防火)的地方。記住,一旦助記詞丟失,你就無法提款,因此要采取恰當(dāng)?shù)拇胧┍4婧弥浽~。助記詞保存好后,我們就可以開始創(chuàng)建提款賬戶了。
創(chuàng)建提款賬戶
創(chuàng)建提款賬戶的命令如下:ethdo?account?create?--account="Staking?wallet/Withdrawal?account"?--walletpassphrase=secret1?--passphrase=secret2錢包口令(walletpassphrase)必須與你在上一部分提供的口令保持一致。后面一個口令則僅僅是這個賬戶的口令,只在刪除賬戶前暫時使用。記錄取款公鑰
顧名思義,公鑰是?公開?的,無需采取特殊的安全保護(hù)措施。運行下列代碼查看公鑰:ethdo?account?info?--account="Staking?wallet/Withdrawal?account"如果該代碼沒有輸出取款公鑰,可能說明賬戶創(chuàng)建過程出錯。仔細(xì)查看之前運行的代碼是否有錯。請注意,雖然公鑰不是私密的,但我們應(yīng)該采取合理措施保證惡意攻擊者無法將你的公鑰換成他們的公鑰。刪除提款錢包
如果上述步驟均正確執(zhí)行,我們就可以安全地刪除這個提款錢包了。請運行下方代碼:ethdo?wallet?delete?--wallet="Staking?wallet"隨后,你可以運行下方代碼來訪問錢包,以確認(rèn)該錢包是否已經(jīng)刪除:ethdo?wallet?info?--wallet="Staking?wallet"
正常情況下,會返回一條錯誤消息,原因是無法找到錢包。
確認(rèn)提款錢包可以恢復(fù)
在用取款密鑰進(jìn)行任何存款前,最好先重建提款錢包。這不僅可以保證我們熟悉操作流程,還可以在你放入資金之前最后檢查一遍可能出現(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"
這時,要注意確認(rèn)該命令輸出的公鑰與之前抄下來的公鑰一致。若一致,則表明你的助記詞是正確的。若要再次刪除該錢包,請運行下方代碼:ethdo?wallet?delete?--wallet="Recovery?wallet"
然后運行下方代碼來嘗試訪問錢包,確認(rèn)其是否已經(jīng)刪除:ethdo?wallet?info?--wallet="Recovery?wallet"
正常情況下,會返回一條錯誤消息,原因是無法找到錢包。
以上步驟也能用于驗證者密鑰嗎?
不可以。以太坊 2.0 的驗證者密鑰與取款密鑰在使用方式上差異很大,而且與你熟悉的絕大多數(shù)密鑰都不相同。我們將在下一篇文章中細(xì)述驗證者密鑰,及其用法和保護(hù)措施。腳注
注 1:取款密鑰和以太坊 2.0 的其它密鑰并無特殊區(qū)別,我們使用這個名字只是為了直觀地表達(dá)出其用途。注 2:如圖所示,實際操作中我們只需要提款身份標(biāo)識。但是,我們建議也要保存好取款公鑰,因為公鑰可能有其他用途(如,驗證簽名)。注 3:因為公鑰長這樣:0xa9ca9cf7fa2d0ab1d5d52d2d8f79f68c50c5296bfce81546c254df68eaac0418717b2f9fc6655cbbddb145daeb282c00,所以會很麻煩。原文鏈接:https://www.attestant.io/posts/protecting-withdrawal-keys/推薦閱讀- “善”用區(qū)塊鏈:善是初心,鏈?zhǔn)潜U?/li>
- 區(qū)塊鏈——物聯(lián)網(wǎng)解決方案平臺
- 小心!你可能玩了假的DeFi
- 不用鼠標(biāo),程序員編程竟能如此高效?
- 用 Python 詳解《英雄聯(lián)盟》游戲取勝的重要因素!
總結(jié)
以上是生活随笔為你收集整理的公钥和私钥怎么生成_科普 | Eth2 验证者如何生成和保护取款密钥的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 元宇宙概念龙头 多家上市公司都迎来上涨
- 下一篇: 广州过年找工作怎么找 方法很多大家不用担