下载全部的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的开发。
汇智网原创翻译,转载请标明出处。原文