Skip to content

GenaroNetwork/GenaroShare_GUI

Repository files navigation

eden-share.js-gui

Share hard drive to Genaro network

Version 1.0.3

目录

简介

Genaro Eden Sharer(简称Genaro Sharer),分享者可以分享指定的存储空间,当Genaro Eden使用者上传的文件碎片存储过来时,获得对应GNX奖励;分享者进行PoS押注,并获得PoS奖励。通过共享经济原理建立通证模型,释放社会闲置存储空间并产生价值。

提前了解

开发Genaro Sharer,您需要提前了解以下基础知识:

  • 区块链
  • 智能合约
  • 以太坊
  • 共识机制PoS
  • GNX
  • web3

构建开发环境

确保您已安装以下依赖:

  • Git
  • Node.js LTS(8.x.x)
  • NPM
  • Python 2.7
  • C++编译器(Windows系统下)

编译和运行

获取源码

$ git clone https://github.com/GenaroNetwork/GenaroShare_GUI.git

安装依赖

$ npm install

运行测试

# serve with hot reload at localhost:9080
$ npm run dev

程序打包

$ npm run build

开发概述

配置

程序运行以后,相应链接路径以及一些系统变量的配置存放在src\config.js中,主要包括:

  1. BRIDGE_API_URL: 连接eden-bridge的url地址(测试机地址: http://101.132.159.197:8080 );

  2. CHECK_MAC_UPDATE_URL:检验mac版本是否为最新版本的url地址;

  3. CHECK_WIN_UPDATE_URL:检验windows版本是否为最新版本的url地址;

  4. RPC_PORT:启动和调用genaroSharer-daemon的端口,默认值45016;

以上配置,请结合实际开发环境配置。

web3配置

与web3相关的变量配置均存放在src\wallet\web3Util.js中,分为开发环境和生产环境两部分,开发环境下均可使用文件中的默认值进行开发,主要包括:

  1. web3Provider:web3 http privider;

  2. chainId:chainId(主链配置0,测试链配置3);

  3. GNXAddr:支付GNX的地址;

  4. EtherscanURL:检验以太坊交易的url路径(主链配置 https://etherscan.io/tx/ ,测试链配置 https://ropsten.etherscan.io/tx/ );

  5. EMUAddr:用户进行押注和获取收益时,使用的智能合约的地址;

新建分享默认配置

sharer用户新建分享节点后,默认的节点配置在src\lib\config.js中,同样分为开发环境和生产环境两部分,开发环境下均可使用文件中的默认值进行开发,主要包括:

  1. paymentAddress:用户支付钱包;

  2. bridges:连接eden-bridge的相关配置,默认不需要修改;

  3. rpcAddress:RPC地址,默认127.0.0.1,正常情况不需修改;

  4. rpcPort: RPC端口,默认9001或9002,正常情况不需要修改;

  5. storagePath: 用户选择的共享空间的路径;

  6. storageAllocation: 用户指定的共享空间的大小;

大部分配置都是提供genaroSharer-daemon使用的,请不要随意删除。

genaroSharer-daemon

用户所有的分享节点的启动、暂停、重启等方法都由genaroSharer-daemon库提供。 genaroSharer-daemon + CLI 是在 Genaroi Network 上面 farming 的软件, 可以独立使用,也可以用在其他的软件中(比如本软件中)。 genaroSharer-daemon 主要提供了以下接口:

start(configPath, callback):

  • configPath <String> : 需要启动的分享节点的配置文件路径;
  • callback <Function> : 接收启动是否存在错误的回调函数,有(err)参数,如果启动成功,返回null;

用于节点启动(强制需要用户先进行stake押注,否则不能启动),启动后的节点会加入到节点列表中,可使用status接口查询到所有节点的状态。

例子:

import dnode from 'dnode';

function start(configPath, cb) {
  let d = dnode.connect('45016');
  d.on('remote', (remote) => {
    remote.start(configPath, (err) => {
      if (cb) {
        cb(err);
      }
      d.end();
    });
  });
}

stop(nodeId, callback):

  • nodeId <String> : 需要暂停的分享节点的Id;
  • callback <Function> : 接收暂停过程中是否存在错误的回调函数,有(err)参数,如果暂停成功,返回null;

用于节点暂停(与destroy不同,停止的节点依旧存在于节点列表中)。

例子:

import dnode from 'dnode';

function stop(nodeId, cb) {
  let d = dnode.connect('45016');
  d.on('remote', (remote) => {
    remote.stop(nodeId, (err) => {
      if (cb) {
        cb(err);
      }
      d.end();
    });
  });
}

restart(nodeId, callback):

  • nodeId <String> : 需要重启的分享节点的Id;
  • callback <Function> : 接收重启过程中是否存在错误的回调函数,有(err)参数,如果重启成功,返回null;

用于节点重启,对于重启单个节点,效果和先调用stop再调用start一致。若传入的nodeId为*,则重启所有节点。

例子:

import dnode from 'dnode';

function restart(nodeId, cb) {
  let d = dnode.connect('45016');
  d.on('remote', (remote) => {
    remote.restart(nodeId, (err) => {
      if (cb) {
        cb(err);
      }
      d.end();
    });
  });
}

status(callback):

  • callback <Function> : 接收查询状态过程中是否存在错误的回调函数,有(err, status)参数,如果重启成功,err返回null,status返回所有节点状态的数组;

用于查看所有节点状态。

例子:

import dnode from 'dnode';

function status(cb) {
  let d = dnode.connect('45016');
  d.on('remote', (remote) => {
    remote.status((err, statuses) => {
      if (cb) {
        cb(err, statuses);
      }
      d.end();
    });
  });
}

killall(callback):

  • callback <Function> : 调用结束所有节点进程的回调函数,无返回参数;

用于结束所有节点,并停止genaroSharer-daemon进程。

例子:

import dnode from 'dnode';

function killall(cb) {
  let d = dnode.connect('45016');
  d.on('remote', (remote) => {
    remote.killall(nodeId, () => {
      if (cb) {
        cb();
      }
      d.end();
    });
  });
}

destroy(nodeId, callback):

  • nodeId <String> : 需要移除的分享节点的Id;
  • callback <Function> : 接收移除过程中是否存在错误的回调函数,有(err)参数,如果暂停成功,返回null;

用于停止节点,并从列表中移除(移除操作并不会删除该节点的配置文件)。

例子:

import dnode from 'dnode';

function destroy(nodeId, cb) {
  let d = dnode.connect('45016');
  d.on('remote', (remote) => {
    remote.destroy(nodeId, (err) => {
      if (cb) {
        cb(err);
      }
      d.end();
    });
  });
}

checkReward(nodeId, callback):

  • nodeId <String> : 需要查询节点收益的节点Id;
  • callback <Function> : 接收查询过程中是否存在错误的回调函数,有(err, data)参数,如果查询成功,err返回null,data返回该节点收益状况的json对象。

用于查询节点的收益。

例子:

import dnode from 'dnode';

function checkReward(nodeId, cb) {
  let d = dnode.connect('45016');
  d.on('remote', (remote) => {
    remote.checkReward(nodeId, (err, data) => {
      if (cb) {
        cb(err, data);
      }
      d.end();
    });
  });
}

getReward(nodeId, callback):

  • nodeId <String> : 需要获取节点收益的节点Id;
  • callback <Function> : 接收获取过程中是否存在错误的回调函数,有(err, data)参数,如果查询成功,err返回null,data返回收益结果的json对象。

用于获取节点收益(获取的收益存放在用户新建节点是押注所使用的钱包中)。

例子:

import dnode from 'dnode';

function getReward(nodeId, cb) {
  let d = dnode.connect('45016');
  d.on('remote', (remote) => {
    remote.getReward(nodeId, (err, data) => {
      if (cb) {
        cb(err, data);
      }
      d.end();
    });
  });
}

官方网站


This project was generated with electron-vue@1c165f7 using vue-cli. Documentation about the original structure can be found here.

GenaroShare_GUI

GenaroShare_GUI