大家观察 | 刘胜:智能合约的是与非

关于区块链1.0、2.0、3.0的概念,最早在《区块链:新经济蓝图及导读》一书中提出。本书把比特币为代表的密码学数字货币归为区块链1.0,把以太坊为代表的智能合约平台归为区块链2.0,而对于区块链3.0并没有给出严格的定义,只说了“超越货币、经济、市场”的公证类应用和协作类应用。对于区块链3.0是什么,我们先不讨论。我们发现一个现象,目前很多已上线的公有区块链(简称公链)都说自己是区块链3.0。这其中就隐含一个假设,即大家默认了区块链3.0是包含区块链2.0的。而区块链2.0的代表——以太坊(Ethereum),其作为“下一代智能合约和去中心化应用平台”,最大的特点就是支持图灵完备的智能合约。换句话说,很多人潜意识就认为——“图灵完备的智能合约是区块链的必由之路”。但这个观点正确么?接下来刘胜讲的内容,就是要挑战这个观点!刘胜B16思想节讲者联动优势的首席架构师在次之前,我们需要先了解几个概念——●什么是图灵完备?●什么是智能合约?●什么是图灵完备的智能合约?这里,就不得不说到很重要的三个人物。

根据联动优势首席架构师刘胜先生2018年8月26日晚间在DAGA | Blockchain &
AI 所作的在线分享语音进行整理。

2018-08-02 石榴区块链B16视频 刘胜 |
首席架构师的颠覆观点:图灵完备的智能合约不是区块链的必由之路 |
梳理编辑:赵黎 | 视频制作:于戈

活动行 B16 Talk:区块链的新启蒙时代活动行 B16
区块链思想节:开启区块链的新启蒙时代 <<<活动行 B16
区块链思想节:开启区块链的新启蒙时代

新萄京娱乐网址2492777 1刘胜,联动优势科技有限公司首席架构师,电子学会区块链专委会委员,清华x-lab区块链公开课课程导师。曾获2015年北京市科技进步奖三等奖;参与工信部《可信区块链》、《支付清算行业可信区块链》等标准编写;承担中国互金协会、中国支付清算协会的区块链和法定数字货币等课题的研究;已提交并公开的发明专利50多项,包括区块链相关专利8项。

新萄京娱乐网址2492777 2image.png

群里有很多我们的前辈,还有我的老师在里头,我这时候分享一些东西,主要是抛砖引玉。最开始的题目主要是讨论智能合约的图灵完备性到底是不是必要的。题目是叫:智能合约的是与非,论图灵完备的必要性。

关于区块链1.0、2.0、3.0的概念,最早在《区块链:新经济蓝图及导读》一书中提出。本书把比特币为代表的密码学数字货币归为区块链1.0,把以太坊为代表的智能合约平台归为区块链2.0,而对于区块链3.0并没有给出严格的定义,只说了“超越货币、经济、市场”的公证类应用和协作类应用。

新萄京娱乐网址2492777 3刘胜

对于区块链3.0是什么,我们先不讨论。

这其实不是一个完全学术化的一些观点。主要是在我们之前的实践应用中的一些体会把它总结出来了,对现有的一些观点产生了一些质疑。但是没有完全形成一个最终的观点,所以现在放在这里主要是供大家进行一些探讨。

我们发现一个现象,目前很多已上线的公有区块链都说自己是区块链3.0。这其中就隐含一个假设,即大家默认了区块链3.0是包含区块链2.0的。而区块链2.0的代表——以太坊,其作为“下一代智能合约和去中心化应用平台”,最大的特点就是支持图灵完备的智能合约。

我们现在看到很多公链。他们包括用的一些什么posp,分片,智能合约。现在可以认为是基本上是公链进行融资的几大法宝。但是实际上这里面都存在问题,我们今天的主题呢,主要是分享这个关于智能合约可能存在的一些问题。

换句话说,很多人潜意识就认为——“图灵完备的智能合约是区块链的必由之路”。

1.0,2.0,3.0这个概念,大家都应该都了解过或听到过。这个最早是在《区块链新经济蓝图及其导读》那本书中提到的,那是第一本中文的区块链书籍。

但这个观点正确么?

在那本书里面呢,把比特币代表的密码学数字货币就归为区块链1.0。把以太坊代表的智能合约平台归为区块链2.0。但是对于区块链3.0的,其实在那个书里面并没有给出非常严格的定义。只说了这个叫“超越货币、经济、市场”的公证类应用和协作类应用,把他都归为区块链3.0。

接下来刘胜讲的内容,就是要挑战这个观点!

新萄京娱乐网址2492777 4图灵完备的智能合约是必须的吗?

PS:公链三大法宝——多链+智能合约+跨链

我们这里也不对区块链3.0下一个绝对的定义。但是我们现在发现一个现象是什么,就是现在已经很多已经上线的公有区块链叫公链,都说自己是区块链3.0。这里面其实有一个隐含的假设就是大家默认为区块链1.0,2.0都已经达成共识了。然后区块链3.0呢,又是包含区块链2.0的。他们都是以区块链2.0代表以太坊,作为一个对标的一个东西。要做超越以太坊或者以太坊杀手等等之类。

新萄京娱乐网址2492777 5刘胜,B16思想节讲者,联动优势的首席架构师

以太坊他最开始白皮书里面定义的,就是说把他自己定位为下一代智能合约和去中心化的应用平台。那么它的最大特点就是支持图灵完备的智能合约。也就是说,很多人潜意识就认为图灵完备的智能合约就是区块链的必由之路。但是这个观点,我对此是有一些保留态度。所以我们后面的内容就是对这个观点进行一些挑战。

在次之前,我们需要先了解几个概念——● 什么是图灵完备?● 什么是智能合约?●
什么是图灵完备的智能合约?这里,就不得不说到很重要的三个人物。

后面讲的几个概念,如果对于那个深入了解区块链的人可能都已经很清楚了。那我们先做一个引子,就是主要是了解一些相关的一些概念。你说什么叫图灵完备?什么是智能合约?什么又是图灵完备的智能合约?这里面呢,就必须要说到三个人物。

新萄京娱乐网址2492777 6阿兰·图灵(Alan
Turing)

第一个人物是阿兰图灵。他是一位英国的数学家,它可以是现代计算机科学之父也是人工智能之父。学过计算机的应该都知道啊,我们所有现有的计算机都是基于图灵最开始提出的图灵机的模型来设计出来的。

第一个人物是阿兰·图灵(Alan
Turing),他是一位英国的数学家,是现代计算机科学之父,也是人工智能之父。在二战期间,他带领同事研制出的密码破译机,可高效地破译当时德军最强大的“谜”式密码机,并在盟军诺曼底登陆等重大军事行动中发挥重要作用,被誉为二战英雄。历史学家认为,他让二战提早了2年结束,至少拯救了2000万人的生命。

新萄京娱乐网址2492777 7阿兰•图灵和通用图灵机

1936年,他提出 “图灵机(Turing Machine)”的概念。

在二战期间它那个图灵带领他的同事研究出他的一个密码破译机,好几代。可以高效的破译当时德军最为强大的那个“谜”式密码机。在盟军向一些很大一些重大军事行动,行动里面向诺曼底登陆等等,起到了重要的作用。所以他后来不但是计算机之后他还被誉为是二战的英雄,历史学家认为他让第二次世界大战提前两年结束,至少挽救了两千万人以上的人的生命。所以他也是一个很伟大的一个二战英雄。

图灵机有点像一个水泵,一头是输入,一头是输出,除此之外,它还有一个存储器能保存一些内部状态,以及一个控制器可以读取预置程序代码并加以执行,来控制输出的结果。现在大家经常用的计算机、笔记本电脑、智能手机都是基于图灵机模型的。对于计算机来说,鼠标、键盘等都是输入设备,屏幕、声卡等都是输出设备,内存是保存内部状态的存储器,CPU就是程序控制器。其实从某种意义上来说,“人”本身,也是基于图灵机模型的。

在1936年他就提出了图灵机的一些概念。图灵机是什么,有点像一个水坝。他一头是输入一头是输出,同时他还有一个存储器,保存了一些内部的状态。还有一些控制器,就是预制的程序,它能够按照预制的程序进行执行。并且来控制它输出的结果是什么样的,我们现在看到的通用计算机、笔记本电脑、智能手机都是基于图灵机模型的,对于计算机来说,鼠标键盘都是输入设备,屏幕声卡等等都是输出设备,内存就是保存内部状态的存储器。CPU就是程序控制器,所以从某个意义来说,你很多东西都能够用到图灵机上。其实从某种意义上讲这个人本身也是基于图灵机的变种。

新萄京娱乐网址2492777 8图灵机模型的形式化解释

新萄京娱乐网址2492777 9图灵机模型的形式化解释

那么,什么是“图灵完备(Turing- Completeness)”呢?

什么是图灵完备?图灵完备就是指一切可计算的逻辑都能够被计算,这个这句话有点绕,什么叫可计算?这个很难解释啊,我们下面解释,如果是一个计算机系统具有图灵完备性。就意味着这个系统的功能和通用图灵机相当,就可以互相模拟,就是说所有的图灵机图灵完备的语言系统,它们都是可以互译的互相翻译的互相模拟的。如果一个计算机语言具有图灵完备性那就是说他这个能够跟图灵机完美的结合,这就是现代计算机语言所拥有的最高的能力非常强的能力。所以我们现在看到的c语言、java语言,我们绝大部分语言都是图灵完备的计算机编程语言。

图灵完备,就是指一切“可计算”的逻辑都能被计算

什么是可计算的呢?这个绕的地方就是这个地方,这个其实是有一个严格的定义的。可计算理论是数学的一个小分支,但是他为计算科学打下了一个坚实的理论基础。太形式化的解释呢,这个可以有好几篇论文来解释,这里就不细讲了。我就举一些不可计算的例子做一些反例来来,大家去推理他这个逻辑。比如说我们今天晚上吃什么饭。当然大家已经吃过饭就不说了,我们就说明天晚上吃什么饭这个问题就是不可计算的。任何计算机程序都算不出来,因为这里面有存在太多的假设、前提条件。

如果一个计算系统具备图灵完备性,意味着该系统功能和通用图灵机相当,可以互相模拟。

但是如果我们增加足够的前提判断规则,比如说,如果是工作日,我们就吃个快餐就行了,如果是周末,我们就在家做米饭。而今天呢,比如说,今天是8月26号啊,是周日,那我们应该是,在家做,那么明天的话,周一是工作日,应该是吃快餐,吃一个方便面啊或什么啊,方便面太低了吧,可能吃了工作餐。那这样的话这个问题就是变成一个可计算的问题了,可以产生一个确定性的结果,我们下周一是吃快餐。

如果一个计算机语言具备图灵完备性,意味着该语言能够和通用图灵机完美结合,这也是现代计算机语言所能拥有的最高能力。

我们涉及的第二个人物就是叫尼克•萨博。他是最早提出了智能合约的概念,被称为智能合约之父。

那么,什么是“可计算(Computable)”的呢?

新萄京娱乐网址2492777 10尼克•萨博提出智能合约

“可计算理论”是数学的一个小分支,但它为“计算机科学”的独立发展打下了基础。

他在1994年的时候就提出了智能合约的设想Smart
contract。他在1996年的时候就发表论文来完整地阐述了这个概念。这里面提到一个概念,就是说什么叫智能合约,智能合约就是一个一系列的数字化形式的承诺。一个承诺的集合。同时他还包含相关的一些协议很多协议,这个协议干什么呢,就是来确保各个参与方智能合约的参与方能够履行这些承诺。

太形式化的解释,这里就不讲了,我举一个“不可计算”的例子。

可以把智能合约和传统合约做一些对比,就是说与传统合约不同的是呢,智能合约不是写给律师,法官等这些人类看的,而是写给机器来看的。智能合约不仅是包含合约的条款等内容信息。他还包了代码,这个代码就是说履行合约所需要的可执行的代码。

比如,“今天晚上吃什么饭?”,这个问题就是不可计算的,任何计算机程序都是算不出来的,因为这里存在太多的假设。

智能合约不是在违约之后去执行合约的条款,而是在违约的前就加以控制,避免违约的发生,最大限度的这个减少这个恶意和一些意外情况,这样的话大家都很严格地遵守这个智能合约的这个相关的条款,不会发生尽量减少合约的发生,甚至不会发生。

但是,如果我们增加了足够的前提条件和判断规则,比如,
“工作日晚上吃快餐面,周末在家吃米饭”、“今天7月16号是周一”、“周一是工作日”,那么,这个问题就是可计算的了,能够产生确定的结果——“吃快餐面”

智能合约不是在人为,在事后人为的选择性履行,而是在事中,有程序自动去履行,最早减少这个信用中介而降低交易成本。想欺诈立案判决,法律仲裁,司法执行等等很多一些相关的因素。智能合约还能够避免这个履行结果被逆转。他说他没有一个什么叫上诉还在上诉或等等一些仲裁等一些。他的结果就是一个终局,就是一个判决的最终性。

新萄京娱乐网址2492777 11尼克·萨博(Nick
Szabo)提出智能合约概念

这里面最关键的一点就是最核心的,就是怎么样把这些智能的合约的一些条款嵌入到软件和硬件里面去。传统的智能合约传统的合约一般都涉及到资金或资产。所以典型的智能合约应用也是与数字化资金,或者数字化资产密切相关。

第二个人物是尼克·萨博是智能合约之父。他在1994年提出“智能合约(Smart
Contract)”的设想,并在1996年发表论文来阐述该概念。文中解释到,“一个智能合约就是一系列数字化形式的承诺集合,还包含一系列相关协议,以确保各参与方能够履行这些承诺”。

第一类的应用,我们可以认为是叫可编程的数字现金,比如说在1998年一个萨博自己就开发了一个叫比特黄金的一个系统。但是那个系统由于一些设计,他可能还是有偏中心化的一些思想,所以很容易被人外部去控制。没有发展起来。但是到2009年中本聪最后推出一个分布式的去中心化的一个比特币系统,就是一个非常典型的可编程的数字现金。

可以把智能合约与传统合约做一些对比。与传统合约不同的是:

第二类是叫合成资产。这个合成就是把各种各样的金融资产、金融衍生品、以及不同的债股的比率的一个组合以及不同期限的组合。不同套利模式的组合等等,还有不同免责条款的组合各种各样的把它组合起来。能够执行一些复杂的资产。其实,玩金融衍生品的那些人,其实都会玩,但是很多情况下,它需要人工执行。这样的话非常难,但是如果有数字化智能合约去解决的话,那这就是一个很有意义的资产。

  • 智能合约不是给律师、法官等“人”来看的,而是给机器看的;
  • 智能合约不仅仅包含合约条款等信息内容,还包括履行合约所需的可执行程序代码;
  • 智能合约不是在违约之后执行合约条款,而是在违约发生之前加以控制,避免发生违约,最大限度的减少恶意和意外的状况;
  • 智能合约不是在事后由人为选择性履约,而是在事中有程序自动履约,最大限度减少使用信任中介,从而降低交易过程成本,如欺诈损失、立案判决、法律仲裁、司法执行等的成本。
  • 智能合约避免“履约结果”被逆转,比较容易实现的履约结果的终局性。

那么,最后一种是叫我们要把它称为智能资产。这就是说,真正的能够内置各种合同条款的资产。比如说,有一种智能锁可以用在这个现代的这个共享单车上和共享充电桩共享的住宅门上。这个时候我们就完全不需要有一个中心化的公司像现在的滴滴公司并进行运营,完全是可以在一个无中心的一个共享经济体力分布式的运营。

这里面,最基本理念,就是要 把这些合约条款嵌入到软件或者硬件里面去。

比如说,有一种智能门锁。用户就可以将这个租借的费用就通过数字资产直接转账给房东,然后这个智能门锁就可以读取区块链的相关的交易状态。自动的允许打开房门,或者允许这个用户去打开房门,不需要任何的中介机构向这个链家等等参与。

传统合约通常都会涉及资金或资产。而典型的智能合约应用,也和数字化资金或数字化资产密切相关。

这世界就相对比较美好了,不需要造成一个中心化的巨头又来进一步,损害我们的利益啊,但是实际上这个非常美好,但是实际上在普及智能合约的时候还是存在很多障碍。

  • 第一类是可编程数字现金(Digital
    Cash)。
    如1998年尼克·萨博开发的比特黄金系统,又如2009年中本聪推出的比特币系统。
  • 第二类是合成资产(Synthetic
    Assets)。
    包括各类金融资产、金融衍生品,以及各种不同债、股比率的资产组合、不同期限的资产组合、不同套利模式的资产组合、不同免责条款的资产组合等等。
  • 第三类是智能资产(Smart
    Assets)。
    包括能够内置各种合同条款的资产,如某种智能锁,可以用在共享单车、共享充电桩、共享住宅门之上,此时完全不需要一个中心化的公司来运营,而是可以在一个无中心的共享经济体里,分布式地来运营。例如有一种智能门锁,用户可以将租借费通过数字资产转账给房主,然后智能门锁就可读取区块链上的相关交易状态,自动打开房门让用户入住,而无需任何中介机构参与。

一个表现就是在于什么,我们发现这个智能合约概念提出的前二十年。就是1994年到2014年智能合约在商业化的领域实践几乎为零,为什么会实践严重的落后于理论呢,这个方面至少有三个方面的障碍。

新萄京娱乐网址2492777 12普及智能合约的障碍和新的转机

第一是法律障碍,就智能合约到底是不是合约啊,这个其实很容易被别人攻击的。那总的来讲呢,我觉得这个法律方面应该是滞后的这种这种新生事物的。

普及智能合约时存在很多障碍。

第二个是实现方面的障碍,就是说智能合约是依赖于一些非常可信的数据,而在区块链之前,这个基础根本就不存在。另外一方面,他也缺少一个可编程的交易的支付体系。所以在1998年尼克•萨博就自己创造了一个这样的体系想补充补足这个智能合约的这个缺陷,但是不太成功。后来2008年中本聪发的比特币白皮书之后,尼克•萨博就发现这正是他想要的东西,也可以说比特币和区块链技术的兴起,为智能合约带来了新的转机。

我们发现,智能合约的概念提出的前20年,智能合约在商业领域的实践几乎停滞

第三个方面就是执行方面的障碍。智能合约到底是由谁来执行怎么样,保证执行的正确性,如果出现错误由谁来监督和仲裁。比特币和区块链技术是通过分布式实现来执行的。初步的理论上是可以解决这一方面的障碍,而不需要一个确定的一个信任中介去帮你去执行。

为很么实践严重落后于理论?至少有三个方面的障碍:

看上去很美好,但是比特币系统本身他的可编程脚本,我们就叫比特币脚本。他还是存在很多的制约。那这个资源就是说他缺少图灵完备性他能做的事情非常有限,非常受限制。

  • 其一是法律障碍。智能合约到底是不是合约,法律是滞后的;
  • 其二是实现障碍。一方面是智能合约依赖于一些可信的数据,而在区块链出来之前,这个基础不存在;另一方面,缺少一个支持“可编程交易”的一个支付体系。在1998年,尼克·萨博创造了比特黄金系统,但不太成功,再后来,
    2008年中本聪发表了“比特币白皮书”(一种点对点的电子现金系统),尼克·萨博发现这正是他想要的东西。可以说,比特币和区块链技术的兴起为智能合约带来新的转机。
  • 其三,是执行障碍。由谁执行?怎么保证执行的正确性?如果出现错误,由谁来监督或者仲裁?比特币和区块链技术通过实现分布式的执行,可以解决了这一障碍。

首先那个脚本对输入有严格的限制,他也不能访问外部信息。不能接受外部的消息,甚至没有没法访问,比特币系统的一些账本的基础数据。只能访问当前交易的一些很少量的数据内容。

但是,比特币系统的可编程脚本存在一个严重的限制,即缺失图灵完备性。

其次,脚本没有办法保持状态数据就说他的脚本是无状态的就是也不能这么说他脚本说不管是执行正确还是失败,都没有把结果保存起来,他只能输出一样东西只能输出交易,他是没法输出它中间状态的。

  • 首先,脚本对输入有严格的限制。即不能访问外部系统,也不能接收外部消息,甚至没法访问比特比系统的一些账本数据等信息,而只能访问当前交易的少量数据内容。
  • 其次,脚本无法保持状态数据。新萄京娱乐网址2492777,不管脚本执行正确还是失败,都没办法把结果保存起来,只能输出交易,没有状态。

所以当时很多人就觉得,这个不具备图灵完备性是比特币系统的一大缺陷,这个缺陷,我们就叫bug,所以说,这没有图灵完备性是一个bug。

因此,有很多人甚至认为,

第三个人物是维塔利克·巴特林(Vitalik
Buterin),他是一个90后,非常年轻,可能比群里面在座的大多数人都年轻。他七岁开始就开始研究比特币,十八岁创办的比特币杂志,一个电子杂志。发表了很多一些观点性文章,是当时的一个很有影响力的意见领袖。当时他看到这个比特币系统功能太过于固化,导致了很多很多的山寨币横行泛滥。所以他提出要做下一代的智能合约和去中心化应用平台,并且发起了以太坊项目,受众多人的追捧,他的想法就是说大家都用这个统一的系统通用的平台,不要再开发更多的这个山寨币。

“不具备图灵完备性,是比特币系统的一大缺陷”

他是建立在区块链技术和分布式账本的技术的基础上。他可以接受外部的交易transaction和外部的事件event,也能够对外输出交易和事件。他在内部保存的合约的价值value也保存了合约的状态state。

新萄京娱乐网址2492777 13维塔利克·巴特林(Vitalik
Buterin)

优点是灵活方便。可以讨好这个去中心化应用的开发人员就是DAPP的那些开发人员开发人员很爽,就很容易就可以写出一个智能合约,满足一些初步的业务场景的一些上层要求。

第三个人物是维塔利克·巴特林(Vitalik
Buterin),他是一个90后,17岁开始研究比特币,18岁创办了《Bitcoin
Magazine》杂志,并发表了很多观点性文章,成为当时很有影响力的一位意见领袖。当他看到由于比特币系统功能过于固化,导致众多山寨币系统泛滥,因此提出要做“下一代智能合约和去中心化应用平台”,并发起了以太坊项目,受到众多人追捧。

那么缺点就是太灵活,太方便了,他对外部带来简单性,但是他内部屏蔽了很多复杂性。复杂性带来了很多恶劣的效果,就是低效和不安全。

