资产交易智能合约实现问题:Token是怎样炼成的?

深度 Milton 11071 浏览

今天我们要谈论的是智能合约,智能合约这个题目一直都是有争议性的。记得笔者在2015年7月在北航跟Vitalik 讨论智能合约的时候,当时就提出以太坊的智能合约既不智能也不是合约,当时Vitalik 说他同意观点。他虽然同意笔者的观点, 但是不愿意更改名字,他认为这个名字是非常吸引人的,所以继续使用这个名字。

在2016年出了这个The DAO事件,美国主流媒体大肆批评智能合约,认为它第一不智能,第二不是合法合规的合约,与传统的法律意义上的合同有混淆之嫌。虽说这事件引起了巨大的风波和困扰,可是人们的反应不是说放弃智能合约,而是加速智能合约的研究,以至于今天关于智能合约的研究有许多新思路。其中一个新的研究方向是把法律法规放在智能合约上目的是为了实现法规的部分自动执行,这是原来以太坊没有做到的。如果没有法律法规,智能合约只能是“链上代码”。

经过多年的思考,笔者认为智能合約有很大的价值,主要是因为智能合约可以与区块链发生关系。其价值体现在在于智能合约的数据来源于区块链链上,执行在链上,输出结果在区块链上,而区块链上承载着一个国家的法律,这是区块链被称为“主权区块链”的原因。能合约与区块链的结合形成了智能合约法规自动执行系统,系统系统不同于互联网系统,不同于其它软件系统,因为这上面承载着国家法律,代表国家的主权在区块链上面,可被智能合约执行,这是一个非常重要的概念!

该系统有三个重要的原则

1)首先,智能合约数据来源于链上这是指智能合约的输入是从区块链的数据库里面出来的。这些数据是由区块链保证的,具有真实难以篡改的特征。

2)其次,智能合约的执行在链上。这是指智能合约是在多个节点上面执行,而所执行的结果必须是相同,智能合约所出的结果一定要被共识才能被接受。

3)再者,智能合约输出在链上。这是指智能合约的输出结果必须存在区块链上面,这样保证结果的真实与可追溯性,并且为其他相衔接的智能合约提供输入数据的准确性保障。

根据以上三个原则,我们可以判定一个自称“智能合约”的系统是不是真的是智能合约?

1) 如果使用不在区块链上的数据,那执行结果可能不可靠,若作为证据,证据的可信力低。

2) 如果执行的结果没有被共识过,这结果也不值得信任, 参与方可以不认这结果,同样,证据可信力低。

3) 如果产生的结果没有写在区块链上面,就会有被更改过的可能性,也难以作为可信的证据。

4) 如果智能合约上不是执行相关的法律法规,那么智能合约只能是链上代码,而不能被称为智能合约。

5) 如果智能合约没有在区块链系统上运行,例如在类似区块链系统上运行或是在链下运行,这结果也不能信任。类似区块链现在还有许多问题,许多系统的共识机制都被挑战, 链下活动也不能够被信任因为计算没有在链上。

智能合约在资产上链后会成为重要工具,如果要买或是卖资产,智能合约可能是许多人选择的工具。所以智能合约的合法性,安全性,可靠性会非常重要

此前讲到智能合约的几个重要原则,在实现智能合约机制的时候还是有许多的问题。

一个非常有趣的历史,Vitalik当时在设计智能合约,他并没有想到法律的问题,所以当我们在2015年讨论的时候,我问法律的问题,他表示根本没有考虑。因此在2016年The  Dao事件发生,主要媒体批判以太坊,提到说这根本不是合约,为什么叫智能“合约”?

所以在2015年底,IBM公司出超级账本的时候,他们直接把智能合约改名叫做“链上代码”(chaincode),这是一个正确的决定。可是在2016年The  Dao事件发生了之后,大家的决定不是在链上代码上前进,而是考虑把法律真正放在智能合约机制。这代表是说虽然一开始这个名字取错了,阴错阳差,但是大家觉得还是应该把法律放在智能合约里面, 而不是只发展链上代码。现在发展的一个方向是笔者提出的可自动执行部分法规的智能合约。

