警告:您可能成为了企图假冒本网站内容的目标。 我们检测到该网站被IFRAME包裹,这意味着与EOS Canada无关的人试图向您展示他们的内容与我们的内容相关,可能为了让您相信他们与EOS Canada有关。 我们与任何试图这样做的组织都没有联系,它也没有受到我们的认可。
background-flotant-top-right-01

博客:EOS 节点的贴士和见解

background-flotant-top-left-01

嵌套权限和 linkauth (链接验证)

2019-3-4 11:52:49 / by Josh Kauffman

在我们的多签和权限指南的下一部分中,我们将帮助您掌握 linkauth,这是 EOSIO 软件的另一个强大功能,可以为您的帐户增加安全性。

linkauth 将合约中的特定操作分配给您创建的权限。 这样,您就可以限制一个密钥或一个帐户,让他们只能访问预定义的操作,从而限制他们在帐户遭到入侵时对您的帐户造成损害的程度。

Linkauth 的使用场景

让我们看看一个用例,帮助我们完全理解什么情况下和及为什么可以使用 linkauth 。 一个完美的例子是节点领取奖励的情况。 由于节点需要每天执行此操作,因此这个功能能自动化,让它更加高效。 为了使其自动化,节点需要委托他们的密钥访问脚本。与其使用一个能访问整个帐户的密钥来认领奖励,节点可以创建一个只能认领奖励的密钥。 如果该密钥遭到破坏,黑客唯一可以实现的就是代表节点向节点自己的帐户申请奖励。

生成认领奖励操作的密钥对后,你将首先使用 updateauth 创建 claimer 权限本身:

eosc system updateauth [ACCOUNT_NAME] claimer active [FILENAME.yaml]

如果你还没有阅读过,请查看我们关于使用 eosc 更新帐户权限结构的文章。 现在,你可以使用此命令分配该权限:

eosc system linkauth [BP_ACCOUNT] eosio claimrewards claimer

使用这个新结构,添加的 claimer 权限及其相关密钥只能调用 claimrewards 操作而不能执行任何其他操作。

EOSIO 链在进行授权检查时始终是以合约+操作开始,并查找满足它的权限。 只有一个权限可以匹配一对指定的合约+操作,如果没有设置链接,它就默认为 activeeosio.any 除外)。

有五个系统操作无法通过 linkauth 做链接。 它们是:updateauthdeleteauthlinkauthunlinkauthcanceldelay。 因此,你无法将这些操作分配给特定级别的权限。

操作的分开

如果你想要删除某权限对某操作的执行能力,你还可以用 linkauth ,把执行操作的能力给另一个权限。该权限级别位于自己的权限流中,在 owner下的姊妹权限。 可以参照以下权限结构:

你会注意到,claimer 权限将 owner 作为父级,并且不是嵌套在 active 权限之下的(如上图所示)。 此帐户的 active 权限将无法再调用 claimrewards 操作,会遇到断言错误。 父权限将能够执行操作,但是一旦权限结构分支出姊妹权限,这些操作就会被隔离。

其实每个帐户上都有一个隐藏权限叫 eosio.any。它存在于每个权限流的子级别。 你可以将 linkauth 操作链接到 eosio.any,这让你的帐户中的每个级别的权限都可以访问该操作。 做这个的时候需要很小心,因为最弱的权限是用来保护操作的授权,因此它只用于低风险操作。

使用 unlinkauthdeleteauth 删除权限

如果要从自己创建的权限中删除链接操作,可以使用相反的功能 unlinkauth

eosc system unlinkauth [ACCOUNT_NAME] eosio claimrewards

你可以使用 deleteauth 完全删除权限,但只能在没有任何链接操作还附加在该权限的时候。 你必须首先为该级别权限的所有链接调用 unlinkauth,然后才能调用 deleteauth

eosc system deleteauth [ACCOUNT_NAME] claimer

 

现在,你应该充分了解了如何用权限结构创建一个能够安全保护你的帐户的系统,了解了这种独特的权限和特定于授权某种操作的密钥。 在下一篇文章中,我们将探讨如何使用 eosc 简化签名的收集过程。

 

Topics: EOSIO, 多签, 权限, EOS科普

Josh Kauffman

Written by Josh Kauffman

Josh wants to educate those around him. Since learning of cryptocurrency, he’s become a missionary -- urging those around him to understand this technology that will underpin tomorrow’s world. His latest passion is the crypto space, looking to be part of those who lead the drive towards Web 3.0.

cubes-solid

EOS 词典

每个EOS用户都应该知道的术语

更多

如何为EOS Canada投票

为EOS Canada节点投票请投给帐户

投票请使用 - 命令行工具,用于安全存储您的私钥并投票

`eosc`