美文网首页
EOS 账户与权限

EOS 账户与权限

作者: cenkai88 | 来源:发表于2018-01-09 15:28 被阅读704次

一个账户是一个人可读的,存在区块链上的id。每笔transaction都需要在某个账户所配置的authority下评估permissions。每个被命名的permission都有一个阈值,只有满足后, 签名的transaction才能在authority下被认为有效。Transactions是通过一个加载了已解锁的钱包客户端签名的。钱包是一个保护并使用您的keys的软件。这些keys不一定要为区块链上某账户authority所permissioned。

1. 钱包

钱包是保存keys的客户端,而这些keys不一定和这些账户permissions相关。理想情况下钱包有一个上锁状态(加密)和一个解锁(解密)状态且被一个强熵的密码保护。EOSIO/eos仓库又一个叫做eosc的命令行工具,钱包就是其中一部分的功能。

2. 账户

账户是一个保存在区块链上,具可读性的名字。通过permissions配置,账户可被一个体所拥有,也可为一群个体共同拥有。转账或者向区块链推送transaction都需要账户。

3. Authorities 和 Permissions

Authorities 决定特定message是否被正确授权。

每个账户都有两个原生具名的permissions

  • owner authority代表一个账户的所有权。只有少数transactions需要此authority,但任何需要改动owner authority的message都需要。总的来说,我们建议把owner冷储存起来,不要和任何人共享。owner可以用来恢复另一个可能已经被损害的(compromised)permission.
  • active authority可用来转账资金、给区块生产者投票及进行另一些高级的账户改动。

除了原生 permissions外, 账户可有自定义的具名permissions,以扩展对账户的管理功能。自定义permissions是非常灵活的,可以用于各种各样的场景。这很大程度上取决于开发者社区 Much of this is up to the developer community in how they are employed, and what conventions if any, are adopted.

任何authority的Permission都可以被分配给一个或多个公钥或一个有效的账户名

4. Putting it all Together

下面是上面所提到的概念的集合及一些如何在实际中使用他们的简单例子。

4.1 默认账户配置 (Single-Sig)

这是某账户创建后如何配置的例子。该账户的owneractive permissions都各自有一个key, 两个keys的权重都是1且阈值也是1。默认配置需要一个签名来授权对于原生permissions的message。

@bob account authorities

Permission Account Weight Threshold
owner 1
EOS5EzTZZQQxdrDaJAPD9pDzGJZ5bj34HaAb8yuvjFHGWzqV25Dch 1
active 1
EOS61chK8GbH4ukWcbom8HgK95AeUfP8MBPn7XRq8FeMBYYTgwmcX 1

@bob账户这个例子中,依表格所示,@bob's的owner key的权重是1,在该authority下推送一个transaction所需要的阈值也是1。

如果需要在owner的authority下推送一个transaction,只需要@bob用它的owner key签名一个transaction,此transaction即可被认为有效。这个key将被储存在一个wallet中,并用eosc来管理。

4.2 Multi-sig 账户及自定义Permissions

下面的例子是一个虚构的名叫@multisig的账户。在此场景下,两个用户被授予owneractive permissions,而有三个用户加权不同地被授予自定义的publish permission。

@multisig account authorities

Permission Account Weight Threshold
owner 2
@bob 1
@stacy 1
active 1
@bob 1
@stacy 1
publish 2
@bob 2
@stacy 2
EOS7Hnv4iBWo1pcEpP8JyFYCJLRUzYcXSqtQBcEnysYDFTEbUpi6y 1

在此场景下,要修改owner permission的加权阈值为2,也就是说因为每方本身加权都是1, 所有用户需要都签名该transaction它才能被完全授权。

而要发送一个需要active authority的transaction,加权阈值是1。这意味着只需要一个具有active authority的账户签名即可授权该message。

还有一个叫publish自定名称permission。比如这个publish permission是用来通过一个理论上的博客App向@multisig的博客发布文章的。这个publish permission的加权阈值是2,而@bob@* 和 @stacy的加权都是2public key的加权是1。这样的话@bob@stacy都不需要额外签名就可以发布,但public key 则需要一个额外签名才能使一个在public permission下的message通过授权。

上面的permissions表展现了@bob@stacy作为账户的拥有者,具有类似于主席或者编辑的特权。尽管这个简单的例子也有局限性(尤其是可扩展性上),并不是一个好的设计,但它却充分展现了EOS权限系统的灵活性。

注意上面的表格中,permissions可以使用account name也可以使用一个key。乍看之下这可能不重要,但是这确实增加了灵活性。

备注

  • @bob 和 @stacy可同时被显式地设置成用户的拥有者。
  • @bob 和 @stacy 都有对于 publish权限的特权。

相关文章

  • EOS 相关概念

    EOS账户 EOS系统的两种攻击方式 区块数据结构 交易 公钥 EOS账号的权限 账户权限的更新 EOS账户设计设...

  • EOS智能合约开发系列(九): 高级权限设置

    这是介绍EOS账户与权限的第二篇。上篇文章中,我们介绍了EOS的账户和权限这些概念,并介绍了一些权限设置的基本命令...

  • EOS 账户与权限

    1. 钱包 2. 账户 3. Authorities and Permissions 4. 总结与例子4.1 默认...

  • EOS智能合约开发系列(八): 账户和权限

    账户和权限,在EOS中非常重要。EOS在这方面的设计也是不错的,为了后面深入的理解合约,我们需要先搞清楚账户和权限...

  • EOS相关知识科普

    EOS账户权限介绍 首先EOS账户不同于其他公链像比特币、以太坊都是只有一把私钥,为什么EOS需要两把私钥?这是为...

  • EOS账户的两种权限——你造吗

    每个EOS账户都包含两种权限,对应了拥有者权限(Owner Key)和管理者权限(Active Key),这两种权...

  • EOS开发(二)账户和权限说明

    前言 EOS的账户和权限系统设计的比较复杂,但扩展性相当好。与比特币或以太坊不同,最明显的特点就是支持自定义账户权...

  • EOS入门

    EOS介绍 一.什么是EOS? EOS是一个区块链操作系统,提供数据库、账户权限、调度、身份验证和互联网应用程序通...

  • 做一个EOS的课程,大纲有了

    基础篇 EOS介绍 EOS白皮书解读-DApp要求与DPOS共识算法 EOS白皮书解读-账户与并行执行 EOS白皮...

  • EOS之智能合约授权限制和数据存储

    EOS智能合约授权限制和数据存储 在EOS合约中,调用合约需要来自账户的授权,同时还要指定需要调用的动作。当然,有...

网友评论

      本文标题:EOS 账户与权限

      本文链接:https://www.haomeiwen.com/subject/ljmwnxtx.html