虚拟机同步软件_区块链通用虚拟机探讨

1、区块链编程语言的现状

例如:

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

最近的明星Libra:Rust的parity在性能和抗攻击上全面碾压其他语言的版本。但大多数程序员还是更信任、习惯基本用c++或者go,borrow语义不习惯,并且库太少,一些C++中常见的库,比如说:fftw, gsl,mtl, eigen, 还有许多处理不同格式文件的库,比如说hdf5, fits等等,目前rust中要么没有,要么毛病太多。

这是一张显示10种最流行的区块链编程语言的图表。

039c440a8fd8c8a909bb18a13997ce87.png

虚拟机是区块链技术领域的基础设施,是连接实体业务与区块链技术的桥梁。而面对如此之多的公链、如此之多的开发语言,如果能用大家熟悉的c, c++语言写区块链应用代码了,无疑成为很多开发者梦寐以求的事,毕竟这可以大大降低开发人员的学习成本。

2、为什么需要区块链虚拟机:

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

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

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

由于运行区块链服务的计算机或其它计算设备可能支持不同的CPU指令集,有X86、有ARM;并且有的操作系统是32位,有的是64位,不同机器对相同数据类型的表示也不一样,这样很难确保所有机器运行的结果一致。

这时候虚拟机的存在就非常有必要性。

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

3、为什么需要区块链通用虚拟机:

区块链世界中,几乎每个公链都有自己的专用虚拟机,下面是主流公链的“私有”虚拟机对比:

f5e80e6321dfe76d37a3f170d00dd84d.png

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

这两种程序本质上就是简单脚本程序,即由程序翻译指令并执行,而不是由本地机器CPU读取指令并执行。因此执行效率非常有限,只具备部分虚拟机功能形态。

EOS支持WASM合约虚拟机,但是EOS缺乏友好的合约开发工具,开发者编译合约需要下载安装编译工具,测试合约需要启动EOS测试节点;并且,EOS的合约调用另外一个合约无法直接获得合约地执行状态;另外,WASM合约虚拟机缺少公用库。

3、区块链通用虚拟机需要哪些功能?

(1) 通用性:我们希望有一个通用虚拟机,程序员可以集中主要精力在业务开发上,能够基于模板与ABI接口文件自动生成合约对应的接口调用代码。

(2) 兼容性:能够与不同公链的私有虚拟机无障碍交互,在处理与区块链交互的细节问题,能够自动生成go或者python等主流代码。并增加合约调用其他合约功能。EOS的合约调用另外一个合约无法直接获得合约地执行状态,但是迅雷链可以立即获得调用结果。

(3) 便捷性:提供编写智能合约所需的语言的类库,例如支持C/C++基础库,并且可以使用第三方维护的开源库,提升区块链应用程序的开发效率。

(4) 安全性:需要有Gas机制,确保合约指令在执行有限次运算后,可以终止执行,防止无限循环攻击;

以上抛砖引玉。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值