本文轉載自:ETH中文網公眾號
以太坊2。0金鑰概述
總述
以太坊1。0和2。0的金鑰是基於相同的思路並使用橢圓曲線密碼學創造出來的。但是,以太坊2。0的功能性有所增強,在創造金鑰時需要不同的引數,並使用
BLS
(Boneh-Lynn-Shacham) 簽名方案。
以太坊2.0金鑰有哪些?
在以太坊1。0,使用者訪問他們的資金只需要
一個私鑰
,而在以太坊2。0中則需要兩個不同的金鑰——
驗證者私鑰
和
提款私鑰
。
驗證者金鑰
如下圖所示,驗證者金鑰由兩個元素組成:
驗證者
私
鑰
驗證者
公
鑰
由於驗證者私鑰需要隨時對ETH2進行鏈上簽名,比如區塊提議和證明。因此這些金鑰必須儲存在熱錢包裡。
這種靈活性使得驗證者簽名金鑰可以快速地在裝置間進行遷移。但是,如果金鑰丟失了或被盜了,盜竊者可以透過以下兩種方式
作惡
:
透過以下的做法使驗證者被罰沒:
o 作為區塊提議者時,對同一個時隙 (slot) 的兩個不同信標區塊進行簽名投票
o 作為區塊證明人時,對另外一個區塊進行環繞證明投票
o 作為區塊證明人時,對同一個目標檢查點進行兩次不同的證明投票
強行主動退出,阻止驗證者質押,並給提款金鑰所有者提供ETH餘額的訪問許可權。
驗證者公鑰
包含在存款資料裡,作用是使得ETH2能夠識別驗證者身份。
提款金鑰
如果在階段1和階段2能夠實現ETH轉移的話,那麼轉移驗證者的餘額則需要用到提款金鑰。如同驗證者金鑰,提款金鑰也由兩部分組成:
提款
私
鑰
提款
公
鑰
丟失了這個金鑰意味著無法訪問驗證者餘額。但是,驗證者仍然可以對證明投票和區塊進行簽名,因為這些操作只需要驗證者的私鑰,只是如果金鑰丟失了的話驗證者這樣做基本沒法取得獎勵。
要提款的話,驗證者狀態必須是“
已退出
”。
單個ETH1錢包中有多個驗證者存款的情況
每個驗證者都有他們自己
唯一的存款資料
,而信標鏈透過存款資料來識別驗證者。
一個
驗證者有
四個
金鑰。
問
:我要如何重新將存款存進驗證者餘額裡?(例如有效餘額已被清空)
答
:傳送另一筆大於等於1 ETH的交易到存款合約,以驗證者的特定存款資料作為交易輸入。在第一筆存款交易後,這個唯一的存款資料會儲存在區塊鏈上,並可以在多個瀏覽器上查詢到。
注
:存款合約要花費大概360,000 gas,但鑑於退款操作需要一定成本,建議將交易費定在400,000到500,000 gas之間。
ETH2.0驗證者的助記詞
在過去的幾年裡,我們已習慣於12到24個單詞的助記詞系統。我們為什麼要倒退回本地儲存金鑰呢?這方式顯然更復雜、更不安全。
在BLS密碼庫的審計完成之前,目前已知的硬體錢包將不支援ETH2。0金鑰的生成。EIP-2333和EIP-2334提供瞭解決方案,但仍有待實現。基於這些認知,我們可以預見在階段0啟動的時候,助記詞系統是不可用的。
它是怎麼運作的?
助記詞和路徑都是為大家所熟知的功能了,使用者在訪問他們的硬體錢包時也經常會碰到。
“舊的ETH1。0”的路徑結構和示例:
m/44‘/60’/0‘/0
m / purpose’ / coin_type‘ / account’ / change / address_index
同樣的邏輯也適用於ETH2。0金鑰,只是有一些不同的引數。會有一個“
父金鑰
”(助記詞)使得使用者可以將盡可能多的驗證者連結到一個提款金鑰裡。如此一來,使用者可以透過助記詞
匯出所有的金鑰
。
下圖對此做出了簡要概述:
Cr: Nishant Das 負責事實核查