下載全部的EOSIO代碼,clone eos
庫和全部的子模塊。node
shell 命令以下:c++
git clone https://github.com/EOSIO/eos --recursive
若是忘記加 --recursive
參數也不要緊,隨後也能夠用命令 clone 全部子模塊。git
git submodule update --init --recursive
EOSIO能夠在多個平臺上安裝構建,並有各類路徑進行安裝構建。大多數用戶更喜歡使用自動化腳本或docker,而更高級的用戶或但願部署公共節點的用戶可能須要手動方法。構建內容生成在eos/build
文件夾中。可執行文件能夠在eos/build/programs
文件夾的子文件夾中找到。github
make install
步驟,可使本地開發更加友好。若是你是新手,建議直接看經過docker快速構建安裝EOSIO。mongodb
有一個自動化的構建腳本,能夠安裝全部依賴項並構建EOSIO。腳本支持如下操做系統。docker
咱們正在支持和未來發佈會支持的Linux/UNIX發行版。shell
從eos
目錄運行安裝構建腳本:bash
cd eos ./eosio_build.sh
若是你只是想跑起來,可能經過docker快速構建安裝EOSIO更適合。不然你想了解更高級的構建,那麼繼續。curl
git clone https://github.com/EOSIO/eos.git --recursive --depth 1 cd eos/Docker docker build . -t eosio/eos
以上將在默認狀況下構建對主分支的最新提交。若是想針對特定的分支/tag,可使用生成參數。例如,若是但願根據v1.0.0 tag生成Docker鏡像,能夠執行如下操做:ide
docker build -t eosio/eos:v1.0.0 --build-arg branch=v1.0.0 .
默認狀況下,eosio.system的 symbol 設置爲SYS
。在構建Docker鏡像時,可使用 symbol 參數來作到這一點。
docker build -t eosio/eos --build-arg symbol=ABC.
docker run --name nodeos -p 8888:8888 -p 9876:9876 -t eosio/eos nodeosd.sh -e arg1 arg2
默認狀況下,全部數據都保存在docker卷中。若是數據過期或損壞,則能夠刪除它:
$ docker inspect --format '{{ range .Mounts }}{{ .Name }} {{ end }}' nodeos fdc265730a4f697346fa8b078c176e315b959e79365fc9cbd11f090ea0cb5cbc $ docker volume rm fdc265730a4f697346fa8b078c176e315b959e79365fc9cbd11f090ea0cb5cbc
或者,能夠直接將宿主目錄安裝到docker中。
docker run --name nodeos -v /path-to-data-dir:/opt/eosio/bin/data-dir -p 8888:8888 -p 9876:9876 -t eosio/eos nodeosd.sh -e arg1 arg2
curl http://127.0.0.1:8888/v1/chain/get_info
docker volume create --name=nodeos-data-volume docker volume create --name=keosd-data-volume docker-compose up -d
在docker-compose -d
以後,將啓動nodeos
和keosd
兩個服務。nodeos服務會將端口8888和9876提供給主機。kesod服務不向主機公開任何端口,只有當在cleos容器中運行cleos時,cleos才能夠訪問它。
你能夠運行cloes
經過bash別名
alias cleos='docker-compose exec keosd /opt/eosio/bin/cleos -u http://nodeosd:8888 --wallet-url http://localhost:8900' cleos get info cleos get account inita
若是你想在任何地方使用cleos
命令,你能夠在docker-compose.yml
指定路徑:
alias cleos='docker-compose -f path-to-eos-dir/Docker/docker-compose.yml exec keosd /opt/eosio/bin/cleos -u http://nodeosd:8888 --wallet-url http://localhost:8900'
提交exchange示例合約:
cleos set contract exchange contracts/exchange/
若是你不須要keosd
,能夠中止使用keosd
服務:
docker-compose stop keosd
因爲eosio/eos鏡像不包含合約開發所需的依賴關係(這樣設計是爲了保持較小鏡像尺寸),因此須要使用 eosio/eos-dev鏡像。此鏡像包含使用eosiocpp構建合約的所需二進制文件和依賴項。
可使用Docker Hub上可用的鏡像或進入到dev文件夾並手動構建鏡像。
cd dev docker build -t eosio/eos-dev .
可使用docker compose更改默認配置。例如,建立一個備用配置文件config2.ini
和docker-compose.override.yml
,內容以下:
version: "2" services: nodeos: volumes: - nodeos-data-volume:/opt/eosio/bin/data-dir - ./config2.ini:/opt/eosio/bin/data-dir/config.ini
而後重啓docker:
docker-compose down docker-compose up
docker-compose建立的data卷能夠被刪除:
docker volume rm nodeos-data-volume docker volume rm keosd-data-volume
Docker Hub 鏡像來自docker hub
創建一個新的docker-compose.yaml
文件內容以下:
version: "3" services: nodeosd: image: eosio/eos:latest command: /opt/eosio/bin/nodeosd.sh --data-dir /opt/eosio/bin/data-dir -e hostname: nodeosd ports: - 8888:8888 - 9876:9876 expose: - "8888" volumes: - nodeos-data-volume:/opt/eosio/bin/data-dir keosd: image: eosio/eos:latest command: /opt/eosio/bin/keosd --wallet-dir /opt/eosio/bin/data-dir --http-server-address=127.0.0.1:8900 hostname: keosd links: - nodeosd volumes: - keosd-data-volume:/opt/eosio/bin/data-dir volumes: nodeos-data-volume: keosd-data-volume:
注意:默認版本是最新版本,能夠將其更改成你想要的版本。
docker pull eosio/eos:latest
docker-compose up
咱們能夠很容易地創建一個EOSIO 1.0本地Testnet測試鏈,使用docker鏡像。只需運行如下命令:
注意:若是你想使用mongo db插件,你必須首先在data-dir/config.ini
啓用它。
# pull images docker pull eosio/eos:v1.0.0 # create volume docker volume create --name=nodeos-data-volume docker volume create --name=keosd-data-volume # start containers docker-compose -f docker-compose-eosio1.0.yaml up -d # get chain info curl http://127.0.0.1:8888/v1/chain/get_info # get logs docker-compose logs -f nodeosd # stop containers docker-compose -f docker-compose-eosio1.0.yaml down
默認狀況下,blocks
數據存儲在--data-dir
下,默認狀況下錢包文件存儲在--wallet-dir
下,固然,你能夠根據須要更改這些文件路徑。
目前,MongoDB插件在config.ini
中被禁用,默認狀況下,必須在config.ini
中手動更改它,或者能夠在docker-compose文件中將config.ini
文件mount到/opt/eosio/bin/data-dir/config.ini
。
若要手動生成,請使用如下步驟在eos
文件夾中建立build
文件夾,而後執行build。下面的步驟假設eos
存儲庫被clone到home(即,~)文件夾中。還假定已經安裝了必要的依賴項。請參見手動安裝依賴項。
cd ~ mkdir -p ~/eos/build && cd ~/eos/build
在Linux平臺上,使用這個cmake
命令:
cmake -DBINARYEN_BIN=~/binaryen/bin -DWASM_ROOT=~/wasm-compiler/llvm -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DOPENSSL_LIBRARIES=/usr/local/opt/openssl/lib -DBUILD_MONGO_DB_PLUGIN=true ..
在MacOS上,使用這個cmake
命令:
cmake -DBINARYEN_BIN=~/binaryen/bin -DWASM_ROOT=/usr/local/wasm -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DOPENSSL_LIBRARIES=/usr/local/opt/openssl/lib -DBUILD_MONGO_DB_PLUGIN=true ..
而後在所在平臺上執行:
make -j$( nproc )
也支持Out-of-source安裝構建。若要在編譯器中重寫默認選擇,請將這些標誌添加到CMake命令:
-DCMAKE_CXX_COMPILER=/path/to/c++ -DCMAKE_C_COMPILER=/path/to/cc
對於調試模式的安裝構建,添加-DCMAKE_BUILD_TYPE=Debug
。其餘常見的構建類型包括Release
和RelWithDebInfo
。
爲了便於智能合約開發,可使用make install
將目標內容安裝到/usr/local
中。此步驟要從build
目錄下運行的。須要適當的安裝權限。
cd build sudo make install
可選地,能夠對咱們的構建運行一組測試,以執行一些基本驗證。要在構建後運行測試套件,啓動mongod
而後運行make test
。
在 Linux 平臺上:
~/opt/mongodb/bin/mongod -f ~/opt/mongodb/mongod.conf &
在 MacOS 平臺上:
/usr/local/bin/mongod -f /usr/local/etc/mongod.conf &
而後執行下面的操做:
cd build make test
另:**《EOS智能合約與DApp開發入門》**教程已經上線,歡迎你們關注:
本教程幫助你快速入門EOS區塊鏈去中心化應用的開發,內容涵蓋EOS工具鏈、帳戶與錢包、發行代幣、智能合約開發與部署、使用代碼與智能合約交互等核心知識點,最後綜合運用React和EOS的各知識點完成一個便籤DApp的開發。
匯智網原創翻譯,轉載請標明出處。原文