【努力学习区块链】-智能合约

什么是智能合约

相信看到智能合约这个概念,许多人还是很懵的,不仅是合约,还是智能的。

现在有很多关于智能合约的解释,简要摘录如下

Smart contract — is a piece of code which is stored in the blockchain network (on each participant database)

智能合约就是一段存储在区块链网络中的代码
  • 这是从智能合约的实现角度对智能合约做出的解释
智能合約(Smart Contracts) 是在Ethereum 區塊鏈中所屬的物件。它們包含程式碼函式以及能夠與其他合約進行互動、做出決策、儲存資料與傳送乙太幣給其他人。
  • 这是从智能合约的功能角度对其做出的解释
Smart contracts help you exchange money, property, shares, or anything of value in a transparent, conflict-free way while avoiding the services of a middleman.

智能合约在不需要中间人的情况下,帮你完成各种有价物的交易,包括但不限于货币、财产和股份。
  • 这也是从智能合约的功能角度对其做出的解释

智能合约首先得是合约,合约的英文名词为contract,如果不懂这个单词,我们换一个简单点的deal也是合约、交易、合同的意思,生活中的各种合同其实就是contract,就是双方或者多方约定好的一个协议,关键在于智能这个限定词,因为合约自古就有,只是有了区块链技术才有了智能合约,下面我们来看一下智能合约如何智能。

先来看区块链中的转账交易,假设账户A转账到账户B,金额为10,且账户A的金额大于10、账户B存在,转账过程如下

1. A.账户金额 = A.账户金额 - 10
2. B.账户金额 = B.账户金额 + 10

以上就是一个合约,合约的内容为:A账户减去10,B账户增加10.

接下来我们把情况搞复杂一点,假设A是一个买家,B是一个卖家,买家想要买卖家的一件商品,但是A出于对B的商品的质量的怀疑,想要先收到货再付款,而B出于对A的人品的怀疑,想要先收款再发货,此时这桩买卖就陷入了僵局;

听到这里,你可能会说这不就是支付宝吗!
是的,这确实是支付宝,但是我们现在用区块链的方法解决这个问题。总的交易过程还是这样

1. A.账户金额 = A.账户金额 - 10
2. B.账户金额 = B.账户金额 + 10

只不过为了解决信任问题,需要在这两个操作之间加上一些步骤

1. A.账户金额 = A.账户金额 - 10
2. 智能合约账户金额 = 10
3. A确认收货
4. 智能合约账户金额 = 0
5. B.账户金额 = B.账户金额 + 10

步骤2-4就是新增加的步骤,有了这些步骤就可以促成这笔交易而双方又不必担心财产的损失,当然步骤2-4也就是区块链中智能合约概念中负责智能的部分。

除了上述购买商品的例子之外,智能合约还可以

  • 用于投票,对多个候选人进行投票
  • 共同账户管理,比如只有超过特定比例人数的时候才能对账户进行操作
  • 作为其他智能合约的库,因为智能合约是通过执行代码来实现的,既然是代码就可以被复用
  • 信息的存储,比如健身房会员信息,域名注册信息等

References

  • https://www.coindesk.com/information/ethereum-smart-contracts-work/

  • https://medium.com/startup-grind/gentle-intro-to-blockchain-and-smart-contracts-part-1-3328afca62ab