大家好,非常感谢参加《EOS从入门到精通》系列课程,我是王巨,今天是EOS技术白皮书解读的第二讲。今天的课程原本计划讲两部分内容,账户系统和并行执行。但是一天的备课下来,我发现账户系统的内容特别多,而且理解EOS的账号体系对于将来进行智能合约的开发非常有帮助,因此我决定在本次课程中详细给大家讲解一下EOS的账户体系。并行执行这部分放到下一讲跟TOKEN模型放到一起。

另外,上次有同学说没有ppt的问题,我今天也会在讲课的过程中穿插加入ppt。

EOS账户系统.png

大家可以先看一下上面这个思维导图,这就是本节课要讲解的大纲。主要分了5个章节,简介、消息和处理程序、基于角色的权限管理、带有强制延时性的消息、恢复被盗窃的密钥。其中今天会重点讲解基于角色的权限管理。

好的,我们开始讲解EOS的权限系统

EOS账户系统.001.jpeg

EOS相对于比特币和以太坊只有私钥和地址的概念,EOS的账户体系是相当完备的,从这点来看,比特币和以太坊在可用性上差了EOS一大截。比如说比特币和以太坊没法自定义账户地址,只能用一堆人类没法理解的字符串做地址和私钥。而EOS可以使用一个人类可以阅读的2-32个字符来创建账户。另外在白皮书上强调,创建一个账号需要付出额外的一点点成本,来覆盖账户的存储成本,这一般是由开发者也就是应用提供方来承担。最后,EOS的账户还支持域的概念,比如说:
@domain这个账号的拥有者是唯一能创建@user.domain的人。

EOS账户系统.002.jpeg

好我们继续讲消息和处理程序,讲账户为什么要讲消息和处理程序呢?这是因为账户和消息是EOS只能合约的两个不可或缺的组成部分,而且他们之间有着密切的关联,单独讲哪一个也没法讲清楚他们的本质。我们看看EOS的消息机制就明白了,所谓的消息就是账户与账户之间的沟通语言,每个账户都可以发送结构化的消息给任意其他账户,每个账户都可以定义处理消息的脚本,每个账户还有自己的私有数据库,消息处理脚本也可以给其他账户发消息,最终 消息和消息处理脚本组成了EOS的智能合约。
我来进一步解释一下,发消息很容易理解,消息处理脚本就是在一个账户收到了消息之后怎么处理消息。这个处理脚本本身还可以发消息给其他账户。这个怎么理解呢?我的理解是有些消息是人手工发的,比如说a给b转账50eos,有些消息是可以由处理消息的脚本来发的,比如说b在收到50eos这个消息后有个消息处理脚本会自动向c发送25个eos。这其实就是一个非常简单的合约了。

EOS账户系统.003.jpeg

好的,我们来讲一下今天的重点基于角色的权限管理,这也是BM系区块链的一个特色,权限管理在BTS和Steamit上已经比较完善了,在EOS上还会做更多的优化。我们先来看看权限管理的简介:判断一条消息是否被授权最简单的方式是包含一个签名,当然验证这个签名的前提是要知道这个签名是谁的。一般来说权限是与个体或群组绑定在一起,理论上不会有一种权限跟个体或群组没关系,因为这样是没有意义的。EOS提供了细粒度和高级别的权限控制,可以控制到谁在什么时候做什么事情。认证和权限管理必须标准化,并且与应用程序的业务逻辑分开,这样可以用通用的方式来管理权限,并且为性能优化提供可能。EOS还支持多账户的控制机制,能对账户的安全性提供保障,减少被黑客攻击而造成的资金损失风险。EOS甚至还允许定义什么密钥或账户可以发送特定的消息类型给另一个账户。
举个例子:一个用户的社交媒体账户可以使用一个密钥,而另一个密钥可以用于访问交易所,甚至可以授权其他账户来代表本账户而不是分配一个密钥。

下面我们就详细讲一下EOS的权限管理方案:

EOS账户系统.004.jpeg

首先EOS为权限级别进行了命名比如说Owner、Active、Friend。这些命名可以是系统默认的比如Owner和Active,有些是可以自定义的比如Friend的。我们来看Steamit里面的权限实例:它是硬编码了三个权限级别:Owner、Active、Posting。其中Posting权限只能进行发帖操作投票等社交操作,Active权限可以做除了修改Owner以外的所有事情。Owner可以作为冷备份而存在。EOS本身也囊括了这些概念,而且允许自定义权限的层次结构和分组。

EOS账户系统.005.jpeg

