王志坚(Niels)分享实录:
大家好,我是纳世链(NULS)核心团队技术与产品部负责人王志坚。很高兴可以在这里给大家分享一些纳世技术团队的故事和近况。
首先给大家说一说纳世技术团队最开始的情况,纳世技术团队成型时间应该是2017年9月3日左右,相信为什么是这个时间大家也清楚。纳世团队的目标一直都是很清晰的,白皮书中也写到了,就是让区块链更简单,让更多的企业、开发者加入到区块链行业建设中来。有感于区块链开发的门槛过高问题,我们发起了这样一个致力于区块链底层技术的项目。
最初的底层技术团队人数有限。包括杨霖、张星张十刀、周维英文名叫Vivi(总被外国社区的朋友误会为女孩)。我们四个人都有差不多10年的软件开发经验,所以一开始的时候我们的心其实是很大的。区块链是个创新的产物,而这个产物本身还并不十分完善,无论性能、安全性、治理机制等等都还有非常大的成长空间,我们团队成立之初做了非常大胆的设计,在底层细节上做了不少想当然的设计,这也直接导致后期踩了一些坑,后面如果时间充足我会具体说一说哪些坑。
这个时期的技术团队是非常美好的,每个人都有梦想,有实现梦想的勇气。每天的工作就是完善纳世链的设计,偶尔想出一个个主意,可以节省几个字节,可以减少一次网络交互,解决一个安全漏洞,这都让人非常振奋,哪怕当时已经工作到了凌晨,也没有人觉得有多累,那是个充满创造力的时期。
我们的编码工作是从2017年9月底开始的,Nuls-io的Github账号应该是9月27号创建的,第一次提交代码的时候绝没有想到,后续的几个月,我们会陷入到如此昏天暗地的开发工作中。哪怕现在回头看,我依然难以想象自己是如何累计添加删除了四十几万行代码的,用一个词来形容这段时间工作状态就是不堪回首。之前网络上有个说法,越是努力工作的人越胖,本来是嗤之以鼻的,直到自己天天加班加出来10公斤肥肉才知道空穴来风非是无因。
最开始接触社区还是受到红色蚂蚁的影响,一个不符合加班长胖说法的人,他是个越努力工作越瘦的家伙,以社区化为信仰的区块链老鸟。他总是让我们多和社区中的成员们沟通,当时技术部的几个人中十刀的英语水平最好,他也有实力,所以闯出了张十刀的赫赫威名。通过蚂蚁和十刀,我们和社区保持了密切的沟通,在最艰苦的日子里,社区中的伙伴给了技术团队非常大的动力,直至今日团队依然觉得社区就是纳世链最宝贵的财富。
前面说过在最初的设计中存在一些大坑,时光荏苒,来到了需要填坑的日子。虽然底层团队在18年初又加入了Pierre Luo、Charlie Li两个非常优秀的成员,也有更多小伙伴在设计、开发、测试纳世相关的产品,但是我们依然没能在预计的测试网上线时间之前从坑里爬出来,这对当时的我们,一群大部分没有做过社区化开源项目的人打击非常之大。在临近预计上线时间的前两天,整个团队都在加班,但已经不是在做修复、优化等事情了,而是在做减法,想要自己从最初挖的坑里爬出来,最后还是杨霖提议,既然有没做好的地方,那么就不能简单的把有问题的部分去掉而上线,我们不是为了上线而上线,也不是在按时完成上线的任务,我们是为了做一个好的区块链基础设施。
第一次上线测试网推迟后,所有人心里都憋了一口闷气,不吐不快。纳世也迎来了第一次重构,既然说到这里,我就说一下最初我们挖的几个印象深刻的坑。
首先重构的第一块,数据存储部分。最初设计时,我们的目标是做底层基础设施,考虑到做应用的便利性,我们在底层支持了关系型数据存储,虽然在实现前的调研阶段做了基础的性能测试,但实现之后发现前期测试的复杂度远远不够,在真实场景存在较大的瓶颈,极大地限制了网络的稳定性和性能,整个数据存储层的替换,给纳世带来了非常大的影响,事实证明前人的经验,是没那么容易突破的。
再就是共识方面的重构部分,在区块链中区块的同步逻辑是非常重要的,针对这一点我们做了几个非常大胆的优化,在实现后内部测试情况也非常乐观,但是上线前不久,在公网的复杂环境测试时,暴露出了一些奇葩问题,团队每天为了排查这些问题搞得焦头烂额,却依然不能在稳定性上取得实质性进展,看着上线日期一天天临近,内心也是十分的煎熬。
还有一个非常重要的重构点,最开始我们做底层编码时,原则是尽量不使用大型的、比较重的组件,所以P2P网络的搭建我们完全基于JAVA底层重新开发,后面证明也这是一个非常大的坑,因为JAVA的网络层封装非常复杂,我们花在上面的时间和精力非常多,但却总是有非常多的奇葩问题,稳定性总是达不到要求。又考虑到上线日期临近,下不了决心大改,可以说是一次死去活来。
上线推迟之后,技术团队做了非常深刻的总结,对设计做了非常多的优化,借着每个人胸中的闷气,拿出了非常大的战斗力。后面的事情大家都知道,经过这次痛定思痛,技术团队更加成熟,后续的测试网成功上线,并持续优化直到主网上线。
还有一件重要的事情,就是智能合约上线推迟事件了,这件事促进了技术团队规范发版流程,加大重视测试网络的决心,目前虽然取得一定的成绩,但测试网节点数量依然不够,后续还会陆续提出一些鼓励测试网络维护的机制,避免出现像智能合约第一次上线时,因为测试环境复杂度不够而导致升级失败的情况。
接下来我要说一说社区,尤其是技术社区。在纳世链主网发布会上,CEO Liesa 强调了全球社区的重要性,也有多位外国社区的伙伴发表了演讲。从技术团队的角度来说,我们积极拥抱社区,尤其是技术社区。我们修改了NULS 2.0 的技术架构,在新的架构中,以技术社区成员Berzeck提出的NULSTAR为底层架构,以多语言模块化为核心理念,降低技术门槛,欢迎所有有识之士加入到纳世的建设中来。当前的纳世技术社区还处于发展的初始阶段,未来还有很长的路要走。
在纳世核心技术团队中,我们有一套类似于NIP的社区化提案机制。团队中成立一个制度改革小组,小组的初始成员由全员投票产生,后续加入可以通过提交提案的方式。加入制度改革小组的成员随时可以自愿退出小组,所有团队中的成员都可以通过提案的方式进入制度改革小组,提案的内容不进行硬性限制,大到运行制度、奖惩机制、工作流程,小到团队买什么零食,举行什么活动都可以进行提案。这一套社区化的运行机制,是纳世核心技术团队为未来更深入的接入技术社区而做的尝试,只有社区的强大才是纳世真正强大。
最近社区中有很多人讨论纳世链网络DAPP的问题,到目前为止确实没有开发出来很好的DAPP,这个技术团队有很大责任,主要是相关指导文档不足,很多想开发的小伙伴不知如何上手,也有很多小伙伴上手后总是需要团队的指导才能继续,还有一些开发者在开发一些依赖于随机数的游戏,本来都要上线了,但因为之前EOS交易排挤攻击而引发了对随机算法的担忧而推迟,针对这些问题,我们做了规划。从文档方面来说,我们梳理了所有欠缺的文档,开启了文档补充工作;从应用开发方面来说,技术团队的成员会利用空余时间开发一些简单的多样的应用示例,用来给应用开发者做指导和思路拓展,技术团队也在和技术社区一起,开发一些支撑应用开发的工具,比如多语言sdk、界面工具包等等,会努力让生态发展尽可能的均衡、长久、健壮。
纳世技术团队时刻关注行业动态,吸收对纳世发展有益的思路,比如这次我们在社区发起了《关于”纳世链主网在底层支持随机数的协议升级”提案申请》。实际上提案中的内容在技术团队内部已经持续讨论了很长时间了,吃饭聊天都在讨论,可以说是群策群力出来的一个解决方案。就在昨天早上,我们在论坛发起了本提案的讨论,引来了一些社区伙伴和技术社区成员的参与,有很多人质疑为什么要把这样专业的技术型提案发给全社区来讨论,我在这里说一下我的想法。纳世从成立之初,就把自己定义为一个全球性的开源的区块链项目,开放、共享是我们的核心理念,所以我们积极拥抱社区,愿意和社区一起成长,项目的发展方向,从来都不应该由核心团队一言表决,哪怕社区的能力还有待提高,我们可以等待和陪伴社区成长,但绝不会放弃。
临近分享的尾声,我再说一下当前技术团队在忙些什么。目前技术团队最重要的工作就是NULS2.0的开发和调试,虽然在主网上线后技术团队又有新的成员加入,但因为 NULS2.0的设计引入NULSTAR做了非常大的变动,当前团队内只能实现一个简单的替代品来整合所有业务模块,目前的进度是正在进行区块链底层业务模块间的联调。NULS2.0以外技术团队重新设计了浏览器和钱包及轻钱包,重新设计了API服务,目前浏览器已处于调试节点,预计不久后就会上线新版的测试网浏览器。此外文档整理和编写工作也在进行中,对主网的问题维护也从没有停歇,在纳世链产品化上也花了非常多的精力。DAPP开发上相信不久就会有一些游戏和工具可以提供给社区了。值得一提的是一位来自法国技术社区的小伙伴Moshe,在今天凌晨发布了一款桌面版的NULS轻钱包0.9.1版,使用起来轻快、方便,有需要的朋友可以下载体验。https://github.com/CCC-NULS/nytro-wallet/releases
技术团队欢迎全社区的成员与我们沟通交流,很开心今天可以通过这个渠道给大家分享我们团队的故事,比较遗憾的是今天并没有做一些单纯的技术内容分享,相信后面还会有这样的机会的。大家有任何技术方面的困惑与想法,也都可以反馈给我们。感谢大家花费宝贵时间来听我们的故事,今天的分享就到这里了,谢谢大家。