GAIAWORLD神盾协议:能与现实世界交互的预言机

微信公众号:GAIAWorld

预言机VS图灵机

区块链应用落地最大的障碍在于难以和现实世界交互,链上世界和现实世界之间存在一条难以跨越的鸿沟,智能预言机是目前唯一可行的链接区块链网络和现实世界的方式。智能预言机通过黑盒的方式将现实世界的参数导入区块链网络,并使用链上图灵机回答决定性问题。

简单而言,智能预言机=能映射现实世界的预言者+图灵机。

图灵机的作用在一些区块链项目中被故意扭曲和夸大:“我们是图灵完备的,所以能做任何事情”。图灵完备只代表能做任何计算,不代表能做任何事情,图灵完备甚至不能解决停机问题。很明显,能做任何事情和能做任何计算之间有本质的差别。正因为图灵机只能做计算,所以一个单纯的图灵机无法和现实世界进行映射,必须给图灵机加上一个显式或者隐式的预言者,构成一个完整的预言机,才能解决区块链和现实交互的问题。

预言机雏形

比特币基于UTXO模型,简单的脚本没有达到图灵完备的要求,所以比特币并不具有智能预言机。以太坊基于传统的账户模型,且其虚拟机是图灵完备的,所以从广义上来讲,以太坊已经具备了一个智能预言机的雏形。比如,通过2/3多重签名可以实现一个简单的预言机。小王和小明竞猜18年欧冠皇马和利物浦谁获胜,胜者将获得2个ETH作为奖励,小红做裁判。

具体操作如下:

1. 小王、小明、小红三个人写了一个简单的智能合约,锁定了2个ETH

2. 智能合约规定:只有获得三人中至少两人的签名才能转移这2个ETH

3. 小明竞猜皇马赢球,获得了竞猜的胜利

4. 小红和小明使用签名将2个ETH转移到小明的账户上

这就是一个智能预言机的雏形。通过现实世界中皇马赢球,使得小明获得了2个ETH,小红在这个过程中扮演了预言者的角色。但是,这个雏形过于脆弱了,小红决定了整个预言机计算的结果。即使小王竞猜失败了,小红完全可以和小王合谋将2个ETH转给小王。所以,整个预言机的计算结果并不真正取决于现实世界中皇马是否赢得了比赛,而是小红愿意把这2个ETH转给谁。可见,一个现实可用的预言机,需要一个可信的预言者以及一个图灵完备的分布式网络系统。

神盾协议规范描述了如何实现一个可信任的去中心化的预言机。

虚拟机

首先我们需要一个安全可信赖的图灵机,用于执行链上代码。代码本质上就是数学化的合约。现实生活中的合约需要翻译为机器可理解的二进制代码才可以在链上执行。GAIAWORLD选择了经过定制的Javascript语言作为现实合约和二进制代码之间的桥梁,为此我们实现了一个轻量级的定制版Javascript虚拟机,称作GVM(Gaia Virtual Machine)。

之所以选择Javascript是因为该语言在互联网领域拥有最广泛的使用者,且拥有大量可使用的代码库方便程序员进行开发。潜在开发者的数量和潜在开发的难度是衡量一个区块链能否吸引足够开发者的重要指标,只有拥有足够开发者的区块链产品才能在长期的激烈竞争中存活。GVM可执行的代码被称作GSC(Gaia Smart Contract)。

GSC是应用程序员自己开发的,理论上无法保证GSC的绝对可信,所以我们对GVM和GSC进行额外的设计以减小恶意代码对区块链可能造成的破坏。

GVM是一个沙盒环境,在GSC在GVM内部执行,不会污染GVM以外的环境。每一个GSC的执行都会使用一个全新的GVM已避免相互干扰。除此以外,对于相互之间没有关联的GSC我们支持多个GVM同时执行,已期提高整体运行效率。

GAIAWORLD限制了可使用的Javascript内部函数和语法规范,以提供更高的安全性。同时,将链上应用常用函数封装在官方库中,以期提高应用程序员开发效率,同时降低外部库引用给GVM带来的未知风险。在计划中,还会为GSC提供形式化验证,只有通过验证的代码才会被GVM执行,进一步提高了执行链上代码的安全性。

预言者

预言者是现实世界和GSC之间的纽带。预言者通过神盾协议预定义的接口规范和GSC建立链接,为GSC提供输入。预言者本质上是一个服务提供商,在链上缴纳足额保证金之后,即可提供预先申请的服务,通过提供服务收取费用获得收益。

预言者根据其所提供的服务类型,缴纳了数倍甚至数十倍于所提供服务的保证金,一旦作恶将会被罚没保证金,从经济角度上讲预言者最优选择是诚实提供现实世界的信息以期获得服务收益。GAIAWORLD会记录单个GSC的执行次数,通常来说,被执行的次数越多的预言者服务越诚信,链上用户会倾向于选择执行次数更多的智能合约。

此外,神盾协议还引入了评级制度。当然,单个预言者始终是不足够可靠的。对于可信度性要求更高的GSC,会采用多预言者模式。即同时使用多个预言者提供的相同服务,并且为每一个预言者分配权重,使用总权重最高的结果作为GSC的输入。在此基础之上,GAIAWORLD还实现了三级仲裁委员会制度,神盾协议和仲裁制度的结合会进一步保证预言机的可信度。

这就是GAIAWORLD神盾协议技术的逻辑,能更好的实现与现实世界交互。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏吴伟祥

Java Calendar 类的时间操作 原

Calendar 的 month 从 0 开始,也就是全年 12 个月由 0 ~ 11 进行表示。

783
来自专栏跟着阿笨一起玩NET

GB2312转换成UTF-8与utf_8转换成GB2312

1881
来自专栏互联网开发者交流社区

WinForm之窗体应用程序

1853
来自专栏海说

Java应用中常见的JDBC连接字符串(SQLite、MySQL、Oracle、Sybase、SQLServer、DB2)

Java应用中常见的JDBC连接字符串 Java应用中连接数据库是不可或缺的,于是便整理一些可能用到的JDBC的jar包及其相匹配的URL,以备日后查阅。 1)...

2730
来自专栏张善友的专栏

Using sqlite with .NET

The other day I found that there is a .NET wrapper for sqlite. sqlite is a very ...

2288
来自专栏阿炬.NET

c# datetime 格式化

2846
来自专栏跟着阿笨一起玩NET

[C#]工具类—FTP上传下载

  不错的文章:http://www.cnblogs.com/greatverve/archive/2012/03/03/csharp-ftp.html

1201
来自专栏闻道于事

商城项目整理(三)JDBC增删改查

商品表的增加,修改,删除,订单表的增加,确认,用户表的查看,日志表的增加,查看 商品表建表语句: 1 create table TEST.GOODS_TABL...

5465
来自专栏飞扬的花生

日志帮助类

 1.代码 using System; using System.Collections.Generic; using System.Linq; using S...

1919
来自专栏积累沉淀

Hive2.0.0操作HBase 1.2.1报错解决

首先看错  org.apache.hive.service.cli.HiveSQLException: Failed to open new session: ...

2339

扫码关注云+社区