EOS入门第二篇-技术原理

上一篇简析了下 EOS , 这篇分析下EOS的技术原理 。

上一篇[简析了下 EOS](https://learnblockchain.cn/2019/05/24/eos-dev-intro/) , 这篇分析下[EOS的技术原理](https://learnblockchain.cn/2019/05/25/eos-dev-principle/) 。 ## 总体架构 ![](https://img.learnblockchain.cn/2019/05/15589392544485.jpg) <p class="image-caption">模块架构图</p> 如上图所示,总体上EOS主要由keosd,cleos,nodeos三大运行时组件构成: **keosd** 可以认为是个密钥管理器,用来管理和EOS账户相关的公私钥。 **cleos** 客户端命令行交互组件,用于解析用户命令,根据具体命令请求调用相应的接口,例如查看区块信息、操作钱包等等。 **nodeos** 是EOS核心进程,EOS大部分的功能都是在 nodeos 中进行。我们可以使用插件来配置nodeos去执行各种功能。p2p网络、合约代码调度以及区块链数据持久化等大部分区块链核心功能都被放在了nodeos中。对于开发人员来说,nodeos也足够用来建立一个单节点区块链网络。 用户在和eos进行交互时,通常来说都是通过cleos来发送指令,根据具体情况将请求转发到keosd还是nodes,由keosd进行账户创建,交易签名等操作。 ##账户体系 账户体系是EOS中的亮点之一,实现了基于角色的权限管理和账户恢复功能,使得用户可以灵活地以一种组织化的方式管理账户,并最大化保证资产的安全性。 > 备注:EOS 账户是通过智能合约实现的。 * 基于角色的多层级账户体系 常见区块链项目的账户是一对公私钥,账户名就是公钥(的推倒形式),而EOS中的账户名是由用户自定义的12位可读标识符组成,且一般一个账户可以被多对公私钥控制,每对可以自定义拥有不同的权限。遇过权限配置可实现该账户只被个体拥有或者被一个组织控制(即多个个体共同拥有),该账户是传统公钥所代表的单一权限的更高层次抽象集合。 对于常见的区块链项目而言,账号一般就是一对公私钥,如果私钥被盗取代币便可直接转走。而在EOS中,代币是放在账户里的,每个公钥可以配置不同的权重,可以控制每个公钥可以转移的账户的代币的金额(需要每个拥有转账权限的钥匙的权重之和达到设定的阁值)。EOS上的所有交易行为都是通过账户来完成的,通过账户执行任意操作时,EOS系统首先会验证操作者是否拥有足够的权限,通过验证该操作才能生效。 EOS中,每个账户刚创建时一般由个体拥有,通过单一公私钥便能进行所有操作,后续可根据需要通过权限配置将该账户扩展成组织账户,由多对公私钥(即多个主体)共同控制,甚至可为组织外部个体或组织分配部分操作权限,从而实现极其灵活的组织管理方式。 * 账户权限管理 EOS中任意账户都自带两个原生权限: owner 和 active 权限。owner即代表账户所有权,该权限可进行所有操作,包括更改owner权限,可由一对或多对EOS公私钥或另一账户的某权限实现权限控制。因此,代表着owner权限的EOS公私钥是最重要的,必须冷储藏(离线存储)。active 即活跃权限,能进行除更改owner权限以外的所有操作,也是通过一对或多对EOS公私钥或另一账户的某权限实现权限控制的。 * 密钥丢失或被盗后的恢复 EOS允许恢复被盗窃的密钥,这在比特币和[以太坊](https://learnblockchain.cn/2017/11/20/whatiseth/)上是不可能的。在比特币和以太坊上一旦密钥丢失那么整个账户也将随之丢失。EOS系统软件为用户提供了密钥被盗时恢复其账户控制的方法。账户所有者可以使用过去30天内活跃的任何其批准的账户恢复合作伙伴的密钥,并重置账户上的所有者密钥。没有账户所有者的配合,账户恢复合作伙伴无法重置账户的控制权。 本文作者Ashton,欢迎关注他的[简书](https://www.jianshu.com/u/922115b98e3f)。

上一篇简析了下 EOS , 这篇分析下EOS的技术原理 。

总体架构

EOS入门第二篇-技术原理插图 <p class="image-caption">模块架构图</p>

如上图所示,总体上EOS主要由keosd,cleos,nodeos三大运行时组件构成:

keosd 可以认为是个密钥管理器,用来管理和EOS账户相关的公私钥。 cleos 客户端命令行交互组件,用于解析用户命令,根据具体命令请求调用相应的接口,例如查看区块信息、操作钱包等等。 nodeos 是EOS核心进程,EOS大部分的功能都是在 nodeos 中进行。我们可以使用插件来配置nodeos去执行各种功能。p2p网络、合约代码调度以及区块链数据持久化等大部分区块链核心功能都被放在了nodeos中。对于开发人员来说,nodeos也足够用来建立一个单节点区块链网络。

用户在和eos进行交互时,通常来说都是通过cleos来发送指令,根据具体情况将请求转发到keosd还是nodes,由keosd进行账户创建,交易签名等操作。

账户体系

账户体系是EOS中的亮点之一,实现了基于角色的权限管理和账户恢复功能,使得用户可以灵活地以一种组织化的方式管理账户,并最大化保证资产的安全性。

备注:EOS 账户是通过智能合约实现的。

  • 基于角色的多层级账户体系

常见区块链项目的账户是一对公私钥,账户名就是公钥(的推倒形式),而EOS中的账户名是由用户自定义的12位可读标识符组成,且一般一个账户可以被多对公私钥控制,每对可以自定义拥有不同的权限。遇过权限配置可实现该账户只被个体拥有或者被一个组织控制(即多个个体共同拥有),该账户是传统公钥所代表的单一权限的更高层次抽象集合。 对于常见的区块链项目而言,账号一般就是一对公私钥,如果私钥被盗取代币便可直接转走。而在EOS中,代币是放在账户里的,每个公钥可以配置不同的权重,可以控制每个公钥可以转移的账户的代币的金额(需要每个拥有转账权限的钥匙的权重之和达到设定的阁值)。EOS上的所有交易行为都是通过账户来完成的,通过账户执行任意操作时,EOS系统首先会验证操作者是否拥有足够的权限,通过验证该操作才能生效。 EOS中,每个账户刚创建时一般由个体拥有,通过单一公私钥便能进行所有操作,后续可根据需要通过权限配置将该账户扩展成组织账户,由多对公私钥(即多个主体)共同控制,甚至可为组织外部个体或组织分配部分操作权限,从而实现极其灵活的组织管理方式。

  • 账户权限管理

EOS中任意账户都自带两个原生权限: owner 和 active 权限。owner即代表账户所有权,该权限可进行所有操作,包括更改owner权限,可由一对或多对EOS公私钥或另一账户的某权限实现权限控制。因此,代表着owner权限的EOS公私钥是最重要的,必须冷储藏(离线存储)。active 即活跃权限,能进行除更改owner权限以外的所有操作,也是通过一对或多对EOS公私钥或另一账户的某权限实现权限控制的。

  • 密钥丢失或被盗后的恢复

EOS允许恢复被盗窃的密钥,这在比特币和以太坊上是不可能的。在比特币和以太坊上一旦密钥丢失那么整个账户也将随之丢失。EOS系统软件为用户提供了密钥被盗时恢复其账户控制的方法。账户所有者可以使用过去30天内活跃的任何其批准的账户恢复合作伙伴的密钥,并重置账户上的所有者密钥。没有账户所有者的配合,账户恢复合作伙伴无法重置账户的控制权。

本文作者Ashton,欢迎关注他的简书。

  • 发表于 2019-05-27 10:48
  • 阅读 ( 7212 )
  • 学分 ( 20 )
  • 分类:EOS

评论