tft每日頭條

 > 生活

 > 以太坊技術知識講解

以太坊技術知識講解

生活 更新时间:2024-11-17 03:12:54

以太坊技術知識講解(科普貼以太坊)1

免責聲明:本文旨在傳遞更多市場信息,不構成任何投資建議。文章僅代表作者觀點,不代表火星财經官方立場。

小編:記得關注哦

來源:以太坊愛好者

原文标題:《科普 | Eth2 Staking 指南 #4:密鑰》

撰文:Carl Beekhuizen

翻譯:阿劍

衷心感謝 Sacha Yves Saint-Leger 和 Danny Ryan 對本文的審核。

權益證明系統的核心是其簽名方案。簽名用于驗證發出操作的驗證者的身份,即确定哪個操作是由哪個驗證者發出的(不論是 「好」 的操作還是 「壞」 的操作)。

我們既可以根據一個驗證者簽過名的消息來确認 TA 遵守了協議,也可以通過展示觸犯了共識規則的消息來證明某個驗證者的惡意。

實際上,在 Eth2 系統中,驗證者的身份是根據其公鑰(public key)來确定的。每個驗證者都有兩組密鑰:簽名密鑰對和取款密鑰對。

簽名密鑰對

所謂 「簽名密鑰」,是指一個驗證者在簽名見證消息和提議區塊的時候要用到的密鑰。因為驗證者每一個時段(epoch)都要簽署至少一條消息,客戶端軟件必須托管簽名密鑰。

取款密鑰對

因為客戶端軟件總是聯網的,因此必然有簽名密鑰丢失、被盜的可能。為降低此類事件會造成的影響,驗證者可以執行的操作被分成由兩套不同的密鑰來發起。

簽名密鑰,如上所述,用于履行驗證者責任。另一方,「取款密鑰」 則用于控制驗證者的資金。

在驗證者的整個生命周期中,驗證者僅在極少數時候需要用到取款密鑰。這意味着取款密鑰可以放到冷錢包了,(離線)存儲在足夠安全的地方。

注意:驗證者資金轉賬和取款功能都要等 Phase 1 之後才會上線。

譯者注:這裡的簽名密鑰和取款密鑰,作者在原文中常用單數形态 「a signing key」 「a withdrawal key」,但在這裡我翻成 「簽名密鑰對」 和 「取款密鑰對」。因為根據我們對密碼學的理解,要保證身份同一性,少不了要用到公鑰密碼學(公私鑰對):驗證者提前使用簽名私鑰和取款私鑰對應的兩把公鑰在注冊表中注冊,然後在其生命周期中,使用其私鑰來簽名消息時,其身份才能得到确認。取款過程也是同理,也跟我們當前使用以太坊賬戶的方法并無二緻。

密鑰怎麼這麼多!

如果每要質押 32 ETH,用戶就要保存和使用兩套互不關聯的密鑰,那這也太麻煩了。

在 Eth2 中,我們可以用 EIP-2333 和 EIP-2334 來解決這個問題:這兩個 EIP 提出了一套标準,描述了簽名密鑰和取款密鑰可以如何關聯起來,以及這兩組密鑰如何可以從同一個 Mnemonic (助記詞)中推導出來。

助記詞

助記詞是另一種用編碼來保護密碼的辦法,也是普通用戶存儲和備份私鑰的最簡單辦法。簡而言之,就是把

0x1e9f2afcc0737f4502e8d4238e4fe82d45077b2a549902b61d65367acecbccba

這樣的私鑰,轉化成

sausage solution loud isolate focus glide frame door clown million shuffle impulse

這樣的可讀單詞,然後記下或者寫下來,這樣就更容易保存、更不容易出錯了。

從一把密鑰推導出其它密鑰

在使用錢包時,您可能會遇到形如 m/44'/60'/0'/0/0這樣看起來像路徑的東西。這個路徑是用來描述密鑰之間的關系的。

根據 EIP 2333,用一把密鑰(也即一組助記詞)中推導出其它密鑰所形成的體系就像一棵樹一樣,而被推導出來的密鑰是根據樹的 「種子」(即最初那個密鑰)和樹的路徑來決定的。

我們使用種子計算出樹根,根據樹根和樹分支來推導密鑰、一層一層地建構出整棵密鑰樹。因此,可以認為,整棵密鑰樹都完全是根據樹的分支與樹根之間的關系來決定的。(譯者注:根據這個描述也可以看出,整棵密鑰樹是無限大的,因為可以無限推導下去。在使用時隻需記好哪些分支上的那些密鑰是用過的、有資金的就好。)

在使用過程中,這種推導密鑰的方法讓我們可以找出我們要用的任意密鑰:隻需從樹根開始、按分支計算中間密鑰,最終算出我們要用的那個密鑰(葉子)即可。

一個有趣的結果就是,我們可以從單個随機數(比如一組助記詞)開始,推導出無限多的密鑰。用在 Eth2 中,一組助記詞就可以産生出驗證者需要的任意多的密鑰。舉個例子,如果你需要用一組助記詞産生出 3 個取款私鑰,那麼可以像這樣推導:

以太坊技術知識講解(科普貼以太坊)2

每個分支都用 「/」 來标記,所以 「m/2」 表示的是從主密鑰推導出的第 2 分支。

EIP 2334 指出,驗證者的簽名密鑰可以使用取款私鑰的第 0 個子分支。在實踐中這意味着,隻要遵循這個标準,隻要你知道取款私鑰,你就可以計算出相應的用于簽名的私鑰。計算過程也如上例所示:

以太坊技術知識講解(科普貼以太坊)3

這裡我們是為了盡可能簡化才舉這樣的例子的,實際上的路徑會更長一點(比如 EIP 2334 就要求使用 m/12381/3600/i/0m/12381/3600/i/0/0這樣長的路徑用于推導取款私鑰和簽名私鑰)。不過,邏輯還是完全一樣的。

謹記:如果你知道自己的助記詞,就可以推導出取款私鑰,然後再推導出簽名私鑰。

存儲密鑰

驗證者客戶端使用 Keystore 文件來交換密鑰。

Keystore 是一種文件格式,包含了用戶用口令(password)加密後的私鑰,因此可以安全地存儲以及在計算機之間安全地傳播(隻要口令沒有存在同一台計算機上就好)。

如果你已經準備好要開始驗證了,你可以把 Keystore 導入客戶端(當然,你還需要輸入口令,好讓客戶端能導出私鑰)。

成為驗證者

成為驗證者的第一步是生成密鑰。請保證在安全的環境中使用安全的軟件來生成私鑰,生成後請寫下來。

因為 Phase 0 階段沒有取款功能也轉不了賬,你不需要用 Keystore 來存儲取款私鑰,保證你的助記詞是安全的就夠了。

如果你的驗證者客戶端需要你的簽名私鑰,那麼在你輸入私鑰之後你可以得到相應的一個 Keystore 文件(加密的口令也是你自己輸入的)。你跑多少個驗證者,就會拿到多少個 Keystore。

為了注冊成為驗證者,你需要給每個驗證者準備 32 ETH 的保證金,加上你的保證金數據(包含着你的驗證者公鑰),發送給 Eth1 鍊上的保證金合約。

保證金數據會被記錄在保證金合約中。Eth2 的節點可以觀察到這個合約,因此可以獲得其中的保證金數據。你的保證金數據被 Eth2 鍊接受以後,你就正式成為驗證者了。

最簡單的方法

我們一直在開發一個友好的界面來幫助驗證者完成注冊過程。我們接下來的更新會介紹 Eth2 Lauchpad 以及如何使用它。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved