Error 309003中提供的密钥、权限和延迟不满足声明的授权该怎么解决,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
当EOS应用开发者在自己新搭建的开发环境中尝试提交第一个交易时,经常会 碰到3090003错误,提示交易授权所需密钥、权限或延迟不满足要求:
Error 3090003: provided keys, permissions, and delays do not satisfy declared authorizations Ensure that you have the related private keys inside your wallet and your wallet is unlocked.
这是因为每一个新的EOSIO区块链都有一个默认的系统账号eosio,该账户将被 用来初始化区块链的设置,例如载入管理EOSIO区块链以及共识计算的系统合约。 每一个新的EOSIO链都内置一个相同的开发密钥,需要载入这个密钥才能以系统 账号eosio的名义对交易进行签名。
如果要快速高效地学习EOS应用开发,推荐汇智网的EOS智能合约与DApp开发入门
执行下面的命令载入账号eosio对应的密钥:
~$ cleos wallet import 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
注意:不要在生产环境中使用开发密钥,因为这个私钥是公开的!
那么,应该如何修改eosio的默认私钥?
在nodeos的配置文件(ubuntu默认路径:~/.local/share/eosio/nodeos/config/config.ini) 中,有一个参数signature-provider
用来定义eosio账号对应的密钥对。如果你 没有修改过的话,看起来就是这样:
signature-provider = EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV=KEY:5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
signature-provider
参数的值是一个密钥对,形式为:
<public-key>=<provider-spec>
<public-key>
是一个有效的EOSIO公钥字符串,例如:
OS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
<provider-spec>
由两部分组成:<provider-type>:<data>
。其中<provider-type>
的值可以是KEY或KEOSD,根据这部分的不同,<data>也有所不同。
当<provider-type>
的值设置为KEY时,<data>
的内容应当是与公钥对应的私钥字符串; 当<provider-type>
的值设置为KEOSD时,<data>
的内容则应当是keosd钱包的URL,注意这时 对应的钱包还需要解锁。
因此,你可以使用cleos生成一对密钥,然后修改signature-provider
就可以 改变eosio的默认私钥了。
看完上述内容,你们掌握Error 309003中提供的密钥、权限和延迟不满足声明的授权该怎么解决的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。