当EOS应用开发者在本身新搭建的开发环境中尝试提交第一个交易时,常常会 碰到3090003错误,提示交易受权所需密钥、权限或延迟不知足要求:node
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的名义对交易进行签名。ubuntu
若是要快速高效地学习EOS应用开发,推荐汇智网的EOS智能合约与DApp开发入门ide
执行下面的命令载入帐号eosio对应的密钥:学习
~$ cleos wallet import 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
注意:不要在生产环境中使用开发密钥,由于这个私钥是公开的!区块链
那么,应该如何修改eosio的默认私钥?code
在nodeos的配置文件(ubuntu默认路径:~/.local/share/eosio/nodeos/config/config.ini) 中,有一个参数signature-provider
用来定义eosio帐号对应的密钥对。若是你 没有修改过的话,看起来就是这样:blog
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>也有所不一样。get
当<provider-type>
的值设置为KEY时,<data>
的内容应当是与公钥对应的私钥字符串; 当<provider-type>
的值设置为KEOSD时,<data>
的内容则应当是keosd钱包的URL,注意这时 对应的钱包还须要解锁。
所以,你能够使用cleos生成一对密钥,而后修改signature-provider
就能够 改变eosio的默认私钥了。