BVM虚拟机:抢占区块链商业经济赛道(BVM系列连载二)

技术文章Bottos研究院2019-10-14 18:23:51  阅读 -评论 0

3. BVM在区块链应用层面都做了什么?

在过去的几年里,那个著名的不可能三角——去中心化 vs 可扩展性 vs 安全性——已经在区块链协议中促成了许多进步。

在我们开发BVM的时候,我们就明确了自己的目标:为打造一款区块链“开发者友好型"虚拟机做不断的努力。

所以对于BVM来讲,不但要实现 安全,稳定,可拓展的虚拟机,还要实现高效能,于是研究员把BVM的四个维度:安全,稳定,可拓展,高效能作为BVM进化的标尺不断在完善自己,目前也取得了不小的进展,接下就这四个维一一进行论述。

BVM虚拟机:抢占区块链商业经济赛道(BVM系列连载二)

BVM针对安全性做的设计

智能合约的虚拟机可以看做一台公用的计算机,而所有的开发者都在这台公用机计算机上进行智能合约的执行,所以必须对使用者进行限制。

如果虚拟机的使用者可以毫无限制的运行自己的代码,那会给公链带来很大的安全性问题。例如:EOS 之前就出现过基于延迟交易引发的阻塞攻击问题,这个问题本质上就是没有有效细致的界定资源使用的问题。相应的以太坊也多次出现类似的问题,以太坊早期的数次硬分叉都是为了解决这类问题。

安全性问题主要包含两方面:

  • 代码行为的安全性
  • 代码消耗的有界性。

首先,BVM通过内置的安全机制来保证代码类型的完整性和安全性,并且通过可选择的分配器来保证虚拟机使用者的沙箱性。

除此之外,BVM中加入了BTO质押而形成的时间空间双限制的机制,以确保运行字节码不会存在“恶意行为"。

所以,BVM 在任何时候都不会触发无限制的递归或循环,严格限制某些 合约字节码有意或者无意导致的崩溃或无限挂起机器的情况。

这些内置的安全性支持将会大大提高虚拟机的安全性,同时也会为公链提供一个可控的安全性保证。

BVM针对稳定性做的设计

前面提到,在BVM中加入了一个BTO质押而形成的虚拟机时间空间双限制的机制,以确保运行字节码不会存在“恶意行为"的安全性限定。

而这个BVM双限定的机制其实是由一个我们内部叫做“B-watching"的机制实现的,这种机制类似于代码中的“watchdog",会在指令级别的细节上对于智能合约在虚拟机资源使用上进行限制。

“B-watching"本身是一个定时器电路,内部会不断的进行计时(或计数)操作。与我们平时接触的计时器在作用上也不相同,记时超时(Timer Out)则引起一个中断,例如触发一个系统时钟中断。而不同于软件计时器或者硬件计时器(Timer),B-wathing不但拥有事件发生时“中断"的形式和事件发生时以系统消息展现的形式,还包含了当事件发生时执行一段特定动作的特性。

这使得“B-watching"在系统发生死循环或者阻塞的时候,可以及时修正虚拟机。

BVM的另一个特性是内部支持判定合约的执行时间。看现在的EVM环境,会发现有大量的合约执行超时问题,所以对于一个完备的智能合约来说,如果不执行一遍合约就不知道它在VM中执行所需要的时间,这显然是不合理的。

对于Bottos来说,BVM就是一个黑盒,在BVM以外进行合约检测会非常难以实现,所以BVM在这方面提供了内置支持,相关的需求实现会非常简单,也避免了类似的问题发生。

BVM对于执行中的边界做了诸多限制,但是在区块链的应用场景下,这些限制并不是针对功能性的限制,而是为了提高虚拟机在执行中的稳定性。

这些边界限制乍看上去是一些功能的限制,但是在区块链应用场景下,这些限制不会带来实际功能的限制,

BVM针对可拓展性做的设计

BVM采用了Go模块import的方式,这种方式意味着在BVM上可以嵌入任何一种程序语言的项目,它使程序员更具生产力。并且得益于其并发机制, 用它编写的程序能够非常有效地利用多核与联网的计算机,其新颖的类型系统则使程序结构变得灵活而模块化,还具有方便的垃圾收集机制和强大的运行时反射机制。

BVM 在设计做了特别的处理,使得 BVM 可以很好的适应多线程环境,多线程变成一度是一个令人“头大"的事情,而构建一个可以在并发环境下安全运行的库很多时候需要避免很多问题,BVM 在这个问题上做了很多准备。

Go语言还有很多优势,以轻量级的运行时著称,可以预见,未来会有更多的非 Bottos 甚至非区块链项目使用 BVM。

除此之外,BVM还拥有一套精良设计的底层构架,充分考虑到了其可拓展性,B-coding编译器可以帮助传统代码编译成机器语言,对于智能合约所需要的不同的应用场景,其字节码格式和功能必然需要拓展和修改,BVM 在响应的地方都做了设计,其中深度应用了 visitor 模式,使得在不改变类架构的前提下也可以很容易的为整个 VM 添加功能。

BVM针对高效能做的设计

