美文网首页区块链
EOS 合约基础教程 - 启动节点

EOS 合约基础教程 - 启动节点

作者: 金牛茶馆 | 来源:发表于2019-01-21 22:00 被阅读3次

    根据前一章编译的方式不同,选择不同的启动方式:

    • 命令行方式
    • Docker 方式
    图片来源于网络.png

    命令行方式

    启动钱包节点 keosd

    keosd --http-server-address=0.0.0.0:5555 &
    

    会看到如下内容:

    info  2019-01-09T07:51:39.306 thread-0  http_plugin.cpp:554           add_handler          ] add api url: /v1/keosd/stop
    info  2019-01-09T07:51:39.309 thread-0  wallet_api_plugin.cpp:73      plugin_startup       ] starting wallet_api_plugin
    info  2019-01-09T07:51:39.309 thread-0  http_plugin.cpp:554           add_handler          ] add api url: /v1/wallet/create
    info  2019-01-09T07:51:39.309 thread-0  http_plugin.cpp:554           add_handler          ] add api url: /v1/wallet/create_key
    

    启动 nodeos 节点

    nodeos -e -p eosio \
    --plugin eosio::producer_plugin \
    --plugin eosio::chain_api_plugin \
    --plugin eosio::http_plugin \
    --plugin eosio::history_plugin \
    --plugin eosio::history_api_plugin \
    --data-dir CONTRACTS_DIR/eosio/data \
    --config-dir CONTRACTS_DIR/eosio/config \
    --access-control-allow-origin='*' \
    --contracts-console \
    --http-validate-host=false \
    --verbose-http-errors \
    --filter-on='*' >> nodeos.log 2>&1 &
    

    上面这个命令用于启动测试节点,我们添加了以下配置项来方便调试合约

    配置项 说明
    -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 ~/Downloads/eosio 设置数据保存目录
    --config-dir ~/Downloads/eosio/config 设置配置文件保存目录
    --config-dir ~/Downloads/eosio/config 设置 RPC 接口地址

    检测钱包

    cleos wallet list
    

    应该返回:

    Wallets:
    []
    

    检测 Nodeos端点

    curl http://localhost:8888/v1/chain/get_info
    

    返回信息为:

    {
    server_version: "d4ffb4eb", 
    chain_id: "cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f",
    head_block_num: 8,
    last_irreversible_block_num: 7,
    last_irreversible_block_id: "000000079e57720e56a4f82237ad3d2ed51e89332ed27dcf17d478cf72ae763e",
    head_block_id: "0000000838040a503de2876c1c63af31489e06e06bd7e6f46b7aa40d4a52ef56",
    head_block_time: "2019-01-09T08:10:55.000",
    head_block_producer: "eosio",
    virtual_block_cpu_limit: 201403,
    virtual_block_net_limit: 1055940,
    block_cpu_limit: 199900,
    block_net_limit: 1048576,
    server_version_string: "v1.5.1"
    }
    

    Docker 方式

    1. 获取 Docker EOS 最新镜像

    docker pull eosio/eos:v1.5.2
    

    2. 启动 EOS 节点和钱包节点

    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.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 服务是否正常

    1. 在浏览器中访问以下 URL,来检查 chain_api_plugin 提供的 get_info API

      http://localhost:7777/v1/chain/get_info

    2. 在命令行中使用 curl 命令来检查

    curl http://localhost:7777/v1/chain/get_info
    

    4. 别名 cleos 命令

    每次需要与 nodeoskeosd 交互时,我们都不想一次次的 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_rcsource ~/.profile 重新加载文件

    5. Docker EOS 一些有用的命令

    启动容器

    docker start eosio
    

    停止容器

    docker stop eosio
    

    进入 Docker bash

    docker exec -it eosio bash
    

    删除容器

    docker rm eosio
    

    相关文章

      网友评论

        本文标题:EOS 合约基础教程 - 启动节点

        本文链接:https://www.haomeiwen.com/subject/qpuurqtx.html