Neo主管工程师王龙飞:Neo-持续提升区块链开发友好度

11月14日周四晚,Neo Live迎来了第18期的开讲。

Neo主管工程师王龙飞介绍了Neo在底层技术以及开发工具的技术进展。

以下是全场活动的文字版内容实录:

首先我先做一下自我介绍吧!我叫王龙飞,在NGD担任主管工程师,主要负责Neo这边应用层面的技术开发和支持,所以群里如果在Neo生态做开发的朋友,应该或多或少都会和我有一点点接触。

我们组在NGD主要的一个工作任务就是让Neo为DApp提供最完善的开发支持,让Neo成为最完善并且最友好的区块链基础设施。所以我今天就想和大家分享一下,Neo如何持续提升区块链开发友好度。

考虑到线上分享可能对于看的人来说线路不够清晰,我先贴一张图,让大家提前看一下今天主要想要和大家分享的几个内容,方便大家提前心里有一个基本的流程。

我觉得这里的小伙伴们或多或少对Neo都有一定的了解,那我就不花太多的时间去介绍Neo了。

我们就简单看一下Neo的发展愿景,让大家更好的理解:为什么Neo选择某些技术?以及Neo为什么持续在提升dApp的开发体验。

相信大家可能也看了达叔上周在乌镇的演讲,从达叔的演讲内容,我们可以大概把Neo的发展愿景总结为:Neo致力于通过分布式网络建设下一代互联网基础设施,为区块链技术大规模落地奠定基础,以实现智能经济的宏大愿景。达叔表达的Neo的这种发展愿景同样也指引着Neo的技术发展。

在Neo最早期,我们的创始人达叔和铮文为Neo确定的发展方向为智能经济,所以他们相应地选取了最为适合的技术方向。

比方说考虑Neo要适用于智能经济或者说金融类应用场景,像PoW这种会分叉并且非确定性的共识,显然是不太试用的。所以最终他们选择在拜占庭容错算法的基础上自创了dBFT共识算法,保证不分叉并且交易上链后一个块就可以确定的终局性,这也高度符合智能经济的愿景。

除此之外,为了能提供最好的基础设施,通过分布式网络建设下一代互联网基础设施,Neo也需要降低开发门槛,让广大开发可以更容易的接触区块链开发,这也是为什么Neo初期选择自己研发轻量级的跨平台虚拟机NeoVM,从而做到支持多种编程语言的智能合约开发。

除了基础设置的完善之外,想成为能支撑下一代互联网的底层协议之一,Neo还需要在自身作为协议的基础上扩展更多的功能,也就是neo3正在做的像NeoID, NeoFS以及内置预言机等重要功能。

对于Neo的生态发展、Neo的技术特色这些,我就不再做过多的介绍,相信大家都已经比较熟悉。

那我们来开始今天的侧重点吧,就是给大家讲一讲在Neo上做智能合约或者dApp开发的流程和体验,以及Neo的社区开发团队怎么在现在的基础上持续去提升开发友好度。

首先来看一下这个基本的开发流程,应该和传统的开发流程非常相似的。

简单的讲就是:

1. 搭建开发环境 – 这里指的就是搭建一个本地私链,用于开发测试;

2. 智能合约开发 – 包括编写智能合约、编译、然后部署在本地私链来测试合约的功能;在这一步,开发者可以在智能合约测试完成以后,部署到测试网。

3. dApp集成 – 在合约开发测试完以后,可以做dApp集成,主要就是让dApp可以和Neo区块链交互,包括:数字资产以及上一步部署的智能合约交互。

dApp开发简单来讲就是以上这三个步骤,每个步骤都需要相应的基础知识和工具的支持,Neo为这整个开发流程提供了全方位的支持,包括多样化的工具以及齐全的文档。

对于刚才我提到的三个基础开发步骤,我们现在来看一下Neo生态中都有些什么样的工具供开发者使用。

上面这个图从另一个角度分解了这三个开发步骤,也相应的展示了各个步骤Neo生态能可以选择使用的工具。

1. 搭建本地私链

相对简单的方式,可以通过neo-local快速的搭建私链;也有复杂的灵活性高的方式,主要是通过使用节点搭建。根据开发者的经验和偏好,可以相应的选取适合的方式。

2. 智能合约开发

Neo对多开发语言的支持让开发者可以根据自己的经验和技术栈选取更适合的语言开发智能合约。除了基础工具之外,Neo生态内也有在线合约开发工具,让开发者更容易的在线编写、编译和部署合约到测试网或者主网。

