EOS技术白皮书学习笔记(二) - 账户系统

在看本文前,最好先了解区块链相关概念:比特币。以太坊,钱包,智能合约,秘钥等。

attachments-2018-02-4OxtB8ml5a7fd997c3614.png

作者:林明潭

来源:简书

原文链接:https://www.jianshu.com/p/9b00883d9788

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文约300字+,阅读(观看)需要18分钟


在看本文前,最好先了解区块链相关概念:比特币。以太坊,钱包,智能合约,秘钥等 


为了更好的理解,先看看一个普通账户系统需要哪些功能。

 
假设我刚进入一个网站,我首先要能注册一个帐号,然后能用帐号登录,登录成功后能够在一定时间内保持已登录状态,同时我还有可能要对帐号的一些基本信息进行修改。另外出于之前密码泄露事件的影响,我不希望我的密码是被明文保存,希望我的帐号是安全的。

 
基于以上一个用户使用的流程来说,一个帐号系统功能可以进行如下划分:


用户注册 
用户登录 
用户登录后身份校验 
用户基本信息修改 
用户基本信息获取 
用户安全中心


从上述功能上考虑,可以进行如下划分:


用户基本信息服务,提供用户的基本信息的获取和修改, 
用户的注册和登录服务,提供用户的注册、登录授权颁发用户的登录标识 ,
用户身份校验服务,对用户的登录标识进行校验 ,
用户安全中心服务,提供用户的重要信息的修改如登录的邮箱手机号,密码等。用户在进行这些敏感信息的修改是需要进行身份认证,来保证用户的安全性。 


简单来说一个账户系统就是为用户设计的,需要考虑用户在应用上的各方面的需求。 


下面我们来看看EOS.IO为用户设计了怎样的账户系统。

 
技术白皮书上关于账户系统,列举了以下几点:


消息和消息处理程序 
基于角色的权限管理 
命名权限级别 
命名消息处理程序组 
权限映射 
权限评估 
默认权限组 
权限的并行评估 
有强制延迟的消息 
密钥被盗后的恢复


虽然还不知道以上列出的概念具体讲的是什么,但单从字面上就可以看出,它有消息、权限、安全等功能。相比于比特币,以太坊的只有私钥和地址概念的账户系统,可以说是非常先进了。他们的区别有点像没有装图形界面系统的电脑和装了图形界面系统(例如:Windows,macos)的电脑的区别。 


另外,EOS可以使用一个人类可以阅读的2-32个字符来创建账户,而比特币和以太坊的账户地址是一串看不懂意思的字符串。

 
以及,EOS的账户支持域的概念,你可以创建一个叫jack的账号,表示为@Jack,接着你可以再创建一个叫做@shuai.jack的账户,并且这个账户只能由你创建。

 
从以上几点可以看出,EOS在可用性上比比特币、以太坊好太多。 
在现实生活中,每个人都不是独立的个体,人与人的沟通是生活中不可或缺的部分。在EOS系统中也是一样,账户与账户之间需要通信,而"消息"就是他们之间通信用的语言。 


EOS的消息处理机制 


每个账户都可以发送结构化消息到其他账户 
账户可以定义消息被接收后的处理脚本(程序) 
每个账户有自己独有的数据库,只能自己的消息处理程序访问 
账户的消息处理程序可以想其他账户发送消息 
消息和自动的消息处理程序的组合是EOS定义智能合约的方式


当用户使用一个应用(基于EOS)的时候,会有各种各样的操作,而有些操作比较私密,不能随便操作,需要密码等权限。就好比你用“登录密码”可以登录支付宝,但是需要“支付密码”才能支付。所以对账户进行权限管理是很有必要的,EOS的权限管理是基于角色的。 


基于角色的权限管理 


1)判断一条消息或消息程序或事务是否被授权,最简单的形式是这条消息是否包含一个签名,并且知道这个消息是谁的 。


2)为了更细和更高级的控制权限,EOS提供了一个声明式权限管理系统,把个人和群组绑定在一起。这怎么理解呢?一般来说,大范围的权限可以控制群组(角色),细的权限可以控制个人,而个人又可以在群组(角色)里,还可以是多个群组,这样就可以做到权限的随意控制。 


