这个专题主要聊聊智能合约相关的

GitHub - XuHugo/xwasm

最近一直在用rust写区块链底层,又是写合约引擎,现在基本完成了,包括wasm虚拟机和基于rust的eDSL。所以就想着借着这个机会,把一些想法记录一下。

首先区块链发展到现在,大部分功能都需要智能合约来完成,不过五花八门的语言,确实增加了老铁们的负担,虽然各位老铁基本都可以左手拿教程,右手拿键盘,直接开整。不过因为合约漏洞,而导致各种新闻也让手握Token的信仰者胆战心惊了。虽然问题多多,当时我依然认为,智能合约和虚拟机,必须是未来的重点,因为它将支撑了整个生态系统。

并行运行合约

性能一直都是区块链的一个瓶颈,而合约的运行则是其中的根本,所以我们也给我们这套合约运行系统,设计了一套并行方案,方案来源于aptos的block stm。

eDSL

目前基于rust的eDSL,我知道的有两个,ink!和liquid。我们自己设计的eDSL,我感觉细节上差距还是蛮大的,不错理念上差距不大;都是元编程——用代码生成代码,因为rust的元编程能力主要来自于宏,所以我们看到的基本都是给智能合约语言,提供各种宏;

宏编程

这个是我们自研eDSL的基础,是必须掌握的一点;主要涉及的是过程宏,rust中宏的功能功能很强大,我自己以前用C,相较于C这种替换的简单操作;rust直接提供了操作token和ast的库,使得开发者有了更大强大的武器。

虚拟机

使用wasm,一种自己实现了一版,后来直接采用了wasmtime,开始还担心gas,后来发现了parity的解决方案,真是yyds啊,就直接用了;链上链下的数据格式转换也是不小的问题,后来在json、rust的数据做了一个映射了,也算是完美解决了。

webassembly规范

这是wasm的底层原理,我们可以不学习,会使用就可以了,不过介于wasm应用范围逐步扩大,我到时候,会在这个章节,从零开始写一个wasm虚拟机;

工具

这个目前感觉还有点遗憾,做的不够完善,不过现在也没有太多研究这方面,还是直接用cargo和wabt直接处理,后边考虑集成一下,看看在结合llvm能不能做的更完美一些。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