3. 应用支持(dApp集成)

应用层的集成主要是用过两种方式:SDK和支持dAPI开发的钱包插件,开发可以根据项目需求选取。SDK的话,Neo有多语言的sdk支持,包括C#,JavaScript, Java, go. 目前Neo生态内支持dapi的钱包有O3, 钱包浏览器插件有NeoLine和teemo。

我接下来选取几个工具,给大家简单讲一下他们的功能和使用方法。

第一步是搭建本地私链,我们推荐使用neo-local。

因为neo-local使用起来比较简单,而且支持的比较完全,包括私链和neo-scan(区块浏览器)。

开发者只需要预先安装好docker 和 git,然后从GitHub把neo-local下载下来,就可以通过docker指令启动私链和区块浏览器。

windows下面,其实就是一条指令:

docker-compose up -d –build –remove-orphans。

当neo-local成功拉起私链以后,开发者可以通过neo-python节点查看区块链消息,之后做合约编译和部署等等操作。

对了,这个私链预先设置好了钱包,并且把所有的一亿个NEO提取到钱包内供开发测试使用,钱包名是neo-privnet.wallet, 密码是coz。

这时候这个本地私链就完全在你的掌控下,足够多的NEO和GAS随便开发者使用,想要部署多少遍合约用来测试都没问题,不用担心像测试网这种一天只可以申请1000个NEO和GAS的限制。是不是也挺爽的。

本地私链搭建好,开发者熟悉一下Neo节点的使用方式以后,就可以开始开发智能合约了。

这里简单的给大家介绍一下Neo在智能合约开发上的支持,目前对于智能合约开发语言,neo支持比较完善的几个开发语言包括:C#,Python,Java,JavaScript和Golang。主要的支持包括:写合约需要引用的库,编译器,IDE支持以及相应的文档。

对于开发智能合约的指导,大家可以看看我们的技术文档,里面比较全面的介绍了智能合约开发的流程。

https://docs.neo.org/docs/zh-cn/sc/gettingstarted/introduction.html。

智能合约的开发,除了使用本地的开发环境、使用Neo节点部署和调用之外,开发者也可以通过几个一站式的工具完成:比方说在线合约工具:neocompiler.eco还有neo-ray;还有dApp开发框架:NEO·ONE。

在线合约工具使用起来也是比较方便的,大家如果在测试网部署的话,不需要等好几个小时的节点同步时间,开发者可以直接在线做到:

1. 合约编写和编译;

2. 合约部署到测试网和主网;

3. 合约调用和测试;

4. 合约调试:目前neo-ray提供了调试的功能。

至于钱包插件的话,teemo和neoline都提供了非常完善的文档支持,大家可以访问他们的官网去尝试一下通过他们来做dapp集成。

到这里,我们大致了解了在neo上开发智能合约的流程以及相应的可以选择使用的工具。

其实我们Neo生态对智能合约和dApp开发的支持还是很全面的,每一个开发流程中使用到的工具我们都比较完善。

但是讲了这么多,不知道大家有没有发现什么问题?有没有觉得什么地方需要再好好改善一下的?

其实如果想让Neo成为最完善的基础设施,我们也同样的一直在反问自己这个问题,就是现在的开发支持够不够完善了?还可以从哪一方面提升一下开发体验?

综合考量下来,我们觉得:单纯的为每个开发步骤提供相应的开发工具还不够友好,毕竟这么看下来开发一个智能合约或者dApp需要使用多个不同的工具,需要搭建不同的环境,换句话说就是还不够开发友好。

那到底要怎么改善呢?这就是我接下来要介绍的两个开发工具或者说是开发框架,这也是neo在持续提升开发友好度上再次跨出的一步。

首先我要给大家介绍的是一个Neo智能合约开发套件:Neo Blockchain Toolkit。

这个套件是由NGD Seattle开发的,NGD Seattle的主要方向就是提升Neo开发友好度,让广大开发社区可以更便捷的使用Neo开发智能合约和DApp。

像上面这个图里虚线框表示的,Neo Blockchain Toolkit这一个工具就提供了前两个开发步骤所需要使用到的所有工具,让开发智能合约变得非常的简易。

这个开发套件使用起来也非常方便和强大,它是一个VS Code的插件,开发者在VS code中安装这个插件以后,就可以获取开发智能合约所有的支持。

我们来看一下Neo Blockchain Toolkit具体提供了什么功能。

