账户和权限

  • 1钱包
  • 2、账户
  • 3、认证和权限
  • 4、全部整合
    • 默认账户配置(单签名
    • 多重签名账&定制权限

账户是存储在区块链上,是可以被人理解的标识符。在被配置的认证账户下,每笔交易的权限都会被评估。每个命名的权限都有一个阈值,满足必要的交易签名认证,则被视为有效。使用已经加载了一个解锁钱包的客户端可以对交易进行签名。钱包是保护和使用你秘钥的软件。在区块链上的认证账户对这些钥匙可能有也可能没有权限。

1.钱包

钱包是一个存储秘钥的客户端,秘钥可能关联也可能没有关联一个或多个账户的权限。理想的情况下,钱包有锁(加密)和解锁(揭秘)状态,该状态是通过一个高信息量(熵)的密码进行保护。EOSIO/eos代码仓库打包了命令行接口客户端eosc,该客户端包含了钱包作为其中的一部分功能。

2.账户

一个帐户是一个存储在区块链上人类可读可理解的标识符。根据账户的权限配置,它能被个人或者一组人拥有。在区块链上的转账或推动交易时需要账号。

3.认证&权限

认证是确定任何给出的消息是否被合适的授权。

每个账户由2类基本的命名权限。

  • 主控权限表示账户的所有权。只有很少的事务需要该权限,但值得注意的是,任何修改主控权限的消息除外。一般建议主控权限保存在冷存储,不共享给任何人。主控权限可以恢复其他被盗取的权限。
  • 资金权限是用于转账,对生产者投票和其他对账户的高级修改行为。

 

作为对基本权限的补充,一个账户可以有自定义命名的权限,可以进一步扩展账户管理。自定义权限非常灵活,在实现了之后可以处理很多用例。多数用例取决于社区开发者如何实际使用,或者具体惯例。

任何认证授权可以赋予一个或者多个公钥或者有效的账户名称。

4全部整合

下面是整合上述概念和一些说明其如何工作的例子。

4.1默认账户配置(单签名)

这个例子是说明账户创建后如何配置的,它的主控资金权限都有一个秘钥,同时两个秘钥都有权重1,权限都有一个阈值1。默认配置需要1个单签名(single signature

)授权消息给基础权限。

@bob 账户认证

权限 账户 权重 阈值
主控 1
EOS5EzTZZQQxdrDaJAPD9pDzGJZ5bj34HaAb8yuvjFHGWzqV25Dch 1
资金 1
EOS61chK8GbH4ukWcbom8HgK95AeUfP8MBPn7XRq8FeMBYYTgwmcX 1

 

在@bob账户的例子里,表格表明@bob的主控秘钥有权限权重1,同时需要阈值1推动一个交易。

主控权限下推动一个交易,只需要@bob使用他的主控秘钥对交易进行签名,交易才有资格做验证。秘钥存储在钱包里,然后使用eosc进行处理。

4.2多重签名账户&定制权限

下面的例子是对一个虚拟账户@multisig进行认证。下面的场景里,2个用户被授予账户@multisig的主控、资金权限,同时3个用户被授予具有不同权重的定制权限publish。

@multisig账户认证

权限 账户 权重 阈值
主控 2
@bob 1
@stacy 1
资金 1
@bob 1
@stacy 1
Publish 2
@bob 2
@stacy 2
EOS7Hnv4iBWo1pcEpP8JyFYCJLRUzYcXSqtQBcEnysYDFTEbUpi6y 1

在这个场景里面,需要一个权重阈值2去改变主控权限级别,因为所有成员权重是1,需要所有用户对交易签名,才能达到完全授权。

发送一个事务需要资金权限,阈值设置为1。这暗示着来自资金权限的账号的授权信息只需要1个签名。

还有第三个自定义命名权限publish。这个例子,publish权限是在一个假设的去中心化blog应用上,发布文章到@multisig的blog。发布权限有一个阈值2,@bob@* 和@stacy的权重都为2,公钥的权重为1。这暗示着@bob和@stacy可以发布文章而不需要额外的签名。然而公钥需要额外的1个签名,以便公共许可下的消息被授权。

因此上面的权限表格暗示着@bob和@stacy作为账号的所有者,被提高了特权拥有类似主持人或编辑的特权。虽然这个简陋的例子有可局限性,特别是拓展性方面,不一定是好的设计,但它充分展示EOS系统权限灵活的特点。

同时,注意在上面的表中,我们有些权限同时使用一个帐户名称和秘钥。乍一看这似乎微不足道,但是它确实增加了一些维度的灵活性。

观察结果

  • @bob和@stacy可以被明确定义为账户的所有者
  • @bob和@stacy 有发布权限的特权。