这所谓“下一代智能合约”,实际上就是“支持图灵完备的智能合约”。

复杂性永远是安全的敌人。在复杂的分布式场景下图灵完备的智能合约本身以及智能合约的执行环境中都有可能隐含一些未知的安全问题。我们之前介绍图灵完备的概念,图灵完备的计算机语言都是可以互相模拟的。因此我们所见常见的c++c语言、java等等,计算机编程语言的源代码,理论上都是可以翻译成图灵完备的智能合约。但是我们如果去问。任何一位软件工程师能不能不能拍着胸脯保证自己的编的程序没有任何缺陷,没有任何bug。没有任何安全问题,你就会发现谁也不敢这么做,谁也不敢给出这样的保证。所以安全问题是图灵完备智能合约永远的痛

一个支持图灵完备的智能合约模型,是这么样一个东西:

我们先看看几个智能合约的安全事件。那最有名的是2016年The
DAO事件。黑客利用智能合约的漏洞,围绕这个The DAO
项目募集而来的1.5亿美元,当时价值1.5亿美元的以太币。现在应该涨得很多,并且把中间的差不多一半将近七百万美元的以太币卷走了,转移走了,虽然后来通过硬分叉的方式,然后找到找回了大部分的被转移走了以太币。但是这个也破坏了区块链去中心化的概念,并且永久的造成的以太坊社区的永久分裂成ETC、ETH等等数字货币。

  • 它是建立在区块链技术(Blockchain)或分布式账本技术基础上;
  • 它即可以从外部接收交易(Transaction)和事件,也能够对外输出交易或事件;
  • 它在内部即保存了合约价值,还保存了合约状态;

新萄京娱乐网址2492777 14遇见与预见的区别

但是,智能合约支持图形完备性,有利也有弊。

其实这个是一个在金融领域里面,我们一般都把它叫做叫无人监管的资金池。这是严重不合规的。很有可能被黑客和其他人盯上。

  • 优点是灵活和方便,可以讨好去中心化应用的开发人员。开发人员很容易写出一个智能合约,实现满足具体业务场景的上层应用。
  • 缺点则是在于过度灵活和方便,带来的复杂性。由于针对开发人员友好,它内部可以容纳极大的复杂性,因此,也就需要一个复杂的环境来执行,比如以太坊虚拟机EVM等。

在2017年,以太坊的客户端多重签钱包,多重签名的合约,你们发现漏洞被别人发现,导致九十三万以上的以太币被锁住,谁也解不开,黑客也没有拿走,但是对这个原有的以太币持有人造成的损失是永久的,造成的永久的丢失,相当于把大量的金子扔到海里去了。

复杂性带来恶劣的效果,就是低效和不安全。

2018年美链bc合约的一个低级的那个整数溢出漏洞被黑客利用。导致无限制的增发新的美链的代币。当天亮的一个代币被从两个地址转出之后就引发了进一步的一个抛售潮。就说当天那个bc的价格暴跌了百分之九十四,整个整体价值几乎归零。

  • 复杂性通常意味着低效。一方面是在单节点环境下的执行低效。例如简单计算一个哈希值,在以太坊EVM虚拟机中执行的时间,要比直接执行慢约50倍。另一方面,智能合约执行不是仅仅执行一次,而是需要在所有的区块链全节点上都从头到尾地重复执行。
  • 复杂性永远是安全的敌人。在复杂的分布式场景下,图灵完备的智能合约本身以及智能合约执行环境中,都可能隐含这未知的安全性问题。之前介绍图灵完备的概念是,我们知道,图灵完备的计算机语言是可以互相模拟的,因此,我们常见的C/C++、Java、C#、Python等计算机编程语言的源代码,理论上都可以翻译成图灵完备的智能合约。但是,当我们如果去问任一位软件工程师,“能否保证自己开发的软件程序没有缺陷,没有安全问题呢?”,你就会发现,谁也不敢拍着胸脯保证这些。

最近,安全公司知道创宇发布了《区块链安全风险白皮书2018》。中间有些数据可以显示,在2018年上半年区块链安全事件数量和损失金额,都远远超过好几年的数倍甚至数字数十倍。从世界类型上看。由于区块链自身机制导致的安全事件,看上去数量非常虽然比区块链生态系统要少。但是金额却远超百分之四十二,中间出现问题最多的就是智能合约的安全问题。

我们先来看几个智能合约的安全事件:

新萄京娱乐网址2492777 15智能合约安全的定义

  • 2016年,The DAO事件中,黑客利用智能合约漏洞,围绕The
    DAO项目募集来价值1.5亿美元的以太币发起攻击,并将其中当时价值相当于7000万美元的以太币转走。虽然后来通过“硬分叉”找回了被转移走的以太币,但这也破坏了区块链“去中心化”的理念,并造成以太坊社区永久地分裂成ETH和ETC。在金融行业里,这一类“无人监管的资金池”是严重不合规的,极有可能会被黑客或者其他人盯上。
  • 2017年,以太坊客户端Parity多重签名合约漏洞,导致93万个以太币被锁住,谁也解不开,从而永久的被丢失。
  • 2018年,美链BEC合约一个低级的溢出漏洞被黑客所利用,可以无限制地产生新的代币。当天量BEC代币从两个地址转出后,进一步引发抛售潮,当天BEC价格暴跌94%,其价值几乎归零。

所以我觉得,智能合约本质上应该是一种预先设置好确定性的规则,而不是任意性的逻辑。

最近,安全公司知道创宇发布了《区块链安全风险白皮书》,其中一些数据显示,在2108年上半年,区块链安全事件数量及损失金额都远超之前几年的数倍甚至数十倍。从事件类型上来看,今年由于区块链自身机制导致的安全事件,其数量虽然比区块链生态要少,但金额却远超42%,而其中,区块链自生机制安全问题,智能合约的问题排在首位。