在设计了权限级别之后,EOS还设计了命名的消息处理群组,这个命名的消息处理群组可以在其他帐户配置他们权限级别时被引用。上面有一个简单的例子,在账户名下有一个分组A,分组A下面有个子分组b,它下面有消息类型。一个交易所的交易合约 在这种模式下就可以将订单的创建和取消 分开存取,通过交易合约进行分组 可以方便 交易所用户。

EOS账户系统.006.jpeg

权限级别和消息处理群组,这两个概念之间就可以做映射了。就是说可以将某个消息处理群组分配到某个权限级别上,或者反过来说,可以在某个权限级别上定义很多消息处理群组。举个例子:一个帐户所有者可以将自己社交媒体应用与自己的“朋友”权限群组建立映射。 有了这个映射,任何朋友可以以这一帐户的身份在这一帐户的社交媒体上发帖。 尽管他们将以帐户所有者的身份发帖,他们仍然使用自己的密钥来签名消息。 这意味着总是可以辨识出是哪一个朋友在以何种方式使用帐户。

EOS账户系统.007.jpeg

如何进行权限评估,简单的来讲就是从小到大进行逐级匹配,比如:当 @alice 以 "Action" 类型发送一条消息给 @bob 时,首先会检查 @alice 是否为 @bob.groupa.subgroup.Action 定义过权限映射。 如果什么都没有找到,紧接着检查 @bob.groupa.subgroup 映射,然后是 @bob.groupa,最后 @bob 将被检查。 如果都没有找到,那么假定映射为命名的权限群组 @alice.active。
一旦一个映射被识别,则使用相关联的签名验证权限。 如果失败了,则跃迁至父权限,直至拥有者权限@alice.owner。

权限示例

我们在看一下上面这张图,我简单讲一下:我们先看左侧,可以看到上面带key字符的就是各种权限,底下的三个方框是命名的消息群组,我们可以看到,这个交易的合约被映射到家庭组这个权限上,而提现这个消息被映射到律师这个权限上,也就是说家庭组里面的成员可以进行交易,但是唯独不能进行取现。因为取现最先匹配上的是律师这个密钥。

EOS账户系统.008.jpeg

好,我们看看EOS的默认权限群组,默认的权限组上面我们也有讲到,是Owner和Active,Owner可以做任何事情,这个权限一般来说不用来做具体的工作,一般用来做冷备份,比如说Active权限丢了,就可以是用Owner权限来恢复。Active权限可以做除了修改Owner以外的所有事情,一般业务都是有Active权限来完成。其他的所有权限组也都是从Active权限派生出来的。

EOS账户系统.009.jpeg

权限的并行评估这部分内容,相对来说没有特别重要,我们就简单讲一下。基本上说的是,由于权限的评估是只读的,因此可以进行并行化处理,同时可以提前到交易广播阶段完成,而不是在打包块的过程中。另外在区块链被重新加载重放交易时由于区块的执行肯定是通过了权限验证的,因此可以忽略,以此来提高执行效率。

好了权限管理这部分就讲到这里,我们在看下一部分,带强制性延时的消息

EOS账户系统.010.jpeg

这部分比较简单,主要说的是,时间是安全的重要属性,EOS允许有时间延时的消息,在特别的时间范围内可以取消消息。这点是比特币和以太坊不能实现的,特别是在网络拥堵的情况下,若手续费比较低,往往一笔交易很长时间得不到确认,而用户完全没有办法取消交易。这种延时消息具体延时多长时间完全有消息的敏感程度决定,比如说买咖啡可能是几秒钟,买房可能是几天,转移整个账户可能是一个月,确切的时间取决于应用开发者和用户。

EOS账户系统.011.jpeg

EOS允许恢复被盗窃的密钥,这在比特币和以太坊上是不可能的,在比特币和以太坊上一旦密钥丢失那么整个账户也随之丢失,EOS提供了恢复密钥的机制。具体来说就是可以使用30天内的任意Owner权限的密钥,注意这个密钥可能已经被黑客换过了,但是在这个场景下这个密钥还是可以使用的;使用任意30天内的Owner密钥和指定的合作伙伴才能恢复密钥。这里面合作伙伴不能在没有Owner协助的基础上恢复密钥。合作伙伴也不会参与任何日常交易,这样可以大大降低法律上的风险。

好了,今天的课程就到这里,谢谢大家的收听,谢谢!下面是问答时间,我会找几个我能回答的问题来进行回答。


作者:王巨
链接:https://www.jianshu.com/p/4a37cf5fcf70
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

