查看: 18|回复: 0

[互联网的那点事] {兄弟连区块链培训}EOS源码分析(2)EOS运行{二}

发表于 2018-7-11 17:22:00
  兄弟连区块链学院院长尹成资深区块链技术专家:毕业于清华大学,曾担任Google算法工程师,微软区块链领域全球最具价值专家,微软Tech.Ed大会金牌讲师。精通C/C++、Python、Go语言、Sicikit-Learn与TensorFlow。拥有15年编程经验与5年的教学经验,资深软件架构师,Intel软件技术专家,著名技术专家,具备多年的世界顶尖IT公司微软谷歌的工作经验。具备多年的软件编程经验与讲师授课经历,并在人机交互、教育、信息安全、广告、区块链系统开发诸多产品。具备深厚的项目管理经验以及研发经验,拥有两项人工智能发明专利,与开发电子货币部署到微软WindowsAzure的实战经验。教学讲解深入浅出,使学员能够做到学以致用。
### 部署多节点网络
在你EOS项目的`build/programs/eosio-launcher` 目录下,有一个专门用于EOS节点启动的应用,名称为 `eosio-launcher`,下面的命令运行了两个可以相互交互的节点:

```sh
cd ~/eos/build
cp ../genesis.json ./
./programs/eosio-launcher/eosio-launcher -p2 --skip-signature
```

上面的命令将会建立两个数据目录,每个节点对应其中一个目录,目录名称分别是:`tn_data_00` 和`tn_data_01`

你可以在命令行终端中看到如下的日志输出, 日志表示系统生成了两个子进程,每个进程对应一个运行节点:

```
spawning child, programs/eosiod/eosiod --skip-transaction-signatures --data-dir tn_data_0
spawning child, programs/eosiod/eosiod --skip-transaction-signatures --data-dir tn_data_1
```

为了进一步验证这两个节点确实在正常运行,你可以使用`eosioc`客户端工具分别连接这两个节点,如下:

```
cd path-to-eos/build/programs/eosioc
./eosioc -p 8888 get info
./eosioc -p 8889 get info
```
上面的两条`eosioc` 分别连接两个节点,可以看到,这两个节点端口号分别是8888和8889,连接后,调用 `get info`命令,获取到不同节点的区块链信息。

## 在测试公网下运行
Block.One 为测试人员和开发者提供了公网测试环境,如果你已经在本地体验过EOS节点的运行,希望能够在公网下测试你的代码,那你可以把本地的EOS节点连接到公网环境,具体操作如下:

```
cd path-to-eos/build/scripts
./start_npnode.sh
```

系统编译后,会生成`start_npnode.sh` 脚本文件,此脚本其实也是调用了`eosd`程序,不过其使用的默认数据目录参数是`testnet_np`,此目录的`config.ini`文件中的设置了公网环境下p2p节点的连接地址,因此,程序启动后就会直接与公网进行连接了,这也是连接公网环境和在私有链下运行的主要区别,这行配置如下:
`p2p-peer-address = p2p-testnet1.eos.io:9876`

`p2p-testnet1.eos.io`这个域名就指向Block.One 公网环境的一个节点。`start_npnode.sh` 命令运行后,可以得到如下日志输出:

```
Launched eosd.
See testnet_np/stderr.txt for eosd output.
Synching requires at least 8 minutes, depending on network conditions.
```

如果希望了解节点运行和同步的具体情况,可以运行如下命令查看:

```
tail -F testnet_np/stderr.txt
```

当连接公网环境时,节点首先需要从公网中同步已有的区块链数据,这需要一定的时间,当你看到如下日志信息的时候,说明数据正在同步:

```
3439731ms chain_plugin.cpp:272 accept_block ] Syncing Blockchain --- Got block: #200000 time: 2017-12-09T07:56:32 producer: initu
3454532ms chain_plugin.cpp:272 accept_block ] Syncing Blockchain --- Got block: #210000 time: 2017-12-09T13:29:52 producer: initc
```

当同步全部完成后,你将看到如下的信息:

```
42467ms net_plugin.cpp:1245 start_sync ] Catching up with chain, our last req is 351734, theirs is 351962 peer ip-10-160-11-116:9876
42792ms chain_controller.cpp:208 _push_block ] initt #351947 @2017-12-12T22:59:44 | 0 trx, 0 pending, exectime_ms=0
42793ms chain_controller.cpp:208 _push_block ] inito #351948 @2017-12-12T22:59:46 | 0 trx, 0 pending, exectime_ms=0
42793ms chain_controller.cpp:208 _push_block ] initd #351949 @2017-12-12T22:59:48 | 0 trx, 0 pending, exectime_ms=0
```
## Docker 中运行
比特币没赶上?以太币没有买?你错过了成为了百万富翁的梦但是不要错失成为创造者的机会!!!每晚8点-9点半兄弟连区块链学院正式开课:http://www.ydma.cn/open/course/16 【清华学霸携全球区块链大赛冠军团队】带你实战区块链开发!!!



回复

使用道具 举报