EOS智能合約開發(fā)系列(二)

在上一篇文章她渴,我們下載堕仔、編譯了EOS源碼滥朱,生成了nodeos,keosd,cleos,eosiocpp等這些工具。同時(shí)我們也配置好了單節(jié)點(diǎn)出塊的nodeos力试。下面我們繼續(xù)徙邻。


區(qū)塊鏈數(shù)據(jù)的位置

上一篇文章中,我們用nodeos成功啟動(dòng)了一個(gè)測(cè)試節(jié)點(diǎn)畸裳,從終端中可以看到它每隔0.5s出一個(gè)塊缰犁。那么這些出塊的歷史數(shù)據(jù),也就是區(qū)塊鏈數(shù)據(jù)怖糊,都保存在哪里了呢帅容?

不同的操作系統(tǒng),block數(shù)據(jù)默認(rèn)保存的位置不同:

  • Mac OS: ~/Library/Application\ Support/eosio/nodeos/data
  • Linux: ~/.local/share/eosio/nodeos/data

當(dāng)你把這里面block/state/文件夾刪掉之后伍伤,再重新啟動(dòng)nodeos并徘,你會(huì)發(fā)現(xiàn)它又從0開始出塊了。

創(chuàng)建錢包

$ cleos wallet create
Creating wallet: default
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
"PW5HvGibpV6HtMBYRBocEztAWcnGmSwNukFtRjdvAXf6gywvKnhyY"

上面命令創(chuàng)建了一個(gè)默認(rèn)(default)錢包扰魂,記得把最后一行的錢包密碼好好保存麦乞,以后當(dāng)需要對(duì)錢包解鎖的時(shí)候,都會(huì)用到這個(gè)密碼劝评。

注意姐直,如果你在這一步,看到如下提示:

?  ~ cleos wallet create
No wallet service listening on 127.0.0.1:8900. Cannot automatically start keosd because keosd was not found.
Failed to connect to keosd at http://127.0.0.1:8900/; is keosd running?

說明找不到keosd蒋畜,你需要把編譯好的keosd放在/usr/local/bin/目錄下声畏,或者找到keosd所在的目錄,自己手動(dòng)去運(yùn)行keosd也可以姻成。
在macOS上插龄,我發(fā)現(xiàn),在上一篇的sudo make install的時(shí)候科展,會(huì)把build/programs/keosd/keosd拷貝到/usr/local/eosio/bin里均牢。所以我可以在/usr/local/bin里面建立一個(gè)符號(hào)鏈接,指向/usr/local/eosio/bin/keosd

ln -s /usr/local/eosio/bin/keosd /usr/local/bin/keosd

linux上面辛润,不知道會(huì)不會(huì)遇到這個(gè)問題膨处,如果遇到了,也可以用這種方式去解決砂竖。

另外真椿,也可以手動(dòng)運(yùn)行keosd。
首先修改keosd的配置文件${HOME}/eosio-wallet/config.ini乎澄。找到里面的http-server-address配置項(xiàng)突硝,改成下面的值。

# The local IP and port to listen for incoming http connections; set blank to disable. (eosio::http_plugin)
http-server-address = 127.0.0.1:8900

然后置济,直接keosd即可啟動(dòng)解恰。

解鎖錢包

每次你重新啟動(dòng) keosd之后锋八,錢包會(huì)變成lock狀態(tài);有時(shí)候护盈,當(dāng)你長(zhǎng)時(shí)間沒有操作的時(shí)候挟纱,錢包也會(huì)變成lock狀態(tài)。這時(shí)你就需要去解鎖(unlock)它腐宋,可以使用如下命令:

$ cleos wallet unlock
password:

它會(huì)提示你輸入錢包密碼紊服,這時(shí)候只需要把上面創(chuàng)建錢包時(shí)保存的密碼輸入在這里就可以了。

有時(shí)候胸竞,你可能想主動(dòng)鎖住錢包欺嗤,可以這樣:

cleos wallet lock

錢包數(shù)據(jù)的位置

錢包數(shù)據(jù)的位置,默認(rèn)在:$HOME/eosio-wallet卫枝,當(dāng)你把這個(gè)這個(gè)文件夾刪掉了煎饼,你就需要重新創(chuàng)建錢包。

創(chuàng)建自己的key-pair

$ cleos create key
cleos create key
Private key: 5KWatoy1mpAyUE1uuaCGX39aug9yZ65KW2GWkRdzBCSRMwMD92P
Public key: EOS83sN8bfKGk3jTBezN41UN7LfXSVFa1w3YQcGApE67J26t3HLcr

每次創(chuàng)建的key-pair都會(huì)不同。注意,這里僅僅創(chuàng)建了這一對(duì)ke-pair: 公鑰和私鑰复局。并沒有和賬戶關(guān)聯(lián)。
為了演示方便衰伯,我后面將會(huì)使用這對(duì)key-pair。注意积蔚,如果你打算把一對(duì)key-pair(公鑰和私鑰對(duì))用在主網(wǎng)上,你的私鑰應(yīng)該保密烦周,不應(yīng)該像我這樣把私鑰公開尽爆。

下面為了使用這一對(duì)公鑰和私鑰,我們把它導(dǎo)入錢包读慎,只需要傳入私鑰即可漱贱,它會(huì)自動(dòng)計(jì)算出公鑰:

