订阅业界RSS CSDN首页> 业界

开发者福利!不学Solidity也能在迅雷链开发智能合约了

发表于2019-04-25 14:46| 来源CSDN| 作者csdn

摘要:Solidity 作为智能合约编程的高级语言让很多想转型区块链开发的程序员们望而却步。尤其是 作为一个初学者,在部署的时候会经常失败,也找不到原因,区块同步又非常缓慢,实在是不太好用。 如果能用大家熟悉的 c, c++ 语言写区块链应用代码了,无疑成为很多开发者梦寐以求的事,毕竟这可以大大降低...

 Solidity作为智能合约编程的高级语言让很多想转型区块链开发的程序员们望而却步。尤其是作为一个初学者,在部署的时候会经常失败,也找不到原因,区块同步又非常缓慢,实在是不太好用。

如果能用大家熟悉的c, c++语言写区块链应用代码了,无疑成为很多开发者梦寐以求的事,毕竟这可以大大降低开发人员的学习成本。在这里,就不得不提到WASM

Web Assembly(WASM)有什么来头呢?它是谷歌、苹果、微软三大竞争公司同时支持的一种中间代码(字节码), 是浏览器都支持的一种代码。所有其他语言(c, c++, java)编写的程序都可以编程成WASM字节码的程序。

而开发者们梦寐以求的事就真的来了,迅雷链在原来兼容EVM的基础上,推出支持WASM,也就是同时支持双虚拟机,不仅在开发语言上具备了更多的可选择性,而且在应用升级上做了大幅改善。

本文将从几个重要的大环节深入浅出的剖析这个问题,包括区块链虚拟机到底什么作用?为什么虚拟机那么重要?虚拟机三个阶段的竞争,主流虚拟机对比,还有最重要的,迅雷链对WASM的改进,这个决定了开发成本真的变得很低,全文4053字,大约消耗15分钟,让你轻松开发智能合约,不再是梦。

从区块链虚拟机是什么开始说起

区块链虚拟机是区块链智能合约的运行环境,可把它看作是软件模拟的可执行合约指令的虚拟计算机(包含CPU、内存、存储)。类似于CPU可以执行汇编指令,区块链虚拟机可以执行合约指令。

每个参与到区块链网络的节点,都会运行一个虚拟机。向区块链网络发送一笔调用合约的合法交易,会触发每个节点的虚拟机执行该合约代码,并将执行结果记录下来。

区块链有共识机制,必须保证所有人的计算结果是一样的,如果某个节点的计算结果与其他节点不一样,将无法达成共识。

由于运行区块链服务的计算机可能支持不同的CPU指令集,并且有的操作系统是32位,有的是64位,不同机器对相同数据类型的表示也不一样,这样很难确保所有机器运行的结果一致。

这时候虚拟机的存在就非常有必要性。

虚拟是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全环境中的完整计算机系统。区块链虚拟机有一套自己特有的指令集,能确保在不同的操作系统,不同CPU环境下,执行同样的运算指令,得到完全相同的结果。

区块链技术离不开虚拟机的支撑

虚拟机是区块链技术领域的基础设施,是构建智能合约系统最为关键和核心的技术。智能合约承载了复杂的业务逻辑,同时是连接实体业务与区块链技术的桥梁。

区块链虚拟机作为区块链上面的代码运行平台,需要考虑很多安全性的问题。为了防止因程序员的编写代码错误而影响到了整个链,同时更重要的是防止运行智能合约的设备遭受攻击,如果直接运行在设备系统上,可能会有安全隐患。

每个节点都要执行智能合约,但如果不用虚拟机,而是在机器上直接运行,此时如果智能合约开发者疏忽或测试不充分,而造成智能合约的代码有漏洞的话,就非常容易被黑客利用并攻击。

由此可见,区块链虚拟机属于区块链的核心技术,虚拟机是区块链技术落地的基础,是智能合约的安全保护屏障,在今天乃至未来,区块链技术都离不开虚拟机的重要支撑。

区块链上虚拟机技术的激烈竞争

