手把手教你使用EOS多重簽名 – 保護你的資產

資訊 XIAOH 2018-07-24

最近頻繁曝出用戶 EOS 被盜的事件,作為一個剛上線才 1 個多月的項目,在各種設施都不太齊全的情況下,這種新聞一旦流出,都會讓人感到 FUD(Fear、Uncertainty、Doubt),不僅你會怕,我也怕,我會想 XX 錢包會不會偷偷把私鑰上傳到服務器了?如果是這樣,我會不會被中間人攻擊啊?它們的服務器會不會被拖庫啊?我的剪切板不會也被某某軟件監聽了吧?萬一我的私鑰被「彩虹攻擊」了怎麼辦?……簡而言之,任何人都害怕自己的資產被盜,雖然這是小概率事件,但它一定會發生,要不然也不會有「墨菲定律」存在。

使用 Open Blockchain 系統,我們需要具備保護自己資產的能力,因為這個系統不具備掛失、凍結、回滾等功能。這篇文章的目的,就是在 BM 的團隊做出基於 iPhone 的硬件錢包之前,教你如何在去中心化的世界裡保護自己的財產。

相信你已經猜到了,提高錢包安全性的辦法就是多重簽名(Multiple Signatures),背後的邏輯也很簡單,如果 1 個祕鑰被破解的概率是 10^{-n}10−n,那麼使用 2 個就變成了 10^{-2n}10−2n,以此類推。你可能會說,多籤技術在 Bitcoin 誕生的時候——10年前就有了,這可不是 EOS 的專利和創新。確實如此,不過 EOS 在此基礎之上做了一些優化,在我看來,這些優化足以讓多重簽名技術更為普及,乃至於在大範圍內提升了賬戶的安全性。

EOS 對錢包的優化主要體現在兩點:

  1. 引進了賬戶的概念,讓原本抽象的事物更為具體,在過去,誰會把一個256位的數字(私鑰)和一個賬戶對應起來啊?如果一個數字對應一個賬戶,那誰會意識到用多個數字(私鑰)對同一個賬戶去簽名呢?但有了賬戶的概念之後,一切變得非常自然和清晰。
  2. 當你創建一個賬戶的時候,它天然的就對應了兩個祕鑰,也就是說,這個體系一開始就給你灌輸了:你至少要用兩個祕鑰來保護你的 EOS 及其他 Tokens。

在動手之前,我再來給你普及下 EOS 賬戶的設計邏輯,下表是我的 EOS 賬戶的設定:

12

上表中,除了權限(Permission)和祕鑰(Keys)之外,還有兩欄,一個是權重(Weight),另一個是域值(Threshold),這兩個概念也至關重要,還是拿大家熟悉的轉賬來舉個例子吧,按照上表的配置,如果你想轉賬給 vitalikoneos 這個賬戶,你需要將祕鑰的權重相加,如果結果不小於域值,該筆交易才被認為是合法的,即 EOS7... 和 EOS8... 對應的私鑰都得對該筆交易簽名,它們的權重和才不小於域值 2 。同樣的道理,如果你想修改 @Active 的祕鑰,你需要用 EOS6... 和 EOS5... 所對應的祕鑰同時對這個操作進行簽名。可以看到我用了 4 對祕鑰對來管理我的賬戶,這個安全性已經非常高了。當你創建一個賬戶時,你的賬戶默認包含兩種權限:@owner 和 @active,其中 @owner主要用來管理其他權限的變更,例如修改 @active 對應的 Keys,新建或刪除一個 @publish 權限等;而 @active 權限在創建之初主要用來執行轉賬等合約操作,即如果你要轉出 EOS,你需要 @active 下的 Keys 對該筆交易簽名。

好了,原理講清楚了,下面我會手把手教你怎麼操作。在 BM 的錢包沒有發佈之前,最安全的錢包當然是 github 上的「命令行錢包」了,這個錢包由兩個組件組成:keosd和 cleos,其中 keosd 用來保管私鑰,而 cleos 提供交互命令行,並在 keosd 和 nodeos(全節點) 之間建立通信,它們的關係如下:

相關推薦

推薦中...