EOS源码分析(5)账号

# EOS 账号
EOS 的账号系统可以说在当前的公链系统中是非常完善的,在进一步理解EOS的账号系统以前,让我们先看一下区块链中其他公链的账户系统是怎样设计的。

大家都知道,区块链上的第一个应用就是比特币,它创建了一种点对点的电子货币系统。由于是一套货币系统,因此它主要针对的是货币的产生,点对点货币支付等场景,在这套系统中,设计的视角是从货币出发的,系统中仅有交易地址的概念,并没有账号的概念。

相比于交易地址,账号一般都会有余额的概念,系统为每个账户存放了余额信息,任何时候你都可以查询到此余额,而比特币交易地址并没有这些余额信息,比特币所保存的信息主要就是交易信息本身,余额信息是通过交易推算出来的,交易的过程类似于我们在生活中使用法币的场景。试想一下你兜里目前有3张一元和一张五元的纸币,当你要购买一个价格为2.5 角的冰激凌的时候,你可以考虑拿三张一元的纸币,也可以考虑直接使用一张五元的纸币,对方会根据你的纸币金额再找零给你。在任何一个时间点,其实没有一个固定的余额数字告诉你兜里还有多少钱,但你的余额可以根据你所有的交易数据推算出来,每个账户的余额就是你交易地址所涉及的所有未花费交易输出(UTXO: unspent transaction outputs)。比特币的这种账号系统的优势就在于他完全是无状态的,从技术的角度来说,无状态的系统更容易扩展,更容易并行处理。

与比特币的UTXO模型不同,以太坊是有账户体系的,它的账户包含四个部分:

1. 随机数,用于确定每笔交易只能被处理一次的计算器
2. 账户目前的以太币余额
3. 账户的合约代码,如果有的话
4. 账户的存储(默认为空)

以太坊有两种类型的账户:外部账户和智能合约账号,其中外部账号是没有代码的。人们可以通过创建和签名一笔交易从外部账号发送消息,每当智能合约账户收到消息后,其内部代码会被激活,允许代码对账户内部存储进行读取和写入。可以看到,账户系统对于智能合约功能的支持来说是必须的,有了账户的概念,智能合约中才能更方便的访问账户中的信息。

以太坊账户系统已经提供了一些通用的信息和功能,但这个账户系统在实际应用使用中,还是不够完善,主要集中在三个方面:

1. 账户的地址是一个20字节的地址,不方便记忆
2. 账户不支持权限管理,不能应用在需要复杂权限管理的场景
3. 密钥一旦丢失,再也无法使用此账号

正是看到了以上这些问题,EOS系统在设计的时候,力求打造一套具备完善功能的账号体系,这样能够更好的支持各类应用场景需要,具体特性包括:

1. 采用了方便人类阅读的字符串(2-32字符)来创建账号
2. 支持域的概念,例如@domain 账号的拥有者是唯一能够创建@user.domain 账号的人
3. 支持完善的权限管理体系
4. 账户间消息发送和处理
5. 恢复被盗窃的密钥
# 权限管理
## 基于角色的权限管理
所谓权限管理,简单的来说就是判定某条消息是否被正确的授权,此处的消息泛指EOS中一切调用,包括交易和对智能合约的调用。在区块链中,比较常见的一种权限管理方式是判定一笔交易是否包含有效的签名,比特币中每笔交易都会做类似的判定,这种权限管理方式属于很简单的一种类型,它的审查范围是针对每笔交易,没有细化到账号级别,并且在这类判定中,操作所需权限(签名)都是已知的,而在实际情况中,权限一般都会绑定到账号或者多人账号级别,并且账号所拥有的权限和操作所需要的权限是分别控制的,EOS 提供的这种声明式的权限系统可以在账户级别提供细粒度和高纬度的控制,它可以有效的管理什么账号可以在什么时间做什么事情。

认证和权限管理必须标准化,并且与应用程序的业务逻辑分开,这样可以通过开发工具以通用的方式来管理权限,并且为性能优化提供可能。

每个账号都能被其他多个账号和私钥按照权重组合进行控制,这就创造了一种分层级的权限结构,它真实反映了现实中的权限分配方式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尹成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值