1.安装IPFS
1.1 下载go-ipfs
官方下载网址:https://ipfs.io
本文下载版本为:go-ipfs_v0.4.15_windows-amd64.zip。
1.2 解压
下载之后将go-ipfs解压到自己的工作目录:
1.3 安装
查看帮助:
初始化安装。打开控制台进入到工作目录,执行ipfs init命令,结果如下:
此时,在固定路径会生成一个.ipfs的文件夹:
1.4 启动守护进程daemon
2.启动多个ipfs daemon进程
第一节说明了ipfs的安装和启动过程,默认情况下,ipfs会安装到C:\Users\[userName]\.ipfs目录下。
本文的测试环境需要多个(一般3个)ipfs daemon进程,怎么在windows环境下安装并启动多个ipfs daemon进程呢。
2.1 配置环境变量
进入环境变量配置界面,在“系统变量”里新建一个条目,命名“IPFS_PATH”,取值“C:\Users\lyq2018\.ipfs1”。
保存环境变量。
2.2 安装IPFS
初始化安装。打开控制台进入到工作目录,执行ipfs init命令,ipfs会自动安装到目录“C:\Users\lyq2018\.ipfs1”。
2.3 修改参数
打开目录“C:\Users\lyq2018\.ipfs1”下的文件config,修改端口参数。使得本文所需要的三个ipfs均使用不同的端口。
"Addresses": {
"Swarm": [
"/ip4/0.0.0.0/tcp/4002", //默认4001
"/ip6/::/tcp/4002" //默认4001
],
"Announce": [],
"NoAnnounce": [],
"API": "/ip4/127.0.0.1/tcp/5002", //默认5001
"Gateway": "/ip4/127.0.0.1/tcp/8082" //默认8080
},
2.4 启动守护进程daemon
D:\fileStorm\go-ipfs_v0.4.15_windows-amd64\go-ipfs>ipfs daemon
2.5 启动其他两个进程
按照以上步骤,修改变量——启动ipfs——修改参数——启动进程。启动另外两个ipfs daemon进程。
此时,目录下会存在三个ipfs。
同时启动进程后,均工作正常。
3.安装运行redis
Redis 是一个开源的、高性能的、支持网络、可基于内存亦可持久化的日志型、key-value数据库。
到官网https://redis.io/下载即可,本文使用版本为Redis-x64-3.2.100.msi。
3.1 安装
直接在windows下运行安装文件,一路默认。
即可将redis安装到目录“C:\Program Files\Redis”。
3.2 运行
打开cmd,进入目录“C:\Program Files\Redis”,运行
因为本文需要模拟三个SCS,因此,也需要启动三个redis进程与它们对应,用端口号区别它们。
启动另外两个cmd,进入目录“C:\Program Files\Redis”,分别运行
C:\Program Files\Redis>redis-server --port 6373
C:\Program Files\Redis>redis-server --port 6374
4. 运行monkey
请到墨客官方https://github.com/MOACChain/moac-core/releases下载:monkey-windows-4.0-amd64.exe。
如果下载的文件保存在“D:\fileStorm”,进入目录,运行
D:\fileStorm>monkey --listen-host-port 127.0.0.1:18082 --redis-host-port 127.0.0.1:6372 --ipfs-host-port 127.0.0.1:5002
运行结果:
运行另外两个进程:
D:\fileStorm>monkey --listen-host-port 127.0.0.1:18083 --redis-host-port 127.0.0.1:6373 --ipfs-host-port 127.0.0.1:5003
D:\fileStorm>monkey --listen-host-port 127.0.0.1:18084 --redis-host-port 127.0.0.1:6374 --ipfs-host-port 127.0.0.1:5004
5.启动SCS
5.1 启动Vnode节点
请下载官方版本Nuwa 1.0.3下的nuwa1.0.3.win.zip;本文编辑时,该版本Vnode仅限用于testnet。
解压,里面包含两部分:scs目录为普通SCS代码(fileStrom的SCS可以作为普通SCS使用,反之不可以),vnode为底层节点代码。
Vnode的配置文件vnodeconfig.json需要配置为:
{
"SCSService":true, //默认false
"ShowToPublic":false,
"VnodeServiceCfg":"localhost:50062",
"VnodeIp":"",
"VnodeBeneficialAddress":"0x7610fd66c272332edd59a43460ad24eee1973bfe"
}
启动SCS之前需要启动Vnode节点,本例为测试网本地节点。
D:\nuwa1.0.3.win\vnode>moac –testnet --rpc –rpccorsdomain "http://wallet.moac.io"
该Vnode也就是userconfig.json 中配置的VnodeServiceCfg。
5.2 下载SCS
用于fileStorm的SCS程序跟普通SCS不同,从下载页https://github.com/MOACChain/moac-core/releases下载fileStorm-scs1.0.3版程序。
解压下载的软件包到本地硬盘。目录下包含两个文件夹和一个readme文件:
说明:
5.3 配置userconfig.json
{
"VnodeServiceCfg": "localhost:50062", //scs需要连接的Vnode IP地址和端口
"DataDir": "./scsdata", //scs数据目录
"LogPath": "./_logs", //scs日志目录
"Beneficiary": "0x7610fd66c272332edd59a43460ad24eee1973bfe", //scs矿工收益账号
"VnodechainId": 101, //主链的网络号,miannet = 99,test net = 101
"Capability": 10, //服务子链的押金上限
"ReconnectInterval": 5, //设置与vnode连接的间隔,以秒为单位
"LogLevel": 3, //输出日志级别,数值越大,越详细
"FileStorm": {
"MonkeyPort": 18082 //monkey端口
},
"BondLimit":2, //需要支付的押金上限
"ReWardMin":0.0001 //子链每个区块的最小奖励金额
}
5.4 启动SCS
进入目录scs\scsserver启动scs:
D:\fileStorm-scs1.0.3\scsserver>scsserver -p "123456123456" //设定密码为“123456123456”
正常启动,新的SCS会出现如下界面:
同时会在scsserver目录下生成syskeystore目录,里面包含SCS id号,也就是账号。
按照以上步骤,复制两个干净的SCS目录——分别修改userconfig.json的MonkeyPort为18083和18084——运行scsserver,启动另外两个SCS。
5.5 启动一个SCS monitor
使用如下命令,会将SCS设置为monitor。
D:\nuwa1.0.2.win\scs\scsserver>scsserver --rpcaddr 0.0.0.0 --rpcport 2345
该SCS不出块,仅同步子链的数据,并提供调用。
6.部署子链控制合约
6.1 下载fileStorm子链合约文件
到官网下载子链控制合约文件:File Storm v1.0版下的DeploySubChainBase.sol。
6.2 部署SubChainProtocolBase
登录网页版钱包http://wallet.moac.io/,按照部署合约的步骤,点击合约\部署新合约,将DeploySubChainBase.sol合约内容复制到solidity合约代码区。
在选择合约里选“Sub Chain Protocol Base”,填入三个参数:
6.3 将SCS注册到刚刚部署的SubChainProtocolBase池子
界面使用合约Register函数,注册SCS:参数主要包括SCS id和押金数量,此处写入2mc押金。
重复以上步骤,将3个SCS均注册到池子里去。
执行交易,并完成后,SubChainProtocolBase合约将显示有6mc。
6.4 部署子链控制合约SubChainBase
跟6.2步骤一样;
登录网页版钱包http://wallet.moac.io/,按照部署合约的步骤,点击合约\部署新合约,将DeploySubChainBase.sol合约(仍然是刚才那个合约)内容复制到solidity合约代码区。
在选择合约里选“Sub Chain Base”,填入六个参数:
6.5 开放注册
使用Register Open函数功能,开放子链控制合约注册。
执行之后,可以通过左边读取合约看到实时注册情况。比如:
6.6 关闭注册
在Node count的数量达到要求后,使用Register Close函数功能,关闭子链控制合约注册。
成功关闭注册后,SCS开始出块:
其中较明显的变化是:MINE SUBCHAIN NUM的值由0变到1。代表该SCS已经为1个子链提供服务。
6.7 注册SCSMonitor
将已经启动的SCS Monitor注册到子链控制合约。
几秒钟后,该SCS Monitor的界面将进行区块同步。
并显示MONITOR SUBCHAIN NUM的值由0变到1。
本篇总结:
经过以上步骤,fileStorm的子链已经开始出块,下篇将讲解在此基础上部署和使用fileStorm的详细过程。