区块链100篇之第八篇--智能合约

1、比特币的转帐过程网络

我在第五篇讲UTXO的时候,有提到比特币的转帐过程,如今来回顾一下这个过程。区块链

  • Bob想要转给Jack一百个比特币,Bob须要先建立一笔交易,由于这笔交易只有被矿工验证并打包进区块的时候才算完成交易,Bob在填写交易信息的时候除了须要提供支付比特币的数额以及双方的地址外,还须要提供本身的公钥以及用私钥生成的数字签名,还有就是上一笔交易的Hash(也就是Bob从哪里获得这些比特币);信息填完后(其实在现实中没这么复杂,只须要在钱包中填写转入转出地址以及交易金额便可,其余的都是自动的)即可以点击确认,当这笔交易广播到全网中时,矿工开始对这笔交易进行验证,第一步会去找到上一笔交易,确认支付方的比特币来源;接着第二步算出支付方公钥的指纹,确认与支付方的地址一致,从而保证公钥属实;而后第三步是使用公钥去解开数字签名,保证私钥属实。验证经过后矿工便会将这笔交易打包进区块中,若是获得六次以上的确认,则能够认为这笔交易不会再被改变。

讲这个过程就是为了引出今天的知识点–智能合约。对象

2、比特币与智能合约事件

在上面我有讲到Bob须要提供的交易信息有一个是上一笔的交易Hash,咱们能够来看一下区块链中时如何记录这笔交易的(这其实就是一个UTXO),以下图所示: 
consensus-png 
能够看出Bob转给Jack的100个比特币是从Alice那获得的,图中还能够看到一个解锁信息,这个解锁信息时候用来证实这100个比特币的归属,由于只有Bob的私钥才能进行解锁,其余人进行解锁是无效的。 
到这里咱们能够将这个UTXO看作是一个简单的智能合约,由于它是一个可自动执行而且自我验证协议,Bob只要输入本身的私钥,解锁脚本就会自动运行校验,解锁成功便说明Bob是这100个比特币的拥有者,反之则说明不是。 
由于比特币所支持的脚本语言只跟交易有关,而且不是图灵完备的语言,所能作的事颇有限,可是比特币的出现极大地促进了智能合约的发展,如今支持编写智能合约的平台中最有名的当属以太坊。内存

3、智能合约开发

上世纪90年代,密码学家尼克萨博从自动贩卖机获得灵感首次提出“智能合约”的概念,看一下智能合约的定义:部署

  • 智能合约是指一种计算机协议,这类协议一旦制定和部署成功就能实现自我执行(self-executing)和自我验证(self-verifying),并且再也不须要人为的干预。

智能合约会对接收到的信息进行回应,它能够接收和储存价值,也能够向外发送信息和价值。看一张图: 
consensus-png
从图中能够看出一段代码(智能合约),被部署在分享的、复制的帐本上,它能够维持本身的状态,控制本身的资产和对接收到的外界信息或者资产进行回应。 
举个例子,如今咱们对银行帐户内存款的操做都须要中心化的银行进行受权,一旦离开了银行的监管,用户就连最基本的存取款操做都没法进行,可是若是是使用智能合约来处理的话状况就不同了,只要事先正确的经过严谨的逻辑写好代码,即可以不须要人工参与,一切都将按事先写好的逻辑运行,而且结果是公平公正的,所以也有人宣称“代码即法律”,这个观点保留意见,至少以目前的状况来看事情没那么简单。 
智能合约的概念虽然很早就被提出来了,可是由于不少技术的不成熟,因此发展很缓慢,可是由于比特币的出现或者说由于区块链技术的出现,智能合约开始成为研究人员与业内人士重点研究的对象,这都极大促进了智能合约的发展。it

4、智能合约的优缺点效率

参考《区块链技术指南》简单列出智能合约的优势。比特币

  • 首先是高效的实时更新,由于智能合约的执行是去中心化的,也就是不须要认为的干预,因此它的执行效率是很高的,你再也不须要亲自去相关部门提交排队提交申请资料,而后还须要等几个工做日才能获得结果,如今只须要在网上填好资料点击提交,若是网络通畅,几分钟内便能办完手续,方便快捷。
  • 第二即是较低的人为干预风险,由于智能合约是一开始就制定好的,而且是没法更改的,因此一旦出现毁约的状况,那么时间的责任人就会获得相应的惩罚,这保证了公平公正性,也就是说在智能合约面前,人人平等,没有谁有特权。
  • 第三就是准确运行, 智能合约是一段执行在计算机上的代码,因此只要运行的计算机没错县错误,那么这个合约的执行结果都是准确无误的,不会出现不可预料的状况,之因此能作到这一点也是得益于密码学的发展和区块链技术的发明。
  • 第四是去中心化权威,在区块链网络中通常不存在一个绝对的权威来监督合约的执行,而是由绝大部分的用户来判断合约是否正常执行,这种绝大多数人监督的方式是由POW或POS等共识机制来实现的。
  • 第五即是较低的运行成本,正由于智能合约具备去人为干预的特色,其可以大大减小合约履行、裁决和强制执行所产生的人力成本。

关于智能合约的缺点,我讲一下个人理解,由于智能合约的一段可执行的代码,是代码便不可避免的会存在bug,一旦出现bug或者不可预料的状况,这对于采用智能合约的应用都是极大的挑战(能够参考The DAO事件),这是由于智能合约是去人工干预的。智能合约的优势目前也是它的缺点,可是随着技术的发展,它的这个缺点或许能够被忽略。

5、以太坊与智能合约

说到智能合约就不能不讲到以太坊,与比特币相比,以太坊最大的不一样点是它能够支持更增强大的脚本语言(图灵完备的脚本语言),容许开发者在上面开发任意应用,实现任意智能合约,这也是以太坊的最强大之处。做为平台,以太坊能够类比于苹果的应用商店,任何开发者均可以在上面开发应用,并出售给用户。以太坊也是目前支持智能合约的区块链平台中比较成熟的平台。

相关文章
相关标签/搜索