智能合约在区块链技术中到底如何应用?

何为“智能合约”?和区块链又有什么关系?

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

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

智能合约概念可以简单的概括为: 一段代码 (智能合约),被部署在分享的、复制的账本上,它可以维持自己的状态,控制自己的资产和对接收到的外界信息或者资产进行回应。或者可以这样简单的概括:它是运行在可复制、共享的账本上的计算机程序,可以处理信息,接收、储存和发送价值。

那么,我们该如何理解这段话呢?

回顾一下比特币区块链系统中的转账:

Alice 转账给 Bob 100比特币,在比特币区块链系统中是这样记录的:

本质上,这就是一个合同。这个合同里面规定了 Alice 要转给 Bob 100比特币,该合同立即生效。注意,里面有一个“解锁信息”,这个“解锁信息”本质上就是 Alice 证明自己是 Alice 的地址持有者时需要提交的一个信息。

显然,像比特币区块链系统里面,纯UTXO模式的这种合同用处是很有限的。首先,比特币是一个独立运行的封闭系统,它的转账脚本没有提供和外界进行交互的接口。所有信息(这里主要是解锁信息)只能在脚本提交到区块链之前定死,之后就只能按照固定方式运行。这对于“合同”来说是不符合实际应用的。

在我们实际生活中,一个完整的合同制定——执行流程是按照如下方式随着时间流逝而进行的:

其中,条件的达成通常是一个外部输入的事件,这意味着,我们实际生活中的合同通常是“事件驱动”型的。这个“事件”是否发生通常不是区块链上的数据能够判断出来的,而是依靠事件发生的时间点,通过链外输入数据的方式实现。

比特币中的交易是使用比特币区块链底层平台定义的一套脚本语言来写的,由于当初比特币区块链系统是按照一个数字货币的模型进行设计的,因此它并不需要这些复杂的能力。但是如果我们需要区块链技术在其他商业场合进行应用,很多时候就需要这些能力。比如我们利用以太坊平台来实现某个业务,那么整个流程是这样子的:

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180129A0LAXT00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券