区块链要落地到实体经济中,必须依靠不断丰富的DApp应用,但是DApp必须运行在可靠的区块链虚拟机上面。目前各家区块链的技术竞争,更是演变成了区块链虚拟机技术的竞争。

区块链虚拟机1.0

比特币作为区块链1.0时代主要的应用代表,其直到今天依旧被公认为区块链技术的杰出代表。作为一种P2P数字经济生态的承载,比特币设计上就要考虑提供针对不同交易活动的内部支持。在比特币中,这种的设计和实现被称为脚本。比特币中的脚本扩展了传统交易的语义,同时保证了交易的合法性和安全性。

从开发的角度上讲,比特币中的脚本提供给用户一种可以编程的简单接口。比特币中对脚本的解释例程,我们把它定义为比特币中的虚拟机,其可以看做是区块链虚拟机技术1.0的代表。

然而比特币的脚本定义上为非图灵完备,这也从本质上决定了解释器的设计的复杂性。比特币中的脚本解释器虽然还不能看做是一个完善的执行智能合约的虚拟机,但是我们在这个阶段已经看出虚拟机技术在区块链技术中的生命力。

区块链虚拟机2.0

以太坊作为区块链2.0时代主要的应用代表,其为用户提供了一套完整的智能合约运行环境,这包括完整智能合约描述语言以及图灵完备的虚拟机。以太坊智能合约官方语言为Solidity,利用Solidity实现智能合约逻辑后,通过编译器编译成字节码,最后发布到以太坊上。

以太坊虚拟机(EVM)本质上依然是一个基于栈的解释器。以太坊虚拟机的设计和实现体现了一个精简标准的虚拟机模型,相对于比特币中的脚本解释器,EVM已经有了质的飞越。

以太坊支持图灵完备的智能合约。智能合约的完善,加上图灵完备的智能合约运行支持,让区块链虚拟机在区块链技术体系中的位置愈加的重要。

迅雷链首创支持双虚拟机-区块链虚拟机3.0

随着区块链应用对虚拟机以及智能合约的要求的增多,区块链虚拟机在技术上也在逐渐的进行完善,在以迅雷链为代表的区块链3.0中,虚拟机主要在以下几个方面有所发展:

l  智能合约多语言的支持

l  更快的运行速度

l  更加丰富的系统工具支持

l  虚拟机更安全

迅雷链首创对双虚拟机的支持,同时支持EVM虚拟机和WASM虚拟机。开发人员可在迅雷链开放平台上更加便捷的构建非常丰富的生态应用。

WASM具有如下优点:

在速度和性能方面的提升;

支持CC++,以后将支持更多的编程语言,比如go,pytho,java,php等。

这就意味着拥有其他语言经验的开发者可以快速开始在迅雷链上编程,而不需要为了创建一个智能合约去学习一门新的语言,比如Solidity

更进一步,这意味着当在迅雷链上编程时,开发者可以使用所有为这些语言构建的工具和软件库;使用WASM能够利用出色的优化和调试工具。所有这些特点都将有助于加速和简化开发进程。

下面是对几个主流公链的虚拟机对比:

 

比特币

以太坊

EOS

迅雷链

支持的虚拟机

脚本解释器

EVM虚拟机

WASM虚拟机

EVM虚拟机+WASM虚拟机

是否图灵完备

支持合约语言

简单脚本指令

主要支持Solidity

C/C++

Solidity,c/c++,未来会支持go,pytho,java,php等更多语言

编程语言普及程度

非常少

较少

一般

较多

公共库支持

极少

一般

较多

开发难易程度

困难

一般/开发、测试工具较少

简单/开发、测试容易,catalyst开发平台

TPS

7TPS

30-40TPS

4000TPS

百万TPS

比特币的程序非常简单,由解锁脚本和锁定脚本构,是非图灵完备的,只能完成简单逻辑的转账操作。以太坊有智能合约,有图灵完备的虚拟机EVM,但是指令也相对简单,且自成一套。

这两种程序本质上都是脚本程序,即由程序翻译指令并执行,而不是由本地机器CPU读取指令并执行,效率不高。

EOS支持WASM合约虚拟机,但是EOS缺乏友好的合约开发工具,开发者编译合约需要下载安装编译工具,测试合约需要启动EOS测试节点。