从合约性上来讲,它是预制规则,所以说还算不上法律上的合约。

所以智能合约本质上,应该是一种预先设置好、确定的规则,而不是任意的逻辑。

从智能性上看,它只需要支持有线的可编程性而不需要支持无线的智能。

  • 从合约性上讲,它是预制规则,而不是法律合约;
  • 从智能性上看,它只需要支持有限的可编程性,而不是支持无限的“智能”;
  • 从完备性上看,它也无需“图灵完备性”;比如法律条文,越清楚、越明确、越简单越好,而不是越复杂越好;
  • 从交互性上看,它也无需访问外部系统。因为它需要上万个节点重复地去执行,如果允许访问外部系统,由于访问的时间、网络等原因导致访问结果不同,就达不成一致,执行结果就作废了。

从完备性看,它不需要图灵完备,比如说一些法律条文越清楚越明确越简单越好,不是越复杂越好。

不同行业有不同的思维模式。

从交付性上看,它也无需要访问外部系统,因为他需要上万个节点重复的去执行。如果允许访问外部系统,由于外部时间的一些网络,等等各种因素的不一样条件。不一样有可能产生反问的结果也不一样,这样最后大家就达不成一致,最后执行的结果就完全作废了。

  • 互联网行业是“遇见问题”,遇到什么问题,就解决什么问题,讲究系统的快速迭代。
  • 金融行业则是“预见问题”,对于所有可能发生的后果,都需要预先判断,并有针对性的应急处理预案,否则系统就不能上线。

新萄京娱乐网址2492777 16智能合约与传统合约对比

由于图灵完备的智能合约引入了太多的不确定性和安全隐患,因此它不适合比较严肃的金融场景。将智能合约用于一些不涉及“钱”的简单场景,如在线预约等,是否支持图灵完备并不重要;但是一旦用于金融场景,则需慎重、再慎重。

所以我们需要重新对智能合约进行一些理解。一般来讲呢,不同的行业有不同的思维模式。我们大家接触的多的是互联网行业,那是什么是遇见问题,就是遇到什么问题就解决什么问题,讲究我们的软件系统能够快速的迭代。

新萄京娱乐网址2492777 17不同行业有不同的思维模式

而金融行业追究的是预见问题,这个预字很像同音词。他是什么呢,预先能够预知预判,所有的可能发生的问题以及可能产生的后果。并且有针对性的应急处理预案,否则的话这个系统可能就不能上线。

根据我们的实践经验来看,将智能合约用在金融场景上,一定要做好限制、做好隔离,提升安全性和可控性。

由于图灵完备的智能合约引入了太多的不确定性和安全隐患。所以隐患,所以他不适合于比较严肃的金融场景。比如说把智能合约用在一些不涉及到钱的一些感简单场景,比如说在线预约等等,这些场景下。图灵完备是不是并不太重要,但是一旦用于金融场景,就需要慎重再慎重。

  • 限制:一方面将其逻辑固化,防止被篡改;另一方面,限制其逻辑灵活性,避免图灵完备。
  • 隔离:对所有智能合约,做好调用隔离、数据隔离、执行隔离,避免智能合约之间互相影响。

根据我们之前的实践经验来看,把智能合约用在金融场景下。就是非常要做好限制,作好隔离就是提升它的安全性和可控性。这个限制,一方面就是把他的逻辑固化,防止被篡改。尽可能地避免他去去去升级去改造。但是可以把他下线,然后重新换一个新的上来。另外一方面就是限制他逻辑的复杂性,要越简单越好,避免这个图灵完备性。

总之我们需要重新理解“智能合约”。它是运行在区块链之上,由多方自主执行的预置规则,用于对交易进行检查和限制。

隔离的就是对所有的智能合约。要做好调用方面的隔离咱们之间就不能说相互调用太复杂了,做好第二个做好数据方面的隔离他们的数据最好也不能够直接访问,互相访问。再一个就是做好执行上的隔离,每个智能合约的执行他们也不要互相影响。避免智能合约产生的一些其它的一些问题。

这种场景下,它不需要太“智能”,更不需要具备“图灵完备性”。

总的来讲,我们是需要重新理解智能合约。它是什么,它是运行在区块链之上,有多方自己自主执行的一个预制规则。它的核心的目标是对交易进行检查和限制限制这个交易去产生让这个交易。合规合法,和流程而正确,而不要在这个交易错了之后再去做对账。所以在这种场景下它是不需要太过智能,也不需要图灵完备。

新萄京娱乐网址2492777 18智能合约的是与非

最后我总结一下。就是智能合约的是与非,是在哪,它提高了可编程性确实更灵活,它的非在于什么,就是在于图灵完备太过于灵活的,会带来很多安全隐患,所以这个方面,我们需要严格限制或者要把它抛弃掉。

今天的分享就到这里谢谢大家。

群友:我有个基础问题,智能合约在本地执行,是如何防止本地篡改代码逻辑的?

刘胜:合约的代码,是作为数据预先写入到区块链中的,不会被篡改。

群友:但执行的时候,依旧是在本地内存里执行,是怎么做到本地完全做到防篡改?

群友:感觉图灵完备的风险还是太高了

刘胜:

1,别把虚拟机也篡改了呀;

2,如果虚拟机改了,结果不一样了,这只是影响一个全节点,而大多数节点执行还是正确的。

群友:智能合约已经出现安全问题,是太复杂造成的吗?目前有无智能合约形式化安全验证之类的成果?

群友:只能合约限制过于灵活。

刘胜:这是一个好问题。

群友:您的意思是智能合约执行,是同一组数据在所有节点里一起执行,在通过共识写入区块?

