FISCO技术文档提供1个4节点的网络案例,这4个节点构成1个强连通图。强连通图在现实中通常是不存在的。 本文用FISCO架设1个网络,该网络由100个节点构成1个无标度(scale free)网络,如下图所示。
1 用FISCO工具构建1个100节点的初始网络
FISCO提供1个Shell脚本,用于构建初始网络,完整的脚本如下。
./build_chain.sh -l localhost:100 -p 30300,20200,8545 -o ./scalefree
执行完毕上述脚本之后,新生成1个目录scalefree,见下图。其中2个freeScaleNetwork文件,不是FISCO生成的,是本文创建的无标度网络,在网盘资源中可下载。可按图中提示,验证FISCO的版本,节点个数。
再来看一看FISCO初始网络的节点连通性,随便打开1个节点的配置文件config.ini,见下图。很明显,又是1个强连通图,每个节点都与其他99个节点有连接。
2 建立无标度网络
从网盘资源中下载文件,见下图所示。最关键的是其中1和3。
1:无标度网络配置文件
2:无标度网络配置文件,和上面1个是一样的,这个是邻接矩阵表示
3:本文的脚本,修改100个节点的P2P网络连接,使之构成无标度网络
4:FISCO构建初始化网络的脚本
在指定目录执行本文脚本,见下图。脚本代码如下。
#!/bin/bash
LINE=$'\n'
SEMICOLON=";"
OLD_IFS="$IFS"
i=1
listen_port=30300
IFS=$LINE
for line in `cat ./freeScaleNetwork.csv`
do
sed -i '11,110d' ./localhost/node$[$i-1]/config.ini
IFS=$SEMICOLON
neighbor=""
nblist=$neighbor
j=11
for item in $line
do
neighbor=" node.$[$item-1]=localhost:$[$item-1+$listen_port]"
nblist=$nblist$neighbor
sed -i "$[$j]i $neighbor" ./localhost/node$[$i-1]/config.ini
sed -i ''"$j"'s/^/& /g' ./localhost/node$[$i-1]/config.ini
let "j=$j+1"
done
let "i=$i+1"
IFS=$LINE
done
IFS="$OLD_IFS"
执行完毕后,再看看节点的配置文件config.ini。很明显,不再是强连接图。
接下来,启动这个无标度网络,见下图。由于100个节点,就100个进程啊,这时风扇狂响。本虚拟机设置了8G内存。