第11讲:以太坊智能合约
 3844
试听180

第11讲:以太坊智能合约

00:00
10:49

你好,我是朱嘉伟,欢迎收听由虫洞社区和火币集团共同打造的《从0到1,全面学透区块链》V3.0最新版。

 

上节课我们一起学习了以太坊的发展,它规划了4个阶段,分别是:前沿、家园、大都会和宁静。还学习了「以太币」、「以太坊虚拟机」和「智能合约」3个概念,它们分别是以太坊系统中的代币、以太坊系统的运行环境和以太坊所代表的区块链项目。

 

这节课,我们一起来学习以太坊智能合约。通过本节课,你将了解到什么是智能合约,以太坊的智能合约又是怎么一回事。

 

首先,我会先介绍下以太坊的智能合约的相关概念,其次是智能合约的应用场景,最后会向简单的向你介绍下智能合约开发相关的知识。

 

首先们来看以太坊智能合约的概念。

 

1994年尼克萨博(Nick Szabo)首先提出了智能合约的概念。尼克萨博是前乔治华盛顿大学(George Washington)的法学教授,博客作者,甚至有人认为他就是中本聪。

 

智能合约,英文名Smart contract,可以翻译为:可以由信息化方式传播、验证或执行的计算机协议。为了方便理解,我们可以把智能合约理解为区块链环境里的可执行代码。

 

智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约使得区块链的扩展性更强,且实现上更简洁。

 

在区块链领域,很多的公链都具有智能合约的功能,且实现方式各有不同。以太坊的智能合约,是一个最重要的代表,它开启了区块链2.0时代,可以说以太坊是是由区块链+智能合约组成的。

 

接下来,起分析智能合约如何运作的。

 

首先,开发人员将智能合约编写好以后,部署在以太坊网络中,处于等待执行的状态。一旦合约中预先定义的条件被触发后,就会执行相应的动作。也就是说,合约部署好后,任何人都无法修改合约内容。而条件被触发后,执行的动作也是强制的,这就是智能合约的强大之处——即不可修改性。

 

下面我以一个飞机延误险赔付的例子,来说明下智能合约给我们能带来的好处。

 

我们平时乘坐飞机,买了飞机延误险,保险公司承诺飞机晚点4小时后,会赔付我们300元。而我们乘客需要做几件事:第一当然是购买飞机延误险;第二是在飞机晚点后将飞机晚点的证明发往保险公司,第三是要证明自己是乘机人。

 

保险公司接收到我们的申请,会去和航班核对,确认飞机晚点。最终再将300块钱赔偿款打给乘客的账户中。赔付的一次动作,涉及到了多个环节,以及多个参与方,是一件耗时耗力的事情。

 

在现实中,也出现了有乘客即使买了延误险,但由于各种原因,没得到赔付的情况。更极端的情况是,飞机可能晚点了3小时59分钟,有乘客也会尝试去申请延误赔偿,一旦申请了,保险公司也得去和飞机航班核对延误的具体时间,也是耗时耗力的一件事。

 

那如果采用智能合约将保险信息上链,有什么样的好处呢?

 

我们来看个例子:乘客小王的航班信息是:国航871次航班,1点起飞,3点到达。他购买了飞机延误险,延误险规定航班延误4小时,保险公司赔付300元到小王的支付宝中。

 

如果我们用智能合约的方式,将飞机延误险的保险赔付流程放在了区块链的智能合约上,情况会是这样的:规定的赔付条件,赔付金额,赔付方式,以及航班的起飞和到达的时间都会被写入智能合约。

 

最终,小王的飞机在8点到达,触发了智能合约的赔付条件,合约会自动执行,将300元发送到小王预先定义的支付宝账户中。

 

此时,或许有人会问,如果保险公司没往合约中存赔付的300元怎么办,合约岂不是没钱赔付了吗?这个问题,可以再用另一个合约去约束保险公司。也就说,假如保险公司没有提前将赔付款存于区块链中,那么该延误险就不得售卖。

 

上面这个例子,你听懂了吗?当然,智能合约不仅仅可以应用在金融领域,还可以用于其它与我们生活息息相关的地方。

 

最后,简单介绍下智能合约开发的知识。

 

在以太坊的智能合约上,使用了一种类似于javascript和python的语言,即solidity来编写。目前的最新版本是0.4.25。solidity编写的智能合约,最终部署在以太坊上,由以太坊虚拟机EVM解释执行。

 

在solidity中,会有一些跟以太坊相关的特殊内置变量,例如address,代表地址;ether,代表一个以太币单位。另外,以太坊为了防止人们滥用网络,耗尽资源,规定了一种gas的消耗,gas是用以太币兑换的,当solidity执行计算的时候,会消耗gas,这样,可以有效的倒逼开发者去尽量提升编写的合约的代码质量,以减少开销,减少的这部分开销,可是真金白银啊。

 

不可篡改是智能合约的优点,但在某种程度上也是它的缺点。因为一旦智能合约部署完毕,想要升级的话,就只能再重新部署了,这就造成了一个事实,假如一个合约在代码编写时就有问题,在上面的例子中,小王交的延误险,就会无法达到赔付的触发条件,300元赔付金就永远无法取到小王的支付宝里了。因此写智能合约时一定要提高质量,各种情况都要想到。

 

另外还有一个缺点是合约的安全性问题。因为智能合约部署在以太坊网络上是开源的,任何人都可以去访问,都能看到全部代码,假如没有充分考虑到安全性问题,容易被黑客攻击。那么合约账户中的钱,也会丢失。这种例子,在历史上有很多,大家可以查到,我这里就不多讲了。

 

本课最后,我还想给大家介绍个概念,为一个课程扩展,那就是以太坊标准。

 

目前最著名的以太坊标准,当属代币标准ERC20和数字资产标准ERC721了,那么什么是ERC呢?ERC代表“Etuereum Request for Comment”,是Ethereum开发者为以太坊社区编写的,包括了一些协议规范和合约标准,这使得智能合约可以遵循这些通用的接口标准来构建。我们目前很多代币都是按照ERC20标准来构建的,这样会使得人们发币时候规范很多,也使得钱包的兼容性得到提升,这就是为什么我们的imtoken钱包能够随意添加任何的ERC20标准的代币原因,因为他们遵循了一套相同的标准协议,所以我们也可以把ERC20叫做标准接口代币。

 

相对的,ERC721可以叫做“非同质代币”,那么怎么理解“非同质”呢?我用一个例子给大家讲解。以太坊上有名的“以太猫”游戏,就是一种ERC721标准代币。在“以太猫”中,每只猫拥有独一无二的基因,并且,猫是不可分割的,不会出现0.3个猫这样的概念。因为ERC721的每个代币都有一个独立唯一的ID,这就是“非同质”的概念,你理解了吗?我再教你一个更简单的记忆方法,ERC20可以有0.3个币,但ERC721不会有0.3个币的情况。

 

今天,我们一起学习了以太坊的智能合约概念,如何应用在实际生活中以及智能合约的开发。其实个人利用以太坊智能合约“发币”并不难,但其中会涉及一些技术应用,今天就不详细介绍了。如果你有兴趣,网上有不少攻略可以学习,你也可以尝试自己发个币实践一把。

 

最后,留一个思考题。很多人说智能合约最大的应用就是“铸币”、“发币”,你同意这个观点么?为什么?把你的理由写出来。

 

最后,恭喜你完成《从0到1,全面学透区块链》第11讲的学习。下节课我会和你一起学习第12讲:以太坊在5种典型场景落地应用。


精选用户评论
  • Lookfor9

    问题是航班几点到达这事谁来负责?航空公司吗?如果他填了一个错误的到达时间怎么办?一直被困扰着

    改变0502 回复 @Lookfor9: 他们肯定也会有一个被约束的合约

其他用户评论
  • 1787016qymh

    我已购买怎么不能完听完

    吉生学堂 回复 @1787016qymh: app进程杀死再进入,有时候软件加载会有点问题

  • 木子昀泽

    感谢朱老师!感觉朱老师讲的很细,但对我来说听的还是有点晕,看来听一两遍是不行的!

  • 1787016qymh

    我已购买怎么不能完听完