对于EOS的权限和许可,分得非常细。
「Permission」我没有翻译成权限,我这里觉得它更像一种叫做「许可」,它是一个操作允许的权限,可以建立很多permission。比如允许你转账,允许你发微博或者允许你做其他事。它是通过permission来控制你的操作,可能不同的用户有不同的permission。
Threshold是某个许可需要的阈值。比如你要做一件事儿,它可能有个阈值,这个阈值是一个量化,你必须要达到这个阈值才可以进行相应的操作。
Weight表示权重。账号必须对应某个许可拥有的权重,就是你的权重要大于你的阈值,然后这件事儿你就可以做。
在permission许可里面有两种许可:
-owner许可;
-active许可。
这两个叫native(原生)的permission,另外还有public的permission。
下面通过两个例子来解释他们之间的关系与区别:
第一个例子,owner许可的阈值是1,它里面有一个账号,这个账号是用它的公钥来代表的,然后这个账号的权重是1,这样你的权重是大于等于阈值的,所以可以用owner的账号和权限。
active许可里面有一个账号,它的权重也是等于这个阈值,所以可以用active的账号和权限。
这两个账号,一个是有owner权限,一个是有active权限,因为它们的权重和阈值是大于等于这个值的,对应的账号与权限都是可以使用的。
第二个例子,除了owner的permission之外,你还可以有一个publishpermission。它们之间有什么区别呢?
当你创建任何一个账号,这个账号都有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对权限设置的设计有多细致。