第一坑:没有法律的支持

第一个坑就是没有法律的支持,或者说没有考虑到法律。在2016年后,大家都在研究如何把法律放在智能合约。 大家认为超级账本上的链上代码不会是最终的概念,或者说是不足够的概念,社会要的是可部分执行法规的智能合约,不是链上代码。智能合约上面要有法律法规,承载着一国的法律。这个思想也带动了后来贵阳政府提出的“主权区块链”的概念。

第二坑:把法规放进智能合约

第二个坑是直接把法规写成可执行的代码,这并不是一个很难的做法。 例如麻省理工学院OMS(Open Mustard Seed)的项目,就进行了这样的实验。

OMS以喝酒的相关法律为例,在欧洲很多国家相距很近,特别是在两国边境处,可能花几分钟就从一个国家走到了另一个国家。假设一个国家的法律规定,可以喝酒的年龄是18岁,另外一个国家是21岁,如果有一个18岁的人拿着酒瓶喝酒,从一个国家走到另外一个国家,那么他的可以合法喝酒的年龄就改变了,可能的结果是原本不是违法的事到另一个国家就违法了。 把法规放到智能合约上,智能合约通过外部数据输入,得到一个18岁的人正在一个18岁为合法喝酒年龄的国家喝酒,然后跨国过境,到了一个21岁为合法喝酒年龄的国家,此时自动合约会对该人自动执行罚款。该人的账号一定数目的罚款金额就会被拨走。

为什么说这也是一个坑呢?因为这儿的“智能合约”上承载的是面对大众的法律法规,而不是一个合同,这里的用法应该叫做“智能法规”,它的目的是可以自动部分执行法律法规。但是智能合约应该承载的是合同,合同面向的是合同的相对方,区别于法规面向的是一般大众。因此将法规放在智能合约里不是真正意义上的智能合约。

第三坑:把合同文本直接翻译成智能合约的代码语言

现在,美国有一个团队用自动的方法来实现智能合约。他们的做法就是把一个法律合同文本,经过自动或者半自动的处理把合同文本的自然语言转成可执行的代码,这个可执行的代码就变成智能合约。那这个是不是一个好的方法?

作者认为这还是一个大坑,从一个现实世界中的法律合同,转成一个智能合约,然后去执行法律法规,虽然说出发点是可取的, 但细想一想,一个法律合同,跟一个智能合约,他们本质上到底是不是一个同样的东西?其实不是,因为法律合同背后代表的是一对法律关系,并以自然语言的方式呈现出来。所以合同在形成的时候根本没有考虑到计算机的问题,无论是在组织上还是在语言呈现上,而智能合约本质上来说更多的是一个执行合同的工具。

所以如果拿一个合同的文本,经过自然语言处理,把它转成一种计算机语言,这恐怕就是一个死胡同,因为二者的本质属性不同。并且合同文本本身的自然语言与计算机的代码语言本身并不能完全对等,如果强行将合同文本转换成智能合约的机器合度语言,今后将会遇到很大的困难,比如说,自然语言某一个词有时候可以有多种释意,代码要如何穷尽所有解释?即使可以穷尽解释,那么执行时,要去选择哪一种解释去执行?

对于解决方法,也许有人说,要不我干脆在写合同的时候也考虑到智能合约的计算机问题,尽量把自然语言与代码对应起来,简单化合同。这也不太可行,因为计算机自然语言处理技术虽然有很大进步,但是把自然语言变成一个可执行的代码,放在区块链上面使用,又符合区块链三个重要原则,这实在是太难了。所以到底该怎么办?事实上还是有办法的,以后笔者再解释如何解决这个难题。

 

 

(作者:蔡维德姜嘉莹)


声明:本文为文章作者或转发者向区势传媒的投稿,观点绝不代表区势传媒立场,亦不构成任何投资意见或建议。

评论(0)

最新评论