3)认证和权限管理必须标准化,并与应用程序的业务逻辑分开。这使得开发工具能够以通用的方式管理权限,并为性能优化提供重要的机会。 


4)EOS还提供多账户的控制,多用户控制是提升安全性的最重要因素,如果能正确使用,可以极大地消除黑客盗窃的风险(把钱放到多个钱包比放在一个钱包安全吧)。

 
5)EOS还允许当前账户和其他账户的各个权限进行组合,并发送到另外的账户。这就类似支付宝的“登录密码”和“支付密码“。

 

想要做到以上几条,EOS是怎么做的,以下是它的权限管理方案: 


1)命名的权限级别 


EOS允许不同的权限设定不同的名字,当然它提供了两个默认的级别,它们分别是最高级的Owner,其次是Active。其他的权限级别的名字可以自己定义了,例如,你需要定义两个权限级别,一个给你老婆用,一个给你孩子用,你就可以分别取名为老婆大人、小可爱。 


2)命名消息处理程序组 


这个是干嘛用的呢?每个账户将自己处理消息的程序按照@accountname.groupa.subgroupb.MessageType这样的格式命名后,可以给其他账户使用。在这样的模式下,可以将创建和取消订单的交易合约与存取款的交易合约分离。这种交易合约的分组对用户使用交易合约提供了较大便利。 


# 权限映射:命名权限级别和命名的消息处理群组之间是可以做映射(关联)的。

 
# 权限评估:怎么判断权限的大小?EOS是按照从小到大的权限顺序进行判断的。例如:当 @alice 以 "Action" 类型发送一条消息给 @bob 时,首先会检查 @alice 是否为 @bob.groupa.subgroup.Action 定义过权限映射。 如果什么都没有找到,紧接着检查 @bob.groupa.subgroup 映射,然后是 @bob.groupa,最后 @bob 将被检查。 如果都没有找到,那么假定映射为命名的权限群组 @alice.active。 


# 默认权限组:最高级的权限是“owner”,这个权限可以做任何事情,但是一般不用做具体工作,一般用来做冷备份,比如说Active权限丢了,可以用“owner"权限来恢复。在”owner“之下就是”active"了,它是可以做除了修改“owner”以外的所有事情,一般业务都是由active权限来完成。其他的所有权限组也都是从“active"权限派生出来的。 


# 权限的并行评估:权限评估是个”只读“的过程。所有事物的所有秘钥和权限评估可以并行执行。 

强制延迟的消息 

时间是安全的关键组成部分。怎么理解呢?

 
一条消息发出去,可能会受到很多因素的干扰而不能被及时接收确认,这时的你可能想取消发送消息。EOS允许发送有时间延时的消息,在特定时间范围内可以取消消息。这种延迟消息具体能延时多长时间,还得看具体的应用场景。比如说,我们买一杯咖啡可以在几秒钟之内付完钱,而买房子可能需要72小时清算周期。具体取决于应用场景以及应用开发者怎么设定,用户怎么操作的。 


恢复被盗窃的秘钥 

在币圈我们常常看到新闻里有报道某某某秘钥被盗,损失多少多少这样的事件。EOS为用户提供了一种在秘钥被盗时恢复其账户控制的方法。包括以下4点:


1、账户所有者可以使用30天内的任意Owner权限的密钥,注意这个密钥可能已经被黑客换过了,但是在这个场景下这个密钥还是可以使用的; 


2、使用任意30天内的Owner密钥和指定的合作伙伴才能恢复密钥。

 
3、这里面合作伙伴不能在没有Owner协助的基础上恢复密钥。

 
4、合作伙伴也不会参与任何日常交易,这样可以大大降低法律上的风险。


文章发布只为分享区块链技术内容,版权归原作者所有,观点仅代表作者本人,绝不代表区块链兄弟赞同其观点或证实其描述。

attachments-2018-02-qsJNDw5U5a7fda2c18fa3.jpg

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
不写代码的码农
社区运营-小链

区块链兄弟社区运营管理

246 篇文章

作家榜 »

  1. 社区运营-小以 486 文章
  2. 社区运营-小链 246 文章
  3. 于中阳Mercina-zy 79 文章
  4. 涂晶 74 文章
  5. 李晓琼 45 文章
  6. 兄弟连区块链培训 42 文章
  7. 吴寿鹤 36 文章
  8. John-smith 26 文章