JCCDex / ProjectFundingProposal

Jingtum & MOAC Project Funding Proposal
28 stars 8 forks source link

PFP33 墨客子链工具JavaScript集合 #55

Open ApisChen opened 4 years ago

ApisChen commented 4 years ago

将墨客子链相关操作脚本化,并提供详细说明文档。用于丰富子链开发生态,方便开发者使用子链,也方便子链项目方私有化部署子链。

子链工具集完成的功能如表格所示,有些是功能已经开发完成,需要从其他开源代码中抽出并文档化,如vnode池、scs池相关操作,有些功能实现有难度,需子链开发方协助完成,如节点软件版本管理、scs performance等。

合计工作量50人日,项目开始便建立仓库,完成一个功能上传更新一个,预计总周期三个月。 子链js工具.pdf

foreso-GitHub commented 4 years ago

ApisChen好,看了下pdf,有一些问题需要讨论一下:

  1. 麻烦给出单项工作的工作量估计。
  2. vnode节点的版本升级是什么样的功能?需要解释得更清楚一些。
  3. 创建vnode节点持和scs节点池、登记vnode和scs,不就是一键发链的功能吗?应该都已经实现了。
  4. 子链监控模块在列表中的现状显示都已经实现,还需要工作量吗?
  5. 子链数据备份和恢复的功能请解释得更详细一些。
  6. 不太理解子链扩展性模块需要做什么。如果是添加scs节点到节点池,不是在scs监控和工具模块中已经有了吗?如果是从节点池选节点到子链,还有表现不好的节点扣除押金、被踢出子链,这些功能是子链底层已经实现的,这里到底还需要做什么? 谢谢。 @ApisChen
Yelvabaoji commented 4 years ago

我补充一下。

总体上,我们需要一个工具集,有两个目的,第一是为学习的人,提供比较清晰的样例。现在的deployASM 和deplyAST这些,注释不够清晰,详细,各种用词不同就会阻碍很多人或者让人学的时候花很多力气。走过一遍的人可能会觉得没有什么。第二,对于项目来说,我们现在还没有拿得出手的,甚至于有点像样的运维工具。那么这个工具集就是一个雏形。 至于工具长什么样,现在还不知道,最简单,对码农比较顺手的是单个的js可运行程序。比如说,我用deployASM做了一键发链,那么我把链给down了,下一次我用的时候,不想从头开始,而是用前一次的节点,因为这些节点已经充值完成了,vnode节点池也有了,scs节点池也有了。那么最好的选择,就是运行deploySubchain.js, 然后运行startupSubChain.js 1, vnode节点升级,这里还不清楚具体会碰到什么事,也许是不需要的。具体来说,如果项目方有一条子链,包括4个vnode节点,12个scs节点,现在墨客出来个新版本,必须要升级 - 那么这么升级?顺序是怎么样的?需不需要工具,如果不需要工具,也需要一个文档来说明这个流程。 2,创建vnode节点池,登记 vnode, scs,这些功能,我是实际碰到过的,因为不清楚,所以当我的链done了以后,就是从头开始一键发链的。实际上,我个人希望,从需要开始的地方开始。比如说,我想单独创建一个vnode节点池 - 我当然可以从一键发链里面截取这部分代码。在这里我就希望有独立的做好的createVnodePool.js, createSCSPool.js, regVnodeToPool.js, regScsPool.js这样的工具 - 已经验证过的,肯定正确的工具。因为如果用户自己去截取,做出来如果做不成功,那是完全懵逼的状态。 3,子链监控现在最大的问题,在于SCS节点的健康程度。通过log可以得知,有些SCS的performance比另外一些要好,比如说我添加一个monitor,开始同步数据,那么其中一些节点performance=5, 有一些performance=1。那么不知道有没有办法来获得各个节点的performance情况。也许有,也许没有。 4,子链数据备份和数据恢复,就是如果出现什么问题,乱块了,分叉了,或者什么情况出现了,有什么办法来恢复数据。如果我有几百万,甚至几千万在一条链上,链出问题了,怎么办?至少在工具,流程层面,需要系统性地考虑这些问题,提供一定的工具。这些问题,不去推进,永远会没有答案的。因为这是真实的,人家问这类问题了。 5,子链可扩展性一样,看起来现在什么都有,如果我们和项目方说,我们什么都有,你去功能模块里自己看吧(实际现实情况就是这样),逼到没有办法的当然自己去学去开发,然后另外一个团队一样的问题。其实这些也不难,就是整出完整的工具来,加上清晰的注解和说明。至少是个雏形。

Yelvabaoji commented 4 years ago

