初步清晰理解智能合约
江左没浪
发表于 2023-1-11 14:15:42
137
0
0
区块链的发明,特别是以太坊的发布,让智能合约这个概念在区块链领域火热起来。但到现在,以太坊也已经运行了4年多了,各种自称为智能合约的产品已经运行超过4年了,但智能合约到底是什么,其实也没有一个清晰的概念。
从以太坊开始,我就特别想搞明白智能合约到底是个什么东西。但好几年了,我还不知道。+ W3 ?5 H2 z; o+ I4 Y5 R
我觉得如果不能清晰定义出这个概念,那智能合约就会被玄学化,各种骗子就会拿智能合约来行骗。这是行业的悲剧。" u+ c" W7 i* Q
既然我无法全面理解智能合约,今天我退而求其次,先理解一个目前区块链行业内有共识的智能合约的子集——智能数字货币资产处置合约。这个词是我造的。目前在以太坊上的数字货币资产的程序化处置,肯定是智能合约的范围。我们先清晰地理解这个子集。2 z$ d- A6 |; Q* z; x
我们把讨论的范围限定在数字货币资产,什么是智能合约,就非常清晰了。先看三个例子。
比特币挖矿获得BTC奖励的过程,就是一个智能合约。
比特币挖矿出块奖励的规则,从2009年第一个bitcoin节点软件发布时就定下来了,而且将会一直以这个规则运行下去。比特币创世块发行量是50BTC,然后是平均10分钟能被挖出一个块,一个块奖励50BTC。每挖出21万个块后,每个区块奖励减半。现在已经执行到了第二次减半,每个区块奖励12.5BTC。1 V* D0 | J' `2 ]. g9 q0 S" }
任何人都可以参与挖矿,你只要遵守工作量证明的规则,就可以加入挖矿大军。挖矿的工作量证明的规则,从bitcoin第一版本软件就规定好了。一直都是对全世界公开透明。6 S5 t- Q: F- W$ S) ~8 ~" c
所有的挖矿奖励交易记录,都是公开透明的完整地记录在比特币区块链里。不可篡改,也不可删除。5 n' W, L5 T @7 g7 ]: z! g
挖矿的整个设计,就像是一个劳动合同。你只要向比特币系统提交了按规则约定好的工作量,系统就会给你奖励工资。整个合同,都是以代码的形式固定在系统里。而且整个合同的执行,是纯自动的,不需要任何外力的介入。! R/ ]) v1 @" e: J
这就是智能合约(合同)。合约的参与方是自由进出,合约的“劳工方”提交“工作量”,系统自动验证“劳动量”,“劳工方”获得“BTC工资”。
合约规则以代码形式固定;参与合约无须授权自由进出;整个合同的执行,纯自动,无须干预;100%公开透明,历史100%被记录,不可篡改,不可删除。# D( [- {) }2 `( @
比特币挖矿这个智能合约,稳定运行了超过10年了,没有出现问题。牛逼到爆炸。
在现实生活中,你知道我们签订劳务合同,上班,领工资是怎么一回事。和挖矿相比,区别是什么。
比特币挖矿类似于一个“劳务换取BTC工资”的智能合约。我们再来看一个“商品出售”智能合约。
2017年6月26日,EOS开始进行ICO,一直持续到一年后,创下融资40亿美元的历史记录。史上最成功的融资之一。1 V, s. r" v; \0 w% \2 |4 n
EOS的ICO的执行方式是这样的。BM开发了一个“程序(智能合约,为方便描述,下称这个程序为EOS-ICO程序)”,程序运行在以太坊区块链上。
EOS-ICO程序有一个收ETH的地址,任何用户都可以往这个地址转入ETH。
每隔23小时,EOS-ICO程序会统计该地址收到多少ETH,以及分别由哪个用户的地址转入了多少ETH。
EOS-ICO程序然后会将200万个EOS-erc20代币,平均分配给这些ETH。; u% R5 V* {+ U" d2 c
转入过ETH的用户,可以再次使用自己的以太坊账户,向EOS-ICO程序调用支付函数。支付函数就会向用户的地址返回一笔EOS-erc20代币。
这就是一个典型的,支付货币(ETH),智能合约,向用户交付商品(EOS-erc20代币)的过程。) d# _$ v; G+ R! g
最后,这个EOS-ICO程序收到的所有ETH,只能由BM(或者说是block.one公司)提取,他们控制了这个程序的私钥。8 `/ x: l* e; K$ Z, s9 d+ r, i3 p
EOS-ICO程序,就是一个智能合约,是一个自动的收取用户ETH,自动向用户交付商品的智能合约。+ N, C; I% W1 E
同样的,合约规则由代码固定;参与合约无须授权;合约执行纯自动;100%公开透明,不可篡改,不可删除。
EOS-ICO这个智能合约,稳定运行了1年,共361期,没有出现任何差错。共出售了10亿EOS-erc20代币,总融资额超过40亿美元。牛逼到爆炸。
在现实生活中,我们知道“商品竞价出售”的过程是什么样的,被设计成智能合同后,区别有多大。7 K: f9 u6 `9 [
: ]- D a8 r8 _+ s6 X0 ]
最后,我们来看一个“完成央行职责发行货币智能合约”MakerDao。MakerDao合约很复杂,复杂使人担心,简化是出路。! O B: t3 s0 E& @0 k* c
央行的主要职责是发行货币和调节货币市场利率。MakerDao智能合约干的就是这事。! {- _0 c b7 f6 T! s0 z! y6 x4 G
MakerDao合同有两个参与方,抵押借贷方,和市场利率调节方。" q- G) q, S+ p6 e8 V, P) l
抵押借贷方通过将自己的ETH,充值进MakerDao合约抵押,合约则向借贷方发送Dai。Dai是一种稳定币,期望做到和美元1:1锚定。' j" W7 Y8 v, x5 S1 Y) @$ d B
抵押率先假定为60%,即价值100美元的ETH,可以抵押出60Dai(60美元)。再假定爆仓线为125%,即如果抵押品的价值跌到了借贷额的1.25倍,就触发系统拍卖程序,其他用户可以通过将Dai发给拍卖程序,可以购买到低于市场价格(我们假定为低3%)的ETH。拍卖程序促使抵押借贷者在价格下跌时,及时将Dai还款,赎回抵押品。# j' `( @. w7 W
那Dai如何能实现和美元锚定的目标呢?
首先要问的是,MakerDao智能合约怎么可能知道Dai和美元之间的汇率?MakerDao合约本身并不知道,但有人会给合约提供这类数据,这就是市场利率调节方。
MakerDao发行了一种币,叫MKR。MKR持币人享有合约运行收益(如Dai借贷的手续费)的分红权。而抵押ETH借贷Dai的抵押率,爆仓线,等合约的参数是由MKR持币人投票决定的。
MKR的分红权让持币人有动力维持Dai和美元的稳定锚定。一个策略是调节抵押率和爆仓线。第二个策略是市场套利。, [- q" C, ?" u
MKR持币者是Dai和美元波动最大的套利者,他们是拍卖程序的最积极参与者,为的是套取其中的拍卖价和市场价的差额。如果1Dai低于1美元,MKR持币者就赎返Dai,以降低Dai在市场上的供应。反之,1Dai高于1美元,MKR持币者就会抵押ETH发行Dai,以提高Dai的供应。
以上设计就形成一个逻辑自洽的抵押发行稳定币的系统。
MakerDao程序,就是一个智能合约。这个智能合约包含了比特币挖矿这种“劳务合同”属性,系统鼓励参与者发现市场利率,从中套利;又包含了EOS-ICO智能合约的“商品出售合同”属性,参与者可以使用ETH向合约“购买Dai”。
整个合约,同样的,合约规则由代码固定;参与合约无须授权;合约执行纯自动;100%公开透明,不可篡改,不可删除。$ Q6 Z7 p# r7 v% X
MakerDao已经稳定运行超过两年了。市场抵押出1亿Dai,即1亿美元。没出现问题。牛逼到爆炸。
从上面三个例子,我们可以看到将讨论范围限定的加密数字货币资产领域后,智能合约的定义。 o5 {) K ?5 B' q `5 y2 I
智能合约是我们熟悉的经济生活中的合同概念在互联网上的一个延伸。智能合约,就是智能合同。, }& i* \9 M2 d% A9 h4 F
合同最重要的三大属性是:金钱或财产;合同参与方的权力和责任;以及违约处置办法。( Q# f1 M& v Y$ L; Q3 W8 U" }
智能合约最重要的三大属性是:加密数字货币;参与合约的条件和收益;合约规则。, {' o2 G2 S! ~! I& m! H
合同是依赖于现实生活世界的约定成俗,和法律保证,以及人的承诺信用等。
智能合约依赖于代码规定,所以被广泛地认定为,code is law。- b& `2 Z0 z9 u' c8 F6 |3 P, H
智能合约的重要特性包括:在合约条款以代码形式固定;参与无须授权;合约自动执行;公开透明,不可篡改,不可删除历史记录。
最后,我没能给出一个智能合约高度抽象的定义,可能就目前来说,这是时代的局限,整个行业都没法给出清晰的定义。
成为第一个吐槽的人