1.2.4 智能合约:可信的数字化协议
很多专家认为区块链与智能合约密切相关。只要提到区块链,就不得不提到智能合约。1994年,密码学大师尼克·萨博首次提出“智能合约”一词,并给出了具体的定义:“一个智能合约是一套以数字形式定义的承诺,包括合约参与者可以在上面执行这些承诺的协议。”我们怎样理解这个定义呢?
在理解这个定义之前,我们有必要了解一下比特币在区块链中的转账流程。假设Alice要转给Bob 100个比特币,在比特币交易系统中就会有以下转账记录。
转账交易A
输入:
解锁信息
输出:
从本质上来看,这个转账记录就是一个合同。其中,转账记录明确规定了Alice要转给Bob100个比特币。“解锁信息”就是Alice在证明自己身份时需要提交的信息。
由此可见,在比特币交易系统中,纯UTXO(未花费的交易输出)模式的合同并不能起到太大的作用。比特币是一个独立运行的系统,其转账脚本不存在与外界交互的接口。因此,在转账脚本提交到区块链之前,所有的解锁信息都必须规定好,还要按照固定的方式运行。对合同而言,这是与实际应用不相符的。
在通常情况下,一份完整的合同不仅需要严格按照流程来制定,而且合同的执行需要随着时间的推移来完成,如图1-8所示。
图1-8 合同的制定和执行
一般来讲,图1-8中的条件达成应该是一个外部输入事件。也就是说,在实际生活中的合同基本是“事件促使”型的。在区块链中的数据根本无法判断出“事件”是不是已经发生了,而要想真正判断出来的话,就必须通过外部输入数据的方式。
以电子商务为例,小张在某电子商务平台购买了一台笔记本电脑。当他提交订单的那一刻,实际上就已经生成了一份合同。这份合同包括:小张需要在多长时间内将货款支付到第三方平台上(事件1),然后卖家收到第三方平台的发货通知后准备为小张发货;当小张收到笔记本电脑且检查无误后确认收货(事件2)。至此,如果不考虑售后问题,这份合同就算正式完成了。
在合同执行的过程中,事件1是一个虚拟化的金融活动,可以在智能合约的助力下自动触发。然而,事件2是在现实世界中进行的活动,必须完成确认收货的动作才可以同步到虚拟世界中。在这份合同中,确认收货是虚拟世界与外部交互的一个关键接口。
随着区块链的不断发展,智能合约越来越普及。面对潜在的纠纷时,我们不需要亲自解决,一些决定可以交给“代码”来操作。以乘客购买航班延误险为例,如果有智能合约,理赔流程就会变得更加简单。
具体来讲,投保乘客的个人信息、航班延误险、航班动态以智能合约的形式记录并储存在区块链中。只要航班延误情况符合理赔条件,保险机构就会在第一时间将理赔款自动汇到投保乘客的账户上。这样,不仅提高了保险机构处理保单的效率,还节省了投保乘客在追讨理赔款过程中消耗的精力和时间。
由此可见,智能合约不仅可以为人们的生活提供便利,也可以提高企业的工作效率。未来,区块链将在智能合约的助力下普及到更多的领域,如电子商务、金融、版权保护、医疗、教育等领域。