这篇文章为大家介绍钱包(Wallet)、账户(Accounts)、账户权限(Account authorities)的概念。

钱包 Wallet

钱包是一个本地客户端软件,有下面两个作用:

  • 保存私钥。私钥可以和一个或多个账户关联,私钥保存在钱包中,私钥对应的公钥保存在账户中。
  • 对交易签名。账户(Account)发起交易(Transactions)时,需要通过钱包客户端对交易签名。

钱包的状态:

  • 锁定。锁定状态下的钱包无法进行任何操作(导入私钥、交易签名等等),钱包信息也处理加密状态。
  • 解锁。通过创建钱包时生成的密码解锁钱包后,可以进行基本操作,钱包信息也处于解密状态。

账户 Accounts

账户由一个唯一名称来标识,名称的最大长度为12个字符。账户可以是一个自然人,也可以是一个组织或者智能合约。

账户的作用是对交易签名,并将其推送到区块链,也就是说账户是EOSIO中发起交易的主体。

账户权限 Account authorities

账户权限由权限(permission)、权限所有者(account)、权重(weight)以及阈值(threshold)四个部分组成,例如,下图是账户wangtao的账户权限。

wangtao account authorities 

结合这个例子,我们来一步步了解账户权限。

权限 permission

EOSIO采用父子分层的权限结构,低级权限(子权限)由高级权限(父权限)派生而来,父权限拥有子权限所有的能力。子权限能做的事父权限也能做,但是反过来,父权限能做的事,子权限不一定能做。

EOSIO在账户创建时会生成owner与active两个默认权限。

  • owner 是最高等级权限,拥有owner权限就意味着拥有账户的所有权,我们可以把owner理解为超级管理员权限。
  • active 是owner的子权限,主要用来发送交易、投票或者进行高级别的账户修改操作。

除了默认权限,账户还可以自定义权限(例如示例中的publish权限),用于对未来账户管理进行扩展。自定义权限要么是active的子权限,要么是其它自定义权限的子权限。

权限拥有者 account

虽然英文名称是account,但是它前面的账户并不完全相同,我认为翻译成权限拥有者更合适。

权限拥有者可以是账户,也可以是公钥,例如bob或者EOS5EzTZZQQxdrDaJAPD9pDzGJZ5bj34HaAb8yuvjFHGWzqV25Dch。

一个权限可以被分配给一个或多个权限拥有者,当权限被分配给多个权限拥有者时,意味着通过该权限执行的动作,需要同时获得多个权限拥有者的授权才能够进行。

至于具体需要多少个授权,则取决于权重(weight)以及阈值(threshold)。

权重 weight

权限拥有者在权限中的重要程度,以不小于1的整数表示。

阈值 threshold

执行该权限的最低权重总和。例如在示例中,执行owner权限只需要唯一的公钥EOS5EzTZZQQxdrDaJAPD9pDzGJZ5bj34HaAb8yuvjFHGWzqV25Dch(以下简称公钥)授权,因为owner权限的阈值为1,而公钥的权重也为1。

执行publish权限的情况则较为复杂,由于publish权限的阈值为2,因此bob或者tom都可以单独授权。而公钥的权重为1,无法单独授权,必须要与bob或者tom中的任意一个联合授权。

小结

钱包、账户以及账户权限是EOSIO最基本,也是最重要的几个概念,下一篇文章,我会结合实际的代码,来进一步说明这些概念的含义。

转自:https://www.taowong.com/blog/2018/06/28/eos-develop-3.html

参考资料:

EOS WIKI-Local-Environment

Accounts & Permissions

深入理解 EOS 账户权限映射

