如何給EOS賬號(hào)設(shè)置自定義權(quán)限
在區(qū)塊鏈的世界里,安全是我們首要考慮的問(wèn)題,對(duì)于 EOS 公鏈來(lái)說(shuō),合理的賬號(hào)權(quán)限管理往往決定了賬號(hào)的安全性。
而在 EOS 賬號(hào)權(quán)限管理中,通過(guò) EOS 賬號(hào)的自定義權(quán)限功能,可以大大增加 EOS 賬號(hào)的安全性。今天我們就來(lái)學(xué)習(xí)如何給EOS賬號(hào)設(shè)置自定義權(quán)限,以及自定義權(quán)限有何用?
1. 自定義權(quán)限有什么用?
EOS 賬號(hào)默認(rèn)有 owner 和 active 兩個(gè)權(quán)限,除了默認(rèn)權(quán)限外,我們還可以給EOS賬號(hào)設(shè)置自定義權(quán)限,權(quán)限的名稱(chēng)和功能都可以根據(jù)自己的需要進(jìn)行自定義。
EOS 賬號(hào)權(quán)限設(shè)計(jì)非常靈活。例如,可以設(shè)置一個(gè)自定義權(quán)限 Vote,該權(quán)限只能用于投票,這樣用 Vote 權(quán)限對(duì)應(yīng)的公鑰只能用于投票,不能用于轉(zhuǎn)賬等其他操作,即使該私鑰被泄漏,也僅僅只能用于投票,不能進(jìn)行其他操作(例如轉(zhuǎn)走賬號(hào)里邊的 EOS 資產(chǎn)),增加了賬號(hào)的安全性。
2. 如何設(shè)置EOS賬號(hào)的自定義權(quán)限呢?
給EOS賬戶(hù)設(shè)置自定義權(quán)限,主要分為兩步,第一步是給賬號(hào)添加自定義權(quán)限,第二步是為該權(quán)限關(guān)聯(lián)相應(yīng)的操作功能。
下面以給EOS賬號(hào)添加一個(gè)僅能用于節(jié)點(diǎn)投票的自定義權(quán)限 Vote 為例進(jìn)行詳細(xì)的說(shuō)明。
一、設(shè)置自定義權(quán)限
1、使用 Scatter 工具連上 https://eostoolkit.io/ 網(wǎng)站;
2、在設(shè)置自定義權(quán)限前,需要先到 Scatter 里邊設(shè)置一下防火墻;
如上圖,在 SetTIngs -》 Firewall -》 Blacklisted AcTIons 里邊,把 eosio 的 updateauth 權(quán)限 remove 掉,即點(diǎn)擊 「remove」 按鈕,這樣我們才能更新EOS賬戶(hù)的權(quán)限(如添加自定義權(quán)限)。
3、點(diǎn)擊左側(cè)「Manage Account」,然后點(diǎn)擊左邊菜單中的 「**Advanced Permissions」** 按鈕;
4、在右側(cè)的表單中新增一個(gè)權(quán)限,如下圖(默認(rèn))
各個(gè)字段的含義如下:
· Account:要添加自定義權(quán)限的賬戶(hù),連接了 Scatter 錢(qián)包后,這里默認(rèn)會(huì)顯示 Scatter 連接的 EOS 賬戶(hù);
· Parent:要添加自定義權(quán)限的父權(quán)限,默認(rèn)為 Owner,一般來(lái)說(shuō),我們?cè)O(shè)置為 AcTIve 就可以了;
· Threshold:閾值,在多設(shè)置多簽的時(shí)候用,使用默認(rèn)的1即可;
· Weight:賬戶(hù)的權(quán)重,默認(rèn)設(shè)置為1;
· Permission:權(quán)限名稱(chēng),例如常見(jiàn)的權(quán)限為 Owner 和 AcTIve,這里默認(rèn)顯示的是 active,這里輸入自定義權(quán)限名 Vote;
· Authority:權(quán)限對(duì)應(yīng)的公鑰(也可以是賬戶(hù)名,這里只介紹設(shè)置公鑰),這里輸入公鑰,可以使用 Scatter 的新建密鑰對(duì)功能創(chuàng)建密鑰,然后把私鑰保存好,這里填入公鑰。
表單中要求的字段都填寫(xiě)完畢后,點(diǎn)擊下邊的「UPDATE」按鈕,在彈出的scatter框中,點(diǎn)擊「接受」,授權(quán) Scatter 發(fā)送交易后,Vote 權(quán)限就新增成功了。
此時(shí),我們?cè)?EOS 區(qū)塊瀏覽器查詢(xún)賬號(hào)權(quán)限信息時(shí),就可以看到新添加的 Vote 權(quán)限了。
在自定義權(quán)限增加好以后,Vote 權(quán)限還不能進(jìn)行任何操作,還要給這個(gè)權(quán)限關(guān)聯(lián)一些操作功能(本例為給EOS節(jié)點(diǎn)投票的功能)。
二、給自定義權(quán)限關(guān)聯(lián)相應(yīng)的操作功能
1、點(diǎn)擊左側(cè)「Manage Account」下邊的「Link Auth 」按鈕,然后可以看到右側(cè)的表單信息。
各個(gè)字段的含義如下:
Account Name:默認(rèn)顯示的是 scatter 連接的eos賬戶(hù);
Account Permission:填入自定義權(quán)限的名稱(chēng);
Contract Name 和 Contract Action:合約名稱(chēng)與合約功能。
一些常用功能的 Contract Name 和 Contract Action,都有哪些呢?
可以通過(guò)訪問(wèn)鏈接:https://blog.eospark.com/system_contract_API_introduction_v1.2.1.html 進(jìn)行查看,比較常用的如下:
例如在上面表格的最后一行,合約賬號(hào) eosio 的 Active(操作)voteproducer,具有投票功能。
2、在上面的表單中,填寫(xiě)相應(yīng)的信息:
Account Permission:voteContract
Name:eosioContract
Action:voteproducer
3、填寫(xiě)完后,點(diǎn)擊「LINK AUTH」 按鈕。在彈出的scatter框中,點(diǎn)擊「接受」。
至此,自定義權(quán)限 Vote 就具備了投票的功能。成功后,現(xiàn)在可以測(cè)試下 Vote 的權(quán)限。
三、測(cè)試 EOS 賬號(hào)自定義權(quán)限
使用 Vote 權(quán)限關(guān)聯(lián)的公鑰導(dǎo)入該 EOS 賬號(hào)到 TokenPocket 錢(qián)包。
從上圖中可以看到自定義權(quán)限 vote 已經(jīng)顯示出來(lái)了,我們?cè)囋囖D(zhuǎn)賬功能。
出現(xiàn)了錯(cuò)誤提醒,說(shuō)明自定義權(quán)限 Vote 并不能進(jìn)行 transfer 轉(zhuǎn)賬操作。經(jīng)測(cè)試,使用 Vote 權(quán)限確實(shí)可以進(jìn)行投票(如下圖),說(shuō)明自定義權(quán)限 Vote 設(shè)置成功。
有了自定義權(quán)限功能,我們可以根據(jù)需要設(shè)置特定的權(quán)限,例如可以設(shè)置 Vote 權(quán)限只能用于投票、RAM 權(quán)限只能用于購(gòu)買(mǎi) RAM 等,可以靈活的實(shí)現(xiàn) EOS 賬戶(hù)權(quán)限的分級(jí)管理,在一定程度上可以確保 EOS 賬號(hào)的安全。