EOS智能合约开发(三):EOS创建和管理账号
没有看前面文章的小伙伴可以看一下
EOS智能合约开发(一):EOS环境搭建和启动节点
EOS智能合约开发(二):EOS创建和管理钱包
创建好钱包、密钥之后,接下来你就可以创建账号了,账号是什么?账号保存在区块链上的人类可读的标志符。
创建账号的命令:
$ cleos createaccount eosio ${new_account} ${owner_key} ${active_key}
其中eosio是超级用户,需要靠超级用户来创建其它的新用户,eosio后面就是你的新用户的用户名。
除了新的账号之外,命令后面还有两个key:
1、Owner key
2、Active key
Owner key是什么意思呢?Owner key表示分配给新账号的一个Owner认证的公钥。Active key是分配给新账号一个Active认证的一个公钥。
至于这两个认证,我后面会给详细介绍,这是两个主要的权限。我创建一个账号,如果这个账号要有Owner的权限和Active的权限,就必须要用这两个key才能实现。
我们来总结一下刚才的操作,我们刚才操作是调用Cleoscreate account创建了一个账号,这个账号的命名规则遵守下边两个规则:
1、小于13个字符;
2、仅包含这些字符:.12345abcdefghijklmnopqrstuvwxyz
另外,刚才给大家说到Owner key和Active key的概念。Owner key的概念就是你账号的所有控制权限,你只要有了Owner key,你可以对这个账号的任何东西做任何的事儿,这是它的所有控制权。
而Active key只掌握了你的账号资金的访问权限,也就是你如果有了Active这个权限的话,你可以对这个账号的资金进行转移,但是你不能转移这个账号的所有权,或者不能做超过这个Active权限其它的权利。
如果简单的理解,Owner key就是对这个账号的最高权限,Active只是用来转移资金而已。这也是与以太坊智能合约开发的一个区别,以太坊账号的权限其实没有这么细分,它就只有一个账号,我只要有这个账号的公钥和私钥,我就可以做任何事情。
EOS的权限和许可
对于EOS的权限和许可,分得非常细。
「Permission」我没有翻译成权限,我这里觉得它更像一种叫做「许可」,它是一个操作允许的权限,可以建立很多permission。比如允许你转账,允许你发微博或者允许你做其他事。它是通过permission来控制你的操作,可能不同的用户有不同的permission。
Threshold是某个许可需要的阈值。比如你要做一件事儿,它可能有个阈值,这个阈值是一个量化,你必须要达到这个阈值才可以进行相应的操作。
Weight表示权重。账号必须对应某个许可拥有的权重,就是你的权重要大于你的阈值,然后这件事儿你就可以做。
在permission许可里面有两种许可:
-owner许可;
-active许可。
这两个叫native(原生)的permission,另外还有public的permission。
下面通过两个例子来解释他们之间的关系与区别:
第一个例子, owner许可的阈值是1,它里面有一个账号,这个账号是用它的公钥来代表的,然后这个账号的权重是1,这样你的权重是大于等于阈值的,所以可以用owner的账号和权限。
201.png
active许可里面有一个账号,它的权重也是等于这个阈值,所以可以用active的账号和权限。
这两个账号,一个是有owner权限,一个是有active权限,因为它们的权重和阈值是大于等于这个值的,对应的账号与权限都是可以使用的。
第二个例子,除了owner的permission之外,你还可以有一个publish permission。它们之间有什么区别呢?
202.png
当你创建任何一个账号,这个账号都有owner的许可和active的许可。其他的许可就是你可以自己定义,来让不同的用户,拥有不同的许可组合,这样就可以很灵活的去管理不同的账号。
所以这一点,EOS考虑的比较比较细致一点,但是以太坊或者比特币没有做到这么细致,以太坊或者比特币拥有一个账号就可以做任何事情。
这里面再细一点来讲,这里面的owner的阈值是R,bob账号的权重只有1,stracy账号的权重也只有1,如果它俩单独的去获得owner许可相关的操作,它们是获得不了的。但是,如果bob和stracy加起来大于等于2,就是这两个账号联合起来大于等于2的,这两个账号就可以做这个操作的,其实这有点像投票。
我觉得这个权限或许可的限制,和我们传统的操作系统是不太一样的。我们传统的操作系统好像没有这种联合签名可以达到两个权重来执行owner的相关操作。
active这也是一样的,如果bob账号是1,stracy账号是1,如果active需要的阈值是1的话, bob账号和stracy账号是单独都可以做active许可相关的操作,就是转移资金。
另外,publish就是一个定制化许可。我们每个用户也可以定义自己某些允许的一些操作。publish这里面的阈值是2,bob账号是2,stracy账号是2,这两个账号也可以单独做publish许可相关的操作。而publish的权限可能是比如发布一些消息、发布一些微博的操作。
通过以上两个例子,给大家展示了EOS对权限设置的设计有多细致。
知识星球二维码380.png