2.2 区块链扩展应用:智能合约

合约管理系统实际上早就存在了,广泛地说,我们日常处理的各种商业服务都属于合约应用。比如,我们去移动充值,那就相当于与移动签了一份合约,移动确保在 余额足够时系统能够自动地提高好各项服务;再如在网上商城下了个订单,支付完成后,合约就启动了,商城就开始备货、送货。某种程度上,这些合约也算是智能 合约,都是通过网络技术来实现的,然而区块链系统为智能合约的实现提供了一个更加有创意而吸引人的方案。

2.2.1 比特币中包含的合约思想

在第1章中,我们了解了比特币的基本原理,这里我们专门拎出合约思想来阐述一下。作为一个分布式、去中心的网络系 统,比特币在运行过程中除了发起交易外,并不需要某个人再来做一个审核确定,所有的环节比如验证数据合法性、转移所有权、打包区块等,一律都是按照既定的 规则自动运行的,在这些环节里面,尤其是一个转移所有权的处理方法是很有意思的。

在比特币系统中,转账交易并不是将金额从一个账户扣减,然后另一个账户增加,而是一种更改所有权的方式。比 如,Alice发送了100比特币给Bob,并不是说Bob的账户地址中存有100这个金额,而是Alice在发起转账交易时,通过Bob的公钥锁定了交 易的输出,这个交易输出也就是所谓的UTXO(未花费输出),只有提供Bob的私钥才能与Bob的公钥匹配(也就是验证通过),验证后Bob可以花费这笔 比特币。

抛开技术上的原理,整个过程就相当于Alice准备了一张支票然后签上自己的名字,再在支票上放了一个只有Bob 知道谜底的谜语,其他人包括Alice本人即使拿到了支票也无法去兑现,只有Bob能给出谜底,因此这张支票代表的一笔款项,其所有权就转移给了Bob, 当Bob提供谜底的时候,这张支票就生效了,相当于合约就执行了。

在比特币的区块链网络中,持续不断地发生着转账交易,在每个参与节点的共同见证之下,转换着每一笔交易输出的所有 权,不断进行着锁定与解锁,这就是比特币系统中包含的合约思想,多年的发展已经证明了基于区块链的这种合约设计可以用来实现价值所有权转换,由于合约设计 中自带了验证机制和转换机制,加上比特币网络是面向全球的,因此比特币是一个面向全球的无边界价值传输网络或者说是价值合约执行网络。

2.2.2 以太坊中图灵完备的合约支持

以太坊是一个完全重新开发的独立的公有区块链系统,其本身也支持一种加密数字货币,称之为以太币,不过以太坊真正 强大之处在于支持了用户自定义的合约编程,因此以太坊不但是一种数字加密货币,也是一个开发平台,支持全面的合约程序开发,最主要的就是支持了图灵完备的 开发语言,编写的合约程序编译后是运行在以太坊虚拟机之上的,以太坊支持4种合约编程语言,如下:

·solidity,类似JavaScript;

·serpent,类似Python;

·Mutan,类似Go;

·LLL,类似Lisp。

官方推荐是solidity,使用自定义合约编程可以实现各种商业逻辑,比如众筹合约、利润分配合约、担保合约、 货币兑换合约等,当然也可以来实现直接的数字货币合约。在以太坊中,可以通过编写一个数字代币合约来模拟比特币,当然通过这种方式实现的数字货币是建立在 以太坊的区块链基础之上的,大家可以类比操作系统之上的虚拟机。由于以太坊支持的是图灵完备的开发语言,因此几乎可以编写任意复杂逻辑的合约代码,这些被 部署到以太坊上的合约程序,会受到以太坊基础区块链系统的约束,拥有公有区块链系统的一切特点,比如数据公开透明、不可篡改性等。

关于以太坊,在第6章有更详细的介绍。

来源:我是码农,转载请保留出处和链接!

本文链接:http://www.54manong.com/?id=113

'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646208", container: s }); })();
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646147", container: s }); })();

你可能感兴趣的:(2.2 区块链扩展应用:智能合约)