cleos wallet import --private-key 5KWatoy1mpAyUE1uuaCGX39aug9yZ65KW2GWkRdzBCSRMwMD92P

導(dǎo)入成功后,我們檢查一下:

?  eosio-wallet cleos wallet keys
[
  "EOS83sN8bfKGk3jTBezN41UN7LfXSVFa1w3YQcGApE67J26t3HLcr"
]

如上所示夭委,我們查看當(dāng)前錢包里的keys幅狮,這里只會(huì)顯示出公鑰,也正是我們前面創(chuàng)建的key-pair里的公鑰株灸。

加載BIOS合約

BIOS合約是一個(gè)系統(tǒng)合約崇摄,因?yàn)槲覀冎皇怯糜陂_發(fā)和測(cè)試,只需要加載默認(rèn)的eosio.bios合約就好了慌烧,我們可以使用這個(gè)合約來直接控制其他賬戶的資源逐抑,包括CPU、網(wǎng)絡(luò)以及內(nèi)存等屹蚊。在公鏈上厕氨,這個(gè)合約將能夠管理抵押和回收token进每。

eosio.bios的合約代碼位于contracts/eosio.bios位置,它編譯之后的位置在這里:build/contracts/eosio.bios命斧。注意田晚,我給出的這些目錄都是相對(duì)于EOS源碼的根目錄的。

我們?cè)诩虞d這個(gè)合約之前国葬,需要在我們的錢包里導(dǎo)入一個(gè)特殊的key贤徒。還記得我們之前配置nodeos的那個(gè)config.ini嗎?里面有這么一個(gè)配置:

signature-provider = EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV=KEY:5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3

它的格式是這樣的:

signature-provider={public-key}=KEY:{private-key}

配置在這里的key胃惜,哇泞莉,厲害了,它是系統(tǒng)合約的簽名所專用的船殉。我們的eosio.bios合約就是一個(gè)系統(tǒng)合約鲫趁,所以我們需要用到這組key-pair。當(dāng)然了利虫,因?yàn)槲覀兪菃喂?jié)點(diǎn)挨厚,你是可以任意修改這里的配置的。不過呢糠惫,不羈這里就不做修改了疫剃,保持原樣了。下面我們只需要把這組key導(dǎo)入錢包硼讽,就可以加載bios合約了巢价。

cleos wallet import --private-key 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3

然后加載 eosio.bios

?  eos git:(master) ? cleos set contract eosio build/contracts/eosio.bios -p eosio@active
Reading WAST/WASM from build/contracts/eosio.bios/eosio.bios.wasm...
Using already assembled WASM...
Publishing contract...
executed transaction: c5c77223c776cb92ea16d5e17785b5b4338c4f3525b610a432529c9e93afe51c  3720 bytes  3873 us
#         eosio <= eosio::setcode               {"account":"eosio","vmtype":0,"vmversion":0,"code":"0061736d0100000001621260037f7e7f0060057f7e7e7e7e...
#         eosio <= eosio::setabi                {"account":"eosio","abi":"0e656f73696f3a3a6162692f312e30050c6163636f756e745f6e616d65046e616d650f7065...

上面這個(gè)加載合約的過程,發(fā)生了兩個(gè)action:一個(gè)是eosio::setcode固阁,一個(gè)是eosio::setabi壤躲。

上面你看到了類似這樣的東西:eosio <= eosio::setabi,這句話的格式這樣的:${executor} <= ${contract}:${action} ${args...}备燃。比如eosio <= eosio::setabi可以翻譯為:eosio執(zhí)行了eosio合約里的setabi這個(gè)action碉克。

命令中的-p eosio@active參數(shù),是告訴cleos用eosio的活動(dòng)賬戶來簽名授權(quán)并齐,也就是使用我們剛剛導(dǎo)入的那個(gè)私鑰來簽名漏麦。

今天就到這里,明天繼續(xù)况褪。
簡(jiǎn)介:不羈撕贞,一名程序員;專研EOS技術(shù)窝剖,玩轉(zhuǎn)EOS智能合約開發(fā)麻掸。
微信公眾號(hào):know_it_well
知識(shí)星球地址:https://t.zsxq.com/QvbuzFM

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市赐纱,隨后出現(xiàn)的幾起案子脊奋,更是在濱河造成了極大的恐慌熬北,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诚隙,死亡現(xiàn)場(chǎng)離奇詭異讶隐,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)久又,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門巫延,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人地消,你說我怎么就攤上這事炉峰。” “怎么了脉执?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵疼阔,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我半夷,道長(zhǎng)婆廊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任巫橄,我火速辦了婚禮淘邻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘湘换。我一直安慰自己宾舅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布彩倚。 她就那樣靜靜地躺著贴浙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪署恍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天蜻直,我揣著相機(jī)與錄音盯质,去河邊找鬼。 笑死概而,一個(gè)胖子當(dāng)著我的面吹牛呼巷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播赎瑰,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼王悍,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了餐曼?” 一聲冷哼從身側(cè)響起压储,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤鲜漩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后集惋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體孕似,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年刮刑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了喉祭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡雷绢,死狀恐怖泛烙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情翘紊,我是刑警寧澤蔽氨,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站霞溪,受9級(jí)特大地震影響孵滞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鸯匹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一坊饶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧殴蓬,春花似錦匿级、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至肖粮,卻和暖如春孤页,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背涩馆。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工行施, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人魂那。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓蛾号,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親涯雅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鲜结,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容