EOS [实践篇] EOS 主网启动流程实践及分析 (搭建自己的 EOS 多节点测试主网)

itleaks · 2018年09月13日 · 362 次阅读

昨晚在细看ram消耗的问题时候,搭建了完整的测试主网,经过更新,发现现在的搭建过程还是很便利的,于是刚刚整理了下,希望对大家有帮助。

EOS dawn-v4.1.0版本开始就有EOS主网启动教程项目了,在tutorials/bios-boot-tutorial目录。EOS主网启动流程的操作步骤都在tutorials/bios-boot-tutorial/bios-boot-tutorial.py文件里。创建一个私有主网,只需执行一个bios-boot-tutorial.py程序即可。这里我叫做“测试主网”是因为里面的规则内容和主网一模一样,只是账号信息是虚拟的。

一键启动私有测试主网

下载源码并编译

git clone https://github.com/eosio/eos --recursive
cd eos
git checkout v1.0.7
git submodule update --init --recursive
//将系统币修改为EOS
sed -i.bak '16i set( CORE_SYMBOL_NAME "EOS" )' CMakeLists.txt
./eosio_build.sh

更详细操作过程请参考【https://blog.csdn.net/itleaks/article/details/80367131

执行主网启动脚本

由于我们的机器和真正的BP性能有差距,导致执行的过程中会出错, 因而需要对bios-boot-tutorial.py做一些修改。具体改动如下

同时为了减少环境搭建时间及方便实践,我删减了accounts.json文件里的账号,只保留2个生产者和3个普通用户

如果怕麻烦,大家可以在下面的连接下载这两个文件然后覆盖

https://github.com/itleaks/eos-contract/blob/master/files/bios-boot-tutorial.py
https://github.com/itleaks/eos-contract/blob/master/files/genesis.json

执行启动命令

执行之前需要安装python和python numpy库,具体安装过程请网络搜索

./bios-boot-tutorial.py -a --num-producers-vote=2 --num-voters=3 --num-senders=3 --producer-sync-delay=20 --symbol=EOS --max-unstaked=2000000

上面命令执行过程中如有出错,可以尝试几次,因为本地机器的CPU等资源负载很高时,会导致执行timeout

等待该程序执行完成退出即可

$ ls nodes/

00-eosio 01-eosfavor2bpa 02-eosfavor2bpb

然后查看三个节点程序中任一一个节点的数据,比如00-eosio即最初始节点的log信息

从上面看出,开始时eosio生成,投票完成后eosfavor2bpa, eosfavor2bpb这两个生产者轮流生产区块。

启动流程分析

想要更清晰的了解这些流程,可以查看bios-boot-tutorial.py文件, 想查看每一条命令的详情,可以查看output.log文件(命令执行日志)

我的测试主网testnet.eosfavor.com

一般来说,通过上面的描述,大家都有了自己的测试主网,可以做任何EOS测试的事。但是有些伙伴可能觉得本地机器不方便或者觉得整个过程太麻烦,可以直接使用第三方的测试主网。其实已经有一些测试网络了,比如"Jungle Testnet Monitor",但是最近貌似出了问题。因此为了方便大家实践,同时为了这个网络的稳定性,我的这个测试主网已经开放,欢迎大家一起实践。大家可以通过两种方式参与。

1)DAPP开发人员或者EOS常规命令使用者

这些伙伴可直接通过ip:port方式连接我的nodeos服务即可,比如

cleos -u http://testnet.eosfavor.com:8001 get info

2) EOS源码研究,系统功能(区块浏览器)等开发人员

这些伙伴可使用如下命令连接到我们的EOS测试网络,成为区块生产者

nodeos --max-irreversible-block-age 18999999 --contracts-console --genesis-json eos/tutorials/bios-boot-tutorial/genesis.json --data-dir ./nodes --http-server-address 127.0.0.1:8001 --p2p-listen-endpoint 127.0.0.1:9001 --max-clients 12 --p2p-max-nodes-per-host 12 --enable-stale-production --producer-name producer111a --private-key '["EOS8imf2TDq6FKtLZ8mvXPWcd6EF2rQwo8zKdLNzsbU9EiMStxxxx","5KLGj1HGRWbk5xNmoKfrcrQHXvcVJBPdAckoiJgFftXSJjLPxx"]' --plugin eosio::http_plugin --plugin eosio::chain_api_plugin --max-transaction-time=3000 --plugin eosio::producer_plugin --p2p-peer-address testnet.eosfavor.com:9001

上面的“producer111a“请填入你的账号,如没有可以在这里申请测试账号:

http://testnet.eosfavor.com

创建之前必须拥有EOS公私钥,如果没有,可以通过如下命令创建

cleos create key

请填入上面账号授权的EOS公私钥

运行nodes后,然后就可以通过注册生产者和投票工具将自己投为生产者

 cleos system newaccount eosfavor2u11 --transfer testtesttest your_pub_key --stake-net "10.0000 EOS" --stake-cpu "100.0000 EOS" --buy-ram "10 EOS"  //创建新账号
cleos system regproducer your_account your_pub_key website_url      //注册为生产者
 cleos system voteproducer prods your_account your_account           //投票

更多信息大家请访问testnet.eosfavor.com

原文链接:https://blog.csdn.net/ITleaks/article/details/80888789

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册