介绍
加密货币网络上的标准交易可以称为单签名交易,因为它们只需要一个数字签名即可完成。账户权限管理为每个签名赋予一个权重,交易签名的总权重必须达到自定义的权重阈值才能执行。通过账户权限管理,一个账户可以由多个私钥管理,并且一个账户中创建的交易可以由多个私钥签名。本文档讨论了账户权限管理规范以及如何实现用户自定义的多重签名操作权限。
背景
该方案包含三种权限:所有者权限、见证人权限和活动权限,其中所有者权限有权执行所有合约,见证人权限用于生成区块,活动权限是自定义权限(合约权限集的组合)。
设想
我们来看几个例子:
爱丽丝经营一家公司,她创建了一个公司资金账户。爱丽丝将鲍勃(会计)、卡罗尔(首席财务官)和爱丽丝(首席执行官)添加到账户的所有者权限中。鲍勃的签名权重为 2,卡罗尔的签名权重为 2,爱丽丝的签名权重为 5。所有者权限的签名权重阈值为 3。爱丽丝的签名权重大于阈值(5 > 3),因此她只需签名即可进行交易。鲍勃的签名权重小于阈值(2 < 3),因此,鲍勃需要卡罗尔或爱丽丝的签名才能进行交易(如果卡罗尔同意)。总签名权重为 2 + 2 > 3,因此交易可以执行。
爱丽丝拥有大量 TRX 资产。某天,不幸发生意外,爱丽丝去世了。由于她是唯一持有账户私钥的人,她的资产将永远留在账户中,无人可以获取。(当前情况)爱丽丝拥有大量 TRX 资产。她为自己的账户创建了一个活动权限,将丈夫和儿子的地址添加到该活动权限中,并授予该活动权限操作她的账户的权限。这样,即使爱丽丝去世后,她的家人仍然可以操作她的账户。
爱丽丝经营一家公司,她创建了一个企业账户。爱丽丝创建了一个活动权限,并将鲍勃(会计)、卡罗尔(首席财务官)和爱丽丝本人(首席执行官)添加到该账户的活动权限中。爱丽丝授予该活动权限操作其企业账户的权限。一天,鲍勃辞职了。为了确保爱丽丝账户的安全,爱丽丝可以将鲍勃从活动权限中移除,这样鲍勃就无法再操作她的账户了。
Alice 拥有一个见证人账户。如果她想部署节点但不知道如何部署,则需要将该账户的私钥提供给程序管理员。(当前场景)Alice 可以将见证人权限授予管理员。由于管理员仅拥有区块生成权限,没有 TRX 转账权限,因此即使服务器上管理员的私钥泄露,TRX 也不会丢失。
规格
我们先来看一下账户权限管理的协议设计。协议中相关的结构体包括账户(Account)、权限(Permission)、密钥(Key)和交易(Transaction)。