• 注册
  • 开发教程 开发教程 关注:22 内容:62

    墨客区块链部署FileStorm

  • 查看作者
  • 打赏作者
  • 拉黑名单
    • 开发教程
    • 大版主
      墨客战士

      本篇用到的软件版本下载地址:https://github.com/MOACChain/FileStorm/releases

      1.1 下载go-ipfs

      本文下载版本为:go-ipfs_v0.4.15_windows-amd64.zip

      下载之后将go-ipfs解压到自己的工作目录:

      1.3 安装

      墨客区块链部署FileStorm

      墨客区块链部署FileStorm

      墨客区块链部署FileStorm

      墨客区块链部署FileStorm

      第一节说明了ipfs的安装和启动过程,默认情况下,ipfs会安装到C:\Users\[userName]\.ipfs目录下。

      2.1 配置环境变量

      墨客区块链部署FileStorm

      2.2 安装IPFS

      墨客区块链部署FileStorm

      打开目录“C:\Users\lyq2018\.ipfs1”下的文件config,修改端口参数。使得本文所需要的三个ipfs均使用不同的端口。

          "Swarm": [

            "/ip6/::/tcp/4002"                 //默认4001

          "Announce": [],

          "API": "/ip4/127.0.0.1/tcp/5002",    //默认5001

        },

      D:\fileStorm\go-ipfs_v0.4.15_windows-amd64\go-ipfs>ipfs daemon

      按照以上步骤,修改变量——启动ipfs——修改参数——启动进程。启动另外两个ipfs daemon进程。

      墨客区块链部署FileStorm

      墨客区块链部署FileStorm

      Redis 是一个开源的、高性能的、支持网络、可基于内存亦可持久化的日志型、key-value数据库。

      3.1 安装

      墨客区块链部署FileStorm

      墨客区块链部署FileStorm

      打开cmd,进入目录“C:\Program Files\Redis”,运行

      因为本文需要模拟三个SCS,因此,也需要启动三个redis进程与它们对应,用端口号区别它们。

      C:\Program Files\Redis>redis-server  --port 6373

      4. 运行monkey

      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

      墨客区块链部署FileStorm

      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

      5.启动SCS

      请下载官方版本Nuwa 1.0.3下的nuwa1.0.3.win.zip;本文编辑时,该版本Vnode仅限用于testnet。

      Vnode的配置文件vnodeconfig.json需要配置为:

        "SCSService":true,                  //默认false

        "VnodeServiceCfg":"localhost:50062",

        "VnodeBeneficialAddress":"0x7610fd66c272332edd59a43460ad24eee1973bfe"

      启动SCS之前需要启动Vnode节点,本例为测试网本地节点。

      该Vnode也就是userconfig.json 中配置的VnodeServiceCfg。

      从官网下载的节点文件包含一个scs目录,里面有两个文件scsserver.exe和userconfig.json,分别是scs执行程序和配置程序。

      5.3 配置userconfig.json 

      {

          "DataDir": "./scsdata",                                      //scs数据目录

          "Beneficiary": "0x7610fd66c272332edd59a43460ad24eee1973bfe", //scs矿工收益账号

          "Capability": 10,                                            //服务子链的押金上限

          "LogLevel": 3,                                               //输出日志级别,数值越大,越详细

              "MonkeyPort": 18082                                      //monkey端口

          "BondLimit":2,                                               //需要支付的押金上限

      }

      进入目录scs\scsserver启动scs:

      D:\fileStorm-scs1.0.3\scsserver>scsserver -p "123456123456"   //设定密码为“123456123456”

      墨客区块链部署FileStorm

      按照以上步骤,复制两个干净的SCS目录——分别修改userconfig.json的MonkeyPort为18083和18084——运行scsserver,启动另外两个SCS。

      使用如下命令,会将SCS设置为monitor。

      该SCS不出块,仅同步子链的数据,并提供调用。

      6.1 下载fileStorm子链合约文件

      6.2 部署SubChainProtocolBase

      墨客区块链部署FileStorm

      Protocol = filestorm-test;          \\共识协议

      protocol type = 1;                      \\协议类型,0为普通SCS子链,1为fileStorm

      界面使用合约Register函数,注册SCS:参数主要包括SCS id和押金数量,此处写入2mc押金。

      重复以上步骤,将3个SCS均注册到池子里去。

      墨客区块链部署FileStorm

      跟6.2步骤一样;

      在选择合约里选“Sub Chain Base”,填入六个参数:

      Vnode protocol base addr = “0x5B43583F33214c790B8206D9B06685c49A1DB455”;                                                    \\此处选择一个官方提供的Vnode 协议合约地址

      Max  = 10;                                                 \\最多SCS个数

      Flush round = 100;                                    \\子链刷新周期

      6.5 开放注册

      墨客区块链部署FileStorm

      墨客区块链部署FileStorm

      在Node count的数量达到要求后,使用Register Close函数功能,关闭子链控制合约注册。

      成功关闭注册后,SCS开始出块:

      其中较明显的变化是:MINE SUBCHAIN NUM的值由0变到1。代表该SCS已经为1个子链提供服务。

      将已经启动的SCS Monitor注册到子链控制合约。

      几秒钟后,该SCS Monitor的界面将进行区块同步。

      并显示MONITOR SUBCHAIN NUM的值由0变到1。

      经过以上步骤,fileStorm的子链已经开始出块。

      存储提供方: 存储提供方将会提供用于存储的硬件设备,如带大容量硬盘的电脑,或者订制的硬件盒子。设备需要安装FileStorm程序,用来链接墨客FileStorm子链,和IPFS网络。为FileStorm提供存储可以得到收益,就是俗称的存储挖矿。

      存储使用者:存储的使用者通过使用应用部署方部署的应用来存储和读取文件。存储使用者无需为使用FileStorm付费。但是可能要承担使用应用的费用。

      1.1 下载合约

      1.2 部署该合约到已经正常出块的子链

      MicroChain Base Address:在里面填上子链控制合约的地址;

      SCS Monitor Port:SCS Monitor启动端口。

      墨客区块链部署FileStorm

      墨客区块链部署FileStorm

      墨客区块链部署FileStorm

      合约信息会显示SCS monitor的地址和端口;


      2.把文件存入fileStorm

        注意区分fileStorm的存储提供方和使用者的不同:前面的ipfs节点都运行在存储提供方的设备scs上,此处的节点是存储使用者为了方便操作建立的。本文把所有操作在同一台主机进行,也就是说做了存储提供方、部署方和使用者的所有工作。

        修改环境变量IPFS_PATH的值为C:\Users\1\.ipfs6;

        接着运行:ipfs daemon。

        新建一个测试文件,比如test.txt;并在里面写入内容。

        C:\go-ipfs_v0.4.15_windows-amd64\go-ipfs>ipfs add test.txt

        墨客区块链部署FileStorm

        2.3 将文件写入fileStorm

        墨客区块链部署FileStorm

        如果顺利执行,会在monkey界面有相应动作,并且子链的三个scs均会保存文件test.txt。

        在2.2节,待保存到fileStorm的文件在执行ipfs add命令之后会加入到本地ipfs并返回一个hash值。

        使用npm命令安装ethereumjs-bin功能模块:

        使用如下代码将文件hash转换为十六进制代码,保存为文件toHex.js,直接node即可。

        var original = 'QmQNe96LqV5TcRQyBz12iQXPZQjemBqkgnpHki3wmKjtd6';

        console.log('original', original);

        下图为2个不同文件hash的实际运行结果:

        3.2 写(write)文件

        // write(fileHash)

        {

          value:chain3.toSha('0','mc'),

          gas: "200000",

          shardingflag: 1,

          nonce: 1,

        });

        to: subchainbaseaddress是SubChainBase合约地址,必须由应用项目方提供,此处用前面测试得到的地址;

        nonce:每次调用要把nonce手动加1;

        调用结果:IPFS文件被存到FileStorm子链的每一个节点上,文件Hash值被改变。

        以下代码用于读文件。

        chain3.mc.sendTransaction(

          from: mc.accounts[0],

          to: subchainbaseaddress,

          gasPrice: chain3.mc.gasPrice,

          data: '0x616ffe83000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002e'

          via: mc.accounts[0]

        调用结果:FileStorm子链的每一个节点上都会出现原始Hash值的原文件。(会在24小时后自动删除)。

        以下代码用于删除文件。

        chain3.mc.sendTransaction(

          from: mc.accounts[0],

          to: subchainbaseaddress,

          gasPrice: chain3.mc.gasPrice,

          data: '0x80599e4b000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002e'

          via: mc.accounts[0]

        调用结果:IPFS文件会从FileStorm子链的每一个节点上被删除。

        请登录之后再进行评论

        登录
      1. 做任务
      2. 实时动态
      3. 偏好设置
      4. 返回顶部
      5. 帖子间隔 侧栏位置: