日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

公钥和私钥怎么生成_科普 | Eth2 验证者如何生成和保护取款密钥

發(fā)布時間:2024/10/12 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 公钥和私钥怎么生成_科普 | Eth2 验证者如何生成和保护取款密钥 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

來源 |?以太坊愛好者

作者|Jim McDonald責編|晉兆雨

取款密鑰是什么?

取款密鑰(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 網絡就可以比較提款操作中的簽名授權與存款協(xié)議中的提款身份標識(withdrawal identification)(如圖一所示)。如果兩者匹配,提款操作就能進行下去。直到可以使用提款功能之前,我們都無需用到提款私鑰。提款功能可能要等存入押金后一年以上才可以使用。即使功能可用后,也不一定要使用。對于那些想要長期獲得獎勵的權益人來說,能否提款對他們的日常操作幾乎沒有影響。這就意味著,我們應該保護好自己的提款私鑰,短期內不需要使用它,即使從長期來看也只需要偶爾使用它。也就是說,在平衡密鑰的安全性和可用性時,安全性應該是我們更看重的。

要保護多少個私鑰?

還有一個需要回答的問題是:我們一共需要保護多少個私鑰?如果你只創(chuàng)建一個驗證者身份,那么答案很簡單:一個私鑰。如果你要創(chuàng)建多個驗證者身份,那么答案會變得復雜起來。我們可以為每個驗證者身份創(chuàng)建一個不同的提款私鑰,但這不是必須的。那么,每個驗證者身份的提款私鑰應該是唯一的嗎?使用多個提款私鑰的理由主要有兩個。第一個原因是,如果不同的驗證者身份共享一個密鑰,這些驗證者身份之間就有了聯(lián)系:顯然,這些賬號下的押金同屬一個實體。由此,也就很容易計算出使用這個私鑰可以訪問的資金量,以及該實體持有的以太幣總量。不過,使用不同的私鑰并不能防止他人從其它渠道獲取這些信息,例如,發(fā)起這些存款交易的以太坊 1.0 地址同樣反映了這些信息。因此,除非我們在使用以太坊 1.0 地址時足夠謹慎,否則使用多個提款私鑰對安全性的提升不值一提。第二個原因是,使用同一個私鑰會讓這個私鑰的價值過高,也就更容易遭竊。但是,如果將不同的私鑰存放在同一個地方,也會導致相同的問題。也就是說,應該從物理和邏輯上將不同的私鑰分開,以減少丟失所帶來的影響。總之,如果你想防止其他人發(fā)現(xiàn)多個驗證者身份背后的同一個實體(假設你的每筆存款來自不同的以太坊 1.0 地址),并且將你的每個提款私鑰分別儲存在不同地方,或者采用了不同的密鑰保護機制,那么使用多個私鑰會帶來實質性的好處。由于普通用戶一般不會這樣操作,本文的余下部分只介紹了單個提款私鑰是如何使用的,如有需要,本文內容也將適用于持有多個私鑰的情況。

步驟

我們已經了解了基本要求,現(xiàn)在來看看怎么創(chuàng)建并保護取款密鑰。創(chuàng)建新密鑰的步驟如下:
  • 創(chuàng)建提款錢包;

  • 創(chuàng)建提款賬戶;

  • 記錄取款公鑰;

  • 刪除提款錢包;

  • 確認提款錢包可以恢復。

  • 我們來看一下圖解:- 圖三:創(chuàng)建并保護取款密鑰的步驟 -這些步驟必須在電腦上完成,要小心防止電腦被入侵。本文篇幅有限,不展開討論如何防止電腦遭到入侵,但是用戶至少要做到的一點是:在執(zhí)行上述過程時,電腦不能聯(lián)網。

    創(chuàng)建提款錢包

    本文截稿時,尚未開發(fā)出基于 BLS12-381 曲線的以太坊 2.0 密鑰硬件錢包,也就是說,目前還沒有可以儲存以太坊 2.0 密鑰的硬件錢包(編者注:在本譯本出版時好像已經有了)。因此,密鑰必須在軟件中生成。本文以 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"
    隨后,你可以運行下方代碼來訪問錢包,以確認該錢包是否已經刪除: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"
    然后運行下方代碼來嘗試訪問錢包,確認其是否已經刪除:ethdo?wallet?info?--wallet="Recovery?wallet"
    正常情況下,會返回一條錯誤消息,原因是無法找到錢包。

    以上步驟也能用于驗證者密鑰嗎?

    不可以。以太坊 2.0 的驗證者密鑰與取款密鑰在使用方式上差異很大,而且與你熟悉的絕大多數(shù)密鑰都不相同。我們將在下一篇文章中細述驗證者密鑰,及其用法和保護措施。

    腳注

    注 1:取款密鑰和以太坊 2.0 的其它密鑰并無特殊區(qū)別,我們使用這個名字只是為了直觀地表達出其用途。注 2:如圖所示,實際操作中我們只需要提款身份標識。但是,我們建議也要保存好取款公鑰,因為公鑰可能有其他用途(如,驗證簽名)。注 3:因為公鑰長這樣:0xa9ca9cf7fa2d0ab1d5d52d2d8f79f68c50c5296bfce81546c254df68eaac0418717b2f9fc6655cbbddb145daeb282c00,所以會很麻煩。原文鏈接:https://www.attestant.io/posts/protecting-withdrawal-keys/

    推薦閱讀
    • “善”用區(qū)塊鏈:善是初心,鏈是保障
    • 區(qū)塊鏈——物聯(lián)網解決方案平臺
    • 小心!你可能玩了假的DeFi
    • 不用鼠標,程序員編程竟能如此高效?
    • 用 Python 詳解《英雄聯(lián)盟》游戲取勝的重要因素!

    總結

    以上是生活随笔為你收集整理的公钥和私钥怎么生成_科普 | Eth2 验证者如何生成和保护取款密钥的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。