刘胜: 对,共识完成后才会写入的。

刘胜:我回答一下,尝试回答一下谭总的这个问题啊,这个问题却是一个好问题,智能合约安全问题,是因为太复杂,这个怎么说呢,这个复杂,其实不完全是合约本身的复杂性。而是你要合约执行环节等等很多方面的复杂性。

群友:美国一家机构已经成立智能合约审计

刘胜:

其实你像刚才指那个案例。那个美链那个那个案例其实他的合约非常简单呀,可能不到两百行吧,他就是在一个整数溢出的方面没有注意到。非常低级的low,是个程序员应该理论上都能够了解这个这个问题。但是这个地方被别人利用之后,就差点造成了很严重的后果。

所以现在讲这个智能合约的安全审计,其实有一家阿。在16年在那个维他令可就在他的论文里面在二三的一个报告研究报告里面就提过。今年好像应该有西安电子科技大学有一家做了一个链安科技的他们做了一个智能合约验证就是服务vaas这个一个服务啊,要做智能合约的一个验证。但这里面有还是有些问题。

智能合约的形式化证明这个东西确实很技术很牛。但是它的作用,我觉得还是很有限。

最近Vitalik他提了一种说法就说什么叫智能合约的安全啊,就是说理论与现实的区别差异就是安全的,就是说。你合约的时限和合约的意图之间的差异,就是安全性问题。

但是这个意图,什么叫智能合约的意图,他没有做进一步的定义,这个意图其实很难做严格的定义就说他有些事,就像有些话是嘴巴说的,有些话,有些事情是他真正做的。还有些事情是他心里想的,但是这哪一个道理,才是和智能合约的真正的意图。

比如说有些人做一些什么事,但是他对管理人员的这个权限放得非常非常大,他有可能就想自己做当然这也是猜测吧啊。他心里想的和说的一套可能就是两套东西,但这个东西到底是以哪个为准。

还有一些就是说他想确实也这么想,但是这个东西漏洞被坏人利用了。那这个到底是算意图还是不算意图呢。所以这个东西是讲不太清楚的。我总的觉得是形式化证明的技术很牛,但是安全是证明不来的,我可以证明他不安全,但是我很难证明它安全。

还不知道唐总,我这个解释是不是可以了啊。

成都链安科技,区块链形式化验证平台VaaS

“基于EOS区块链的代币合约同样可能存在BEC代币合约类似的整数溢出漏洞。”

群友:
如果放弃图灵完备,改为封装好的有限功能,那怎么设计该封装哪些功能呢?有什么思路吗?

群友:谢谢刘总,很精辟!

群友: 您对smart contract以后的发展方向是怎么看的

刘胜:

针对特定领域去设计呀,比如比特币脚本,就限制很严格,运作很好的。

如果你都不知道要封装什么,怎么可能确保不被坏人利用导致安全问题。

我的题目,其实就是说 smart contract
不是必由之路,当然也就没方向了。慎用,限制使用,隔离使用。

群友:那有什么好的替代思路

群友:@大圣²⁰¹⁷
我的问题是,目前有一些公链选择了这条路,放弃图灵完备,封装有限功能。如果我作为一个Dapp在选择他们的时候,针对封装有限功能,该怎么去判断合适呢?

刘胜:

我在举个例子吧,

智能合约,核心是将代码写入到区块链中,防止不被篡改,可靠可信的执行。

但是,如果有Bug怎么办?如果有需求变更怎么办?

你去专利网上看,好几个可升级的智能合约,说白了,不就是等效于篡改了原始代码么?

一链一合约

Dapp是个伪命题

我更赞同 Serverless 这个方向。

群友:愿闻其详,请问为什么dapp是伪命题呢?

刘胜:谁产生,谁负责,谁承担后果。

群友:可升级智能合约

刘胜:

不确定的人产生Dapp应用并部署,全体共同承担后果,不合适。

以太坊,通用平台,“世界计算机”这个观点,也不太对。2016年,“世界计算机”说的很多,但是2017年之后,就没人再提了。

群友: serverless我理解是不是把smart contract和链之间做个隔离?

群友:单机电脑可以很容易实现多线程运行,互不干扰。公链难道不能实现dapp责任dapp负责吗?

刘胜:

这就好像,一家生成企业,污染水源后。然后说,我买了净化设备了呀,我交了罚款了呀。。。

我记得
serverless最早是亚马逊开发的一种服务,不需要购买云主机,直接借用亚马逊的多余计算能力。

群友:用这个例子,是不是可以政府把水源用技术分成1000分,一家企业污染,只污染他的那一份,这个思路有可能实现呢?

刘胜:

难,因为合约不是执行一次,而是所有全节点执行的,很有可能没覆盖住成本。

这就是做好合约执行的隔离吗。

群友:但如果这是个问题,那智能合约、封装有限功能的合约,所有合约,都会有一样的问题啊

群友:解决方式除非是完全放弃区块链合约

刘胜:

其实,靠谱一点的做法,都是把计算拿出来做的,不是放在区块链全节点上执行。

是的,计算和存储剥离开来。

不是单一方执行呀,不确定的多方执行,但不需要全部的全节点来执行

群友:可行的

群友: 但这样本质没变,一个dapp的责任,一堆节点来承担。

群友:如果核心问题是成本收益率,那就看足够安全数量的节点参与,共有多大的成本了。EOS
21个节点,我知道有的dpos公链15个节点,也许成本就算的平了。

刘胜:对,但是少一些节点,就少一点成本。但是EOS相对固定节点身份的模式,我是不喜欢的,中心化太厉害。

群友:让全节点参与单个smart contract本身就是不科学的

群友:有几个智能合约安全成果

群友:嗯,随机选择一定数量的节点做共识,应该是个好方向

