使用 eosc 更改帐户的权限结构

本文介绍了如何在EOSIO区块链上使用eosc工具更新账户权限结构,包括查看权限、编写.yaml文件、分配权限给其他账户以及设置时间延迟。强调了权限配置的严格性和使用延迟的策略,提供了一系列示例文件和操作命令。
摘要由CSDN通过智能技术生成

第二章 | 使用 eosc 更改帐户的权限结构

在我们的多签和权限系列的第二部分,我们向大家介绍下如何在 EOSIO 区块链上更新你帐户的权限结构,这个功能对许多用户来说仍然有些神秘。通过使用正确的工具并准确的理解区块链开发的需求,它就变得相当简单了,你可以全面的发挥这个独特而强大的功能。

探索帐户的权限

如果要查看其他帐户的权限结构,有两种方法

第一种是使用区块浏览器,例如 eosq,这是本文中屏幕截图的网站。 它的界面干净又易懂,明确的展示帐户所有的权限是如何嵌套和结构化的,如下所示。

另一种方法是使用 eosc 命令行工具,命令为 eosc get account ACCOUNT_NAME。 如果你更喜欢查看 json 格式,可以加上\--json 的 flag。

编写 .yaml 文件

确定了新结构之后,就需要创建yaml文件,上载到链上。 文件的结构非常严格、必须严格遵守、否则在更新时会出错。 有一点需要注意,相关文档里是没记录的,但是密钥和帐户是必须按字母顺序排列的。 否则,它将报出"action validate exception"(操作验证异常)错误。

上面的屏幕截图是标准权限的示例,其中包含 active(活跃)权限和 owner(所有者)权限各自的密钥。

如果要向 active权限添加第二个密钥,可以像这样制作一个 yaml 文件:

---
threshold: 2
keys:
- key: EOS6qiF84rDueuGuRYjJe6HwHN9hGPAUetpGGSVgBZp25zr34xcQ9
  weight: 1
  permission: active
- key: EOS7WXh1FtKTnbg3GE9GWJX9KKqMxHzra7anCWaRFBJ46mj3oVtep
  weight: 1
  permission: active
---

示例文件托管在我们的 GitHub 存储库中,可以在这里找到

记住确保以字母数字顺序排列密钥以避免错误。 另请注意,你可以为每个密钥定义不同的权重,并根据需要为权限定义阈值。

文件制作完成后,在 eosc 中运行以下命令:

eosc system updateauth [ACCOUNT_NAME] [PERMISSION_NAME] [PARENT_PERMISSION] [FILENAME.yaml]

eosq 上看,新结构现在将成为:

将权限分配给其他帐户

如果你想将一个帐户的签名权限分配给另一个帐户,你可以使用如下所示制作的 yaml 文件:

---
threshold: 2
accounts:
- permission:
  actor: msigexample2
  permission: active
  weight: 1
- permission:
  actor: msigexample3
  permission: active
  weight: 1
---

文件可在这里下载

在这种情况下,需要 msigexample2msigexample3active 权限满足此 active 权限。请注意确保你是按字母数字顺序排列帐户名称的。

使用时间延迟

所有 EOSIO 区块链都有一个非常独特的功能:给交易添加的延迟可以计入多签名阈值的计算。 请注意,交易不能仅通过一个时间延迟授权,至少需要一个加密签名。 例如:

---
threshold: 2
keys:
- key: EOS6qiF84rDueuGuRYjJe6HwHN9hGPAUetpGGSVgBZp25zr34xcQ9
  weight: 1
  permission: active
waits:
- wait_sec: 60
  weight: 1
  permission: active
---

以上样本文件可以在此处找到

要满足 active 权限,把 \--delay-sec flag 设成等于(或大于)wait_sec 在权限中定义的延迟。例如:

eosc transfer [SENDER] [RECIPIENT] 1.0000 --delay-sec 60

如果你在权限中设定多个延迟,它们则会累积起作用。 因此,如果你有类似如下的权限结构,则60秒的 \--delay-sec 将满足 active 权限。

为什么要使用延时?

时间延迟是有用的,因为它允许在延迟时间内取消交易。 例如,如果你很少使用你的帐户,并且你从来都不需要比延迟时间更快地转代币,你可以用此方法来捕捉并取消未经你授权的交易。

使用 eosc 来取消交易,运行命令:eosc tx cancel [ACCOUNT_NAME] [TX_ID]

请注意,由于满足上述 active 权限所需的延迟,你需要利用 owner权限来运行此命令。 为此,你需要添加 \--permission [ACCOUNT_NAME]@owner 的 flag。

结合所有三个步骤

你可以混合三种不同类型的设置,来实现各种密钥、帐户和延迟的配置。 这有一个3个 key 中的任何2个可以满足阈值的设定。

---
threshold: 2
keys:
- key: EOS6qiF84rDueuGuRYjJe6HwHN9hGPAUetpGGSVgBZp25zr34xcQ9
  weight: 1
  permission: active
  waits:
- wait_sec: 60
  weight: 1
  permission: active
accounts:
- permission:
  actor: msigexample2
  permission: active
  weight: 1
---

以上样本文件在此处

确保当你最终更改帐户权限之前时,请仔细检查你用 owner 权限做出的任何更改。 唯一可以对 owner 权限做出改变的是 owner 本身。

在之后的文章中,我们将探讨如何将这些权限与 msig (多签)结合使用。 在更改你的权限之前,建议在testnet上的测试帐户上练习一下。

第一章 | EOSIO 多签和权限总览
第二章 | 使用 eosc 更改帐户的权限结构
第三章 | 满足 multisig(多签)权限
第四章 | 嵌套权限和 linkauth (链接验证)
第五章 | 收集一个 multisig (多签)签名

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值