eos 编译笔记(注意点)

版权声明:凡原创系列文章,均笔者的辛勤于中,如转载,请文章顶部注明来源。谢谢配合 https://blog.csdn.net/smilejiasmile/article/details/82622302

eos 编译笔记(注意点)

注:此为在 Linux 平台下进行的编译操作

一、从 GitHub 上下载原代码

  • 可以使用下列命令,执行下载操作
git clone https://github.com/EOSIO/eos --recursive
  • 注意这里的 –recursive 表示自动下载其循环子目录
  • 如果上面命令未加–recursive可其后再运行命令
git submodule update --init --recursive

二、下载完源代码后,执行编译原代码

  • 有于 eos 文件夹下,有自动的脚本可以执行,不过需要很高的配置,执行下列命令
./eosio_build.sh
  • 如果报错,需要修改编译脚本,首先进入 script 目录文件夹下面,修改其中文件,+ 表示添加该行,- 表示删除该行,修改处如下:
--- a/scripts/eosio_build_ubuntu.sh
+++ b/scripts/eosio_build_ubuntu.sh
@@ -8,6 +8,9 @@

        MEM_GIG=$(( ((MEM_MEG / 1000) / 2) ))
        JOBS=$(( MEM_GIG > CPU_CORE ? CPU_CORE : MEM_GIG ))
+       if [ "${JOBS}" lt 1 ]; then
+               JOBS=2
+       fi

        DISK_INSTALL=$(df -h . | tail -1 | tr -s ' ' | cut -d\  -f1 || cut -d' ' -f1)
        DISK_TOTAL_KB=$(df . | tail -1 | awk '{print $2}')
@@ -24,7 +27,7 @@
        printf "\\tDisk space total: %sG\\n" "${DISK_TOTAL%.*}"
        printf "\\tDisk space available: %sG\\n" "${DISK_AVAIL%.*}"

-       if [ "${MEM_MEG}" -lt 7000 ]; then
+       if [ "${MEM_MEG}" -lt 1000 ]; then
                printf "\\tYour system must have 7 or more Gigabytes of physical memory installed.\\n"
                printf "\\tExiting now.\\n"
                exit 1

三、 执行安装

进入build目录,执行下面命令

~/eos/build$ sudo make install

安装完成后会在 /usr/local/eosio/bin下生成 cleos、kesod、nodeos等可执行文件。

/usr/local/eosio/bin$ ls
cleos  eosio-abigen  eosiocpp  eosio-launcher  eosio-s2wasm  eosio-wast2wasm  keosd  nodeos

四、 设置PATH路径

上面步骤会在 /usr/local下面生成 eosio 文件夹。打开 /etc/profile 文件,添加 ./usr/local/eosio/bin 目录到PATH变量中

export PATH=/usr/local/eosio/bin:$PATH

五、 启动nodeos节点

首先准备一个genesis.json,文件就保存在eos目录下,文件内容我用的是:

{
  "initial_timestamp": "2018-03-01T12:00:00.000",
  "initial_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV",
  "initial_configuration": {
    "base_per_transaction_net_usage": 100,
    "base_per_transaction_cpu_usage": 500,
    "base_per_action_cpu_usage": 1000,
    "base_setcode_cpu_usage": 2097152,
    "per_signature_cpu_usage": 100000,
    "per_lock_net_usage": 32,
    "context_free_discount_cpu_usage_num": 20,
    "context_free_discount_cpu_usage_den": 100,
    "max_transaction_cpu_usage": 10485760,
    "max_transaction_net_usage": 104857,
    "max_block_cpu_usage": 104857600,
    "target_block_cpu_usage_pct": 1000,
    "max_block_net_usage": 1048576,
    "target_block_net_usage_pct": 1000,
    "max_transaction_lifetime": 3600,
    "max_transaction_exec_time": 0,
    "max_authority_depth": 6,
    "max_inline_depth": 4,
    "max_inline_action_size": 4096,
    "max_generated_transaction_count": 16
  },
  "initial_chain_id": "0000000000000000000000000000000000000000000000000000000000000000"
}

然后执行命令启动nodeos节点:

nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin --genesis-json genesis.json

运行界面如下:

可以看到这个节点在不停的产生区块,周期是0.5s左右。

区块数据保存在目录 ~/.local/share/eosio/nodeos/data下面。

只有第一次启动时需要用 –genesis-json 选项,以后启动时不要再带这个选项,否则会报错。

六、 通过config.ini文件来启动节点

除了上面的用命令行来出块的方式,还可以通过配置config.ini文件的方式来启动nodeos节点。新建一个文件夹,创建一个genesis.json,内容和上节的一样。然后再创建一个config.ini文件,文件内容如下:

genesis-json = genesis.json
block-log-dir = blocks
readonly = 0
send-whole-blocks = true
shared-file-dir = blockchain
shared-file-size = 8192
unlock-timeout = 90000
bnet-endpoint = 0.0.0.0:4321
http-server-address = 0.0.0.0:8888
p2p-listen-endpoint = 0.0.0.0:9876
p2p-server-address = localhost:9876
allowed-connection = any
required-participation = true
signature-provider = EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV=KEY:5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
producer-name = eosio
plugin = eosio::producer_plugin
plugin = eosio::chain_api_plugin
plugin = eosio::history_api_plugin
plugin = eosio::wallet_api_plugin
plugin = eosio::http_plugin
enable-stale-production = true

基本上命令行中可用的命令,都可以去掉前缀的–后然后直接用到config.ini中。比如命令行中的 -e,对应配置文件中的

enable-stale-production = true,即允许出块;命令行中的 -p eosio,在配置文件里可以写成 producer-name = eosio;命令行中的–plugin eosio::wallet_api_plugin –plugin eosio::chain_api_plugin –plugin eosio::history_api_plugin,在配置文件中可以写成:

plugin = eosio::chain_api_plugin
plugin = eosio::history_api_plugin
plugin = eosio::wallet_api_plugin

此外配置文件还可以配置

创建好genesis.json和config.ini后的文件夹:

~/eostest1$ ls
config.ini  genesis.json

然后启动nodeos节点:

~/eostest1$ sudo nodeos --data-dir ./ --config-dir ./

节点启动起来了:

猜你喜欢

转载自blog.csdn.net/smilejiasmile/article/details/82622302
eos