码迷,mamicode.com
首页 > 其他好文 > 详细

EOS账户权限修改及操作(action)绑定

时间:2019-07-26 11:52:41      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:删除   https   今天   私钥   tac   null   开源   很多   阈值   

今天和大家分享下EOS账户权限相关的操作。

EOS账户默认具有owner和active权限。owner权限及账户所有权,active权限为owner的子权限,具有除更改owner权限、更改非active子孙权限以外的所有操作权限(网上很多文章说active具有除更改owner权限以外的所有权限,这一点并不准确,如果我新增一个owner的子权限(如hello),那么active权限并不具备修改hello权限及其子权限的能力)。关于权限的具体内容,这里我不做太多说明,网上有很多文章可以参考。接下来我们晒出命令,这里我们直接使用rpc命令(使用cleos),由于我把自己的节点撤了,所以没有截图:

 

查看账户权限结构:

cleos --url https://rpc.eosio.org get account testaccount1

修改active权限:(这里修改active权限,权限级别可以是owner或active,这里我使用了owner;如果修改owner权限,权限级别必须为owner)

cleos --url https://rpc.eosio.org set account permission testaccount1 active ‘{"threshold":1, "keys":[{"key":"EOS71LKEAFJqtgeX58G4iMx3k6aEYXQGiZmkC9pww2sgQpho89Wa1","weight":1}],"accounts":[]}‘ owner -p testaccount1@owner

新增权限的命令和修改权限的命令类似,这里我们新增一个hello权限,它是owner的子权限:

cleos --url https://rpc.eosio.org set account permission testaccount1 hello ‘{"threshold":1, "keys":[{"key":"EOS71LKEAFJqtgeX58G4iMx3k6aEYXQGiZmkC9pww2sgQpho89Wa1","weight":1}],"accounts":[]}‘ owner -p testaccount1@owner

当然修改私钥是最简单的,我们看一个稍微复杂点的:

cleos --url https://rpc.eosio.org set account permission testaccount1 active ‘{"threshold":2,"keys":[{"key":"EOS71LKEAFJqtgeX58G4iMx3k6aEYXQGiZmkC9pww2sgQpho89Wa1","weight":1}],"accounts":[{"permission":{"actor":"testaccount2","permission":"active"},"weight":1}]}‘ -p testaccount1@active

以上命令涉及权重和阈值的修改(关于权重和阈值不做说明,大概说明:权重之和大于阈值,则具有该权限),并使用其他账户(testaccount2的active权限)来控制该账户的active权限。

 

上面我们新建了一个hello权限,那么hello具有什么权限呢?

事实上,新建hello权限级别后,hello权限不具备任何操作权限(即使用该权限进行任何操作都将报错),我们需要对其绑定相关action,假如我们绑定eosio合约的voteproducer这个action。

接下来我们为hello权限绑定一个action:

 cleos --url https://rpc.eosio.org set action permission testaccount1 eosio voteproducer hello -p testaccount1@owner

这里操作非常简单,此时hello权限具有了为超级节点投票的能力,我们还能绑定其他action,大家可以自行体验。

我们想移除hello权限,那么可以执行命令:

cleos --url https://rpc.eosio.org set account permission testaccount1 hello ‘NULL‘ -p testaccount1@owner

这里需要注意的是,我们此时直接执行以上命令是会报错的,因为该权限绑定了相关的action,我们要解绑该权限的所有action后才能删除该权限。

解绑hello权限绑定的action:

cluos  --url https://rpc.eosio.org set action permission testaccount1 uosio voteproducer NULL  -p testaccount1@owner

此时我们便可以移除该权限了。

 

除了默认的owner、active权限,以及我们自定的权限外,EOS账户还具有一个很有意思的权限,那就是eosio.code权限。该权限主要的用于智能合约,使合约具有账户的active权限,这样合约便可以发起内联交易。

设置eosio.code权限:

cleos --url https://rpc.eosio.org set account permission testaccount1 active ‘{"threshold":1,"keys":[{"key":"EOS71LKEAFJqtgeX58G4iMx3k6aEYXQGiZmkC9pww2sgQpho89Wa1","weight":1}],"accounts":[{"permission":{"actor":"testaccount1","permission":"eosio.code"},"weight":1}]}‘ -p testaccount1@active

我们也可以设置其他账户的eosio.code权限,这样的话,其账户的合约便具有我的账户的active内联权限。请注意:这样做是非常危险的,因为你并不知道别人的合约做了什么,即使他的合约开源了,但是并不能保证部署在链上的合约没有进行修改,所以,轻易不要添加他人账户的eosio.code权限。

如果要去除掉eosio.code权限:

cleos --url https://rpc.eosio.org set account permission testaccount1 active ‘{"threshold":1,"keys":[{"key":"EOS71LKEAFJqtgeX58G4iMx3k6aEYXQGiZmkC9pww2sgQpho89Wa1","weight":1}],"accounts":[]}‘ -p testaccount1@active

以上便是我总结的一些内容,当然比较粗糙。接下来,我是想分享一些EOS合约开发相关的知识,希望和大家多多交流学习!

EOS账户权限修改及操作(action)绑定

标签:删除   https   今天   私钥   tac   null   开源   很多   阈值   

原文地址:https://www.cnblogs.com/tkblack/p/11249163.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!