EOS 合约基础教程 - 启动节点
如果你还未安装 Docker,那么可以访问我们的 Docker 基础教程:安装 来安装 Docker。
1. 获取 Docker EOS 最新镜像
截止今天 ( 2018-10-22 ),EOS 最新的最新版本为 v1.4.1
,你可以访问 https://hub.docker.com/r/eosio/eos/tags/ 查询 Docker EOS 的最新镜像
[root@www.twle.cn]# docker pull eosio/eos:v1.4.1
2. 启动 EOS 节点和钱包节点
-
启动钱包节点的命令为
keosd --plugin eosio::http_plugin --http-server-address 0.0.0.0:5555 --access-control-allow-origin 0.0.0.0 --verbose-http-errors
-
启动 EOS 节点的命令为
nodeos -e -p eosio --plugin eosio::producer_plugin --plugin eosio::history_plugin --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin --plugin eosio::http_plugin -d /Users/jian/Downloads/eosio --config-dir /Users/jian/Downloads/eosio/config --http-server-address=0.0.0.0:7777 —-access-control-allow-origin='*' --contracts-console --http-validate-host=false --filter-on='*'
上面这个命令用于启动测试节点,我们添加了以下配置项来方便调试合约
配置项 说明 -e 开启挖矿程序,无论链是否过时 -p 挖矿的用户名 —access-control-allow-origin 设置跨域访问 --contracts-console 记录合约输出,所有 print() 方法的输出都会被记录 --http-validate-host 不开启域名校验 --filter-on='*' 显式所有的数据 --plugin eosio::producer_plugin 开启挖矿插件 --plugin eosio::history_plugin 开启历史记录插件 --plugin eosio::chain_api_plugin 开启区块链链条信息查询插件 --plugin eosio::history_api_plugin 开启历史记录查询 RPC 接口插件 --plugin eosio::http_plugin 开启所有 rpc 接口插件 -d /Users/jian/Downloads/eosio 设置数据保存目录 --config-dir /Users/jian/Downloads/eosio/config 设置配置文件保存目录 --config-dir /Users/jian/Downloads/eosio/config 设置 RPC 接口地址
如果在 Docker 中,我们可以使用下面的命令来启动
docker run --name eosio \ --publish 7777:7777 \ --publish 127.0.0.1:5555:5555 \ --volume sddd:sddd \ --detach \ eosio/eos \ /bin/bash -c \ "keosd --http-server-address=0.0.0.0:5555 & exec nodeos -e -p eosio --plugin eosio::producer_plugin --plugin eosio::history_plugin --plugin eosio::chain_api_plugin --plugin eosio::history_plugin --plugin eosio::history_api_plugin --plugin eosio::http_plugin -d /mnt/dev/data --config-dir /mnt/dev/config --http-server-address=0.0.0.0:7777 --access-control-allow-origin='*' --contracts-console --http-validate-host=false --filter-on='*'"
在上面这条语句中
- 将端口 7777 和 5555 转发到主机。
- 将本地驱动器上的工作卷别名为 docker 容器。
- 在 bash 中运行和启动钱包和 Nodeos。此命令加载所有基本插件,设置服务器地址,启用 CORS 并添加一些合同调试配置项
- 开启 CORS 并设置为不限制(
*
)
注意:上面这个配置仅用于开发目的。 正式环境中,CORS 最好不要设置为
*
。记住,永远不要在可公开访问的节点将 CORS 设置为*
3. 检查安装是否成功
3.1 检查 Nodeos 是否在挖矿
在 Shell 运行下面的命令
docker logs --tail 10 eosio
运行上面的命令后,你应该在命令行窗口中看到类似下面的信息
1929001ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 0000366974ce4e2a... #13929 @ 2018-05-23T16:32:09.000 signed by eosio [trxs: 0, lib: 13928, confirmed: 0] 1929502ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 0000366aea085023... #13930 @ 2018-05-23T16:32:09.500 signed by eosio [trxs: 0, lib: 13929, confirmed: 0] 1930002ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 0000366b7f074fdd... #13931 @ 2018-05-23T16:32:10.000 signed by eosio [trxs: 0, lib: 13930, confirmed: 0] 1930501ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 0000366cd8222adb... #13932 @ 2018-05-23T16:32:10.500 signed by eosio [trxs: 0, lib: 13931, confirmed: 0] 1931002ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 0000366d5c1ec38d... #13933 @ 2018-05-23T16:32:11.000 signed by eosio [trxs: 0, lib: 13932, confirmed: 0] 1931501ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 0000366e45c1f235... #13934 @ 2018-05-23T16:32:11.500 signed by eosio [trxs: 0, lib: 13933, confirmed: 0] 1932001ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 0000366f98adb324... #13935 @ 2018-05-23T16:32:12.000 signed by eosio [trxs: 0, lib: 13934, confirmed: 0] 1932501ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 00003670a0f01daa... #13936 @ 2018-05-23T16:32:12.500 signed by eosio [trxs: 0, lib: 13935, confirmed: 0] 1933001ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 00003671e8b36e1e... #13937 @ 2018-05-23T16:32:13.000 signed by eosio [trxs: 0, lib: 13936, confirmed: 0] 1933501ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 0000367257fe1623... #13938 @ 2018-05-23T16:32:13.500 signed by eosio [trxs: 0, lib: 13937, confirmed: 0]
成功后,你可以按下组合键 CTRL + C
退出该终端机或键入 exit 并按回车键退出
3.2 检查钱包是否启动
新打开一个命令行或终端,输入以下命令
docker exec -it eosio bash
然后再输入以下命令
cleos --wallet-url http://127.0.0.1:5555 wallet list keys
如果输出结果类似于下面则表示钱包运行正常
Wallets: []
最后,输出 exit
退出
现在 keosd
正常运行,键入 exit
然后按 Enter
键离开 keosd shell
。
从现在开始,我们不需要使用 bash
输入容器,我们只需要在本地系统( Linux 或 Mac )执行命令
3.3 检查 Nodeos RPC 服务是否正常
你可以从下面的方法中选择一个来检查 Nodeos API RPC 服务是否正常
-
在浏览器中访问以下 URL,来检查
chain_api_plugin
提供的get_info
API -
在命令行中使用 curl 命令来检查
curl http://localhost:7777/v1/chain/get_info
4. 别名 cleos 命令
每次需要与 nodeos
或 keosd
交互时,我们都不想一次次的 Docker 容器的 bash。解决方案是给命令创建一个别名。
你可以在终端中执行以下操作以获取临时别名 ( alias ),或者如果你希望别名无限期地保留,将其添加到 .bash_rc
文件中(如果在 Linux 上)或 .profile
文件 ( Mac OS )
alias cleos='docker exec -it eosio /opt/eosio/bin/cleos --url http://127.0.0.1:7777 --wallet-url http://127.0.0.1:5555'
注意:如果你将命令添加到
.bash_rc
或.profile
,你需要使用source ~/.bash_rc
或source ~/.profile
重新加载文件
5. Docker EOS 一些有用的命令
启动容器
docker start eosio
停止容器
docker stop eosio
进入 Docker bash
docker exec -it eosio bash
删除容器
docker rm eosio