迅雷链推出的catalyst合约开发平台,集成了solidityC/C++合约开发工具集,只有开发者打开浏览器,就可以进行合约的开发与测试,不需要单独下载编译工具等,为开发者提供了最便捷的开发环境。

迅雷链对WASM虚拟机的优化改进

为了让WASM虚拟机能在迅雷链上运行,迅雷链对虚拟机做了如下创新改进:

1.     EVM不支持合约原地升级,迅雷链对WASM虚拟机做了改进,支持合约升级,满足开发对代码升级的渴望。同时升级的合约必须设置受信任的多重签名账户,防止开发者随意升级合约。既满足了灵活性,也考虑了安全性。

2.     增加合约调用其他合约功能。EOS的合约调用另外一个合约无法直接获得合约地执行状态,但是迅雷链可以立即获得调用结果;

3.     提供编写智能合约所需的语言的类库,目前支持C/C++基础库,开发者可以使用第三方维护的开源库,解决了EVM缺少公共库的缺点,同时迅雷链的WASM虚拟机提供了丰富的基础API接口供用户灵活选择使用;

4.     为了让开发者集中主要精力在业务开发上,提供了基于模板与ABI接口文件自动生成合约对应的接口调用代码,帮助开发者屏蔽了参数编解码,与区块链交互的细节问题,目前支持自动生成go或者python代码,极大的提升了开发者的效率。

5.     提供WASM合约开发调试工具catalyst,该工具在浏览器中运行,用户开发测试合约过程中不必自己搭建区块链节点,也不需要安装复杂的合约代码编译环境。Catalyst工具集成了EVMWASM合约的开发、编译、部署、合约接口测试等功能,方便开发者开发与测试合约;

6.     增加Gas机制,确保合约指令在执行有限次运算后,可以终止执行,能有效的防止无限循环攻击;

7.     提供常用的标准TOKEN合约基础类,方便开发者快速构建自己的TOKEN合约;

基于对WASM虚拟机的优化改造,迅雷链的智能合约模块具备更高的兼容性与性能,同时拥有更强的安全性与灵活性。

以上重点讲解了迅雷链在支持双虚拟机上提供的改进和优化,对于想要转型区块链开发或者正在开发区块链应用的程序员来说 ,使用迅雷链开放平台的好处还不止于此。业内比较熟知的是,迅雷链是首个实现百万TPS性能的底层主链,这使得区块链大规模应用成为可能,再也不用担心一个几千人玩的DAPP就把主链搞崩溃了。对于那些想要打造爆款区块链应用的企业和开发者来说,针对业务规模庞大、业务请求频发的应用场景,迅雷链大概是最为可靠的选择了。

在性能已经遥遥领先的同时,迅雷链还持续不断推出各种对开发者友好的新功能。比如去年7月份在迅雷全球区块链大赛的决赛现场,迅雷链发布了专为区块链而生的文件系统——TCFS,实现公开透明、不可篡改、可追溯、高可靠、安全加密、海量存储、授权转移等能力。 此外,迅雷链开放平台发布一年以来,持续推出了多种工具性的解决方案,包括抽奖合约工具、投票合约工具、版权类合约工具等等。

最近,迅雷链还全新推出了名为“Catalyst——催化剂web开发工具,对于开发人员来说,不需要安装,自带demo模板,真正实现了入门合约开发0门槛,提高开发者的在应用开发过程中的使用体验。

性能优越+操作简易,这足以解释为什么很多企业和个人开发者都选择基于迅雷链进行应用开发。据悉,迅雷区块链技术已经和中国版权保护中心、来电科技、南方新媒体、壹基金等多个企业合作,落地版权保护、商品溯源、公益、医疗等十余个行业领域。而只有在多种多样的实际应用中,区块链技术才能真正发挥其应有的价值,或许这才是迅雷链不遗余力为开发者和企业提供便捷高效的产品体验的初衷。只有千千万万的开发者都愿意参与进来,区块链用技术推进社会发展的想法才不再是高屋建瓴。

 

马上体验史上最方便的智能合约开发,点击原文链接吧。

https://open.onethingcloud.com/