c++ eos智能合约开发_TrustBase平台智能合约的开发与实现

2020年11月,TrustBase团队研究并实现了基于Web的波卡智能合约应用平台。鉴于波卡智能合约开发缺少完善易用的开发工具的支持,TrustBase团队自主开发了基于Substrate框架的全新底层编程语言Subscript,实现了WASM虚拟机兼容。TrustBase针对智能合约全生命周期开发流程的研究,设计并实现了一套综合的波卡集成开发环境,提供给合约开发人员一个完善的集项目管理、开发调试、部署执行、安全检测等功能的智能合约 Web集成开发环境。

本文将从TrustBase链中智能合约执行层的WASM虚拟机开始,为读者介绍TrustBase平台的智能合约 Web集成开发环境。

一、WASM(Web Assembly)字节码

WASM(Web Assembly)是一种能够运行在现代浏览器中的字节码。它类似于汇编语言,其二进制格式具有很高的紧凑性,能够极大的缩小目标代码文件的大小、提高应用程序的网络分发效率。此外WASM字节码其运行时效率可以接近于本地机器码的效率,同时WASM 能够提供像C/C++、Rust和Subscript等类型语言的编译目标,使得采用这些语言编写的应用程序能够运行于浏览器中。WASM是分布式系统开发的基础,智能合约将能够用可以被编译成WASM的任何语言开发。

目前,在诸多针对 WASM(Web Assembly)字节码的浏览器调试引擎方案中,均不具备调试 波卡智能合约的能力。WASM 字节码是针对浏览器而开发的目标语言,其独立于各种硬件体系结构并具有高可移植性以及高效的网络分发效率。WASM字节码已被各大主流浏览器支持,并提供了对其的调试支持。目前在 Chrome 和Firefox 浏览器中,已经实现了对 WASM字节码的调试支持,其原理也是采用仿真执行WASM字节码。

TrustBase平台的智能合约目标码采用WASM(Web Assembly)字节码形式,并采用独立的WASM虚拟机执行引擎执行智能合约程序代码。这使得TrustBase平台得以部署支持波卡生态的智能合约方案。

以C++为例。如果开发者使用C++语言编写“helllo”,编译链接之后生成WASM(Web Assembly)字节码,然后被部署到TrustBase区块链系统网络中被当前的区块生产网络节点执行,那么开发者将需要这样部署:

803af56e6cfe776e333c62799902a2be.png

二、为什么使用WASM虚拟机

目前,使用WASM运行智能合约环境是Polkadot、ETH、EOS等公链的主流趋势。如以太坊基础设施的虚拟机(EVM)正准备进行一次彻底的重写。重写后,目前的 EVM 将被一个名为 EWASM 的新虚拟机所取代,这也是WASM虚拟机的以太坊版本。

EVM虽然有较高的兼容性,但需要预编译,同时需要付出gas作为代价,有着很高的编程成本。这种程序本质上是脚本程序,即由程序翻译指令并执行,而不是由本地机器CPU读取指令并执行,因此效率低下。而Java的操作相对重复繁琐,在执行过程中耗时较长。由于EVM需要预编译,同时需要付出gas作为代价,实际上在EVM上编程成本很高。同时对于EVM的臃肿毫无帮助。最后,Solidity相比其语言基础C比较难学。而Wasm是内存安全、平台独立的,并且可以有效地映射到所有类型的CPU架构。作为Web 诞生以来首个 Java 原生替代方案,其指令集效率高,同时保有足够的可移植性。此外,Wasm指令集可以很容易地通过移除浮点指令来确定化,这使它适合于替换EVM语言。

同时,Wasm在不增加内存消耗的情况下,可以达成无信任编程。可以通过在Wasm上进行堆栈分析与计量进行精确计算。

三、智能合约部署执行流程

TrustBase智能合约开发人员首先创建或导入本地合约文件,并在合约代码编辑器中输入相应的合约代码。然后选择相应的编译器版本及编译选项之后,编译合约。如果合约编译出错或产生警告信息,开发人员可以再次编辑修改合约,直到没有编译错误。接下来,开发人员需要选择或者创建一个TrustBase账号并选择相应的权限,将编译完成的智能合约部署到 TrustBase区块链上。如果合约部署失败,代表账号或权限错误,用户可以选择新的账户和权限再次部署。用户部署合约之后,服务器会自动获取合约的ABI接口文件并在前端web界面中展示其Action接口规范。开发人员按照合约接口规范输入相应参数后,点击执行按钮即可执行相应的合约 Action。开发人员在本系统进行合约开发编译部署执行的流程如图所示:

73d720dbbf1a2a8571c18d23dc72a9a5.png

四、调试

目前,TrustBase合约代码没有DWARF的调试信息,不能用gdb调试。但开发者可以转成Wat可读格式检查所有指令,在Wat可读格式界面中检查是否存在bug。

bf7f3a35b11c1ccd48b17234d86c1c5f.png
Wat可读格式

TrustBase团队决定暂不使用DWARF调试标准主要出于以下考量:虽然目前DWARF调试信息格式被广泛用于 Unix、Linux 等系统,GNU 项目中的著名调试器 GDB就是采用 DWARF 调试信息格式,但DWARF调试信息格式是体系结构独立的,这种结构与波卡将实现的多条平行链跨链互操作结构之间是否会产生冲突,目前还没有定论,在波卡正式稳定运作之前,TrustBase团队将沿用Wat可读格式检查指令的方法。

五、Subscript语言

为了满足波卡跨链智能合约执行时的性能要求和开发者要求,TrustBase团队自主开发了Subscript语言。这是一种与Assemblyscript兼容的合约语言,实现了兼容WASM虚拟机。

相比于parity官方的智能合约ink!语言,Subscript可以:

a.无需rust开发基础,web开发者可以快速入门;

b.与JavaScript良好的互操作特性,便于与dapp的集成;

c.易用的开发环境支持,可以基于现有的js、IDE的运行部署和测试。

这些特性使Subscript具备更低的使用门槛和更强的向后兼容能力。

六、总结

以上笔者介绍了TrustBase核心功能的设计与实现原理。可以看出,TrustBase团队对智能合约平台的设计兼顾了波卡兼容性和开发者生态的考量,最终实现了适合波卡结构的集开发、编译、调试、部署、安全分析的集成开发环境。

长期来看,区块链技术还是一项新兴的技术,对于智能合约的开发还处于原始阶段。在这样的历史阶段下,TrustBase平台为波卡的开发者提供的差异化方案,值得所有区块链技术爱好者关注,以推动区块链技术的发展。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值