钱包
EOS钱包功能官方上定义很单一,仅仅存私钥公钥,提供私钥公钥生成和导入,其他的功能由EOS账户统一管理,比如代币查询、交易、合约功能都属于账户关联下的功能。
钱包和账户关系
- EOS账户创建需要关联钱包公钥,仅此而已
- 账户创建可以使用同一个钱包公钥创建多个账户,但各个账户是独立的,比如代币,合约。
举个例子
公钥 EOS6Btfmv5sZTZTJJDxEPf1ipEnYWQ95KajKCmx78unZAFxGEqikx
可以创建账户eosiotesta还可以创建eosiotestb,
虽然使用的公钥是一样的,但是这两个账户身上的代币合约都是独立的,可以理解成使用同一个密码创建了不同的账户,账户数据相互独立。
账户
账户组成
EOS账号最长12位字符组成(包括点号“ . ”), 有些文章上写2-32位是之前的版本了,现在主网上的版本已经限制为12位
.12345abcdefzhijklmnopqrstuvwsyz
- 普通用户可以只能创建12长度不带 . 的账户名
- 小于12位长度或者带 . 的账户名由系统拍卖
- ==eosio.== 账户前缀是不能被创建
- 指定后缀的账户名需要该后缀拥有者创建
举个例子
xxxx.com 需要由 .com 用户来创建
账户功能
账户名下有EOS系统的代币和用户调用eosio.token合约创建的代币、合约和公钥等
账户创建
账户创建者
EOS账号创建需要已经存在的账户来创建,称之为创建者或者管理者,创建者账户来源于EOS以太坊代币在做主网映射时,系统会根据以太坊地址按规则生成12位EOS账户名,主网上线的时候全部写入区块链。
注意:
我们在单机测试网络下创建账号使用的创建者是 ==eosio== 这个系统账户,公网测试网和主网上没办法使用。在公网测试网上这个==eosio==的账户是没法调用的,但是测试网络的官网会有一些公开的方式去注册账户,比如http://jungle.cryptolions.io,上面有创建账户的入口,在主网上 ==eosio== 是被21个超级节点控制。
账户创建花费
系统为每个账户分配了约4K大小的RAM空间,EOS的内存需要花EOS来买,所以创建账户是需要花费创建者的EOS来购买RAM,账户创建过程如果出现失败可以查看创建者账户是不是有RAM或者足够的EOS,现在有些钱包应用支持免费创建EOS账户名,其实是钱包应用的账户帮用户花了这个费用,用户可以通过调用EOS系统api查看创建者
账户权限
默认分配owner权限和active权限,可以自定义权限
- owner权限可做账户内任何事
- active比owner少一点系统合约方法调用权限
- 自定义权限需要active或者owner主动分配可执行的系统合约和账户发布的合约方法
自定义权限
- 使用已有权限自定义权限
- 为自定义权限分配可执行的方法(合约方法,转账、自定义合约)
权限单签名
一般用户通过自己的公钥创建账户之后,owner权限和active权限会分配到这个公钥上,在执行转账的时候需要这个公钥对应的私钥签名就可以了,也就是说权限的阈值和公钥的权限是相等的都等于1
权限 | 账户 | 权重 | 阈值 |
---|---|---|---|
owner | 1 | ||
EOS5EzTZZQQxdrDaJAPD9pDzGJZ5bj34HaAb8yuvjFHGWzqV25Dch | 1 | ||
active | 1 | ||
EOS61chK8GbH4ukWcbom8HgK95AeUfP8MBPn7XRq8FeMBYYTgwmcX | 1 |
权限多签名
eos账户是支持多方签名的,账户的权限由多个其他账户或者公钥控制,分别拥有不同的权重
eos的权限支持多方授权,比如想要花费账户google上的eos需要超过51%的股东授权,也就是说账户的每个权限都可以由多个账户来控制
权限 | 账户 | 权重 | 阈值 |
---|---|---|---|
owner | 2 | ||
@bob | 1 | ||
@stacy | 1 | ||
publish | 2 | ||
@bob | 2 | ||
@stacy | 2 | ||
EOS7Hnv4iBWo1pcEpP8JyFYCJLRUzYcXSqt... | 1 |
举个例子
owner就好像我们使用手机的root权限一样可以控制手机的任何东西
active类比于普通的用户使用手机
那么自定义权限就类比于我们设置的访客模式,我们开放了那些东西给访客看,访客才能看到什么
账户体系
举个例子
一个公司拥有多名股东,每个股东拥有一定的股份,那么股东们就是这个公司的owner,根据每个人的股份比例不一样行驶的投票权重也是不一样的
那么公司是一个账户,股东们分别也是不同的账户,在执行转账的时候需要股东账户的授权,拓展一下,股东A可能是一个投资机构,所以股东A要投票需要机构里边的投资人账户授权
EOS系统组织架构
eosio这个账户是系统启动的时候系统默认创建的超级用户,可以执行系统的一切操作,拥有了他就拥有了整个EOS,包括所有的钱,那么这个账户被谁拥有呢,21个超级节点账户拥有owner权限,当系统要执行某合约需要eosio owner的时候需要17位超级节点账户投票通过才可以执行,也就是说eosio owner的阈值是17,每个超级节点账户的权重是1,这就构建了eos区块链的高管系统。