群友:分享很重要。

刘胜:

支持EOS,以太坊的区块链形式化验证平台VaaS

VaaS(Verification as a
Service)是全球首个同时支持EOS、以太坊区块链智能合约的自动形式化验证平台,具有验证效率高、自动化程度高、人工参与度低、易于使用、支持多种合约开发语言、可支持大容量区块链底层平台等特点。

群友: 问个题外话题,您对未来公链的发展模式如何看

刘胜:发展模式,是指什么呢?

群友:你们规划的最先可能落定的应用是哪方面?谢谢!

群友:可能我问的太宽泛了,您觉得eos算一个好的方向吗?如果不是,您觉得什么才是比较理想的公链

群友:姜总可能问公链谁会尘埃落定,

刘胜:是指整个行业,还是我公司?——在传统领域话语权大的,就更容易地。

群友:这么多问题,万问齐发,辛苦刘总了

群友: 你们公司

刘胜:

不同思路——以太坊选择了更民主,EOS选择了更集权和垄断

我团队,针对行业联盟链,做了一个底层框架产品——优链,去年首批通过信通院《可信区块链》预测试,今年也过了一轮测试,在10月可信区块链峰会上公布结果。

参与标准编写过程中,在智能合约方面,当时就有很多争论,最后都放在“可选测试项”中了。

群友:看来您是准备采用serverless的思路

刘胜:然后,对智能合约的形式,其实各家也都不同。

比如,有一家就是上传Jar包,然后在Java虚拟机中执行,也算智能合约了。。。

我是对 图灵完备 吐槽太多。。。:)

其实,IBM也意识到这个问题,在其Fabric中有一点体现。

群友:现在有些DAG也号称搞出了图灵完备的smart contract

群友:我一直没弄明白DAG上怎么跑

刘胜:

但是最后做的结果,却只是改了个名字,不叫“智能合约”,改为“链上代码”。

而且还偷懒了,直接用Go语言(依然还是图灵完备的,而且还没有Gas机制),只能通过时间来限制资源使用,

这又带来很多其他的问题。

群友:不要急于否定智能合约的应用场景,复杂场景用复杂流程,简单场景用简单流程。

群友:以太坊的智能合约太low了,没法用

群友:据您所知,目前有多少在这么做的公链了?放弃图灵完备,只提供有限合约的。

刘胜:

开头说了,公链融资法宝之一就是智能合约,所以大部分号称区块链3.0的公链,都是支持图灵完备智能合约的。

所有的3.0公链,都是对标以太坊的,而以太坊本身的方向,个人觉得是有问题的,今天的分享,挑战的也是这个观点。

初步共识是,满足大规模商业应用的区块链,才是真正的3.0

群友:互联网发展20多年才来个+,区块链随随便便都3.0甚至4.0,也是醉了

刘胜:

但实际上,2.0和3.0之间,可能有很大的鸿沟

央行数字货币算是大规模商业应用,但是蔡老师估计得10.0才能够实现。

我很少研究公链,除非有技术独到之处。

群友:安全问题可以用我的一个方法解决,但你提到权限过大这种后门搞不了

群友:一句话就是这种弱点问题的产生是因为内存里代码和参数是一样的,通过特殊的方法参数就有可能变为代码,我的专利就是叫他们语义体系完全不同,鸡同鸭讲

群友:我这个方法可以解决注入溢出跨站等计算机体系的弱点问题

群友:系统复杂性越高,稳定性越差,是常识。指望一招包打天下不可能。

群友:智能合约只是工具,使用有严格限定条件。自身完备不能解决应用环境复杂的问题,这个理解对吗?

刘胜: 恩,会有很大效果,能发现大部分已知的安全问题。

但还是那句话,安全性是无法绝对证明的。

群友:安全是相对的,至少还有后门和社工

刘胜:

意思是说,过于灵活的智能合约会因为编写者及环境的水平差异,导致安全问题

智能合约只是工具,——所有技术都是工具

使用有严格限定条件。——没有条件,只是在特定场景需要慎用。

自身完备不能解决应用环境复杂的问题——图灵完备就是可以解决所有“可计算”问题的。但在实现过程中,可能也带来其他的安全隐患。

就是说,安全性= 实现和意图的差异。——

群友:V神那句话的意思,是指
智能合约编写者想实现的,和实现出来的,两者之间的差异,就导致了智能合约的安全问题。

群友: 根据哥德尔定律

刘胜:“可计算”这个条件,是很广泛的。能过逻辑推理的,都是可计算问题。

群友:说白了就是程序员水平不够

刘胜:

实现 > 意图

实现 < 意图

这都是差异,都是安全问题。

但是,严格的相等,几乎无法做到。

群友:程序员就是底层工程师,安全还取决架构设计吧

刘胜:因为“意图”本身,就是很难理解和严格定义的。

群友:@吉檀迦利 是说写智能合约的程序员

新萄京娱乐网址2492777 19intent
is fundamentally complex

群友:是的,意图本身就很可能不具备完备性。

刘胜:

其实上面那句话,后面就引出了对“意图”的问题。

安全就不是一个可以严格定义的,所以,只是架构,解决不了安全问题。

群友:哲学上说就是 我的意图无法包括该意图的全部信息。

群友:道可道非常道?

群友:智能合约不是万能的,没有智能合约是万万不能的

版权声明:

1.本文全部著作权归作者刘胜独占享有。

2.任何个人或机构如需转载本文,无须再获得作者书面授权,但是转载者必须保留作者署名,并注明出处。

3.作者保留对本文的修改权。他人未经作者许可,不得擅自修改,破坏作品的完整性。

4.作者保留对本文的其他各项著作权权利。

大家观察 | 郭善琪等:区块链的共识与共识的区块链

网站地图xml地图