區(qū)塊鏈系列之如何安裝和編譯EOS

1. 介紹

EOS - The Most Powerful Infrastructure for Decentralized Applications

2. 獲取代碼

2.1 環(huán)境要求

  • Git Version >= 1.7

2.2 拉取代碼

執(zhí)行git clone https://github.com/eosio/eos --recursive來拉取源代碼仔掸,拉取完成后可以看到如下輸出

拉取代碼 - 圖片來自簡書App

3. 編譯EOS

3.1 自動生成腳本

對于Ubuntu 16.06 和MacOS Sierra严就,項目中有一個自動構(gòu)建的腳本,它可以安裝所有依賴并編譯EOS椭员。

當執(zhí)行編譯腳本build.sh時可以給出以下參數(shù)

architecture [ubuntu|darwin]
optional mode [full|build]

  • 第一個選項architecture決定了腳本運行在哪個架構(gòu)下,ubuntu是指Ubuntu,darwin是指MacOS蔫耽。
  • 第二個選項是指可選的編譯模式尝哆,可選項有full仰禀、buildfull是指編譯時安裝所有依賴并進行EOS編譯秦叛,build是指只編譯EOS。默認不傳遞此參數(shù)時瀑粥,使用full模式挣跋。

cd eos
git checkout dawn-2.x
./build.sh ${architecture} ${optional_mode}

在切換到eos目錄然后執(zhí)行以上命令進行編譯,下面分別介紹Ubuntu和MacOS Sierra下如何編譯EOS狞换。

3.1.1 Ubuntu 16.10

Full Build

git clone https://github.com/eosio/eos --recursive
cd eos
git checkout dawn-2.x
./build.sh ubuntu full

3.1.2 MacOS Sierra

運行腳本之前請確保你的MacOS Sierra系統(tǒng)中安裝最新版本的XCode和Brew

若是沒有安裝請使用如下命令安裝Xcode和Brew

xcode-select --install (安裝Xcode Command Line Tools)
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" (安裝Brew)

最后使用如下命令拉取代碼并編譯

git clone https://github.com/eosio/eos --recursive
cd eos
git checkout dawn-2.x
./build.sh darwin full

3.2 手動生成腳本

3.2.1 依賴軟件

3.2.2 MacOS Sierra

  • 安裝相關(guān)依賴

brew update
brew install git automake libtool boost openssl llvm@4 gmp ninja gettext
brew link gettext --force

  • 安裝secp256k1-zkp

git clone https://github.com/cryptonomex/secp256k1-zkp.git
cd secp256k1-zkp
./autogen.sh
./configure
make
sudo make install

  • 安裝binaryen

git clone https://github.com/WebAssembly/binaryen.git
cd binaryen
git checkout tags/1.37.14
cmake . && make

  • 設(shè)置環(huán)境變量

echo "export BINARYEN_ROOT=~/binaryen" >> ~/.bash_profile
source ~/.bash_profile

  • 編譯LLVM和WASM

mkdir ~/wasm-compiler
cd ~/wasm-compiler
git clone --depth 1 --single-branch --branch release_40 https://github.com/llvm-mirror/llvm.git
cd llvm/tools
git clone --depth 1 --single-branch --branch release_40 https://github.com/llvm-mirror/clang.git
cd ..
mkdir build
cd build
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=.. -DLLVM_TARGETS_TO_BUILD= -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly -DCMAKE_BUILD_TYPE=Release ../
make -j4 install

  • 設(shè)置環(huán)境變量

echo "export WASM_LLVM_CONFIG=~/wasm-compiler/llvm/bin/llvm-config" >> ~/.bash_profile
echo "export LLVM_DIR=/usr/local/Cellar/llvm/4.0.1/lib/cmake/llvm" >> ~/.bash_profile
source ~/.bash_profile

4. Docker

4.1 安裝依賴

4.2 構(gòu)建EOS鏡像

4.3 啟動EOS容器

  • docker run --name eosd -p 8888:8888 -p 9876:9876 -t eosio/eos start_eosd.sh arg1 arg2

4.4 獲取鏈信息

4.5 啟動EOSD和WALLETD容器

  • docker-compose up

4.5.1 執(zhí)行EOSC命令

  • alias eosc='docker-compose exec walletd /opt/eos/bin/eosc -H eosd'
  • eosc get info
  • eosc get account inita

4.5.2 更改默認配置

我們可以查看Docker Compose的配置文件并根據(jù)自身需要來更改配置文件, 比如更改依賴的服務(wù)或者掛載的目錄避咆,最后通過如下命令重啟容器

docker-compose down
docker-compose up

4.5.3 清除數(shù)據(jù)掛載點

docker volume rm eosd-data-volume

5. 創(chuàng)建和啟動單節(jié)點測試網(wǎng)絡(luò)

在構(gòu)建EOS成功后,可以在build/programs目錄下看到編譯生成的二進制文件
編輯config.ini文件并添加以下內(nèi)容

