后悔! 曾经敲不出的代码, 如今竟如此简单, 都是因为不知道这个...

2019-04-28 15:54:01 浏览数 (1)

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

如果能用大家熟悉的 C、C 语言写区块链应用代码,无疑是很多开发者梦寐以求的事,毕竟这可以大大降低开发人员的学习成本。这就不得不提 Web Assembly(WASM)了

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1、区块链虚拟机1.0

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

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

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

2、区块链虚拟机2.0

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

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

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

3、迅雷链首创支持双虚拟机——区块链虚拟机3.0

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

  • 智能合约多语言的支持
  • 更快的运行速度
  • 更加丰富的系统工具支持
  • 虚拟机更安全

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

WASM 具有如下优点:

  • 在速度和性能方面的提升;
  • 支持 C、C ,以后将支持更多的编程语言,比如 Go、Python、Java、PHP 等。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

以上重点讲解了迅雷链在支持双虚拟机上提供的改进和优化,对于想要转型区块链开发或者正在开发区块链应用的程序员来说 ,使用迅雷链开放平台的好处还不止于此。

业内比较熟知的是,迅雷链是首个实现百万 TPS 性能的底层主链,这使得区块链大规模应用成为可能,再也不用担心一个几千人玩的 DApp 就把主链搞崩溃了。对于那些想要打造爆款区块链应用的企业和开发者来说,针对业务规模庞大、业务请求频发的应用场景,迅雷链大概是十分为可靠的选择了。

在性能遥遥领先的同时,迅雷链还持续不断推出各种对开发者友好的新功能。去年7月份在迅雷全球区块链大赛的决赛现场,迅雷链发布了专为区块链而生的文件系统 —— TCFS,实现公开透明、不可篡改、可追溯、高可靠、安全加密、海量存储、授权转移等能力。

此外,迅雷链开放平台发布一年以来,持续推出了多种工具性的解决方案,包括抽奖合约工具、投票合约工具、版权类合约工具等等。

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

性能优越 操作简易,这足以解释为什么很多企业和个人开发者都选择基于迅雷链进行应用开发。据悉,迅雷区块链技术已经和中国版权保护中心、来电科技、南方新媒体、壹基金等多个企业合作,落地版权保护、商品溯源、公益、医疗等十余个行业领域。

而只有在多种多样的实际应用中,区块链技术才能真正发挥其应有的价值,或许这才是迅雷链不遗余力为开发者和企业提供便捷高效的产品体验的初衷。

只要万千开发者都愿意参与进来,「用区块链技术推进社会发展」的想法,就不再是空中楼阁了,不是吗?

0 人点赞