备注,以上小工具需要做完整的测试,希望把测试方式,策略写在里面。最完整的测试实际需要很多准备工作。 1,单机版 (测试链) 2,双机版 (2个或多个vnode,测试链) 3,生态节点池(生产链)

Yelvabaoji commented 4 years ago

那么以我自己做deploySubChain和startupSubChain来做例子。花了我至少4个小时(实际上后来就没有做成功,那么别人也有这种问题存在,而出现这类问题,要寻求帮助是比较困难的),一直怀疑是什么地方没有写对。那如果有独立的,已经验证过的工具,很直接就把可能造成问题的很多没有做对的因素给去除掉了。

foreso-GitHub commented 4 years ago

社区群中的一些讨论记录(20191226)

【技术委员会】foreso(foreso@qq.com) 9:46:10 @陈峰 @野驴阿保机 早,在issue上提了一些问题,麻烦看一下哈,谢谢。

【活跃】陈峰(664839088) 11:52:53 @foreso 不一一回答了哈,这个提案主要从子链商业化角度考虑的,用于项目方用子链进行项目开发和维护的一些工具,目前这些功能大部分已经实现了,不过都比较零散在各种项目里,没有一个统一的入口去寻找这些工具,还有这些工具开源的文档不是很完善,项目方学习成本比较高。 在这个基础上,发起了这个项目申请,目的是将这些功能通过一个个js实现,并给出详细的说明文档,节约项目方对接成本。 工作量这块,不是单纯按照开发来评估的,主要是文档编写和改版工作,这是个持续的工作,最终效果是只要项目方照着文档来,就能完成功能。计划是三个月周期完成文档初版本和一次改版工作,预计工作量50日。

【活跃】陈峰(664839088) 11:53:05 @野驴阿保机

【技术委员会】野驴阿保机(1547377535) 12:36:12 @foreso 我在项目下面添加了说明。

【技术委员会】foreso(foreso@qq.com) 12:46:50 @陈峰 @野驴阿保机 就是说除了代码,这个项目另一个主要的产出物是详细的说明文档,来帮助项目方更方便地理解和使用墨客。工作量很大一部分是这些文档的编写。但子链扩展性模块到底要做什么,我还是不确定。是说如何往子链里(不是scs节点池)增加和移出一个节点吗?

【技术委员会】foreso(foreso@qq.com) 12:49:40 如果是这样,这个功能直接放在scs监控和工具里好像更合适。

【技术委员会】野驴阿保机(1547377535) 12:56:51 扩展性就是增加和删除节点。包括V和SCS。那么,但是我还提了另外一种可能性。就是说,比如说我现在在生态节点池搭了链,开发也好,试运行也好,后面,比如说3个月以后,我希望切换去自己的节点,变成用自己节点的链--这个看起来有点难度

【技术委员会】foreso(foreso@qq.com) 13:00:22 理论上可以做到,把vnode池和scs池里的节点全替换成自己的节点就行。但这个不会是一个通用需求。

【技术委员会】野驴阿保机(1547377535) 13:01:03 扩展的另外一方面是和数据量和处理能力有关。有些可能没法停,开始用的节点比较差,后面数据跑出来,当然希望机器一点一点一批一批升级,比如说从2CPU升级到4CPU(同时考虑到价格下降趋势)

【技术委员会】foreso(foreso@qq.com) 13:01:31 另外你说子链可以增加不是scs池里的节点?

【技术委员会】野驴阿保机(1547377535) 13:01:35 所以这个替换过程应该是直接有需求的

【技术委员会】野驴阿保机(1547377535) 13:03:06 可以的和有,或者是说10支队伍能够做,是两个概念。其实我是仔细问了,这些技术上基本上都可以,要不然也不会动脑筋弄工具集

AnFengDe commented 4 years ago

https://github.com/JCCDex/jcc-moac-tool 所有和节点交互的,这个工具全部一条指令就能搞好,所以我理解需要利用这个工具做个指令集合的说明

foreso-GitHub commented 4 years ago

项目表决通过,委员会评估项目工作量为一个人月。 另外有一个建议:写好文档不容易,但是让开发写出好文档也不容易, 不管哪种方式,最好文档更新到 readthedocs 或者网站上, 不是只在github中。 遇到问题可以随时和我们沟通。加油! @ApisChen

AnFengDe commented 4 years ago

支付记录

Yelvabaoji commented 4 years ago

这个项目还在做吗?进度如何?

lospringliu commented 4 years ago

@ApisChen , 报告一下进度

zhinan commented 4 years ago

@ApisChen ,进度如何