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

今天和大家分享下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 [email protected]

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

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

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

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 [email protected]

以上命令涉及权重和阈值的修改(关于权重和阈值不做说明,大概说明:权重之和大于阈值,则具有该权限),并使用其他账户(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 [email protected]

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

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

cleos --url https://rpc.eosio.org set account permission testaccount1 hello ‘NULL‘ -p [email protected]

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

解绑hello权限绑定的action:

cluos  --url https://rpc.eosio.org set action permission testaccount1 uosio voteproducer NULL  -p [email protected]

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

除了默认的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 [email protected]

我们也可以设置其他账户的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 [email protected]

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

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

时间: 2024-10-07 10:09:09

EOS账户权限修改及操作(action)绑定的相关文章

Mysql常用基本命令汇总及默认账户权限与修改

一直只是在浅显利用数据库存储数据,也被windows惯坏了,很多命令使用的时候记不起来,so,换LINUX系统!不再使用GUI管理数据库!也想深入学习下Mysql,从权限管理开始!也就诞生了这篇学习笔记. 修改默认密码 Mysql新安装时默认root密码为空,极不安全!建议安装过后马上就修改.附修改方法: mysqladmin -u root -p password 接下来按提示输入新密码即可! 命令详解: mysqladmin -u root -p[oldpass] password newp

Win10没有权限修改系统时间如何解决?

电脑发展到今天,时间的显示已经非常智能化.在Win10系统下,用户想要修改电脑时间,可以通过右下角时间区域进行调整.但是,有用户发现修改不了系统时间,提示没有权限.这是怎么回事?那要如何解决这样的问题呢?现在小编就和大家说一下Win10没有权限修改系统时间的解决方法. 步骤如下: 第一步.按"Win+r"组合键,运行"执行"对话框,输入"gpedit.msc",回车确认.如下图所示: 第二步.依次展开"计算机配置-Windows设置-安

Linux 之不同运维人员共用root 账户权限审计

一.为什么? 在中小型企业,公司不同运维人员基本都是以root 账户进行服务器的登陆管理,缺少了账户权限审计制度.不出问题还好,出了问题,就很难找出源头. 这里介绍下,如何利用编译bash 使不同的客户端在使用root 登陆服务器使,记录各自的操作,并且可以在结合ELK 日志分析系统,来收集登陆操作日志 二.环境 服务器:centos 6.5.Development tools.使用密钥认证,SElinux 关闭. 客户端:生成密钥对,用于登录服务器 (2台) 三.搭建部署 (服务器操作 192

linux账户权限和特殊权限管理

用户账号:           用户账号         描述         超级用户    root用户,进行系统管理使用.         普通用户    由管理员或root用户创建,只在用户自己的宿主目录中拥有完整权限.         程序用户    在安装应用程序时,会添加一些低权限用户账号,不允许登录到系统,用于维持系统或某个程序的正常运行.       组账号: 定义:  表示组内所有用户的账号. 基本组(私有组): 每一个用户账号至少属于一个组. 附加组(公共组): 该用户同时

不借助工具在浏览器中通过Web API执行Dynamics 365操作(Action)实例

摘要: 本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复262或者20170727可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me . 我的上一篇文章 利用Fiddler修改请求信息通过Web API执行Dynamics 365操作(Action)实例 借助了Fiddler工具,你可能会问,如果不借助工具,我只有浏览器可行吗?这就是本文要讲述的. 我们知道一般浏览器按F12会出来开发者工具,我们以Chrome为例来讲解

Spring AOP操作action时无法注入,报NullPointer异常

Spring AOP操作action时无法注入,报NullPointer异常当使用Spring AOP对action层进行操作时,会出现注入失败的问题,出现空指针异常.原因是一般struts2+spring应用中,spring的插件只负责为action的ioc部分,但并没有进行功能加强,即采用代理的机制,所有的action还是使用struts2进行管理,在使用AOP后,这些action需要由spring进行管理,如果没有由spring进行代理,将出现注入失败.解决办法:Struts2的一个特殊的

ASP.NET MVC程序中动态修改form的Action值

在练习ASP.NET MVC时,为了实现一个小功能,POST数据至服务器执行时,需要动态修改form的action值. 下面Insus.NET列举一个例子来演示它.让它简单,明白易了解. 你可以在控制器中,创建3个操作action: 标记1是实现视图,而标记2与3是为form的action.其中Isus.NET有使用ContentResult来替代Response.Write向视图输出结果. 在视图中,我们在form中,放一个文件框,两个铵钮,但没有在form中,设置action值.稍后我们在铵

ASP.NET MVC 动态修改form的action值

在练习ASP.NET MVC时,为了实现一个小功能,POST数据至服务器执行时,需要动态修改form的action值. 下面Insus.NET列举一个例子来演示它.让它简单,明白易了解. 你可以在控制器中,创建3个操作action: 标记1是实现视图,而标记2与3是为form的action.其中Isus.NET有使用ContentResult来替代Response.Write向视图输出结果. 在视图中,我们在form中,放一个文件框,两个铵钮,但没有在form中,设置action值.稍后我们在铵

Centos root权限修改

方法一:修改 /etc/sudoers 文件, 找到下面一行,把前面的注释(#)去掉 ## Allows people in group wheel to run all commands %wheel    ALL=(ALL)    ALL 然后修改用户,使其属于root组(wheel), 命令如下: #usermod -g root devuser 修改完毕,现在可以用tommy帐号登录,然后用命令 su – ,即可获得root权限进行操作. 方法二:修改 /etc/sudoers 文件,