1. 程式人生 > >Error 3090003: provided keys, permissions, and delays do not satisfy declared authorizations Ensure

Error 3090003: provided keys, permissions, and delays do not satisfy declared authorizations Ensure

當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,根據這部分的不同,也有所不同。

<provider-type>的值設定為KEY時,<data>的內容應當是與公鑰對應的私鑰字串;
<provider-type>的值設定為KEOSD時,<data>的內容則應當是keosd錢包的URL,注意這時
對應的錢包還需要解鎖。

因此,你可以使用cleos生成一對金鑰,然後修改signature-provider就可以
改變eosio的預設私鑰了。

原文連結:EOS Error 3090003 - 匯智網