有大量的EOS被存放在“冷錢包”嗽仪,那么這些不聯(lián)網(wǎng)的EOS可以給節(jié)點投票嗎惕虑?
安全和投票 = 魚和熊掌 ?
對于加密貨幣來說忙迁,私鑰被盜是最重大的風險贤牛,所以大家往往把常用的少量的代幣放在聯(lián)網(wǎng)的“熱錢包”,剩下的大部分存在不聯(lián)網(wǎng)的“冷錢包”王暗。但EOS跟比特幣悔据、以太坊最大的區(qū)別之一,就是采用了DPoS共識機制俗壹,需要投票產(chǎn)生超級節(jié)點科汗。這個投票過程需要在網(wǎng)上進行,如果私鑰在期間受到網(wǎng)絡(luò)釣魚和惡意軟件等方式攻擊绷雏,是存在一定的泄漏被盜的風險头滔。
此外,EOS選票有個一年的半衰期涎显,權(quán)重會隨著時間的推移而衰減坤检,因此每隔幾個月需要重復(fù)一次投票行為,那么也意味著會相應(yīng)地增加風險期吓。
綜上所述早歇,肯定會有一些用戶,特別是使用“冷錢包”的大戶讨勤,因為出于對安全問題的擔憂箭跳,而放棄了自己的投票權(quán),進而間接影響了EOS的完整性潭千。
Tokenika是來自波蘭的候選節(jié)點谱姓,技術(shù)實力還是比較強的,已經(jīng)推出了EOS factory刨晴、TEOS等多個基于EOS的工具屉来。其中EOS factory是一個基于Python的EOS智能合約開發(fā)平臺路翻,因為Python比官方原生支持的C++簡單好學(xué)多了,非常適合初級開發(fā)者奶躯。 現(xiàn)在,他們也看到了讓EOS冷錢包離線投票的剛需亿驾,于是又推出一個令人驚嘆的好工具“Secure EOS Block Producer Voting”嘹黔,真是“神操作”。
離線投票是如何實現(xiàn)的莫瞬?
Tokenika開發(fā)的這個投票工具儡蔓,原理就是在完全離線的情況下生成投票交易,并確保私鑰僅用于簽署交易疼邀,并且之后不會公開喂江。具體地說,就是把投票過程分解旁振,將必須聯(lián)網(wǎng)的操作在聯(lián)網(wǎng)的電腦上進行获询,然后將可以離線的操作,也是最重要的簽名和密鑰處理過程放在完全不聯(lián)網(wǎng)的電腦上進行拐袜。
當然吉嚣,在簽名和密鑰處理過程,為了安全起見蹬铺,也只使用官方的EOSIO未修改的代碼庫(eosjs)尝哆。eosjs是瀏覽器等前端與EOS區(qū)塊鏈通信的橋梁,所以是必須導(dǎo)入的甜攀,這也是“Secure EOS Block Producer Voting”唯一依賴的外部庫秋泄。
“Secure EOS Block Producer Voting”的源碼被放在了GitHub。
離線投票的過程分為三個簡單的步驟规阀,接下來恒序,跟天曉一起體驗一下這個工具。
1谁撼、聯(lián)網(wǎng):獲取有關(guān)的網(wǎng)絡(luò)信息
這三個簡單的步驟奸焙,其實也就對應(yīng)了三個HTML文件。那么我們打開第一個HTML文件:1_get_blockchain_data.html彤敛。
這個第一步需要聯(lián)網(wǎng)進行的与帆,在“API Endpoint”輸入框輸入EOS鏈的鏈接,然后點擊“l(fā)oad”按鈕墨榄。
通過瀏覽器的開發(fā)工具玄糟,可以看到,這個網(wǎng)頁先后發(fā)送了兩個請求get_info袄秩、get_block阵翎。
先通過get_info提取EOS區(qū)塊鏈的當前的區(qū)塊信息block_num逢并,然后根據(jù)這個block_num參數(shù)發(fā)送get_block請求。然后可以得到ref_block_prefix郭卫,也就是最近的一個區(qū)塊的hash值的一部分砍聊。這兩個參數(shù)對于后面離線生成投票交易至關(guān)重要。
2贰军、離線:使用私鑰生成并簽署交易
如標題所示玻蝌,這一步驟應(yīng)該在完全不聯(lián)網(wǎng)的電腦上執(zhí)行,也就是打開第二個HTML文件:2_generate_transaction - eosjs.html词疼。
當然俯树,打開這個HTML文件的源碼可以看到,直接鏈到官方的代碼庫導(dǎo)入eosjs贰盗。實際操作中许饿,你得把eosjs下載下來,跟2_generate_transaction - eosjs.html一起放到離線的電腦舵盈。
在這個步驟陋率,除了需要輸入之前拿到的block_num、ref_block_prefix秽晚,還需要輸入賬號名翘贮、私鑰、想要投票的超級節(jié)點候選者名單爆惧、交易有效時間(默認10分鐘)狸页。
這里輸入私鑰是為了簽署交易,然后生成raw transaction扯再。
?這個raw transaction文件不會包含私鑰芍耘,你可以放心地保存起來,通過U盤復(fù)制出去熄阻。
3斋竞、聯(lián)網(wǎng):將交易推送到網(wǎng)絡(luò)
第三步很簡單,在聯(lián)網(wǎng)的電腦上打開3_push_transaction.html秃殉,填寫第一步的“API Endpoint”和第二步的Raw transaction坝初,然后提交就將這個投票行為作為一筆交易發(fā)送到EOS鏈上。
通過這三個步驟,將投票行為分解開來,從而實現(xiàn)離線投票淌哟,而無需在聯(lián)網(wǎng)的電腦上暴露私鑰,這是非常棒的拗小。特別是對于那些持有較多EOS的、使用冷錢包的用戶樱哼,不用擔心被網(wǎng)絡(luò)釣魚和其他攻擊而遭受損失哀九。
當然剿配,使用前一定要認準Tokenika的GitHub地址再下載這個工具,另外如果有JS的知識阅束,可以對代碼進行審查呼胚。天曉看了一下,源碼非常簡潔易懂息裸。
目前蝇更,可以隨機生成密鑰對進行測試。但真正的操作要等多個可信節(jié)點宣布之后界牡,才可以連接可信的EOS主鏈進行投票簿寂。