什么是智能合约?

智能合约就是一组规则和规则指导下的数据的合体。相当于一个后端代码+数据库。

智能合约是被创造出来的独立管家

在第 2 章讲过,以太坊中的账户分为外部账户和合约账户,我们来回忆一下。

  • 外部账户:使用私钥掌控的账户,持有者一般为个人
  • 合约账户:由外部账户部署/调用,具有公开地址但没有私钥的账户。

以太坊的合约,就是一组存活在合约账户中的代码和数据变量,它根据自身的代码指令在以太坊上被动地执行一些事先编排好的输入、输出、以及存储修改操作。 合约账户具备外部账户所没有的数据存储区与代码存储区。 它不具备私钥,故而任何人不能用破解它的私钥来控制合约中的资金,资金的流动仅由代码逻辑执行,具有独立性,仿佛一个管家一样。

智能合约是能接收数据的实体

在第 3 章中提到交易以及交易体。我们说过无论是转账还是智能合约调用,都需要通过发送交易来完成。以太坊的交易就是一次消息传递,传递的是 数据 以及 价值 (以太币)。

区别仅仅在于交易体中是否携带数据。携带数据的交易可能是一个次智能合约调用,不携带数据的就是一次普通以太币转账。智能合约具备接收数据,处理数据的能力。

智能合约是代码编写的合同

智能合约就是现实生活中“合同”概念在区块链上的延伸,比如在买卖场景中,买方与买方需要规定交割货品的数量、交割的方式以及交割的时间,并会押一部分或全部货款到第三方。当货物顺利交割时,第三方按照合同的约定放行货款;当产生纠纷时,按照合同既定条款,第三方部分扣除或全部扣除货款来补偿受损的一方。在这里第三方这个上帝对象起到公平、公正、公开的执行官的角色,这点在以太坊的智能合约上独具优势。

  • 智能合约的条款由代码来指定,代码的逻辑缜密远超普通文字描述。
  • 智能合约的存储、部署在公开的以太坊链条上,天然具有公开、透明的性质。任何人都可以随时公开查询一个合约的状态。
  • 智能合约的安全性由去中心化网络保证,产生的交易数据也在区块链上永久存储和追溯,无法抵赖,安全性远超由中央节点控制的条款类程序。
  • 智能合约有强制性、自动性,无需人工干预,当条件满足时仅需触发,就能自行完成相应操作,如转账扣款或者变更库存数量等。