以上两个非jack账户的审批过程就是多签名的内容,多签名执行成功以后,可以开始执行提案。
liuwenbin@liuwenbin:~$ cleos multisig exec eosio.msig nojack -p eosio.msig--
执行成功以后,再次检查各账户的SYS余额,能够发现此提案的转账50个SYS的操作已经生效。
自定义权限上面提到了,除了owner和active权限之外,我们还可以自定义权限。仍在以上@Jack账户中进行补充,增加一个自定义权限,名为publish:
permission account weight thresholdpublish 2
@Alice 2
@Bob 2
"EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" 1
weight:
权重,这是相对于上面threshold阈值的概念,就拿上面的属于账户@Jack的publish权限来讲,它包含三个子权限分别是:
@Alice账户,权重为2
@Bob账户,权重为2
一个keys,权重为1
而此时publish权限的阈值设定为2,也就是说,@Alice或@Bob任意一个账户均可以签名授权@Jack账户的publish权限,因为这两个账户的权重均为2,任意一个签名都可保证够到publish权限的阈值2。而如果只有权重为1的keys签名,则必须再有以上任意一个账户来同时签名,总权重达到了3,超过了publish阈值2才可以成功授权。
自定义权限部分的演示与上面的类似,通过set account permission可以设置有key,有账户,不同权重的十分复杂的权限内容。这里不再赘述。
总结本文可以分为两部分,第一部分是如何为一个账户设置复杂的权限体系,第二部分是如何利用账户权限进行多账户签名。这部分内容十分灵活,依据这个流程,我们可以根据业务场景需要,调整设计。例如,多账户必须均签名才能通过某一个操作,或者多账户只要其中一个或者多个签名即可通过某一个操作。通过本文所述,均可实现。
参考资料EOS官方文档