增强EOS账户安全性:EOS账户权限管理之自定义权限

在区块链的世界里,安全是我们首要考虑的问题,对于 EOS 公链来说,合理的账号权限管理往往决定了账号的安全性。
而在 EOS 账号权限管理中,通过 EOS 账号的自定义权限功能,可以大大增加 EOS 账号的安全性。今天我们就来学习如何给EOS账号设置自定义权限,以及自定义权限有何用?
1. 自定义权限有什么用?
EOS 账号默认有 owner 和 active 两个权限,除了默认权限外,我们还可以给EOS账号设置自定义权限,权限的名称和功能都可以根据自己的需要进行自定义。
EOS 账号权限设计非常灵活。例如,可以设置一个自定义权限 Vote,该权限只能用于投票,这样用 Vote 权限对应的公钥只能用于投票,不能用于转账等其他操作,即使该私钥被泄漏,也仅仅只能用于投票,不能进行其他操作(例如转走账号里边的 EOS 资产),增加了账号的安全性。

2. 如何设置EOS账号的自定义权限呢?

增强EOS账户安全性:EOS账户权限管理之自定义权限

给EOS账户设置自定义权限,主要分为两步,第一步是给账号添加自定义权限,第二步是为该权限关联相应的操作功能。
下面以给EOS账号添加一个仅能用于节点投票的自定义权限 Vote 为例进行详细的说明。
一、设置自定义权限
1、使用 Scatter 工具连上 https://eostoolkit.io/ 网站;
2、在设置自定义权限前,需要先到 Scatter 里边设置一下防火墙;

增强EOS账户安全性:EOS账户权限管理之自定义权限

如上图,在 Settings -> Firewall -> Blacklisted Actions 里边,把 eosio 的 updateauth 权限 remove 掉,即点击 「remove」 按钮,这样我们才能更新EOS账户的权限(如添加自定义权限)。
3、点击左侧「Manage Account」,然后点击左边菜单中的 「**Advanced Permissions」** 按钮;

增强EOS账户安全性:EOS账户权限管理之自定义权限

4、在右侧的表单中新增一个权限,如下图(默认)

增强EOS账户安全性:EOS账户权限管理之自定义权限

各个字段的含义如下:
· Account:要添加自定义权限的账户,连接了 Scatter 钱包后,这里默认会显示 Scatter 连接的 EOS 账户;
· Parent:要添加自定义权限的父权限,默认为 Owner,一般来说,我们设置为 Active 就可以了;
· Threshold:阈值,在多设置多签的时候用,使用默认的1即可;
· Weight:账户的权重,默认设置为1;
· Permission:权限名称,例如常见的权限为 Owner 和 Active,这里默认显示的是 active,这里输入自定义权限名 Vote;
· Authority:权限对应的公钥(也可以是账户名,这里只介绍设置公钥),这里输入公钥,可以使用 Scatter 的新建密钥对功能创建密钥,然后把私钥保存好,这里填入公钥。
表单中要求的字段都填写完毕后,点击下边的「UPDATE」按钮,在弹出的scatter框中,点击「接受」,授权 Scatter 发送交易后,Vote 权限就新增成功了。
此时,我们在 EOS 区块浏览器查询账号权限信息时,就可以看到新添加的 Vote 权限了。

增强EOS账户安全性:EOS账户权限管理之自定义权限

在自定义权限增加好以后,Vote 权限还不能进行任何操作,还要给这个权限关联一些操作功能(本例为给EOS节点投票的功能)。
二、给自定义权限关联相应的操作功能
1、点击左侧「Manage Account」下边的「Link Auth 」按钮,然后可以看到右侧的表单信息。

增强EOS账户安全性:EOS账户权限管理之自定义权限

各个字段的含义如下:
Account Name:默认显示的是 scatter 连接的eos账户;
Account Permission:填入自定义权限的名称;
Contract Name 和 Contract Action:合约名称与合约功能。
一些常用功能的 Contract Name 和 Contract Action,都有哪些呢?
可以通过访问链接:https://blog.eospark.com/system_contract_API_introduction_v1.2.1.html  进行查看,比较常用的如下:

增强EOS账户安全性:EOS账户权限管理之自定义权限

例如在上面表格的最后一行,合约账号 eosio 的 Active(操作)voteproducer,具有投票功能。
2、在上面的表单中,填写相应的信息:
Account Permission:voteContract
 Name:eosioContract 
Action:voteproducer

增强EOS账户安全性:EOS账户权限管理之自定义权限

3、填写完后,点击「LINK AUTH」 按钮。在弹出的scatter框中,点击「接受」。
至此,自定义权限 Vote 就具备了投票的功能。成功后,现在可以测试下 Vote 的权限。
三、测试 EOS 账号自定义权限
使用 Vote 权限关联的公钥导入该 EOS 账号到 TokenPocket 钱包。

增强EOS账户安全性:EOS账户权限管理之自定义权限

从上图中可以看到自定义权限 vote 已经显示出来了,我们试试转账功能。

增强EOS账户安全性:EOS账户权限管理之自定义权限

出现了错误提醒,说明自定义权限  Vote 并不能进行 transfer 转账操作。经测试,使用 Vote 权限确实可以进行投票(如下图),说明自定义权限 Vote 设置成功。

增强EOS账户安全性:EOS账户权限管理之自定义权限

有了自定义权限功能,我们可以根据需要设置特定的权限,例如可以设置 Vote 权限只能用于投票、RAM 权限只能用于购买 RAM 等,可以灵活的实现 EOS 账户权限的分级管理,在一定程度上可以确保 EOS 账号的安全。