“ NEO旨在为开发者提供最优的开发体验和后续保障,在NEO DevCon2019上,NGD研发总监林鹏涛就《NEO Quality Assurance》做了主题分享,并对其演讲进行了书面化整理,发布了最新的博客,从协议、网络、社区三个层面解读了NEO质量保障工作。 ”
以下为林鹏涛博客内容
我在NEO Devcon 2019上的演讲是关于NEO的质量保障。
我将从3个方面介绍我们为提高NEO质量所做的工作:协议,网络,社区。
协议
那么如何提高NEO协议的质量呢?让我们先做头脑风暴。
我记得曾经有一位非常有名的化学家,他说,“如果你想要得到一个好想法,你需要有很多备选想法”。它给了我很多启发。这就是我们去年在github上发布“如何成为NEO核心开发人员”的原因。它向人们展示了如何成为NEO的核心开发者。张铮文甚至自己设计了一个工具来计算NEO核心开发人员的激励。
这是我在加密世界中见过的第一个自动激励分配工具。值得说明的是它是由NEO的创始人张铮文编写的,我认为可以为社区开发人员提供大量的鼓励来加入NEO协议的开发。
我们现在有了大量的开发人员,针对于他们下一个重要的事情是什么?我认为是安全性。无论我们拥有多少开发人员,安全性始终是我们构建软件时需要考虑的第一件事。这就是为什么我们有发起一个Bounty Program。在我们发布NEO Vulnerability Bounty Program之后,我们从社区获得了至少10个关键安全报告。我非常感谢这些参与者,他们是NEO生态系统的守护者。
当我们有足够的开发人员时,我们需要考虑的下一件事是如何使它们协同工作。这关乎于项目管理。当我们向前推进时,我们发现仍然有两件事是缺少的,它们是版本控制和分支策略。
这两件事并不是很复杂的话题,在版本控制方面,我们有很好的参考资料,那就是Tom Preston-Werner所编写的语义版本规范。
第二件事是分支策略,我们同样有很好的资料可以参考,Vincent Driessenn写过一个非常成功的Git分支模型,我用这个模型很多年了,它方便易用。然而,这两件事我们虽然都讨论过,但是并没有在开发者中达成普遍共识,我们需要尽快敲定以确保开发者能够更快更好的协作。
在能够使开发者进行良好的协作后,下一件重要的事情是设定一个目标,所以,我们的目标是什么?数显,我们需要定义我们的产品,然后我们需要了解具备哪些功能可以使它成为一个合格的产品。
目前Neo-Cli是最重要的产品,它由三个项目组成,NEO的协议、NeoVM也就是NEO的虚拟机、Neo-Plugins。这三部分使Neo-Cli成为了保障NEO协议质量的最重要产品。
主要的两个功能室钱包和节点,钱包功能对于交易所日常处理充提币很有帮助。节点功能是构建NEO网络的基础设施,也是实现智能经济的基础。
我们如何确定Neo-Cli的表现足以支撑这个目标呢?答案是我们需要测试,通常来说,三种测试就足够了,它们分别是系统测试、集成测试和单元测试。
我们需要设计一个能够系统的执行这些测试的系统,在这里我要介绍一下29119标准,这个软件测试标准是是一套受到国际广泛认可并可以被任何组织用于任何软件开发周期的。上面是它的基础架构,由三个部分组成,组织测试进程、测试管理进程和动态测试进程。NGD目前正在使用这一标准来进行测试。
上图是更加细节化的架构,我举两个例子来解释测试管理进程和动态测试进程。
上图是测试计划进程,比如说改进的一致性算法将很快发布,所以对我们来说最紧急的事情莫过于马上测试PR#547,这一进程展示了我们如何制定这一测试计划。
上图是动态测试进程,Jeff Solinsky是NEO的核心开发者之一,PR#579就是他提出的,它与改进的一致性算法有点儿不同但很有帮助。所以我们需要把这一PR加入到测试计划中,我们需要为此设计一个新的测试并准备新的测试环境。之后我们的开发者就可以对其进行测试,如果有任何问题,我们也需要检查测试报告找到问题,如果没问题,皆大欢喜。
下面是两个我想要展示给大家这一标准是如何运行的例子,这事儿说起来比较复杂,我们现在在NEO项目中进行单元测试,然而我们还没有对网络稳定性的关键元素Neo-Cli进行测试。这也是为什么我们三个月前设计了Neo-Cli的系统测试架构。出于安全考虑,我们还没有对此开源,目前我们在使用它测试Neo-Cli。
我提到的这个标准更多的在于理论层面,我们还需要从工程实践的角度去思考它,这是CI/CD进程,我认为很多开发者对此已经很熟悉了,我们也收到了很多相关的建议,其中的一些建议非常完美,我也相信如果我们部署这些计划真的能够提升Neo-Cli的质量,然而,我们希望在开始阶段从更简单的角度切入。
Travis CI和github,我认为你们已经很了解了,我们正在做的是将我们的系统框架与Travis集成并进行自动系统测试,我认为这一集成会极大提升Neo-Cli的表现。
网络
NEO质量保障的第二个层面是网络。
人们有时会对NEO的去中心化进程感到困惑,所以我们在去年公布了上面的说明,最新版本是V1.5,我们在这一版本加入了网络升级进程。
NEO的一致性算法是dBFT,它为包含n个节点的共识系统提供了𝑓=⌊(𝑛-1)/3⌋容错。目前,NEO有7个共识节点,容错为2,如果NEO网络中2个节点发生故障,NEO网络将仍然能够正常运行。
去年八月底NEO Foundation开始了对Swisscom Blockchain运行的测试网共识节点投票。
根据NEO去中心化的架构,在运行共识节点六个月后,NEO Foundation将会评估是否支持Swisscom Blockchain成为主网共识节点,这一时间点是3月4日。一旦成功登陆主网,非NEO Foundation运行的共识节点将会多于两个,这意味着NEO Foundation无法自行修复网络,这对NEO网络来说是一个重大的挑战。
所以我们为此做了准备,下图是监视器系统,这一工具能够帮助我们了解到7个共识节点的运行进程的细节,同时,如果网络一旦出现问题我们也能够迅速了解到到底是哪些节点出现了问题。
上图是对节点监视系统的简单演示,非常好理解也非常易用,我们的共识节点维护者对此给予了很高的使用评价。
我们有了共识节点的监视系统之外,我们也需要整个网络的监视系统,我们已经起草了一个监视器,列出了所有对NEO网络质量保障的数据,两个开发团队根据指引部署了监视器工具。如果你们已经在使用它,你们将会发现对于查看网络数据来说十分重要。
社区
NEO质量保障的第三部分是社区。
我们将使用上图这一反馈机制来改进NEO生态的基础设施,我们的社区成员开发了很多非常棒的基础工具,但不是所有的工具都能够很好的运行,这也是为什么NGD需要这样的反馈机制来保证NEO基础设施的改进。按照我们的计划,社区开发的基础工具将首先被NGD测试,测试后我们会发布在我们的网页,当我们举办黑客松时我们就会向开发者推介这些工具。如果这些工具是质量过硬的,我们会对其进行第二轮测试并确保它们会出现在我们的网页上。如果基础工具表现不好,我们也会删除它,因此这一反馈机制能够保障NEO基础设施的质量。
众所周知,我们去年举办了很多场黑客松,也收到了很多反馈,其中一个很重要的点是我们的文档工作做的不够好,我们对此给出的解决方案是编写并发布NEO教程,同时,我们也在招募教程编写者,有兴趣可以联系我们的项目负责人刘仁栋(liurendong@neo.org)。
如果你成为了教程编写者,你可以与NGD一起拟定智能合约模版和教程,也可以在大学中对NEO相关内容授课,甚至可以在社区中举办Workshop。
以上三点是NEO质量保证的内容,我们重新回到最开始的部分,NEO到底是什么?我认为,NEO是智能经济的分布式图灵完备网络。
有关图灵有个有趣的故事,他提出了图灵测试,如果一个人向计算机和人同时提出一系列问题,如果不能明确的指出谁是人谁是计算机,那么这一台计算机就通过了图灵测试。
我想提出一个ContiNEO测试,一个用户同时向多个推特发消息,其中一个是去中心化推特,在特定的事件后,如果这个用户不能说出他们的区别,那么区块链上的去中心化版本就通过了测试,我认为我们的终极目标就是让NEO通过ContiNEO测试!
让我们一起让它成真!
◆ ◆ ◆ ◆ ◆
关于NEO
NEO是一个去中心化开源区块链项目,于2014年立项,2015年在Github实时开源,2016年10月17日主网上线,至今稳定运行两年有余。2017年年中完成品牌升级后,确立了智能经济的愿景,是最具开发者友好性的去中心化应用平台。NEO是首个将BFT共识机制改良从而使用到公有链的项目,也是dBFT共识机制的创造者。
NEO具有丰富而完整的基础设施,为用户提供了功能丰富,使用体验友好的钱包、浏览器等。为开发者提供了完整的开发文档与教程,与各种易用的开发者工具。
了解更多NEO信息或加入NEO社区请关注NEO智能经济,并根据菜单指引回复相关内容。
关注我们,每月都有粉丝福利
网友评论