EOS的账户权限体系(二)EOSIO开发

    由于机器配置的限制,docker部署就不整了,直接起。   

========================================================================= 

    前言

    我认为,理解EOSIO中的账户权限体系对于在上面进行相关开发是至关重要的。其中包括:账户(accounts)、钥匙对(key-pairs)、钱包(wallet)、权限(authorities & permissions)以及它们之间的关系。官方wiki上和白皮书上有十分详尽的解释,我也是研究思考请教实践了好久才有所理解,下面就说下我自己的一些浅解,如有不准确的地方请及时指出([email protected]).

    Accounts

    与ETH和BTC不同,EOS在弱化了私钥的地位,在链上交互是以账户为基础(类似于BTS和GXB)。相比于一长串哈希值,账户的可读性更强,更容易普及。它是链上唯一的标识,存储在链上,与链直接交互。通过给账户配置不同的权限,来赋予和限制它所能进行的操作(action)。

    Key-pairs   

    我觉的key就是关联授权用的。一对key包含一个公钥(public-key)私钥(private-key)。关联wallet和account都是用的公钥操作,需要授权签名需要用到私钥。代表了对账户的控制权限。账户只是给人看的,实际控制者还是关联的钥匙。

    Wallet

    钱包是一个客户端软件,但只有和账户关联它才有意义。需要将相应的key导入到某个wallet里面,只有这样,在这个key关联的账户做某些Funds相关的操作时,系统才能知道该动用哪个钱包的资金。三者是多对多的关系。
    钱包有密码,用来lock和unlock状态,执行某个action需要unlock状态。

    Authorities and permissions

    一个账户一旦被创建,就会被授予两个默认的权限:owner和active。owner:拥有这个权限意味着他是这个账户的主人(可以有多个账户有owner权限),owner是这个账户的最高权限,可以对这个账户做任何操作(相当于admin或root权限),但是一般不会用它进行操作,出了一些特殊的操作,比如恢复权限等,一般冷存储。active:一般用于转账,投票出区块生产者(超级节点)以及对一些权限的修改。(具体需要参考api)

    除了这两个基本权限外,还可以自定义具体的权限,官方举了个例子:publish权限。比如说在某个dapp上发布一篇文章需要有publish权限,@bob和@stacy都只需要自己的一个签名就能发布文章,而最后那个公钥账户除了自己的一个签名外,还需要另外一个账户的签名才能发布,因为它自身的签名weight在publish下只有1。

note:账户名和公钥都能代表一定的权重来设置权限(签名)。

    Weight是指这个账户对于某个权限能授予的权重,Threshold是拥有这个权限需要达到的权重门槛值

Permission Account Weight Threshold
owner     2
  @bob 1  
  @stacy 1  
active     1
  @bob 1  
  @stacy 1  
publish     2
  @bob 2  
  @stacy 2  
  EOS7Hnv4iBWo1pcEpP8JyFYCJLRUzYcXSqt... 1

相互关系

    自己画了下它们之间的大概关系,可能不严谨。

    

扫描二维码关注公众号,回复: 37089 查看本文章

    我认为EOSIO权限控制体系最大的优点在于高灵活性,更适合复杂的社会应用场景,也正因为如此,更深的理解需要等具体场景下用起来才能有更深入的体会。

    在构建完本地的EOSIO源码后,启动单节点测试网络($ nodeos)。利用cleos客户端命令可以进行相关的测试和验证,具体就不赘述了,直接参考githhub文档就行,无非就是一些命令参数或者api的使用。整个权限控制体系的理解,才是今后开发智能合约和Dapp的核心。

    下次准备开启智能合约开发的探索~~

ps:拉取了下最新的代码,build的最少内存提升至7g了。

猜你喜欢

转载自blog.csdn.net/u011404319/article/details/80030931