genesis-json = /path/to/eos/source/genesis.json
enable-stale-production = true
producer-name = inita
producer-name = initb
producer-name = initc
producer-name = initd
producer-name = inite
producer-name = initf
producer-name = initg
producer-name = inith
producer-name = initi
producer-name = initj
producer-name = initk
producer-name = initl
producer-name = initm
producer-name = initn
producer-name = inito
producer-name = initp
producer-name = initq
producer-name = initr
producer-name = inits
producer-name = initt
producer-name = initu
plugin = eosio::producer_plugin
plugin = eosio::wallet_api_plugin
plugin = eosio::chain_api_plugin
plugin = eosio::http_plugin

隨后執(zhí)行eosd來啟動節(jié)點修噪,啟動后將看到如下輸出

1575001ms thread-0   chain_controller.cpp:235      _push_block          ] initm #1 @2017-09-04T04:26:15  | 0 trx, 0 pending, exectime_ms=0
1575001ms thread-0   producer_plugin.cpp:207       block_production_loo ] initm generated block #1 @ 2017-09-04T04:26:15 with 0 trxs  0 pending
1578001ms thread-0   chain_controller.cpp:235      _push_block          ] initc #2 @2017-09-04T04:26:18  | 0 trx, 0 pending, exectime_ms=0
1578001ms thread-0   producer_plugin.cpp:207       block_production_loo ] initc generated block #2 @ 2017-09-04T04:26:18 with 0 trxs  0 pending

6. 參考

7. 個人總結(jié)

通過以上步驟完成EOS在本地的安裝后查库,可以大概知道EOS項目具體的子項目是如何關(guān)聯(lián)的,當然要是從源碼解讀的角度來看黄琼,這些都是入門的基礎(chǔ)操作樊销,接下來我會分享一些有關(guān)EOS項目的個人看法,感謝您抽空瀏覽我的文章脏款,要是我的文章對您有所啟發(fā)围苫,那將是我莫大的榮幸。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末撤师,一起剝皮案震驚了整個濱河市剂府,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌剃盾,老刑警劉巖腺占,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異痒谴,居然都是意外死亡衰伯,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門闰歪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嚎研,“玉大人,你說我怎么就攤上這事×侔纾” “怎么了论矾?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長杆勇。 經(jīng)常有香客問我贪壳,道長,這世上最難降的妖魔是什么蚜退? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任闰靴,我火速辦了婚禮,結(jié)果婚禮上蚂且,老公的妹妹穿的比我還像新娘幅恋。我一直安慰自己捆交,他們只是感情好玄括,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般热监。 火紅的嫁衣襯著肌膚如雪孝扛。 梳的紋絲不亂的頭發(fā)上苦始,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天理郑,我揣著相機與錄音您炉,去河邊找鬼。 笑死冀膝,一個胖子當著我的面吹牛窝剖,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼最楷,長吁一口氣:“原來是場噩夢啊……” “哼籽孙!你這毒婦竟也來了犯建?” 一聲冷哼從身側(cè)響起适瓦,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤玻熙,失蹤者是張志新(化名)和其女友劉穎列荔,沒想到半個月后贴浙,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體悬而,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡价涝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年侧蘸,在試婚紗的時候發(fā)現(xiàn)自己被綠了晋辆。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖厚脉,靈堂內(nèi)的尸體忽然破棺而出孵滞,到底是詐尸還是另有隱情轨香,我是刑警寧澤幼东,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布臂容,位于F島的核電站科雳,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏脓杉。R本人自食惡果不足惜糟秘,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望球散。 院中可真熱鬧尿赚,春花似錦、人聲如沸蕉堰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽屋讶。三九已至冰寻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間皿渗,已是汗流浹背斩芭。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留乐疆,地道東北人划乖。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像挤土,于是被迫代替她去往敵國和親迁筛。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

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

  • 1 EOS智能合約的介紹1.1 所需背景知識1.2 EOS智能合約基礎(chǔ)知識1.3 技術(shù)局限性 2 智能合約文件2....
    cenkai88閱讀 30,502評論 5 28
  • 1 獲取代碼 2 構(gòu)建EOS2.1 自動構(gòu)建2.1.1 Ubuntu 16.102.1.2 MacOS Sierr...
    cenkai88閱讀 1,134評論 0 0
  • 我是一名口吃患者耕挨,因為平時說話費勁,所以我大多數(shù)時間都沉默寡言尉桩。很少與別人主動交談筒占,生怕自己的缺陷被放大被發(fā)現(xiàn)≈├纾“...
    沖沖安閱讀 470評論 0 1
  • 突然这橙,我發(fā)現(xiàn)支付寶余額多了一筆錢奏窑,將近千元,百思不得其解屈扎。查了賬單才發(fā)現(xiàn)埃唯,是一篇文章的稿費。 關(guān)于這篇文章鹰晨,說來話...
    萬伊刀閱讀 3,052評論 1 2
  • 十一墨叛、實現(xiàn)頁面靜態(tài)化業(yè)務(wù)場景 我們在做某項目時止毕,涉及到程序訪問的性能問題,這時候我們想到可以通過靜態(tài)化來提高用戶訪...
    發(fā)覺原來我只是250閱讀 433評論 0 0