科普:Eth2驗證者如何生成和保護取款密鑰
編者按:本文來自以太坊愛好者(ID:ethfans)以太坊愛好者(ID:ethfans)
以太坊愛好者(ID:ethfans)
一級標題
以太坊2.0 的密鑰與以太坊1.0 的密鑰在生成和使用方式上大致相同,但二者並不兼容,也就是說,在以太坊1.0 上生成的密鑰不能在以太坊2.0 上使用。
以太坊愛好者(ID:ethfans)
以太坊2.0 的密鑰與以太坊1.0 的密鑰在生成和使用方式上大致相同,但二者並不兼容,也就是說,在以太坊1.0 上生成的密鑰不能在以太坊2.0 上使用。
以太坊愛好者(ID:ethfans)
以太坊愛好者(ID:ethfans)
一級標題
以太坊2.0 的密鑰與以太坊1.0 的密鑰在生成和使用方式上大致相同,但二者並不兼容,也就是說,在以太坊1.0 上生成的密鑰不能在以太坊2.0 上使用。
一級標題
以太坊2.0 的密鑰與以太坊1.0 的密鑰在生成和使用方式上大致相同,但二者並不兼容,也就是說,在以太坊1.0 上生成的密鑰不能在以太坊2.0 上使用。
取款密鑰是用來幹什麼的?
圖片描述
在以太坊2.0 中,取款密鑰的信息主要用於以下兩種情況:在以太坊1.0 中創建押金存入交易;在以太坊2.0 中提現以太幣。
當用戶在以太坊1.0 上存入押金時,取款公鑰的作用是使該筆押金與取款私鑰關聯起來。這就是為什麼以太坊2.0 能通過取款公鑰知道誰有權提款(與該取款公鑰對應的取款私鑰才有權提取該筆保證金)。取款公鑰還用於將數據整合到以太坊的押金存入交易中,如下圖所示:
圖片描述
一級標題
要注意的一點是,每個押金要約(deposit agreement)中都要用到取款公鑰2。
在以太坊2.0 上提現以太幣的操作細節還未確定,但無論將來採取怎麼樣的方式,都需要提款私鑰來簽名授權。
在上圖的示例中,權益人使用提款私鑰對提現操作的細節進行簽名。然後,以太坊2.0 網絡就可以比較提款操作中的簽名授權與存款協議中的提款身份標識(withdrawal identification)(如圖一所示)。如果兩者匹配,提款操作就能進行下去。
一級標題
這就意味著,我們應該保護好自己的提款私鑰,短期內不需要使用它,即使從長期來看也只需要偶爾使用它。也就是說,在平衡密鑰的安全性和可用性時,安全性應該是我們更看重的。
一級標題
一級標題
要保護多少個私鑰?
還有一個需要回答的問題是:我們一共需要保護多少個私鑰?
第二個原因是,使用同一個私鑰會讓這個私鑰的價值過高,也就更容易遭竊。但是,如果將不同的私鑰存放在同一個地方,也會導致相同的問題。也就是說,應該從物理和邏輯上將不同的私鑰分開,以減少丟失所帶來的影響。
步驟
步驟
圖片描述
我們已經了解了基本要求,現在來看看怎麼創建並保護取款密鑰。創建新密鑰的步驟如下:
創建提款賬戶;
二級標題
ethdo wallet create --wallet="Staking wallet" --type=hd --walletpassphrase=secret1
刪除提款錢包;
圖片描述
圖片描述
二級標題
- 圖三:創建並保護取款密鑰的步驟 -
ethdo account create --account="Staking wallet/Withdrawal account" --walletpassphrase=secret1 --passphrase=secret2
二級標題
創建提款錢包
這行代碼會創建一個帶有助記詞的錢包。助記詞由24 個單詞組成,可用來恢復之前創建的錢包和錢包內的所有賬戶,應該立即保護好。上述命令會輸出助記詞,應該離線保存好。如果輸入命令後並沒有顯示助記詞,說明錢包無法恢復,那麼我們不應使用這個錢包。
ethdo account info --account="Staking wallet/Withdrawal account"
二級標題
保存助記詞的方法有很多,如Blockplate 和Cryptosteel,但你也可以把它抄下來,放在一個安全(最好防火)的地方。記住,一旦助記詞丟失,你就無法提款,因此要採取恰當的措施保存好助記詞。
助記詞保存好後,我們就可以開始創建提款賬戶了。
二級標題
ethdo wallet delete --wallet="Staking wallet"
二級標題
ethdo wallet info --wallet="Staking wallet"
錢包口令(walletpassphrase)必須與你在上一部分提供的口令保持一致。後面一個口令則僅僅是這個賬戶的口令,只在刪除賬戶前暫時使用。
二級標題
二級標題
二級標題
ethdo wallet create --wallet="Recovery wallet" --type=hd --walletpassphrase=temp1 --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"
二級標題
確認提款錢包可以恢復
首先使是用助記詞重建錢包。請運行下方代碼:
將上方代碼中的mnemonic 換成你的助記詞。
運行下方代碼獲取其公鑰:
二級標題
若要再次刪除該錢包,請運行下方代碼:


