EOS系列十一:RPC调用方式实现EOS权限设置(权限的完整理解)

在系列九中已阐明了EOS帐号权限的关系,并用命令行的方式展示了具体的设置方法。在RPC调用的方式中,实质上是调用了“eosio”这个合约的"updateauth" action。套用 RPC方式向EOS提交transaction的交互步骤(系列十介绍的方法),从而达到通过RPC调用方式实现EOS权限设置。举例说明如下:

1、命令行下实现account0的帐号权限设置:

$ cleos set account permission account0 active '{
"threshold": 1,
"keys": [{"key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV","weight": 1}],
"accounts": [{"permission":{"actor":"account1","permission":"eosio.code"},"weight":1}]
}' 
owner -p account0

2、对应地,以push action方式的命令行实现同样设置的命令为:

$ cleos push action eosio updateauth '{
"account":"account0",
"permission":"active",
"auth":{
    "threshold": 1,
    "keys": [{
            "key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV",
            "weight": 1}],
    "accounts": [{"permission":{
                        "actor":"account1",
                        "permission":"eosio.code"},
                  "weight":1}],
    "waits":[]
    },
"parent":"owner" 
}'
owner -p account0

这里说明一下帐号权限的完整理解,权限(authority)的完整信息包括threshold、keys、accounts、waits四个字段。其中

(1)threshold代表阀值,当操作所签名的权重累计达到阀值时即可获得完全权限。

(2)keys是一个数组,其数组中的任何一个key有其对应的权重,当用这个key对某个操作进行签名时,则这个操作承认了这个key对应的权重,当所有的签名权重累加达到阀值之后,操作即获得了完全授权,当签名权重累计尚未达到操作阀值要求,则操作未获得完全授权而不能完成。

(3)accounts是一个数组,作用与keys相同,只不过将权重分配给帐号而已。

(4)waits是一个数组,表示每一个等待条件的满足就会增加对应的操作权重,这个需要在延迟执行的事务中可能会用到。具体格式例子 "waits":[{"wait_sec" : "3600" , "weight" : 1}],例子中表示这个操作在签名提交后,如果签名累计权重未达到阀值,则操作未能完成,但过3600秒之后签名累计权重就是增加1,这时累计权重就可能达到了阀值,从而取得完全权限,操作可以顺利完成。

3、参照 RPC方式向EOS提交transaction的步骤,将上面的push action封装成RPC提交transaction的方式完成对应的功能。具体参考上一篇文章。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值