(转)EOSIO开发(三)钱包、账户与账户权限之概念篇的更多相关文章

  1. (转)EOSIO开发(四)- nodeos、keosd与cleos

    前一篇文章介绍了EOSIO中钱包.账户与账户权限的概念,这一篇文章继续学习EOSIO系统的主要组件,包括nodeos.keosd以及cleos. 本文执行的命令都是基于Docker环境,请先下载Doc ...

  2. 如何给EOS账户设置自定义权限

    https://bihu.com/article/1508858 EOS从上线以后,不断有传出token被盗的消息,安全无小事,我们一定要重视,今天从EOS帐户自己定义权限的角度来谈谈如何做好账户的安 ...

  3. 理解开发HD 钱包涉及的 BIP32、BIP44、BIP39

    如果你还在被HD钱包.BIP32.BIP44.BIP39搞的一头雾水,来看看这边文章吧. 数字钱包概念 钱包用来存钱的,在区块链中,我们的数字资产都会对应到一个账户地址上, 只有拥有账户的钥匙(私钥) ...

  4. 利用PowerShell复制SQLServer账户的所有权限

    问题 对于DBA或者其他运维人员来说授权一个账户的相同权限给另一个账户是一个很普通的任务.但是随着服务器.数据库.应用.使用人员地增加就变得很枯燥乏味又耗时费力的工作.那么有什么容易的办法来实现这个任 ...

  5. (转)EOSIO开发(一)使用Docker构建本地环境

    前言 一直想学习EOS开发,但是不知道怎么入门.最近从GitHub上下载了源码,发现官方已经提供了完整的EOSIO开发入门教程,既然如此赶紧开始行动.今天是系列文章的第一篇,介绍如何使用Docker搭 ...

  6. App开发三种模式

    APP开发三种模式 现在App开发的模式包含以下三种: Native App 原生开发AppWeb App 网页AppHybrid App 混合原生和Web技术开发的App 详细介绍: http:// ...

  7. iOS开发三步搞定百度推送

    iOS开发三步搞定百度推送   百度推送很简单,准备工作:在百度云推送平台注册应用,上传证书. 步骤一: 百度云推送平台 http://push.baidu.com/sdk/push_client_s ...

  8. 基于Spring MVC的Web应用开发(三) - Resources

    基于Spring MVC的Web应用开发(3) - Resources 上一篇介绍了在基于Spring MVC的Web项目中加入日志,本文介绍Spring MVC如何处理资源文件. 注意到本项目的we ...

  9. Java Web高性能开发(三)

    今日要闻: Clarifai:可识别视频中物体 最近几年,得益于深度学习技术的发展,谷歌和Facebook等企业的研究人员在图形识别软件领域取得了重大突破.现在,一家名为Clarifai的创业公司则提 ...

随机推荐

  1. d3.js 根据需求定制pie图饼图

    参考网址: http://d3pie.org/#generator 用法: 1.在网址中,跟着步骤,设置样式和效果,最后获取pie的option格式 2.引入d3.min.js和d3pie.min.j ...

  2. Selenium模拟浏览器抓取淘宝美食信息

    前言: 无意中在网上发现了静觅大神(崔老师),又无意中发现自己硬盘里有静觅大神录制的视频,于是乎看了其中一个,可以说是非常牛逼了,让我这个用urllib,requests用了那么久的小白,体会到sel ...

  3. day4 四、流程控制之if判断、while循环、for循环

    一.if判断 1.语法一: if 条件: 条件成立时执行的子代码块 代码1 代码2 代码3 示例: sex='female' age= is_beautiful=True and age < a ...

  4. Ubuntu设置DNS永久生效

    环境查看 设置临时生效,修改配置文件/etc/resolv.conf nameserver 202.96.134.133 重启失效 设置永久生效,修改网卡配置文件/etc/network/interf ...

  5. SQL Server 2012 安装过程详解(包含每一步设置的含义)

    转http://www.cnblogs.com/EastLiRoar/p/4051969.html 一.启动安装程序,点击“安装”选项卡,选择“全新SQL Server独立安装或向现有安装添加功能”. ...

  6. 短信文本pdu模式解析

    来源于互联网 年代较长 如有侵犯 请联系删除 text模式主要发送字符集(有限的),不能用来发送中文,但是hex moder可以发送所有字符. pdu moder被所有手机支持,主要分为7bit 8b ...

  7. [No0000E8]C# 方法 参数传递

    参数传递 当调用带有参数的方法时,您需要向方法传递参数.在 C# 中,有三种向方法传递参数的方式: 方式 描述 值参数 这种方式复制参数的实际值给函数的形式参数,实参和形参使用的是两个不同内存中的值. ...

  8. HBase 笔记

    参考资料:HBase权威指南 一行由若干列组成,若干列又构成一个列族一个列族的所有列存储在同一个底层的存储文件里,这个文件叫HFile列族的数量有限制:一个列族里列的数量没限制谓词删除:例如允许用户只 ...

  9. odoo 权限设置

    *权限管理的四个层次    # 菜单级别:不属于指定菜单所包含组的用户看不到该菜单,不客全,只是隐藏                 菜单,若知道菜单ID,仍然可以通过指定URL访问    # 对象级 ...

  10. 转:ArcGIS API for JavaScript之图层

    参考文章地址: https://developers.arcgis.com/javascript/3/jsapi/layer-amd.html Layer |–TiledMapServiceLayer ...