当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的名义对交易进行签名。
执行下面的命令载入账号eosio对应的密钥:
~$ cleos wallet import 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
注意:不要在生产环境中使用开发密钥,因为这个私钥是公开的!
那么,应该如何修改eosio的默认私钥?
在nodeos的配置文件(ubuntu默认路径:~/.local/share/eosio/nodeos/config/config.ini)中,有一个参数signature-provider
用来定义eosio账号对应的密钥对。如果你没有修改过的话,看起来就是这样:
signature-provider = EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8