加載BIOS合約給指定賬戶eosio踩坑記錄

當(dāng)完成節(jié)點搭建以后(測試單節(jié)點環(huán)境),我們需要給eosio這個賬戶,加載BIOS合約,實際上就是給eosio賬戶賦予了一個超級管理員的角色,這樣就可以對其他賬戶資源進(jìn)行管理以及執(zhí)行一些需要特殊權(quán)限才可以執(zhí)行的API。

首先,不需要啟動nodeos,直接調(diào)用cleos命令:

cleos set contract eosio ../conntract/eosio.bios -p eosio

詳細(xì)解釋一下這句的含義:
首先,cleos是eosio開發(fā)中非常常用的一個工具,工具目錄位于:
~/eos/build/programs/cleos
文件夾內(nèi)

其次,cleos的set命令:“set or update a blockchain state” (設(shè)置或者更新一個區(qū)塊鏈狀態(tài))
contract,智能合約,“set or update blockchain account state" (設(shè)置或更新區(qū)塊鏈賬戶的狀態(tài))
后面跟的參數(shù)1:eosio,即要更新的賬戶名,再后面跟的,是智能合約的路徑。
這個智能合約路徑一般位于:
~/eos/build/contracts目錄下,所以要填好對應(yīng)的目錄
最后的參數(shù) -p,即--permission,“An account and permission level to authorize, as in 'account@permission' (defaults to 'account@active')",授權(quán)賬戶和權(quán)限級別,例如 account@permission,默認(rèn)為accounnt@active。

執(zhí)行該命令后,提示:

~/eos/build/contracts$ cleos set contract eosio eosio.bios # 注意這里我在contracts目錄下
Readinng WASM from eosio.bios/eosio.bios.wasm...
Publishinng contract...
Failed to connect to nodeos at http://127.0.0.1:8888/; is nodeos running?

詢問是否啟動了nodeos,我沒有啟動,所以,去啟動nodeos

~/eos/build/programs/nodeos$ ./nodeos -e -p eosio --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin

然后再試試剛才的cleos命令:

~/eos/build/contracts$ cleos set contract eosio eosio.bios
Error 3120006: No available wallet
Ensure that you have created a wallet and have it open

沒有可用的錢包,需要確認(rèn)是否創(chuàng)建并能打開了?

前面我們已經(jīng)創(chuàng)建了default錢包(沒有可以去看前面的文章:Ubuntu下安裝eosio1.0.0過程全記錄http://www.itdecent.cn/p/16d0b7e62704

先看一眼現(xiàn)在錢包有沒有打開的:

cleos wallet list

發(fā)現(xiàn)沒有。
打開錢包:

cleos wallet open # 默認(rèn)就會打開default

然后再看

cleos wallet list
提示發(fā)現(xiàn)default已經(jīng)打開了。

然后給錢包解鎖:

cleos wallet unlock # 默認(rèn)default
password: ***(之前創(chuàng)建時生成的密碼)
Unlocked:default

然后看看錢包狀態(tài):

cleos wallet list
發(fā)現(xiàn)在default后面多了一個*,表示已經(jīng)解鎖

再去執(zhí)行

~/eos/build/contracts$ cleos set contract eosio eosio.bios
Error3090003: 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.

確認(rèn)錢包解鎖并且有相關(guān)的私鑰。

實際上這是因為我們現(xiàn)在所使用的default錢包,沒有倒入eosio私鑰導(dǎo)致的。
默認(rèn)的eosio初始私鑰:5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3

cleos wallet import
private key: 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
imported private key for :EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV

導(dǎo)入成功后,再執(zhí)行難上面的命令:

~/eos/build/contracts$ cleos set contract eosio eosio.bios -p eosio
Readinng WASM from eosio.bios/eosio.bios.wasm...
Publishinng contract...
executed transaction: **** 3720byte

eosio <= eosio::setcode {account......

最后提示只是本地執(zhí)行了,還沒得到區(qū)塊確認(rèn),這其實已經(jīng)不重要了,很快就會被確認(rèn)了。

好了,完成了加載bios合約,中間的不少坑,都踩了一個遍。。。

我是王越,歡迎加入EOSIO開發(fā)俱樂部,微信361757(暗號EOS)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容