zoukankan      html  css  js  c++  java
  • EOS Dapp开发(1)-基于Docker的开发环境搭建

    随着EOS主网的上线,相信基于EOS的Dapp开发会越来越多,查阅了很多资料相关的开发资料都不是很多,只能自己摸索,按照网上仅有的几篇教程,先git clonehttps://github.com/EOSIO/eos –recursive,然后慢慢编译,然后就陷入了各种报错、各种奔溃的场景。为什么编译不报错的环境都是别人的!!!!。

    没办法只能另想办法,突然想到Docker这个神一样的东西(之前的随笔里有一篇是redhat 7.2 内网安装docker),去Docker hub上搜EOS,果然有....https://hub.docker.com/r/eosio/,选取eosio/eos,然后开工,这个镜像不大,200多M,下载之后

    1 docker pull eosio/eos
    2 docker images
    3 docker.io/eosio/eos              latest              01fdb2b0f454        34 hours ago        245 MB

    下载好了,启动镜像:

     1 docker run --name nodeos -v /home/docker/dockerdata/eosdata:/opt/eos/bin/data-dir -p 8888:8888 -p 9876:9876 -p10023:22 -t eosio/eos nodeosd.sh
     2 
     3 36039ms thread-0   chain_plugin.cpp:206          plugin_initialize    ] initializing chain plugin
     4 36039ms thread-0   chain_plugin.cpp:381          plugin_initialize    ] Starting up fresh blockchain with default genesis state.
     5 CHAINBASE:   Failed to pin chainbase shared memory (of size 8192 MB) in RAM. Performance degradation is possible.
     6 CHAINBASE:   Failed to pin chainbase shared memory (of size 340 MB) in RAM. Performance degradation is possible.
     7 36065ms thread-0   http_plugin.cpp:285           plugin_initialize    ] configured http to listen on 0.0.0.0:8888
     8 36065ms thread-0   net_plugin.cpp:2840           plugin_initialize    ] Initialize net plugin
     9 36065ms thread-0   net_plugin.cpp:2861           plugin_initialize    ] host: 0.0.0.0 port: 9876 
    10 36065ms thread-0   net_plugin.cpp:2933           plugin_initialize    ] my node_id is cd8092582bcd89ffe102968f67e058cefa284d43977d28fee1fac2200b78c8de
    11 36066ms thread-0   main.cpp:104                  main                 ] nodeos version 012dc012
    12 36066ms thread-0   main.cpp:105                  main                 ] eosio root is /root/.local/share
    13 36066ms thread-0   controller.cpp:1180           startup              ] No head block in fork db, perhaps we need to replay
    14 36066ms thread-0   controller.cpp:307            initialize_fork_db   ]  Initializing new blockchain with genesis state                  
    15 36101ms thread-0   chain_plugin.cpp:436          plugin_startup       ] starting chain in read/write mode
    16 36101ms thread-0   chain_plugin.cpp:441          plugin_startup       ] Blockchain started; head block is #1, genesis timestamp is 2018-06-01T12:00:00.000
    17 36101ms thread-0   http_plugin.cpp:323           plugin_startup       ] start listening for http requests
    18 36101ms thread-0   chain_api_plugin.cpp:75       plugin_startup       ] starting chain_api_plugin
    19 36101ms thread-0   http_plugin.cpp:369           add_handler          ] add api url: /v1/chain/abi_bin_to_json
    20 36101ms thread-0   http_plugin.cpp:369           add_handler          ] add api url: /v1/chain/abi_json_to_bin
    21 36101ms thread-0   http_plugin.cpp:369           add_handler          ] add api url: /v1/chain/get_abi
    22 36101ms thread-0   http_plugin.cpp:369           add_handler          ] add api url: /v1/chain/get_account
    23 36101ms thread-0   http_plugin.cpp:369           add_handler          ] add api url: /v1/chain/get_block
    24 36101ms thread-0   http_plugin.cpp:369           add_handler          ] add api url: /v1/chain/get_block_header_state
    25 36101ms thread-0   http_plugin.cpp:369           add_handler          ] add api url: /v1/chain/get_code
    26 36101ms thread-0   http_plugin.cpp:369           add_handler          ] add api url: /v1/chain/get_currency_balance
    27 36101ms thread-0   http_plugin.cpp:369           add_handler          ] add api url: /v1/chain/get_currency_stats
    28 36101ms thread-0   http_plugin.cpp:369           add_handler          ] add api url: /v1/chain/get_info
    29 36101ms thread-0   http_plugin.cpp:369           add_handler          ] add api url: /v1/chain/get_producers
    30 36101ms thread-0   http_plugin.cpp:369           add_handler          ] add api url: /v1/chain/get_required_keys
    31 36101ms thread-0   http_plugin.cpp:369           add_handler          ] add api url: /v1/chain/get_table_rows
    32 36101ms thread-0   http_plugin.cpp:369           add_handler          ] add api url: /v1/chain/push_block
    33 36101ms thread-0   http_plugin.cpp:369           add_handler          ] add api url: /v1/chain/push_transaction
    34 36101ms thread-0   http_plugin.cpp:369           add_handler          ] add api url: /v1/chain/push_transactions
    35 36101ms thread-0   history_api_plugin.cpp:38     plugin_startup       ] starting history_api_plugin
    36 36101ms thread-0   http_plugin.cpp:369           add_handler          ] add api url: /v1/history/get_actions
    37 36101ms thread-0   http_plugin.cpp:369           add_handler          ] add api url: /v1/history/get_controlled_accounts
    38 36101ms thread-0   http_plugin.cpp:369           add_handler          ] add api url: /v1/history/get_key_accounts
    39 36101ms thread-0   http_plugin.cpp:369           add_handler          ] add api url: /v1/history/get_transaction
    40 36102ms thread-0   net_plugin.cpp:2945           plugin_startup       ] starting listener, max clients is 25
    41 36102ms thread-0   producer_plugin.cpp:577       plugin_startup       ] producer plugin:  plugin_startup() begin
    42 36102ms thread-0   producer_plugin.cpp:592       plugin_startup       ] Launching block production for 1 producers at 2018-06-13T11:00:36.102.
    43 36102ms thread-0   producer_plugin.cpp:604       plugin_startup       ] producer plugin:  plugin_startup() end

    有两个Failed,我测试下来暂时未发现有什么影响,暂且跳过不管(网上也有人说至少需要8G,这个后续有问题我会再更新处理)。有人反馈界面会卡在这里,其实Ctrl + C退出也没关系,容器还是会一直运行。

    docker exec -it nodeos /bin/bash 进入容器,

    ps:通过上述方式进入容器不是很方便,这里提供一种方式给容器安装ssh服务(虽然不推荐这么做,为了省事还是....)

    #进入容器后执行如下代码
    
    #对于不能上网的需要设置代理的需要将代理两行放开
    #proxy=192.168.1.100:3129 &&
    #export http_proxy=http://${proxy} &&
    echo 'root:root' |chpasswd &&
    apt-get update &&
    apt-get -y install openssh-server &&
    sed -ri 's/^#PermitRootLogins+.*/PermitRootLogin yes/' /etc/ssh/sshd_config && 
    sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config && 
    /etc/init.d/ssh start

    进入 /opt/eosio/bin,EOS相关的命令都在这里

    cd /opt/eosio/bin
    ls -rtl
    total
    98476 -rwxr-xr-x. 1 root root 568 Jun 12 00:00 nodeosd.sh -rwxr-xr-x. 1 root root 2520080 Jun 12 00:01 eosio-s2wasm -rwxr-xr-x. 1 root root 698824 Jun 12 00:01 eosio-wast2wasm -rwxr-xr-x. 1 root root 5652336 Jun 12 00:03 eosio-launcher -rwxr-xr-x. 1 root root 7710032 Jun 12 00:03 keosd -rwxr-xr-x. 1 root root 27580032 Jun 12 00:03 eosio-abigen -rwxr-xr-x. 1 root root 48145016 Jun 12 00:03 nodeos -rwxr-xr-x. 1 root root 8510256 Jun 12 00:03 cleos drwxr-xr-x. 3 root root 4096 Jun 13 11:00 data-dir

    核心关注的命令是cleos、nodeos、keosd。

    cleos:命令行程序,通过命令行执行相应命令,如钱包、转账等操作

     1 Options:
     2   -h,--help                   Print this help message and exit
     3   -u,--url TEXT=http://localhost:8888/
     4                               the http/https URL where nodeos is running
     5   --wallet-url TEXT=http://localhost:8900/
     6                               the http/https URL where keosd is running
     7   -r,--header                 pass specific HTTP header; repeat this option to pass multiple headers
     8   -n,--no-verify              don't verify peer certificate when using HTTPS
     9   -v,--verbose                output verbose actions on error
    10   --print-request             print HTTP request to STDERR
    11   --print-response            print HTTP response to STDERR
    12 
    13 Subcommands:
    14   version                     Retrieve version information
    15   create                      Create various items, on and off the blockchain
    16   get                         Retrieve various items and information from the blockchain
    17   set                         Set or update blockchain state
    18   transfer                    Transfer EOS from account to account
    19   net                         Interact with local p2p network connections
    20   wallet                      Interact with local wallet
    21   sign                        Sign a transaction
    22   push                        Push arbitrary transactions to the blockchain
    23   multisig                    Multisig contract commands
    24   system                      Send eosio.system contract action to the blockchain.

     nodes:是一个挖矿的客户端,启动之后会开始挖矿,容器启动命令里nodeosd.sh,就是启动了一个nodes。

    keosd:主要和钱包相关。

     至此基于Docker的Eos环境搭建完毕,下一篇将开始EOS Dapp开发。

  • 相关阅读:
    Java++:常用工具|性能监测|服务监控
    Vue++:Vuecli4.x 的配置文件配置方法
    Vue++: gyp ERR! find Python
    Node++:Windows 环境搭建 Vue 开发环境
    linux++:free h 详解
    踩坑纪:windows 系统下,nodejs版本管理器无法使用n来管理
    Node++:NodeJs 版本管理工具(n | nvm)n教程
    Vue++:Error: 'XXX' is defined but never used (nounusedvars)报错的解决方案
    [MOSS]关闭弹出窗口
    安装 64 位版本的 Office 2010 后,无法查看数据表视图中的列表
  • 原文地址:https://www.cnblogs.com/befer/p/9179421.html
Copyright © 2011-2022 走看看