美文网首页Dapp开发EOS开发
EOS开发(二)账户和权限说明

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

作者: yuyangray | 来源:发表于2018-08-25 16:26 被阅读79次

前言

EOS的账户和权限系统设计的比较复杂,但扩展性相当好。与比特币或以太坊不同,最明显的特点就是支持自定义账户权限和多签名机制。有必要单独用篇文章进行说明。

本篇内容大部分翻译自官方文档

官方文档:
https://developers.eos.io/eosio-nodeos/docs/accounts-and-permissions

关于walletkey的说明见这篇文章
EOS开发(三)在私链创建管理钱包、生成导入密钥对、创建账户,本篇着重说明accountPermissions

概述

账户是储存在区块链上的一个人类可读的标识。每个账户都有两个默认权限,称为owneractive。开发者们也可以提出自定义名称的权限。每个权限的使用都有一个门槛,必须和其签署交易要求的最低签署人数相匹配(这句话不好理解,后面会有例子说明)。

授权和权限

每个账户自带两个默认权限

  • owner 表示对一个账户的所有权。只有很少的交易需要用到此权限,一般只会在修改账户权限的时候用到。建议将此权限的私钥放入冷钱包储存。此权限可以重置其他权限。

  • active 权限用来进行转账,为节点投票,以及其他高级别的账户修改

简单来说,owner权限可以执行所有的操作,而active权限则可以执行除了更改owner权限对应的密钥对以外的全部操作。

每一个权限都有一个父权限。父权限拥有改变所有子权限的能力。

除了自带的权限外,每一个账户可以拥有自定义的权限,以便账户的扩展性管理。自定义权限不可思议的灵活,在执行时可以产生出许多可能的用例。大多数情况下由开发者社区决定如何使用,以及哪种会议决定是否使用。

自定义权限是随意且无效的,直到它们被关联到某个行为上。

权限可以由给定的授权,指定为一个或多个公钥或者一个有效的账户名组成

组合使用

下面的例子是对上面内容的一些典型使用

默认账户配置(单签名)

下面是一个刚创建的账号的配置信息,它的owneractive权限都各有一个key,每个key的权限权重都为1,门槛也是1。所以默认配置下,授权签署一个行为只需要一个key进行签署。

@bob的账户授权示例

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

在此账户中,由于每个权限的授权门槛都为1,且每个key的权重也为1,所以当签署某个交易时,只需要对应的key进行签署即可。

多签名账户和自定义权限

下面的例子虚构了一个名为@multisig的账户。此方案中,两个用户拥有此账户的owneractive权限。此外,还有一个名为publish的权限,此权限由三个用户拥有。

@multisig的账户授权示例

由于owner权限的门槛为2,而@bob@stacy的权重仅为1,所以如果要签署owner权限级别的交易,需要二者都要进行签署。

active权限的门槛为1@bob@stacy的权重也为1,所以如果要签署active权限级别的交易,需要其中一人进行签署即可。

此账户还有一个名为publish的自定义权限。这里我们假设此权限的作用是通过某个博客的DApp,通过@multisig账户发布文章。此权限的门槛为2,而@bob@stacy的权重为2,而另一个公钥的权重为1。所以@bob@stacy都可以分别单独签署此交易,而另一个公钥需要加上@bob@stacy其中一人,才可共同签署此交易。

因此,上面的权限表暗示@bob@stacy,作为帐户的所有者,具有类似于主人或编辑者的高级权限。虽然这个原始示例在可伸缩性方面存在限制,并且不一定是一个好的设计,但是它充分展示了EOSIO权限系统的灵活特性。

此外,注意在上述表格中,权限可以同时使用帐户名和密钥进行设置。乍一看,这似乎微不足道,但它确实提出了一些灵活性的附加维度。

其他

我们在使用以太坊或者比特币时,生成密钥对,公钥就是地址,表示账户。币存放在公钥中,知道了你的私钥就可以操作你的账户,把币转走。一个账户只有一个实际控制人,谁掌握着私钥谁就有所有权限。

而在eosio中,账户由一个人类可读的字符串组成,就像其他用户名一样。每个账户中有不同的权限,每个权限由一个或多个账户或者密钥对组成。要使用某个权限,需要该权限下一个或多个账户或者密钥对进行签署(取决于权重和门槛)。

将上面的例子简化一下,我们可以为我们的账户,自定义一个发布博客文章的权限,并生成一个密钥对。我们可以将此密钥对中的私钥交给某个人,让他帮我们发布文章。但他也只能用此账号发布文章,并不能操作账户中的代币,因为他没有转账权限的私钥。

相关文章

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

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

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

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

  • EOS 相关概念

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

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

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

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

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

  • EOS 合约是可以重新部署的

    EOS 合约是由开发者部署到主网上,开发者用一个EOS账户来部署合约,之后该EOS账户名就是合约的标识,并且EOS...

  • EOS相关知识科普

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

  • EOS 账户与权限

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

  • EOS入门

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

  • EOS智能合约开发前准备——账户和权限管理

    在说智能合约开发前先说这个,因为所有对智能合约的操作都是建立在账户和权限管理的基础上的。 先说下几个概念: 钱包 ...

网友评论

    本文标题:EOS开发(二)账户和权限说明

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