{"id":21813951,"url":"https://github.com/genaronetwork/genaroshare_gui","last_synced_at":"2025-04-13T23:45:38.555Z","repository":{"id":91573412,"uuid":"116542025","full_name":"GenaroNetwork/GenaroShare_GUI","owner":"GenaroNetwork","description":null,"archived":false,"fork":false,"pushed_at":"2018-06-26T02:58:56.000Z","size":964,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-03-27T13:51:20.643Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GenaroNetwork.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-01-07T06:06:14.000Z","updated_at":"2018-06-26T01:44:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"24837cbc-a306-4624-be4a-e872dfda0904","html_url":"https://github.com/GenaroNetwork/GenaroShare_GUI","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GenaroNetwork%2FGenaroShare_GUI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GenaroNetwork%2FGenaroShare_GUI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GenaroNetwork%2FGenaroShare_GUI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GenaroNetwork%2FGenaroShare_GUI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GenaroNetwork","download_url":"https://codeload.github.com/GenaroNetwork/GenaroShare_GUI/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248799689,"owners_count":21163398,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-27T14:34:32.632Z","updated_at":"2025-04-13T23:45:38.546Z","avatar_url":"https://github.com/GenaroNetwork.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\u003ch1 align=\"center\"\u003eeden-share.js-gui \u003c/h1\u003e\n\u003ch2 align=\"center\"\u003eShare hard drive to Genaro network\u003c/h2\u003e\n\u003ch4 align=\"center\"\u003eVersion 1.0.3 \u003c/h4\u003e\n\n## 目录\n\n* [简介](#简介)\n* [提前了解](#提前了解)\n* [构建开发环境](#构建开发环境)\n* [编译和运行](#编译和运行)\n  * [获取源码](#获取源码)\n  * [安装依赖](#安装依赖)\n  * [运行测试](#运行测试)\n  * [程序打包](#程序打包)\n* [开发概述](#开发概述)\n  * [系统配置](#系统配置)\n  * [web3配置](#web3配置)\n  * [新建分享默认配置](#新建分享默认配置)\n  * [genaroSharer-daemon](#genaroSharer-daemon)\n* [官方网站](#官方网站)\n\n# 简介\n\nGenaro Eden Sharer（简称Genaro Sharer），分享者可以分享指定的存储空间，当Genaro Eden使用者上传的文件碎片存储过来时，获得对应GNX奖励；分享者进行PoS押注，并获得PoS奖励。通过共享经济原理建立通证模型，释放社会闲置存储空间并产生价值。\n\n# 提前了解\n\n开发Genaro Sharer，您需要提前了解以下基础知识：\n\n* 区块链\n* 智能合约\n* 以太坊\n* 共识机制PoS\n* GNX\n* [web3](http://web3.tryblockchain.org)\n\n# 构建开发环境\n\n确保您已安装以下依赖：\n\n* Git\n* Node.js LTS(8.x.x)\n* NPM\n* Python 2.7\n* C++编译器（Windows系统下）\n\n# 编译和运行\n## 获取源码\n\n```shell\n$ git clone https://github.com/GenaroNetwork/GenaroShare_GUI.git\n```\n\n## 安装依赖\n\n```shell\n$ npm install\n```\n\n## 运行测试\n\n```shell\n# serve with hot reload at localhost:9080\n$ npm run dev\n```\n\n## 程序打包\n\n```shell\n$ npm run build\n```\n\n# 开发概述\n\n## 配置\n\n程序运行以后，相应链接路径以及一些系统变量的配置存放在`src\\config.js`中，主要包括：\n\n1. BRIDGE_API_URL: 连接eden-bridge的url地址（测试机地址： http://101.132.159.197:8080 ）；\n\n2. CHECK_MAC_UPDATE_URL：检验mac版本是否为最新版本的url地址；\n\n3. CHECK_WIN_UPDATE_URL：检验windows版本是否为最新版本的url地址；\n\n4. RPC_PORT：启动和调用genaroSharer-daemon的端口，默认值45016；\n\n以上配置，请结合实际开发环境配置。\n\n## web3配置\n\n与web3相关的变量配置均存放在`src\\wallet\\web3Util.js`中，分为开发环境和生产环境两部分，开发环境下均可使用文件中的默认值进行开发，主要包括：\n\n1. web3Provider：web3 http privider；\n\n2. chainId：chainId（主链配置0，测试链配置3）；\n\n3. GNXAddr：支付GNX的地址；\n\n4. EtherscanURL：检验以太坊交易的url路径（主链配置 https://etherscan.io/tx/ ，测试链配置 https://ropsten.etherscan.io/tx/ ）；\n\n5. EMUAddr：用户进行押注和获取收益时，使用的智能合约的地址；\n\n## 新建分享默认配置\n\nsharer用户新建分享节点后，默认的节点配置在`src\\lib\\config.js`中，同样分为开发环境和生产环境两部分，开发环境下均可使用文件中的默认值进行开发，主要包括：\n\n1. paymentAddress：用户支付钱包；\n\n2. bridges：连接eden-bridge的相关配置，默认不需要修改；\n\n3. rpcAddress：RPC地址，默认127.0.0.1，正常情况不需修改；\n\n4. rpcPort： RPC端口，默认9001或9002，正常情况不需要修改；\n\n5. storagePath： 用户选择的共享空间的路径；\n\n6. storageAllocation： 用户指定的共享空间的大小；\n\n大部分配置都是提供genaroSharer-daemon使用的，请不要随意删除。\n\n## genaroSharer-daemon\n\n用户所有的分享节点的启动、暂停、重启等方法都由genaroSharer-daemon库提供。\ngenaroSharer-daemon + CLI 是在 Genaroi Network 上面 farming 的软件, 可以独立使用，也可以用在其他的软件中（比如本软件中）。\ngenaroSharer-daemon 主要提供了以下接口：\n\n### start(configPath, callback)：\n- `configPath` \u0026lt;String\u0026gt; : 需要启动的分享节点的配置文件路径；\n- `callback` \u0026lt;Function\u0026gt; : 接收启动是否存在错误的回调函数，有`(err)`参数，如果启动成功，返回null；\n\n用于节点启动（强制需要用户先进行stake押注，否则不能启动），启动后的节点会加入到节点列表中，可使用`status`接口查询到所有节点的状态。\n\n例子：\n```\nimport dnode from 'dnode';\n\nfunction start(configPath, cb) {\n  let d = dnode.connect('45016');\n  d.on('remote', (remote) =\u003e {\n    remote.start(configPath, (err) =\u003e {\n      if (cb) {\n        cb(err);\n      }\n      d.end();\n    });\n  });\n}\n\n```\n\n### stop(nodeId, callback)：\n- `nodeId` \u0026lt;String\u0026gt; : 需要暂停的分享节点的Id；\n- `callback` \u0026lt;Function\u0026gt; : 接收暂停过程中是否存在错误的回调函数，有`(err)`参数，如果暂停成功，返回null；\n\n用于节点暂停（与destroy不同，停止的节点依旧存在于节点列表中）。\n\n例子：\n```\nimport dnode from 'dnode';\n\nfunction stop(nodeId, cb) {\n  let d = dnode.connect('45016');\n  d.on('remote', (remote) =\u003e {\n    remote.stop(nodeId, (err) =\u003e {\n      if (cb) {\n        cb(err);\n      }\n      d.end();\n    });\n  });\n}\n\n```\n\n### restart(nodeId, callback)：\n- `nodeId` \u0026lt;String\u0026gt; : 需要重启的分享节点的Id；\n- `callback` \u0026lt;Function\u0026gt; : 接收重启过程中是否存在错误的回调函数，有`(err)`参数，如果重启成功，返回null；\n\n用于节点重启，对于重启单个节点，效果和先调用stop再调用start一致。若传入的nodeId为`*`，则重启所有节点。\n\n例子：\n```\nimport dnode from 'dnode';\n\nfunction restart(nodeId, cb) {\n  let d = dnode.connect('45016');\n  d.on('remote', (remote) =\u003e {\n    remote.restart(nodeId, (err) =\u003e {\n      if (cb) {\n        cb(err);\n      }\n      d.end();\n    });\n  });\n}\n\n```\n\n### status(callback)：\n- `callback` \u0026lt;Function\u0026gt; : 接收查询状态过程中是否存在错误的回调函数，有`(err, status)`参数，如果重启成功，`err`返回null，`status`返回所有节点状态的数组；\n\n用于查看所有节点状态。\n\n例子：\n```\nimport dnode from 'dnode';\n\nfunction status(cb) {\n  let d = dnode.connect('45016');\n  d.on('remote', (remote) =\u003e {\n    remote.status((err, statuses) =\u003e {\n      if (cb) {\n        cb(err, statuses);\n      }\n      d.end();\n    });\n  });\n}\n\n```\n\n### killall(callback)：\n- `callback` \u0026lt;Function\u0026gt; : 调用结束所有节点进程的回调函数，无返回参数；\n\n用于结束所有节点，并停止genaroSharer-daemon进程。\n\n例子：\n```\nimport dnode from 'dnode';\n\nfunction killall(cb) {\n  let d = dnode.connect('45016');\n  d.on('remote', (remote) =\u003e {\n    remote.killall(nodeId, () =\u003e {\n      if (cb) {\n        cb();\n      }\n      d.end();\n    });\n  });\n}\n\n```\n\n### destroy(nodeId, callback)：\n- `nodeId` \u0026lt;String\u0026gt; : 需要移除的分享节点的Id；\n- `callback` \u0026lt;Function\u0026gt; : 接收移除过程中是否存在错误的回调函数，有`(err)`参数，如果暂停成功，返回null；\n\n用于停止节点，并从列表中移除（移除操作并不会删除该节点的配置文件）。\n\n例子：\n```\nimport dnode from 'dnode';\n\nfunction destroy(nodeId, cb) {\n  let d = dnode.connect('45016');\n  d.on('remote', (remote) =\u003e {\n    remote.destroy(nodeId, (err) =\u003e {\n      if (cb) {\n        cb(err);\n      }\n      d.end();\n    });\n  });\n}\n\n```\n\n### checkReward(nodeId, callback)：\n- `nodeId` \u0026lt;String\u0026gt; : 需要查询节点收益的节点Id；\n- `callback` \u0026lt;Function\u0026gt; : 接收查询过程中是否存在错误的回调函数，有`(err, data)`参数，如果查询成功，`err`返回null，`data`返回该节点收益状况的json对象。\n\n用于查询节点的收益。\n\n例子：\n```\nimport dnode from 'dnode';\n\nfunction checkReward(nodeId, cb) {\n  let d = dnode.connect('45016');\n  d.on('remote', (remote) =\u003e {\n    remote.checkReward(nodeId, (err, data) =\u003e {\n      if (cb) {\n        cb(err, data);\n      }\n      d.end();\n    });\n  });\n}\n\n```\n\n### getReward(nodeId, callback)：\n- `nodeId` \u0026lt;String\u0026gt; : 需要获取节点收益的节点Id；\n- `callback` \u0026lt;Function\u0026gt; : 接收获取过程中是否存在错误的回调函数，有`(err, data)`参数，如果查询成功，`err`返回null，`data`返回收益结果的json对象。\n\n用于获取节点收益（获取的收益存放在用户新建节点是押注所使用的钱包中）。\n\n例子：\n```\nimport dnode from 'dnode';\n\nfunction getReward(nodeId, cb) {\n  let d = dnode.connect('45016');\n  d.on('remote', (remote) =\u003e {\n    remote.getReward(nodeId, (err, data) =\u003e {\n      if (cb) {\n        cb(err, data);\n      }\n      d.end();\n    });\n  });\n}\n\n```\n\n# 官方网站\n\n- https://genaro.network/\n\n---\n\nThis project was generated with [electron-vue](https://github.com/SimulatedGREG/electron-vue)@[1c165f7](https://github.com/SimulatedGREG/electron-vue/tree/1c165f7c5e56edaf48be0fbb70838a1af26bb015) using [vue-cli](https://github.com/vuejs/vue-cli). Documentation about the original structure can be found [here](https://simulatedgreg.gitbooks.io/electron-vue/content/index.html).\n# GenaroShare_GUI\n# GenaroShare_GUI\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgenaronetwork%2Fgenaroshare_gui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgenaronetwork%2Fgenaroshare_gui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgenaronetwork%2Fgenaroshare_gui/lists"}