當前位置:
首頁 > 新聞 > 手把手教你使用EOS多重簽名-保護你的資產

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

最近頻繁曝出用戶 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 對錢包的優化主要體現在兩點:

引進了賬戶的概念,讓原本抽象的事物更為具體,在過去,誰會把一個256位的數字(私鑰)和一個賬戶對應起來啊?如果一個數字對應一個賬戶,那誰會意識到用多個數字(私鑰)對同一個賬戶去簽名呢?但有了賬戶的概念之後,一切變得非常自然和清晰。

當你創建一個賬戶的時候,它天然的就對應了兩個秘鑰,也就是說,這個體系一開始就給你灌輸了:你至少要用兩個秘鑰來保護你的 EOS 及其他 Tokens。

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

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

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


準備工作

首先,你要安裝 EOSIO 軟體,推薦你使用 docker,下載 EOSIO docker 鏡像,這個鏡像是官方打包的,可以放心使用

完成後,運行 :

上面的命令中, 需要你自行配置, 管理的錢包文件會放在該路徑下。

設置  的別名,你可以將  命令加到 (macOS)或 (Linux) 中,接著執行  命令獲取主網信息

確定  的值,正確無誤後,就可以開始「試驗」了——一定要先在小額賬號上操作,避免誤操作導致的損失。


創建錢包、秘鑰、賬戶

要實現多簽,你至少需要 2 對秘鑰,秘鑰存在錢包里,所以這裡最好也創建兩個錢包,每個錢包管理一對秘鑰,這樣你的錢包就可以分開保管,避免一個錢包泄露後兩個秘鑰都丟失的情況。

上面的命令為你創建了 2 個錢包 w1 和 w2,在  路徑下,你可以看到這兩個錢包文件,注意:  開頭的密碼你一定要記錄下來,和錢包分開保管,錢包解鎖(unlock)的時候需要這個密碼。

為每個錢包創建和導入秘鑰對

使用過老版本 EOSIO 的同學一定注意到了這個差異:新版本的 EOS 在創建秘鑰的過程中把私鑰隱藏了,且直接將私鑰導入到了錢包,這一步優化將你犯錯的可能性降至 0——讓你沒有機會複製私鑰(如果某軟體監聽了你的剪切板,再把監聽結果上傳到他們的伺服器,你的私鑰就泄露了),幹得漂亮!

現在秘鑰和錢包都準備好了,還差賬號,這裡要分兩種情況考慮:

沒有賬號的情況下,需要創建新賬號

已有賬號的情況


1. 創建新賬號

如果你之前沒有賬號,就需要先創建賬號,同時用 EOS 來抵押計算(CPU)和帶寬(Bandwidth)資源、購買存儲資源(RAM),然後再執行第 2 步(如果你已有賬號,直接到第 2 步),先創建賬號:

上面的參數里, 是其他人的賬號,你可以找個朋友幫你創建,這一步里,抵押了 0.2 個 EOS,同時還購買了 4K 的內存,最後兩個參數分別是新賬號名  和該賬號對應的初始公鑰,完成這一步後,你就可以根據第 2 步來修改許可權了。


2. 已有賬號

如果你已有賬號,只需將現有賬號轉移到新創建的秘鑰下即可,假設你的賬號為  ,下面的命令會設置該賬號下的  秘鑰,

許可權設置完後,同樣的方法再設置下  的許可權,差異是修改  許可權時,需要指定  這個「擁有者」(倒數第 2 個參數),因為只有它才可以修改  :

執行成功後,你可以通過  命令查看修改是否生效,你還可以通過https://scaneos.io/區塊瀏覽器來查看指定賬號的許可權信息。


親自試一試

修改好許可權後,你應該會迫不及待的想試一下了,我們先把 2 個錢包都解鎖,然後執行  操作,可以看到轉賬成功了:

接下來我們鎖住任意一個錢包,例如 w1,然後再重複上面的轉賬操作

可以看到出錯了,錯誤原因是沒有滿足轉賬許可權,實驗成功。至此,EOSIO 上的多重簽名實操就結束了,理解了上述操作後,你就可以獨立保管好自己的 EOS 了,同時再也不用擔心錢包被賊惦記了,是不是既很贊又很簡單的樣子?


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 巴比特資訊 的精彩文章:

專家預測:未來比特幣的價值可能是2萬美元,20萬美元甚至200萬美元
幣安連續兩日進行系統升級維護

TAG:巴比特資訊 |