當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的默認私鑰了。