首先是私链的支持,通过这个套件,开发者可以在VS code中直接启动和使用:

  –  单节点模式的本地私链

  –  区块浏览器

然后就是智能合约开发的支持,包括:

  – C#智能合约开发需要使用的引用库和模板;

  – C#智能合约编译器;

  – 合约调试(划重点):如果大家有智能合约开发经历的话,应该知道智能合约调试是比较困难的,所以这也是Neo持续提升开发友好度的一个重要的功能。

  – 智能合约的部署和调用

从一个开发者的角度去看,我觉得这个友好度不止是提升了一小步。我个人对智能合约调试这个功能都表示非常的激动,如果大家对这个工具感兴趣的话,可以去VS code下载来试用一下。

提示一下:这个工具还在持续开发和完善当中,如果遇到什么问题欢迎大家到GitHub上面来提。

接下来要介绍的这个工具更往上一步为大家提供支持,这个工具就Neo dApp开发框架:NEO·ONE。

在这个图上大家估计就可以看出,NEO·ONE这个开发框架不仅包括私链、智能合约开发,还上升到了应用层集成的支持。

也就是说:用一个工具,就可以开发出dApp。

首先强调一点,NEO·ONE是一个JS/TS的开发框架,所以仅支持JS/TS的dApp和智能合约开发。

开发者可以在React, angular或者Electron的项目中直接安装NEO·ONE包,获取这个框架支持的以下:

   – 内置的neo本地私链&区块浏览器;

   – JS/TS合约全面支持:编写、编译、测试和部署;

   – dApp集成(再划重点):TS编译以后,会生成可以直接调用的代码,可以直接再dApp中使用,这也使dApp开发变得非常简化。

   – 现在NEO·ONE也支持Neo主网和测试网。

听上去这个工具是不是非常有吸引力,感兴趣的朋友可以去尝试以下,https://neo-one.io/

除了在工具层面提升开发友好度之外,我们同样也需要让neo在协议这个层面更稳定和健壮,希望可以做到达叔说的:一起来建设下一代互联网基础设施。

这也是我们目前在做的下一个重大事件 – neo3的开发,接下来就一一的给大家简单介绍一下这几个重要的功能。

首先看一下我们在共识方面的改进:

如果大家有人对Neo有一定了解的话,应该知道之前有一段事件Neo的网络有些不稳定,主要是因为在网络传输延迟或者不稳定的情况下,Neo会出现单个区块分叉,最终导致接收到错误区块的节点停顿,也就是部分节点停止同步区块的现象。

这种情况偶尔出现,但是对于整个Neo网络的稳定性是一个非常不好的影响,所以Neo的核心开发者做了大量的研究和尝试,最终通过升级共识算法到dBFT 2.0解决了这些问题。

dBFT 2.0主要的改善是:

1. 添加了commit阶段,并在这个阶段锁定更新视图,保证每一轮共识绝对只有一个块被共识节点签发,保证共识的安全性 。

2. 同时添加节点恢复机制,保证在网络传输延迟或者不稳定的情况下,滞后或者断线的节点可以通过其他共识节点恢复并正常参与到共识过程中,保证了网络和共识的活性。

可能只是给大家从代码和逻辑层面讲共识的改进,大家很难直观的感受到改进的意义和结果。我们可以来看一下dBFT2.0改进以后,Neo核心开发者的测试报告吧。

是不是可以很直观的感受到,dBFT升级前后对网络健壮性和稳定性带来的提升。

其实dBFT2.0的改进已经在主网跑了大半年了,Neo再也没有出现网络停顿或者分叉的情况。

第二个我要给大家介绍的是通过原生合约实现的NEO和GAS。

如果群里有在Neo上开发过智能合约的小伙伴,应该都知道UTXO在智能合约中使用的弊端以及痛点,所以在Neo3中我们会取代UTXO模式,从而用原生合约来实现NEO和GAS。

在原生合约的使用方面,除了NEO和GAS之外,我们还会用原生合约policyContract来实现部分链上治理,把投票和对链的部分配置修改放在原生合约中完成,让社区更好的参与到neo的链上治理。

还有就是NeoID, NeoFS和跨链这几大重要功能,相信群里的很多小伙伴也都听说过。因为时间问题,我就不再展开细讲了,贴几张图,大家可以看看。

NeoFS的话已经基本完成初期开发,也可以初步尝试使用。

跨链的话还在设计和开发阶段,希望我们可以在不久的将来和大家更多的分享一些跨链协议的技术方案和进展。

发表评论

Top