EOS从入门到精通-账户体系(文字稿)相关推荐

  1. EOS从入门到精通-设计背景与DPOS算法(文字稿)

    大家好,非常感谢参加<EOS从入门到精通>系列课程,我是王巨.先跟大家汇报一下上周六试讲的情况,上周6的试讲已经有6000多小伙伴参与了试听,在此我非常感谢大家的信任.同时在试讲的过程中大 ...

  2. EOS从入门到精通(四)

    大家好,非常感谢参加<EOS从入门到精通>系列课程,我是王巨,今天是EOS技术白皮书解读的第四讲.我们来解读EOS白皮书的最后几部分.今天的内容相对于上一节课会简单一些,主要讲EOS的治理 ...

  3. EOS从入门到精通(三)

    大家好,非常感谢参加<EOS从入门到精通>系列课程,我是王巨,今天是EOS技术白皮书解读的第三讲.今天我们来解读EOS白皮书中的"应用程序的确定性并行"和"T ...

  4. Kubernetes知识体系-从入门到精通

    2019独角兽企业重金招聘Python工程师标准>>> Kubernetes知识体系-从入门到精通 Kubernetes是一个基于容器技术.实现容器编排.提供微服务和总线的集群系统, ...

  5. 《Linux指令从入门到精通》——4.2 Linux下的简单文字模式文本编辑器

    本节书摘来自异步社区<Linux指令从入门到精通>一书中的第4章,第4.2节,作者:宋磊 , 宋馥莉 , 雷文利著,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  6. 微服务架构从入门到精通(二)微服务生态体系

    本篇承接上一篇文章<微服务架构从入门到精通(一)微服务介绍>讲起,主要是介绍微服务架构的技术生态体系,让大家对微服务架构整个生态圈有个大体的了解.10来多年的从业经验来看,学习技术一般都是 ...

  7. 第1课 EOS开发从入门到精通学习导航

    第1课 EOS开发从入门到精通学习导航 柚子(EOS)可以理解为Enterprise Operation System,即为商用分布式应用设计的一款区块链操作系统.EOS是EOS软件引入的一种新的区块 ...

  8. 【带你上手云原生体系】第二部分:Go语言从入门到精通

    [带你上手云原生体系]第一部分:文章简介 及 云原生思维概览 [带你上手云原生体系]第二部分:Go语言从入门到精通 [带你上手云原生体系]第三部分:Docker从入门到精通 [带你上手云原生体系]第四 ...

  9. 账户系统设计从入门到精通

    账户体系是支付交易的基础,就像电池对于手机,油罐对于加油站,心脏对于人体?那么这么核心的系统是不是很难设计呢,其实恰恰不难:这也印证了那样一句话"大道至简" 一.什么是账户 我们先 ...

最新文章

  1. 牛客网多校训练第一场 B - Symmetric Matrix(dp)
  2. 我如何查看要使用git推送的内容?
  3. MySoft.Data从入门到精通系列(五)【数据更新】
  4. 《Effective C++》读书笔记(第一部分)
  5. 你真的懂select吗??
  6. Android --- ERROR: Failed to resolve: xxx Affected Modules: xxx
  7. 20210903 惯性环节1/(s+1)的各种响应
  8. Lucene 02 - Lucene的入门程序(Java API的简单使用)
  9. 安卓清理垃圾清理代码_用方面清理代码
  10. iOS开发使用UIKeyInput自定义密码输入框
  11. html跳转多个域名自动选择,nginx实现两个域名之间跳转配置
  12. 九度OnlineJudge之1001:A+B for Matrices
  13. WinForm实现只打开一个窗口的代码
  14. 【邮政编码识别】基于matlab灰度二值化邮政编码识别【含Matlab源码 788期】
  15. android通过拼音搜索中文的功能
  16. 手机无法打开html文件夹,手机网站在电脑上无法打开的解决办法
  17. TMS VCL UI包功能和特点
  18. 单片机继电器控制实验程序C语言,用单片机通过继电器来控制电热水器的实验...
  19. 【Python 测验 01编程】数值运算
  20. 微信公众号开发002-微信网页授权

热门文章

  1. CUDA从入门到精通(三):必备资料
  2. IDE (Integrated Development Environment) 集成开发环境
  3. sizeof()与strlen()
  4. 【算法】一个简单的k均值(k-means)原理
  5. [云炬创业学笔记]第二章决定成为创业者测试6
  6. USTC English Club Note20211108
  7. [云炬ThinkPython阅读笔记]2.10 练习
  8. ustc小道消息20211227
  9. if中加return_答应我,别再 if/else 走天下了可以吗?
  10. 3DSlicer9:FAQ-3