布比应用开发友好的智能合约 | 商用区块链BubiChain详解(五)

区块链技术逐渐从小众的极客圈子走向规模化商用。
从整体来看,区块链技术的规模化商用还处在相对初期的阶段,企业对区块链技术性能、易用程度的较高需求,与区块链技术本身的可拓展性瓶颈及较低的运行效率构成了当前限制行业发展的主要矛盾。
基于自身大量的商业实践和对区块链商用的探索与创新,布比打造了完全自主知识产权、高性能可扩展、产品化成熟的商用级区块链底层平台BubiChain。
商用级区块链底层平台BubiChain取得底层技术关键突破:应用开发友好的智能合约、安全高效的共识算法、可靠的隐私保护、并行快速的多链,以及可扩展的跨链技术等创新;实现了产品化重要突破:应用可快速构建、可视化运维、技术合规及资金账户体系等,形成完整的产品服务能力。
本文为商用区块链BubiChain详解系列文章的第五篇——应用开发友好的智能合约,以下为正文内容。
布比区块链基于Chrome V8虚拟机构建智能合约引擎,提供集成开发环境以及多场景、多类型的智能合约模板。

考虑到智能合约的安全性,智合约模块采用JavaScript子集作为编程语言,开发者可快速安全的开发智能合约应用程序。为了让更多开发者使用智能合约,布比区块链同时采用WebAssembly技术构建引擎,支持C/C++/python语言编写智能合约。

布比区块链智能合约引擎是Google V8和WebAssembly的创新改进,更好地满足区块链系统生态友好性需求。Google V8是由Google开发的开源JavaScript引擎,可将JavaScript代码直接翻译成二进制机器码在物理机上执行,执行效率高;WebAssembly是一种可移植、加载高效、平台无关的字节码格式,能在平台上以接近原生的速度执行程序,这是一种全新的 WEB 标准,由 Google、苹果、微软、 Mozilla 等几大公司同时支持和制定。这两项技术为布比区块链智能合约提供良好的基础功能支撑。执行过程如下:

如图所示,智能合约的执行过程如下:
用户A发起签名交易,目标账户为B,B为一个智能合约账号,里面存储着智能合约代码。假定此时交易被广播且被打包,节点需要将该交易存储在区块链上,需要对该交易进行回放和演算。
客户端(使用C++代码实现)调用V8引擎,并把合约代码加载到引擎里执行,在执行的过程中如果遇到内置的接口将会产生回调函数,调用客户端的实现,此时实现了双向交互功能。
当合约执行过程中,有可能生成新的交易,如合约B触发了账号C,如果账号C仅是普通账号,那么只需进行普通转账操作即可;如果账号C是一个合约账号,那么将会再次触发新的合约形成一个递归调用。合约调用合约的递归深度为3层,超过3层将会出错并回退整个交易,这是出于合约实现的复杂度和区块链底层的安全性来考虑和设计。