EOS超级节点搭建
假设已注册EOS账户:fengcj111222,CPU抵押了6个EOS
安装Docker
// 安装Docker
curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/intranet | sh -
// 如失败可多次重试
// 启用Docker镜像加速器
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://585mc4q5.mirror.aliyuncs.com"]
}
// 重启Docker
systemctl daemon-reload
systemctl restart docker
EOS超级节点搭建(1)
// 拉取EOS软件Docker镜像
docker pull eosio/eos
// Status: Downloaded newer image for eosio/eos:latest
// 注册fengcj111222账户为EOS BP
// 启动并进入临时容器
docker run -it --rm eosio/eos
// 创建默认钱包
cleos wallet create --to-console
// Creating wallet: default
// Save password to use in the future to unlock this wallet.
// Without password imported keys will not be retrievable.
// "PW5KgnGqLA4rigH8J9pKJSszQNavDZ5eAbRK5rMQkVpk4RNGBE1HJ" // 此处为钱包密码,在解锁钱包时会使用
// 导入fengcj111222账户的私钥
cleos wallet import --private-key 5Kg8jkyxSZ7GSAYGUJ42PugigxEKHpxEaRiWsSu8tgfUb98yxf9 // 为保护隐私,此处为假信息
// imported private key for: EOS6rLK9sowVnWMDuRL3LNJ9oBiRJUDoyepeuASrQrMUrdTsbS58Z
// 注册EOS BP
cleos -u https://mainnet.eoscannon.io system regproducer fengcj111222 EOS6rLK9sowVnWMDuRL3LNJ9oBiRJUDoyepeuASrQrMUrdTsbS58Z
// 注:-u https://mainnet.eoscannon.io为cleos指定了远程RPC节点,因此本机不需要启动nodeos并同步数据
// 报CPU不足:Error 3080004: Transaction exceeded the current CPU usage limit imposed on the transaction
// billed CPU time (3470 us) is greater than the maximum billable CPU time for the transaction (170 us)
// 解决办法:抵押CPU(抵押了6个)
// 报Error 3120003: Locked wallet
// 处理办法:cleos wallet unlock // 输入密码:PW5KgnGqLA4rigH8J9pKJSszQNavDZ5eAbRK5rMQkVpk4RNGBE1HJ
// 注册结果
// executed transaction: df6e8e7d6a39e9320d1d7dfbc4c5bcb1a6f6a6bd97a79a96ee87e4415bf7fffb 144 bytes 510 us
// # eosio <= eosio::regproducer {"producer":"fengcj111222","producer_key":"EOS6rLK9sowVnWMDuRL3LNJ9oBiRJUDoyepeuASrQrMUrdTsbS58Z","u...
// warning: transaction executed locally, but may not be confirmed by the network yet ]
// 为自己投票
cleos -u https://mainnet.eoscannon.io system voteproducer prods fengcj111222 fengcj111222
// executed transaction: ca5ecc761dd20499e83416be7293f95ef78fea24130b39d2cd87ddd4674f325b 120 bytes 574 us
// # eosio <= eosio::voteproducer {"voter":"fengcj111222","proxy":"","producers":["fengcj111222"]}
// warning: transaction executed locally, but may not be confirmed by the network yet ]
// 查询账户
https://eosflare.io/account/fengcj111222
// exit退出并销毁容器
exit
EOS超级节点搭建(2)
// 配置genesis.json创世文件
mkdir -p /work/eos-work
cd /work/eos-work/
vim genesis.json
// 写入如下信息
{
"initial_timestamp": "2018-06-08T08:08:08.888",
"initial_key": "EOS7EarnUhcyYqmdnPon8rm7mBCTnBoot6o7fE2WzjvEX2TdggbL3",
"initial_configuration": {
"max_block_net_usage": 1048576,
"target_block_net_usage_pct": 1000,
"max_transaction_net_usage": 524288,
"base_per_transaction_net_usage": 12,
"net_usage_leeway": 500,
"context_free_discount_net_usage_num": 20,
"context_free_discount_net_usage_den": 100,
"max_block_cpu_usage": 200000,
"target_block_cpu_usage_pct": 1000,
"max_transaction_cpu_usage": 150000,
"min_transaction_cpu_usage": 100,
"max_transaction_lifetime": 3600,
"deferred_trx_expiration_window": 600,
"max_transaction_delay": 3888000,
"max_inline_action_size": 4096,
"max_inline_action_depth": 4,
"max_authority_depth": 6
}
}
// 启动并进入容器
docker run -it --rm -v /work/eos-work:/eos-work eosio/eos
// 初始化EOS主网区块链
nodeos --config-dir /eos-work --data-dir /eos-work --genesis-json /eos-work/genesis.json
// --config-dir /eos-work:指定配置文件路径
// --data-dir /eos-work:指定数据文件路径
// --genesis-json /eos-work/genesis.json:指定创世文件路径
// ctrl+c退出nodeos
// exit退出关闭容器
EOS超级节点搭建(3)
// 查看上一步生成的目录文件
ls -l /work/eos-work/
// total 32
// drwxr-xr-x 3 root root 4096 Nov 7 14:50 blocks
// -rw-r--r-- 1 root root 13892 Nov 7 14:50 config.ini
// -rw-r--r-- 1 root root 816 Nov 7 14:48 genesis.json
// drwxr-xr-x 2 root root 4096 Nov 7 14:50 snapshots
// drwxr-xr-x 2 root root 4096 Nov 7 14:51 state
搭建fengcj111222账户的BP节点最少需要修改以下配置
vim /work/eos-work/config.ini
# BP账户名
producer-name = fengcj111222
# BP账户的密钥对,格式为${public_key}=KEY:${private_key}
signature-provider = EOS7PD3ykQtKAgkkYb4jrG5fpgZa4RPTUmyq8r31eNdgxwMjUx7sR=KEY:5Kg8jkyxSZ7GSAYGUJ42PugigxEKHpxEaRiWsSu8tgfUb98yxf9 // 为保护隐私,此处为假信息
# 必要插件
plugin = eosio::chain_plugin
plugin = eosio::chain_api_plugin
plugin = eosio::producer_plugin
plugin = eosio::http_plugin
# 可选支持钱包操作
# plugin = eosio::wallet_plugin
# plugin = eosio::wallet_api_plugin
# 若不希望暴露RPC端口给网外,修改为127.0.0.1:8888
http-server-address = 0.0.0.0:8888
# 可以添加多个,但是你用到的时候可能已经失效,若没有一个能用的通信节点,可在网络上查找
p2p-peer-address = bp.cryptolions.io:9876
p2p-peer-address = p2p.mainnet.eospace.io:88
p2p-peer-address = eu-west-nl.eosamsterdam.net:9876
p2p-peer-address = eosnode.fi:9888
p2p-peer-address = api.eosuk.io:12000
p2p-peer-address = fullnode.eoslaomao.com:443
p2p-peer-address = new.eoshenzhen.io:10034
p2p-peer-address = peer.eosio.sg:9876
p2p-peer-address = eos.nodepacific.com:9876
p2p-peer-address = 18.234.6.119:80
p2p-peer-address = eu1.eosdac.io:49876
p2p-peer-address = br.eosrio.io:9876
p2p-peer-address = p2p-public.hkeos.com:19875
p2p-peer-address = node.eosmeso.io:9876
p2p-peer-address = pub1.eostheworld.io:9876
p2p-peer-address = 807534da.eosnodeone.io:19872
p2p-peer-address = mainnet.eoseco.com:10010
p2p-peer-address = p2p.meet.one:9876
p2p-peer-address = node.eosflare.io:1883
p2p-peer-address = mainnet.eoscalgary.io:5222
p2p-peer-address = eos-p2p.worbli.io:33981
p2p-peer-address = 18.188.38.175:9876
p2p-peer-address = 18.221.255.38:9876
p2p-peer-address = eos.staked.us:9870
p2p-peer-address = peering.dutcheos.io:9876
p2p-peer-address = 18.188.4.97:9876
p2p-peer-address = 18.191.125.105:9876
p2p-peer-address = boot.eostitan.com:9876
p2p-peer-address = eosboot.chainrift.com:9876
// 启动BP节点
docker run -d -p 8888:8888 -p 9876:9876 --rm --name eosio -v /work/eos-work:/eos-work eosio/eos nodeos --config-dir /eos-work --data-dir /eos-work
// 查看容器输出
docker logs eosio -f
// 查看BP节点运行状态
docker exec -it eosio cleos get info
{
"server_version": "11c25394",
"chain_id": "aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906",
"head_block_num": 3862,
"last_irreversible_block_num": 3861,
"last_irreversible_block_id": "00000f15482012cef654e512e20309b62b39db92e8857bcf44ce50b953569d7c",
"head_block_id": "00000f1627cc47135cfb177f45e4c79ea258d05879b0775dfa46db1c238d05b4",
"head_block_time": "2018-06-09T12:30:25.500",
"head_block_producer": "eosio",
"virtual_block_cpu_limit": 3108464085,
"virtual_block_net_limit": 49894085,
"block_cpu_limit": 100000000,
"block_net_limit": 1048576,
"server_version_string": "v1.4.3"
}
// 如果chain_id为aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906,说明已经链接上主网,并在同步区块链数据
// 进入docker
docker exec -it eosio /bin/bash
参考文档