中文 | English
集成解决方案
产品中心 集成解决方案
首页 > 产品中心 > 集成解决方案
为什么要用区块链技术实现智能合约?

发布时间:2021-12-03 11:46:04

来源:bwin地址

  智能合约貌似就是一段脚本,可以被准确执行。这用传统的技术也能实现,为什么一定要用区块链技术呢? 个人的理解,区块链的特点有两个 1.数据不能修改、删除…

  这个术语是跨领域法律学者尼克·萨博(Nick Szabo)提出来的,他对智能合约的定义是“一个智能合约是一套以数字形式定义的承诺(promises),包括合约参与方可以在上面执行这些承诺的协议。”

  换成更加通俗的描述就是“智能合约是一个在计算机系统上,当一定条件被满足的情况下,可以被自动执行的合约。”

  举个大家都熟悉的例子,就是信用卡的自动还款服务,我们就可以把它理解成一种智能合约。在具体的时间(信用卡还款日),当还款条件被满足(储蓄卡余额比信用卡还款金额要多的情况下),计算机系统会自动完成这笔交易(用最初设定的储蓄卡为信用卡还款)。然而这些服务仍是运行在传统的计算机系统之上,而这些系统并没有利用区块链技术。

  既然传统计算机技术就可以实现自动交易的合约,那为什么这些应用没有广泛应用呢?那是因为还有一个问题没有被解决,那就是信任问题。我们知道,在现实世界中,合约是写在纸上的,签印之后人们才认为它生效;在计算机世界中,合约是记录在代码里的。

  那数字化的合约,会不会有合约被篡改之类道德风险,抑或是被黑客攻击的技术风险呢?答案是很高的。

  回到我们前面讲的自动还款的例子,如果是银行的官网提供这项服务,大家也许能够愿意接受,因为很多人是愿意相信银行的。但是同样的服务,搬到淘宝上新开的店铺,或者其他的网站上,从技术来讲其实也并不是那么难,但是会有人选择这种服务吗?因为人们不会信任提供服务的人,因为他们太容易做坏事,而且一旦出现纠纷,举证也是件非常困难的事情,最重要的证据都保存在对方的计算机系统中,他们想改点什么还不容易么。

  这就要从区块链技术的几个基础的特性讲起,我们经常讲,区块链技术给我们带来了一个去中心化的,不可篡改的,高可靠性的系统。首先是不可篡改,这样就不需要担心合约的内容会被更改;其次是高可靠行,我们不用担心系统在条件被满足时不执行合约;然后就是去中心和给我们带来的全网备份,完备的记录完全可以支持支持事后的审计。这样的系统,我们不再需要去相信和我们签订合约的对方,只需要相信区块链系统会把剩下的事完成就可以了。这就是区块链技术带来的革命性变化——去信任。正是在去信任的环境下,智能合约才大有用武之地。

  现在,比特币网络、以太坊网络以及国内的井通网络等一系列区块链社区都提供了公开的智能合约编程的接口。

  已经有众多的创业公司基于这些公开的接口,开始开发智能合约的业务了,如果你也想一显身手,完全可以去尝试一下。

  尼克•萨博关于智能合约的工作理论迟迟没有实现,一个重要原因是因为缺乏能够支持可编程合约的数字系统和技术。区块链技术的出现解决了该问题,不仅可以支持可编程合约,而且具有去中心化、不可篡改、过程透明可追踪等优点,天然适合于智能合约。因此,也可以说,智能合约是区块链技术的特性之一。

  如果说区块链1.0是以比特币为代表,解决了货币和支付手段的去中心化问题,那么区块链2.0就是更宏观的对整个市场去中心化,利用区块链技术来转换许多不同的数字资产而不仅仅是比特币,通过转让来创建不同资产的价值。区块链技术的去中心化账本功能可以被用来创建、确认、转移各种不同类型的资产及合约。几乎所有类型的金融交易都可以被改造成在区块链上使用,包括股票、私募股权、众筹、债券和其他类型的金融衍生品如期货、期权等。

  智能合约看上去就是一段计算机执行程序,满足可准确自动执行即可,那么为什么用传统的技术为何很难实现,而需要区块链技术等新技术呢?传统技术即使通过软件限制、性能优化等方法,也无法同时实现区块链的特性:1是数据无法删除、修改,只能新增,保证了历史的可追溯,同时作恶的成本将很高,因为其作恶行为将被永远记录;2是去中心化,避免了中心化因素的影响。

  基于区块链技术的智能合约不仅可以发挥智能合约在成本效率方面的优势,而且可以避免恶意行为对合约正常执行的干扰。将智能合约以数字化的形式写入区块链中,由区块链技术的特性保障存储、读取、执行整个过程透明可跟踪、不可攥改。同时,由区块链自带的共识算法构建出一套状态机系统,使得智能合约能够高效地运行。

  基于区块链的智能合约包括事务处理和保存的机制,以及一个完备的状态机,用于接受和处理各种智能合约;并且事务的保存和状态处理都在区块链上完成。事务主要包含需要发送的数据;而事件则是对这些数据的描述信息。事务及事件信息传入智能合约后,合约资源集合中的资源状态会被更新,进而触发智能合约进行状态机判断。如果自动状态机中某个或某几个动作的触发条件满足,则由状态机根据预设信息选择合约动作自动执行。

  智能合约系统根据事件描述信息中包含的触发条件,当触发条件满足时,从智能合约自动发出预设的数据资源,以及包括触发条件的事件;整个智能合约系统的核心就在于智能合约以事务和事件的方式经过智能合约模块的处理,出去还是一组事务和事件;智能合约只是一个事务处理模块和状态机构成的系统,它不产生智能合约,也不会修改智能合约;它的存在只是为了让一组复杂的、带有触发条件的数字化承诺能够按照参与者的意志,正确执行。

  (1)首先用户必须先注册成为区块链的用户,区块链返回给用户一对公钥和私钥;公钥做为用户在区块链上的账户地址,私钥做为操作该账户的唯一钥匙。

  (2)两个以两个以上的用户根据需要,共同商定了一份承诺,承诺中包含了双方的权利和义务;这些权利和义务以电子化的方式,编程机器语言;参与者分别用各自私钥进行签名;以确保合约的有效性。

  (1)合约通过P2P的方式在区块链全网中扩散,每个节点都会收到一份;区块链中的验证节点会将收到的合约先保存到内存中,等待新一轮的共识时间,触发对该份合约的共识和处理。

  (2)共识时间到了,验证节点会把最近一段时间内保存的所有合约,一起打包成一个合约集合(set),并算出这个合约集合的Hash值,最后将这个合约集合的Hash值组装成一个区块结构,扩散到全网;其它验证节点收到这个区块结构后,会把里面包含的合约集合的Hash取出来,与自己保存的合约集合进行比较;同时发送一份自己认可的合约集合给其它的验证节点;通过这种多轮的发送和比较;所有的验证节点最终在规定的时间内对最新的合约集合达成一致。

  (3)最新达成的合约集合会以区块的形式扩散到全网,如下图所示,每个区块包含以下信息:当前区块的Hash值、前一区块的Hash值、达成共识时的时间戳、以及其它描述信息;同时区块链最重要的信息是带有一组已经达成共识的合约集;收到合约集的节点,都会对每条合约进行验证,验证通过的合约才回最终写入区块链中,验证的内容主要是合约参与者的私钥签名是否与账户匹配。

  (1)智能合约会定期检查自动机状态,逐条遍历每个合约内包含的状态机、事务以及触发条件;将条件满足的事务推送到待验证的队列中,等待共识;未满足触发条件的事务将继续存放在区块链上。

  (2)进入最新轮验证的事务,会扩散到每一个验证节点,与普通区块链交易或事务一样,验证节点首先进行签名验证,确保事务的有效性;验证通过的事务会进入待共识集合,等大多数验证节点达成共识后,事务会成功执行并通知用户。

  (3)事务执行成功后,智能合约自带的状态机会判断所属合约的状态,当合约包括的所有事务都顺序执行完后,状态机会将合约的状态标记为完成,并从最新的区块中移除该合约;反之将标记为进行中,继续保存在最新的区块中等待下一轮处理,直到处理完毕;整个事务和状态的处理都由区块链底层内置的智能合约系统自动完成,全程透明、不可攥改。

  简单地说,智能合约就是传统合约的数字化版本。它们是在区块链数据库上运行的计算机程序,可以在满足其源代码中写入的条件时自行执行。智能合约一旦编写好就可以被用户信赖,合约条款不能被改变,因此合约是不可更改的。

  开发人员会为智能合约撰写代码。智能合约可用于交易和(或)两方/多方之间的任何交换行为。该代码包含一些会触发合约自动执行的条件。

  例如,与房屋租金协议相关的智能合约只有当业主收到租金才会触发自动执行,并将公寓的安全密钥发送给租户。这个合约可以确保租金的定期支付,并且每个月重启。

  一旦编码完成,智能合约就会被上传到区块链网络上,即它们被发送到所有连接到网络的设备上。从另一种区块链应用——比特币——的情况来说,这就好像把关于比特币交易的网络更新上传到区块链上。

  一旦将数据上传到所有设备上,用户就可以与执行程序代码的结果达成协议。然后更新数据库以记录合约的执行情况,并监督合约的条款以检查合规性。

  因为中心化单独节点不可信,或者构建可信单一节点成本太高时,必然会选择去中心化的区块链系统。

  比如每月自动从银行账号里扣水电费就是个典型的智能合约。其实现是显著中心化的。你要么信任这些基础设施提供商,把银行账号信息给他们同意扣款。要么让银行每月收集水电费信息然后付款。

  你总得信银行或者电力公司之一。这些在大多数国家是严格监管的基础性服务,所以直接用中心化的智能合约即可。上链并没有显著优势。

  又或者有利益冲突(比如使用阿里云/腾讯云直接导致它们拿到你公司机密信息。还有万网早年看到好域名注册直接抢走等。处理ipo等机密信息的银行,因为获得公司数据而马上注资竞争对手等)

  矿工通常和区块链网络使用者没有直接利益冲突。矿工的诉求是最大化挖矿回报,对链上跑了什么合约并不是十分关心。

  通过谷歌的关键词搜索趋势图可以看出,智能合约正在受到越来越多的关注,从而我们需要一个更加清晰的定义。目前,与人们对智能合约的兴奋相伴的还有对这一术语含义的困惑。Peter Todd–比特币核心(Bitcoin Core)的开发者之一–非常准确地总结了智能合约的现状:

  “从智能合约讨论中得到的结论:没有人理解智能合约究竟是什么,如果我们要实施智能合约,应该需要预言机(oracles)。”

  在本文中,我尽力进一步阐明智能合约的本质。我的首要目标是,使得隐藏在智能合约背后的假设明确化,并澄清人们对与法律系统相关的神秘现象的误解。然而,这只是我我第一次尝试找到一种方式,将智能合约的理念系统化。我希望得到社区的反馈,从而我们能够得到比现在更加清晰的理解。

  说到法律术语,我要指出,虽然我是一名律师,但是我并不熟悉英语世界的法律术语,也不熟悉英美普通法(common law)系统。我是一名德国法律系统的学者,我学习德国法律和在法律领域工作将近十年了(译者注:英语世界法律大部分属于英美普通法,德国属于大陆法系,故作者特别强调)。虽然,我借助谷歌搜索的能力,选择我所知的最好词汇,但是不精确是在所难免的。如果你有能力,请指出我对术语的误用。从积极的角度看,德语对法律术语的严苛,在这里也许有些帮助。

  另外,我不是一名计算机科学家,虽然我个人写代码的时间长达12年了。如果你发现计算机领域的错误,请指出来。谢谢!

  “智能合约”(smart contract)这个术语至少可以追溯到1995年,是由多产的跨领域法律学者尼克·萨博(Nick Szabo)提出来的。他在发表在自己的网站的几篇文章中提到了智能合约的理念。他的定义如下:

  “一个智能合约是一套以数字形式定义的承诺(promises) ,包括合约参与方可以在上面执行这些承诺的协议。”

  一套承诺指的是合约参与方同意的(经常是相互的)权利和义务。这些承诺定义了合约的本质和目的。以一个销售合约为典型例子。卖家承诺发送货物,买家承诺支付合理的货款。

  数字形式意味着合约不得不写入计算机可读的代码中。这是必须的,因为只要参与方达成协定,智能合约建立的权利和义务,是由一台计算机或者计算机网络执行的。

  智能合约的参与方什么时候达成协定呢?答案取决于特定的智能合约实施。一般而言,当参与方通过在合约宿主平台上安装合约,致力于合约的执行时,合约就被发现了。

  协议是技术实现(technical implementation),在这个基础上,合约承诺被实现,或者合约承诺实现被记录下来。选择哪个协议取决于许多因素,最重要的因素是在合约履行期间,被交易资产的本质。

  再次以销售合约为例。假设,参与方同意货款以比特币支付。选择的协议很明显将会是比特币协议,在此协议上,智能合约被实施。因此,合约必须要用到的“数字形式”就是比特币脚本语言。比特币脚本语言是一种非图灵完备的、命令式的、基于栈的编程语言,类似于Forth。

  当萨博在近二十年以前,在网络提出了智能合约理论时,实践一直严重地落后于理论。一直没有如何将这个理念转变现实的清晰路径。

  简而言之,萨博在他的智能合约定义中建立的协议,已经被进一步开发。它们已经以比特币协议的形式出现,或者更加一般地说,这些协议能够实现中本聪共识(Nakamoto consensus)。

  在这些协议被开发的同时,我们获得了另一个必需的构件:第一种真正的、原生的数字资产,即作为货币的比特币。没有这种资产,智能合约也将不可行,因为金融部门在过去的几十年中,一直对任何创新抱有极端的敌意。

  最后,另一个还没有结出果实的概念是智能财产。我们正在进入一个计算和连接无所不在的时代,通俗地讲,就是物联网。物理实体能够从互联网中检索信息和向互联网发送信息,它们也能够通过软件控制它们自身的使用(想想数字版权管理吧),这使得我们能够建立萨博所指的嵌入式合约(embedded contracts)。

  萨博认为嵌入式合约最初的应用实例是自动贩卖机、销售点终端、大公司间的电子数据交换和银行间用于转移和清算的支付网络SWIFT、ACH、FedWire。另一个嵌入式合约的例子是数字内容消费–例如音乐、电影和电子书–领域的数字版权管理机制。

  人们对智能合约概念的最多的困惑,源于它的名字和用于描述它的语言。人们似乎从“合约”这一术语中,推断出智能合约一定与法律概念中的合约有某种联系。那么,根据这个逻辑,智能合约是有法律约束力的协定加上其它因素(X),X使得协定变得“智能”。

  从法律的角度,这一推测是错误的。根据参与方选择的智能合约实施,参与双方或者多方完全可能进入一个不满足合法的合约所必需条件的“智能合约”。

  然而,不可否认的是,智能合约必须被归类为与法律相关的行为。我们生活在一个被法律管理和控制的世界,所有可能的经济交易也被法律管理和控制。合约法只是组织经济交易的一种可能的工具。原理图如下:

  让我们看一下合约法和智能合约的交集部分。我们能否发现一个能够描述这两个系统的合约行为的概括呢?引用萨博的论文:

  萨博告诉我们的是,“合约”的抽象概念是在个人、机构和他们拥有的东西(财产)之间形成关系的一种公认的工具。然而,上面的引用并不清晰,参与方如何达成协定,如何形成协定,没有讲到。

  协定是一个完全的理想情况,从它在正式系统中的实施中抽象而来。当然,事实上这是一个脆弱的抽象。在法律系统中,在许多情况下,具有法律约束力,不要求形成一个协议。与此相反,对智能合约来说,在许多情况下,在形式化以前,没有事前协定。

  形式化在这里的意思是,在一个正式系统实施理想的协定的行为。有两个相关的正式系统。一个是合约法,另一个是你选择的智能合约系统。这两个系统都服务于相同的目的:当违约行为发生时,使得协定能够执行。

  从一般角度理解,对于合约是怎么形式化的这一问题,有人认为它只是实施细节。然而,事实证明,合约的实施的确事关重大。

  现在有两种本质上不同的、形成一种合约关系的方式。这两种方式是截然不同的,因为它们需要不同的执行方式。

  因为一图顶千言,所以来看下面这张我从Lawrence Lessig那里“剽窃”来的信息图,出于本文的需要,我对图片做了轻微的修改。

  在Lessig的最初版本中,是一个人位于信息图的中间,不是一个合约。这位了不起的思考者用他的信息图,努力教给我们这些凡人的是,有四种最基本的约束影响着一个人的一生。这四个约束本质上截然不同的,但是以复杂的方式交织在一起。

  我对原版的信息图做出了修改,用合约取代了人,这里的合约是指双方或者多方之间达成的协定。有趣的是,做出修改以后,这个信息图仍然有效。这四个约束就像管理着人一样,管理着合约关系。

  另外,我着重强调这四个约束中的两个约束,即架构和法律。这两个约束是合约能够被执行的两个最基本的动力。根据参与方选择的协定实施的系统,合约将通过法律系统执行,或者通过架构执行。这两种合约执行模式显著不同。

  Lessig认识到合约执行的两个特征,可以帮助我们谈论两种合约执行模式的不同。一个是代理(agency),另一个是时间性(temporality)。在法律意义上,合约的执行,只有当一些人选择这样做时,才会发生。此外,执行只发生在违约以后,例如事后。

  智能合约的执行在这两个方面,本质上不同于传统合约。为了理解是如何不同的,我们需要首先理解Lessig所指的架构是什么意思。

  Lessig在他的《代码:网络空间的法律》一书中,为了解释代码在赛博空间中的作用,引入了架构的概念。物理空间的形状,就是你的身体穿梭其中的空间,是由它的架构决定的,例如建筑环境(建筑物、街道等)。如此类似,赛博空间的形状是由代码决定的,人们使用的应用和协议就是建立在这些代码上面的。因此,代码是赛博空间的架构。

  法律和架构都有方法管理参与方的行为。法律依赖于个人将规则内化,个人据此调整自己的行为,或者该系统允许法律追索权(例如法庭)。然而,架构通过塑造空间本身管理行为。架构不是关于允许什么,而是什么是可能的。架构既不依靠个人将规则内化,也不依靠起诉系统。

  根据我们衡量合约执行的质量的标准,例如代理和时间性,因此架构明显地不同于法律。架构执行合约时,不需要任何个人或者组织(代理,agency)决定如何执行合约,你可以称架构执行为自我执行(self-enforcing),虽然我不喜欢这种叫法。另外,架构事前执行,违约甚至不可能发生。

  有一件事确定无疑:智能合约已经扎下根了。它们是真正的全球经济的基本构件,任何人都可以接入到这一全球经济,不需要事前审查和高昂的预付成本。它们从许多经济交易中,移除了对第三方的信任必要,在其它情况下,将信任转移到可以信任的人和机构。

  我在这篇博客中尽力想说明的理念是,智能合约怎样与合约法共存。本质上,它们是解决相同问题–以一种方式形成一种关系,使得承诺可以执行–的两种不同方法。就这一点而言,智能合约似乎是更好的解决方案:智能合约事前执行,不像法律系统一样,事后执行。然而,这是一种谬误。最后一次引用全能的萨博:

  “合约法的成功和取代合约法所需的高额成本,使得保存和利用合适的原则,仍然很有价值。但是,数字革命正在剧烈地改变我们能够拥有的各种关系。在这个赛博时代,我们来之不易的法律传统中的哪一部分,将仍然具有价值?将这些法律原则应用到我们的线上关系设计,最好的方式是什么?”

  在合约法中,有许多已建立的原则,仍值得保存。其中包括法律默认规则,我将在另一篇博客中写这个问题。

  因此,为了实现最优的结果,同时利用合约法和智能合约,好像是有利的行为。我将在另一篇博客中,告诉你怎么实现这一点。

  通过谷歌的关键词搜索趋势图可以看出,智能合约正在受到越来越多的关注,从而我们需要一个更加清晰的定义。目前,与人们对智能合约的兴奋相伴的还有对这一术语含义的困惑。Peter Todd–比特币核心(Bitcoin Core)的开发者之一–非常准确地总结了智能合约的现状:

  在本文中,我尽力进一步阐明智能合约的本质。我的首要目标是,使得隐藏在智能合约背后的假设明确化,并澄清人们对与法律系统相关的神秘现象的误解。然而,这只是我我第一次尝试找到一种方式,将智能合约的理念系统化。我希望得到社区的反馈,从而我们能够得到比现在更加清晰的理解。

  说到法律术语,我要指出,虽然我是一名律师,但是我并不熟悉英语世界的法律术语,也不熟悉英美普通法(common law)系统。我是一名德国法律系统的学者,我学习德国法律和在法律领域工作将近十年了(译者注:英语世界法律大部分属于英美普通法,德国属于大陆法系,故作者特别强调)。虽然,我借助谷歌搜索的能力,选择我所知的最好词汇,但是不精确是在所难免的。如果你有能力,请指出我对术语的误用。从积极的角度看,德语对法律术语的严苛,在这里也许有些帮助。

  另外,我不是一名计算机科学家,虽然我个人写代码的时间长达12年了。如果你发现计算机领域的错误,请指出来。谢谢!

  “智能合约”(smart contract)这个术语至少可以追溯到1995年,是由多产的跨领域法律学者尼克·萨博(Nick Szabo)提出来的。他在发表在自己的网站的几篇文章中提到了智能合约的理念。他的定义如下:

  “一个智能合约是一套以数字形式定义的承诺(promises) ,包括合约参与方可以在上面执行这些承诺的协议。”

  一套承诺指的是合约参与方同意的(经常是相互的)权利和义务。这些承诺定义了合约的本质和目的。以一个销售合约为典型例子。卖家承诺发送货物,买家承诺支付合理的货款。

  数字形式意味着合约不得不写入计算机可读的代码中。这是必须的,因为只要参与方达成协定,智能合约建立的权利和义务,是由一台计算机或者计算机网络执行的。

  智能合约的参与方什么时候达成协定呢?答案取决于特定的智能合约实施。一般而言,当参与方通过在合约宿主平台上安装合约,致力于合约的执行时,合约就被发现了。

  协议是技术实现(technical implementation),在这个基础上,合约承诺被实现,或者合约承诺实现被记录下来。选择哪个协议取决于许多因素,最重要的因素是在合约履行期间,被交易资产的本质。

  再次以销售合约为例。假设,参与方同意货款以比特币支付。选择的协议很明显将会是比特币协议,在此协议上,智能合约被实施。因此,合约必须要用到的“数字形式”就是比特币脚本语言。比特币脚本语言是一种非图灵完备的、命令式的、基于栈的编程语言,类似于Forth。

  当萨博在近二十年以前,在网络提出了智能合约理论时,实践一直严重地落后于理论。一直没有如何将这个理念转变现实的清晰路径。

  简而言之,萨博在他的智能合约定义中建立的协议,已经被进一步开发。它们已经以比特币协议的形式出现,或者更加一般地说,这些协议能够实现中本聪共识(Nakamoto consensus)。

  在这些协议被开发的同时,我们获得了另一个必需的构件:第一种真正的、原生的数字资产,即作为货币的比特币。没有这种资产,智能合约也将不可行,因为金融部门在过去的几十年中,一直对任何创新抱有极端的敌意。

  最后,另一个还没有结出果实的概念是智能财产。我们正在进入一个计算和连接无所不在的时代,通俗地讲,就是物联网。物理实体能够从互联网中检索信息和向互联网发送信息,它们也能够通过软件控制它们自身的使用(想想数字版权管理吧),这使得我们能够建立萨博所指的嵌入式合约(embedded contracts)。

  萨博认为嵌入式合约最初的应用实例是自动贩卖机、销售点终端、大公司间的电子数据交换和银行间用于转移和清算的支付网络SWIFT、ACH、FedWire。另一个嵌入式合约的例子是数字内容消费–例如音乐、电影和电子书–领域的数字版权管理机制。

  人们对智能合约概念的最多的困惑,源于它的名字和用于描述它的语言。人们似乎从“合约”这一术语中,推断出智能合约一定与法律概念中的合约有某种联系。那么,根据这个逻辑,智能合约是有法律约束力的协定加上其它因素(X),X使得协定变得“智能”。

  从法律的角度,这一推测是错误的。根据参与方选择的智能合约实施,参与双方或者多方完全可能进入一个不满足合法的合约所必需条件的“智能合约”。

  然而,不可否认的是,智能合约必须被归类为与法律相关的行为。我们生活在一个被法律管理和控制的世界,所有可能的经济交易也被法律管理和控制。合约法只是组织经济交易的一种可能的工具。原理图如下:

  让我们看一下合约法和智能合约的交集部分。我们能否发现一个能够描述这两个系统的合约行为的概括呢?引用萨博的论文:

  萨博告诉我们的是,“合约”的抽象概念是在个人、机构和他们拥有的东西(财产)之间形成关系的一种公认的工具。然而,上面的引用并不清晰,参与方如何达成协定,如何形成协定,没有讲到。

  协定是一个完全的理想情况,从它在正式系统中的实施中抽象而来。当然,事实上这是一个脆弱的抽象。在法律系统中,在许多情况下,具有法律约束力,不要求形成一个协议。与此相反,对智能合约来说,在许多情况下,在形式化以前,没有事前协定。

  形式化在这里的意思是,在一个正式系统实施理想的协定的行为。有两个相关的正式系统。一个是合约法,另一个是你选择的智能合约系统。这两个系统都服务于相同的目的:当违约行为发生时,使得协定能够执行。

  从一般角度理解,对于合约是怎么形式化的这一问题,有人认为它只是实施细节。然而,事实证明,合约的实施的确事关重大。

  现在有两种本质上不同的、形成一种合约关系的方式。这两种方式是截然不同的,因为它们需要不同的执行方式。

  因为一图顶千言,所以来看下面这张我从Lawrence Lessig那里“剽窃”来的信息图,出于本文的需要,我对图片做了轻微的修改。

  在Lessig的最初版本中,是一个人位于信息图的中间,不是一个合约。这位了不起的思考者用他的信息图,努力教给我们这些凡人的是,有四种最基本的约束影响着一个人的一生。这四个约束本质上截然不同的,但是以复杂的方式交织在一起。

  我对原版的信息图做出了修改,用合约取代了人,这里的合约是指双方或者多方之间达成的协定。有趣的是,做出修改以后,这个信息图仍然有效。这四个约束就像管理着人一样,管理着合约关系。

  另外,我着重强调这四个约束中的两个约束,即架构和法律。这两个约束是合约能够被执行的两个最基本的动力。根据参与方选择的协定实施的系统,合约将通过法律系统执行,或者通过架构执行。这两种合约执行模式显著不同。

  Lessig认识到合约执行的两个特征,可以帮助我们谈论两种合约执行模式的不同。一个是代理(agency),另一个是时间性(temporality)。在法律意义上,合约的执行,只有当一些人选择这样做时,才会发生。此外,执行只发生在违约以后,例如事后。

  智能合约的执行在这两个方面,本质上不同于传统合约。为了理解是如何不同的,我们需要首先理解Lessig所指的架构是什么意思。

  Lessig在他的《代码:网络空间的法律》一书中,为了解释代码在赛博空间中的作用,引入了架构的概念。物理空间的形状,就是你的身体穿梭其中的空间,是由它的架构决定的,例如建筑环境(建筑物、街道等)。如此类似,赛博空间的形状是由代码决定的,人们使用的应用和协议就是建立在这些代码上面的。因此,代码是赛博空间的架构。

  法律和架构都有方法管理参与方的行为。法律依赖于个人将规则内化,个人据此调整自己的行为,或者该系统允许法律追索权(例如法庭)。然而,架构通过塑造空间本身管理行为。架构不是关于允许什么,而是什么是可能的。架构既不依靠个人将规则内化,也不依靠起诉系统。

  根据我们衡量合约执行的质量的标准,例如代理和时间性,因此架构明显地不同于法律。架构执行合约时,不需要任何个人或者组织(代理,agency)决定如何执行合约,你可以称架构执行为自我执行(self-enforcing),虽然我不喜欢这种叫法。另外,架构事前执行,违约甚至不可能发生。

  有一件事确定无疑:智能合约已经扎下根了。它们是真正的全球经济的基本构件,任何人都可以接入到这一全球经济,不需要事前审查和高昂的预付成本。它们从许多经济交易中,移除了对第三方的信任必要,在其它情况下,将信任转移到可以信任的人和机构。

  我在这篇博客中尽力想说明的理念是,智能合约怎样与合约法共存。本质上,它们是解决相同问题–以一种方式形成一种关系,使得承诺可以执行–的两种不同方法。就这一点而言,智能合约似乎是更好的解决方案:智能合约事前执行,不像法律系统一样,事后执行。然而,这是一种谬误。最后一次引用全能的萨博:

  “合约法的成功和取代合约法所需的高额成本,使得保存和利用合适的原则,仍然很有价值。但是,数字革命正在剧烈地改变我们能够拥有的各种关系。在这个赛博时代,我们来之不易的法律传统中的哪一部分,将仍然具有价值?将这些法律原则应用到我们的线上关系设计,最好的方式是什么?”

  在合约法中,有许多已建立的原则,仍值得保存。其中包括法律默认规则,我将在另一篇博客中写这个问题。

  因此,为了实现最优的结果,同时利用合约法和智能合约,好像是有利的行为。我将在另一篇博客中,告诉你怎么实现这一点。

  题主试想一下,在物联网时代,海量的设备之间如果不能达成自信任,还需要传统的中心来维持,这样的成本有多高,效率会多低?况且“数据,作为未来生命线的数据都被中心化公司拿走了,而不是掌握在用户自己手中,这是多么可怕的事情?谁能保证他们不作恶呢?要是他们“随意动动手脚呢?谁又能保证他们不以此谋取特权(现在大型互联网企业就在营造这种高高在上“救世主”般的形象了吧,可惜)?不借助区块链的话,谈什么数据确权,谈什么信用确权?不作确权,不自信任化,不智能合约化,依托于一个可信可不信的第三方,又怎么能指望共享经济会有一个牢靠的基石?另外,至关重要的是,未来万物互通互联,如果不能实现可编程化,效率会是多么低下?而这,还是要依靠智能合约来实现。

  什么时候采用区块链,什么时候不采用区块链,其实可以有一个决策树或者一个决策模型来帮到大家的。也就是说,区块链并不是解决所有问题的通用技术。如果生搬硬套,为了区块链而引入区块链,而不从问题的本身考虑,很多时候可能就是劳民伤财、适得其反。

  智能合约是现代区块链技术中的重要一环。因为不可篡改的区块链特性,提交在链上的智能合约具有了『代码即法律』(Code is Law)的美誉。其实,很多人把这句话理解偏了,认为智能合约可以达到法律一样的约束性。实际上大家最终发现,法律约束是一个中心化的主权国家暴力机器维护的一种约束,而去中心化的区块链的智能合约只能达到一种『技术约束』。法律约束和技术约束,两者可以有关联但是不可等同。区块链的技术的约束是在链上发起合约类型交易时候的既定规则的执行。然而,法律是对个体或者机构等进行的所有行为的约束,其管辖权可以涵盖目标主体在信息世界和非信息世界的各类行为。

  智能合约相当于一份可以由计算机网络直接执行的合约,只要满足预设条件,合约就会被触发,合约双方之间不需要建立信任关系,这也是智能合约优于传统合约的地方。

  在这份合约当中,甲约定用1000万购买乙的1000枚比特币,但是甲付款后,乙拒绝按时向甲支付比特币,于是甲就申请第三方机构的介入,但是乙攻击了第三方的电脑系统,将交易记录篡改为已支付1000枚比特币,这样,甲就无端损失了1000万,这里的智能合约也无法解决所谓的信用问题,因为合约其中一方依然成功毁约了。

  假设第三方的电脑系统十分强大,无法偷偷篡改信息,乙方还可以通过贿赂来让第三方自动更改数据,也就是说,即使有第三方的介入或强大的系统限制,都无法避免题主所说的“人”的因素的影响,即人为更改合约内容。

  如果第三方的信誉十分良好,不接受贿赂,系统也强大到无法入侵,那么确实可以通过传统技术+机构信用担保来实现完全公正的智能合约,但问题来了,能做到绝对不篡改数据的机构有多少家?

  然而,将智能合约应用在区块链上就能有效解决上述问题。正如题主所说,区块链上的数据是不可篡改的,而且每一个数据都可追溯,因此在上面的例子中,只要甲履行了合约,乙的账户就会自动转账给甲,不存在违约的可能。

  如果说在大部分的事情上,人的信用是可信的,那么在区块链系统上,所有的事情都可以直接跳过信用这一环,有人这样形容智能合约:Code is the law.(代码即规则。)

  所以,区块链技术不是实现智能合约唯一的选择,而是更为合适的选择。当然,区块链技术并不是毫无缺点,去中心化不是去除了“人”的因素,而是每个“人”之间都相互制衡,大大削弱了个人对整个系统的影响力,所以区块链的不可篡改性是建立在牺牲速度之上的,虽然高度安全,但每项数据的验证需要较长的时间,无法承载过大的交易量,但区块链系统依然为我们提供了解决旧制固有问题的新思路。

  智能合约并不是一个新的概念,早在1995年就由跨领域法律学者尼克萨博提出,是对现实中的合约条款执行电子化的量化交易协议。智能合约设计的总体目标是满足常见的合约条件(如支付条款、留置权、机密性以及执行等),以及最大程度地减少恶意和偶然地异常,最大限度地减少对可信中介的依赖。智能合约已经在电子投票和供应链管理等很多领域得到应用,并且前景广阔。

  然而,对于智能合约这项新技术而言,其本身也存在一定的安全风险。目前智能合约已经发生过重大安全事件,黑客手法是利用漏洞入侵系统,进而对智能合约用户造成巨大损失。其中较为严重的两大事件有:

  Bitfinex在8月2日凌晨发布公告,发现了安全漏洞。该漏洞导致bitfinex全面停止交易,这将导致每位用户的账户平均损失36%。

  黑客智能合约存在的漏洞攻击The Dao,造成价值逾5000万美元的损失。ETH市场价格从记录高位21.50美元跌至15.28美元。

  智能合约这项新技术充满了安全挑战,所以对智能合约进行大量的白盒审计是非常必要的。通过智能合约审计来确保合约的安全性,并确保所有合约得到高效的执行。针对以上四大问题我们提出了四大解决方案:

  知道创宇深耕区块链安全,多年以来一直从事相关技术领域的研究工作,熟悉全业务线的安全防护。针对目前主流的以太坊应用,知道创宇提供专业权威的智能合约审计服务,规避因合约安全问题导致的财产损失。

  小明逛街偶遇一来自遥远新西兰的奶业推销员推销每日早上送XX酸奶到户(假设酸奶不存在造假,这可以利用追溯功能). 小明心中质疑推销员:你谁啊? 你能证明你是新西兰奶业的推销员吗?你扣款不送怎么办?我能随时终止吗?...... 好吧,要证明这些很困难,全凭人与人的基本信任. 现在是时候智能合约出场了. 小明在区块链上有现金资产,和推销员签订如下智能合约:

  每日送达酸奶,小明 确认后给予 快递方 数字签名到区块链的智能合约, 触发扣款条件,扣款成功.交易完成.

  以上交易看起来简单,感觉没啥用啊. 其实涉及小明, 销售员,送货员,奶业 四个交易方. 没有哪一方具有权威性, 隐藏在小明的消费智能合约后,还有 销售分成智能合约,快递智能合约,整个链条要转起来需要如下步骤:

  1,区块链前所未有的把网络安全,软件安全提高到了一个全新的层面。之前所有的软件都很难直接和资产打交道,哪怕是银行的支付系统,牵扯到付款的时候也最多是往数据库里面写一笔转账请求,然后由银行的其他人工系统或者安全系统更高级别的审核机制来完成。在区块链里面,无论是编写智能合约,还是写钱包APP,都是直接和用户的资产打交道,一行代码出问题,可能钱就没了,我说的没了是永远都找不回来了,这种感觉还是非常奇特,可能大家只有真正接触到类似的工作之后才会有比较深刻的体会,需要思考很多之前不需要思考的安全问题。

  2,智能合约是什么?能干什么?目前我们对于智能合约的探索还比较浅,主要是智能合约开发的基础建设还比较早期,很多基础的环境不具备,所以图简单的做法就是用中心化的服务器来辅助处理,也有通过一些比较绕的方法来实现完全去中心化的应用。但是要记住,无论是哪种处理方法大家都还处在摸索阶段,我们并不知道智能合约能够实现什么,也不知道智能合约的边界在哪儿,我们一边在研究智能合约本身,另一方面也在通过完善公链本身来让智能合约具备更多可能。

  3,智能合约究竟有多早期?简单点说,目前都没有一个比较成熟的方法知道你的智能合约什么时候被执行了。因为当你发起交易之后,要等到该笔交易被打包进入最新的一个块里你才知道这个合约执行成功了,但是你又无法确认这个最新的块被多少节点确认过,所以只能用比较人工的方法来判断是否执行成功了,例如说你发起一笔调用智能合约的交易,然后就一直去取最新的块,看看哪个块里面包含了这笔交易,如果发现有一个块里面包含这笔交易了,然后再去看看这个块有多少个节点确认过(EOS的DPOS共识这方面会稍微好一点)大概其有那么10几个节点确认了基本上可以认为这次智能合约的调用已经成功了!通过上面这个例子,大家可以看出,只是一次简单的对于智能合约的调用目前都无法很直观的判断成功或者失败,那么更不用说里面的应用本身了。

  a. 如果说区块链上存储的有可能是未来的一种资产形式,那么该资产一定需要通过某种途径流通,广义上讲,该类资产的任何操作都需要通过智能合约来进行,因为除了智能合约之外的其他任何形式对于资产的操作都是不透明的。包括比特币的转账,本质上也是智能合约的执行。所以智能合约的第一个刚需就是:任何链上资产的操作只能通过智能合约完成

  d. 那么智能合约究竟可以做什么呢?其实智能合约能够做很多的事情,因为从技术本质上来讲,智能合约就是一个阉割了的虚拟机,主要阉割在I/O,以及一些系统功能,目的就是让这个虚拟机的运行环境比较干净和安全,不会被其他系统影响到,例如网络上的数据,硬盘上的数据,这些数据是要禁止和虚拟机进行交互的。但是智能合约如果纯粹只是从阉割了的虚拟机来思考他,能做的虽然很多,但是局限性就比较大,要深入的理解智能合约能够做什么,需要开始思考区块链能够做什么,从这个更大的层面,从资产所有权的角度,从资产流通的角度,从广义的资产的定义的角度来思考,可能会收获更多有意思的关于智能合约的理解。


上一篇:摩西科技荣获CSIC最具创新之星 致力于用SAAS重新定义游戏化营销
下一篇:Life大词典 - 科普篇:什么是智能合约