EOS 节点搭建
EOS 节点搭建
安装 EOS
预编译二进制文件安装
wget https://github.com/EOSIO/eos/releases/download/v1.5.0/eosio_1.5.0-1-ubuntu-16.04_amd64.deb
apt install ./eosio_1.5.0-1-ubuntu-16.04_amd64.deb
这样 eos 的执行文件就在 /usr/opt/eosio/1.5.0/bin/ 目录下。
源码安装
git clone https://github.com/EOSIO/eos --recursive
cd eos
git checkout v1.5.0
git submodule update --init --recursive
./eosio_build.sh
接下来会检查各种依赖包的安装情况,然后询问是否安装缺失依赖,选择 yes。
然后就等待长时间的编译,安装。
安装 Jungle2.0 测试网节点
自动脚本安装
自动脚本安装说明 https://github.com/EOS-Jungle-Testnet/Node-Auto-installation
填写注册信息
之后安装指示一步步操作就可以了。Jungle 模式的同步会下载一份历史块数据文件,这样能更快的同步到最新区块。
安装正式环境同步节点
克隆 CryptoLions 的正式环境配置仓库
# 假如我需要把节点内容放在 /eos 里。
cd /eos
git clone https://github.com/CryptoLions/EOS-MainNet.git ./
# 调整权限
chmod -R 777 ./*.sh
chmod -R 777 ./Wallet/*.sh
因为这些脚本默认的安装目录在 /opt/EosmainNet,和我设置的不一样,我需要把 cleos.sh, start.sh, stop.sh, Wallet/start_wallet.sh, Wallet/stop_wallet.sh 这几个文件里的路径都改掉。
指定 genesis.json 文件
我之前有次启动发现链的 id 与正式环境的并不相同,所以就指定了 genesis.json 文件。在 /eos/start.sh 里给 nodeos 添加启动参数 nodeos --genesis-json /eos/genesis.json
然后 ./start.sh 启动节点。日志在 stderr.txt 里。启动成功就可以看到日志里真在同步块了。
执行 curl http://127.0.0.1:8888/v1/chain/get_info 如果看到结果如下
{
"server_version": "ea08cfd3",
"chain_id": "aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906",
"head_block_num": 2419,
"last_irreversible_block_num": 2418,
"last_irreversible_block_id": "00000972cbd9fef42d781baaced83abc26f26767d8f27f4380b7dec7a7ed2762",
"head_block_id": "0000097310faf39ebe9a664e0f99ac882cd3b607cc1a8722ba4c48f6551983e3",
"head_block_time": "2018-06-09T12:18:22.500",
"head_block_producer": "eosio",
"virtual_block_cpu_limit": 733745732,
"virtual_block_net_limit": 11777754,
"block_cpu_limit": 100000000,
"block_net_limit": 1048576,
"server_version_string": "v1.5.0"
}
这个 chain_id 就是正式环境的 chain id。
修改默认的钱包配置文件地址
默认的钱包配置文件地址在 ~/eosio-wallet,我需要修改到指定的位置,在 /eos/Wallet/start_wallet.sh 里的 keosd 的启动参数加上 --config-dir /eos/xxx 就好。
然后启动 Wallet/start_wallet.sh 就好了。
这里启动遇到了一个 unix socket service failed to start: No such file or directory 的错误,在 keosd 的配置文件里将 unix-socket-path 的地址写上绝对路径就可以了。
其他
启动本机单节点测试网络
执行 nodeos --help 可以查看帮助说明。
执行下面的命令启动本地节点
./nodeos -e -p eosio --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin
报错 “database dirty flag set (likely due to unclean shutdown”
如果遇到这个错误,删掉下面这个文件夹即可
Mac OS: ~/Library/Application Support/eosio/nodeos/data
Linux: ~/.local/share/eosio/nodeos/data
启动成功后就能看到生产区块的输出了。因为没有交易所以每个 trxs 都是 0。
执行的输出如下

eos 相关二进制文件说明
编译完成后可以在 build 目录下找到 program 目录。如果是直接安装的二进制文件就是在 /usr/opt/eosio/1.5.0/bin 下。里面是编译出来的可执行程序。分别有一下二进制文件。
nodeos: 区块链服务器节点生成组建
cleos: 和区块链交互的接口命令
keosd: EOS 钱包
eosio-launcher:节点网络组成和部署的应用
nodeos
eos 的核心守护进程,运行时可以添加参数来配置插件。
cleos
nodeos 的客户端,用来和 nodeos 提供的 REST API 交互。
./cleos 不带任何参数则显示帮助文档。
create 用来创建各种对象,比如 account, key, producer
get 获取 create 创建的对象的信息
set 一个对区块链的吸入操作,部署智能合约,修改智能合约。
transfer 转账,account 和 account 之间互转 eos。
net
wallet 和本地钱包交互
sign 对交易进行签名
push 把交易发送到区块链上。
keosd
eos 钱包的守护进程。启动这个进程之后可以用 cleos wallet 与其交互。
luncher
用来创建多节点区块链。nodeos 用来创建单节点区块链。
报错 “Error 3090003: Provided keys, permissions, and delays do not satisfy declared authorizations transaction declares authority”
错误提示
Error 3090003: Provided keys, permissions, and delays do not satisfy declared authorizations
transaction declares authority '{"actor":"lailyadmin22","permission":"active"}', but does not have signatures for it.
原因是需要签名的账户的 owner key 或者 active key 不在打开的钱包里,或者操作的智能合约的拥有者的 key 不在。
这种情况下需要添加签名的账户的 key 或者添加 eosio 账户的 private key。
eosio public key: EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
eosio private key: 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
注意,这只是测试环境的
主网/测试网信息
主网
区块链浏览器 http://eosnetworkmonitor.io/#home
EOSTEA : https://eosmonitor.io/
EOSpark: https://eospark.com/
测试网
Jungle Testnet:http://jungle.cryptolions.io/
EOSTEA:https://party.eosmonitor.io/
eos 主网 rpc 地址
EOS New York: https://api.eosnewyork.io
eos DAC: https://eu2.eosdac.io
主网的 chain id
aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906
测试链的 chain id
038f4b0fc8ff18a4f0842a8f0564611f6e96e8535901dd45e43ac8691a1c4dca
eos 配置文件说明
https://developers.eos.io/eosio-nodeos/docs/configuration-file
报错:_S_create_c_locale name not valid
加上 export LC_ALL=“C”
报错: block log can not be found
clear this folder
Mac OS: ~/Library/Application Support/eosio/nodeos/data
Linux: ~/.local/share/eosio/nodeos/data
get transaction 总是空的
在启动nodeos时,添加参数:--filter-on "*"
常见错误
http://blog.eosdata.io/index.php/2018/07/20/eos_errorcode/