在连载二中我们提到了BVM是选用了WebAssembly字节码格式作为实现语言的,但是针对区块链在AI场景的应用需求,很多WebAssembly的设计都是多余的。

所以,BVM针对区块链应用场景对WebAssembly一些区块链场景不需要的功能做了特化,同时意味着性能上,BVM做了大幅优化。BVM性能主要得益于其内置化的类型特化,BVM内置了绝大多数智能合约需要的数据类型,大大加快了编译速度,实现整合了WASM的BVM,将会满足未来复杂业务场景对接区块链应用的高性能、高吞吐量要求。

BVM不但在代码层面保证运行的高效性,在架构层面也尽量考虑到高性能、高吞吐的要求,将大量的基础库代码带入字节码层,如今BVM 在虚拟机的实现层植入这些基础类型,性能优化空间也得到了极大的提高。

编者话:下次连载,连载三我们写虚拟机(BVM)对于Bottos生态的影响。

声明:链世界登载此文仅出于分享区块链知识,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。此文如侵犯到您的合法权益,请联系我们kefu@lianshijie.com

参与讨论 (0 人参与讨论)

相关推荐

年初爆发创始团队内讧的 Cosmos 现在还好吗?

然而,2020 年 2 月,由于联合创始人之间爆发内讧,Cosmos 的辉煌差一点终结。该基金会表示,到 2020 年 7 月,Cosmos 区块链上的资产总价值已达 60 亿美元。不可否认的是,Cosmos 项目自 2017 年成立以来一直在影响着开发者及其资产。

布比壹诺供应链金融服务平台的安全体系是如何构建的?

由此切入,我们来聊一下布比壹诺供应链金融服务平台的系统安全体系建设。CFCA,即中国金融认证中心有限公司简称,是由中国人民银行和国家信息安全管理机构批准成立的国家权威安全认证机构。

不止以太坊,条条大路通 DeFi

不止以太坊,条条大路通 DeFi

上图展示了以太坊区块链上转移 ETH 代币日均交易量、以及美元价格情况,资料来源:Dune Analytics。对于寻求不断变化且追逐最高收益率的 DeFi 交易者来说,这种交易延迟可能会给他们的投资回报带来灾难性的后果。

成都链安:以太坊 2.0 技术浅析

成都链安:以太坊 2.0 技术浅析

以太坊 2.0 是计划中的以太坊替代方案。以太坊2.0 网络启动协调员 Danny Ryan 也在论坛中初步宣布,以太坊 2.0 最终测试网预计将于 8 月初正式启动测试。阶段 0:主要实现信标链及以太坊 1.0 中的部分价值转移。

以太坊侧链 SKALE Network 以太坊生态伙伴已超40个

以太坊侧链 SKALE Network 以太坊生态伙伴已超40个

律动 Blockbeats 消息,SKALE Labs 是以太坊侧链 SKALE Network 背后的核心团队,它是一个专为扩展以太坊而设计的区块链平台。除了加入 SKALE Innovator 计划并正在该平台上构建的 Dapps 之外,近日,SKALE Labs 公布了当前其在以太坊中的 40 多个生态伙伴全景图。

比特币有什么缺点?

1.交易平台的脆弱性。比特币网络很健壮,但比特币交易平台很脆弱。交易平台通常是一个网站,而网站会遭到黑客攻击,或者遭到主管部门的关闭。2.交易确认时间长。比特币钱包初次安装时,会消耗大量时间下载历史交易数据块。而比特币交易时,为了确认数据准确性,会消耗一些时间,与p2p网络进行交互,得到全网确认后,交易才算完成。3.价格波动极大。由于大量炒家介入,导致比特币兑换现金的价格如过山车一般起伏。使得比

业务中使用区块链的四种方式

业务中使用区块链的四种方式

暴走时评:区块链是一种支持像比特币这样的数字货币的公共分类帐本,并且正改变着我们的业务方式。一旦那些对匿名交易,甚至是秘密交易感兴趣的人接纳了这样一种鲜为人知的工具,加密货币就会日趋成为主流。 区块链是一种支持像比特币这样的数字货币的公共分类帐本,并且正改变着我们的业务方式。一旦那些对匿名交易,甚至是秘密交易感兴趣的人接纳了这样一种鲜为人知的工具,加密货币就会日趋成为主流。越来越多的个人和企

区块链:法定数字货币技术路线的必然选择

区块链:法定数字货币技术路线的必然选择

在人类发展史上,货币的进化从未停止。从物物交换,到金属铸币,再到纸质货币,以及当前正在发展的数字货币正在向着越来越便捷的方向进化。 比特币的出世起初并未带来轰动,但是最近几年其价格惊人的爬高创造出了一个个造富神话,引起各国政府及监管机构的关注。虽然金融专家普遍认为它只是一种资产,而非货币,但是,其背后的区块链(Blockchain)技术引起了包括各大金融机构、政府、企业及学术界的浓厚兴趣,未

麦妖榜
更新日期 2019-09-03
排名用户贡献值
1牛市来了30910
2BitettFan24187
3等待的宿命23810
4区块大康20369
5六叶树20310
6linjm122719429
7天下无双16192
8lizhen00215280
9让时间淡忘14586
10yelanyi050511349
返回顶部 ↑