1995年,計算機科學(xué)家,法學(xué)家和密碼學(xué)家,尼克·薩博提出了智能合約這個概念。但縱然牛逼如尼克·薩博,也沒有清晰地定義出什么是智能合約。
區(qū)塊鏈的發(fā)明,特別是以太坊的發(fā)布,讓智能合約這個概念在區(qū)塊鏈領(lǐng)域火熱起來。但到現(xiàn)在,以太坊也已經(jīng)運行了4年多了,各種自稱為智能合約的產(chǎn)品已經(jīng)運行超過4年了,但智能合約到底是什么,其實也沒有一個清晰的概念。
從以太坊開始,我就特別想搞明白智能合約到底是個什么東西。但好幾年了,我還不知道。
我覺得如果不能清晰定義出這個概念,那智能合約就會被玄學(xué)化,各種騙子就會拿智能合約來行騙。這是行業(yè)的悲劇。
既然我無法全面理解智能合約,今天我退而求其次,先理解一個目前區(qū)塊鏈行業(yè)內(nèi)有共識的智能合約的子集——智能數(shù)字貨幣資產(chǎn)處置合約。這個詞是我造的。目前在以太坊上的數(shù)字貨幣資產(chǎn)的程序化處置,肯定是智能合約的范圍。我們先清晰地理解這個子集。
我們把討論的范圍限定在數(shù)字貨幣資產(chǎn),什么是智能合約,就非常清晰了。先看三個例子。
比特幣挖礦獲得BTC獎勵的過程,就是一個智能合約。
比特幣挖礦出塊獎勵的規(guī)則,從2009年第一個bitcoin節(jié)點軟件發(fā)布時就定下來了,而且將會一直以這個規(guī)則運行下去。比特幣創(chuàng)世塊發(fā)行量是50BTC,然后是平均10分鐘能被挖出一個塊,一個塊獎勵50BTC。每挖出21萬個塊后,每個區(qū)塊獎勵減半。現(xiàn)在已經(jīng)執(zhí)行到了第二次減半,每個區(qū)塊獎勵12.5BTC。
任何人都可以參與挖礦,你只要遵守工作量證明的規(guī)則,就可以加入挖礦大軍。挖礦的工作量證明的規(guī)則,從bitcoin第一版本軟件就規(guī)定好了。一直都是對全世界公開透明。
所有的挖礦獎勵交易記錄,都是公開透明的完整地記錄在比特幣區(qū)塊鏈里。不可篡改,也不可刪除。
挖礦的整個設(shè)計,就像是一個勞動合同。你只要向比特幣系統(tǒng)提交了按規(guī)則約定好的工作量,系統(tǒng)就會給你獎勵工資。整個合同,都是以代碼的形式固定在系統(tǒng)里。而且整個合同的執(zhí)行,是純自動的,不需要任何外力的介入。
這就是智能合約(合同)。合約的參與方是自由進出,合約的“勞工方”提交“工作量”,系統(tǒng)自動驗證“勞動量”,“勞工方”獲得“BTC工資”。
合約規(guī)則以代碼形式固定;參與合約無須授權(quán)自由進出;整個合同的執(zhí)行,純自動,無須干預(yù);100%公開透明,歷史100%被記錄,不可篡改,不可刪除。
比特幣挖礦這個智能合約,穩(wěn)定運行了超過10年了,沒有出現(xiàn)問題。牛逼到爆炸。
在現(xiàn)實生活中,你知道我們簽訂勞務(wù)合同,上班,領(lǐng)工資是怎么一回事。和挖礦相比,區(qū)別是什么。
比特幣挖礦類似于一個“勞務(wù)換取BTC工資”的智能合約。我們再來看一個“商品出售”智能合約。
2017年6月26日,EOS開始進行ICO,一直持續(xù)到一年后,創(chuàng)下融資40億美元的歷史記錄。史上最成功的融資之一。
EOS的ICO的執(zhí)行方式是這樣的。BM開發(fā)了一個“程序(智能合約,為方便描述,下稱這個程序為EOS-ICO程序)”,程序運行在以太坊區(qū)塊鏈上。
EOS-ICO程序有一個收ETH的地址,任何用戶都可以往這個地址轉(zhuǎn)入ETH。
每隔23小時,EOS-ICO程序會統(tǒng)計該地址收到多少ETH,以及分別由哪個用戶的地址轉(zhuǎn)入了多少ETH。
EOS-ICO程序然后會將200萬個EOS-erc20代幣,平均分配給這些ETH。
轉(zhuǎn)入過ETH的用戶,可以再次使用自己的以太坊賬戶,向EOS-ICO程序調(diào)用支付函數(shù)。支付函數(shù)就會向用戶的地址返回一筆EOS-erc20代幣。
這就是一個典型的,支付貨幣(ETH),智能合約,向用戶交付商品(EOS-erc20代幣)的過程。
最后,這個EOS-ICO程序收到的所有ETH,只能由BM(或者說是block.one公司)提取,他們控制了這個程序的私鑰。
EOS-ICO程序,就是一個智能合約,是一個自動的收取用戶ETH,自動向用戶交付商品的智能合約。
同樣的,合約規(guī)則由代碼固定;參與合約無須授權(quán);合約執(zhí)行純自動;100%公開透明,不可篡改,不可刪除。
EOS-ICO這個智能合約,穩(wěn)定運行了1年,共361期,沒有出現(xiàn)任何差錯。共出售了10億EOS-erc20代幣,總?cè)谫Y額超過40億美元。牛逼到爆炸。
在現(xiàn)實生活中,我們知道“商品競價出售”的過程是什么樣的,被設(shè)計成智能合同后,區(qū)別有多大。
最后,我們來看一個“完成央行職責(zé)發(fā)行貨幣智能合約”MakerDao。MakerDao合約很復(fù)雜,復(fù)雜使人擔(dān)心,簡化是出路。
央行的主要職責(zé)是發(fā)行貨幣和調(diào)節(jié)貨幣市場利率。MakerDao智能合約干的就是這事。
MakerDao合同有兩個參與方,抵押借貸方,和市場利率調(diào)節(jié)方。
抵押借貸方通過將自己的ETH,充值進MakerDao合約抵押,合約則向借貸方發(fā)送Dai。Dai是一種穩(wěn)定幣,期望做到和美元1:1錨定。
抵押率先假定為60%,即價值100美元的ETH,可以抵押出60Dai(60美元)。再假定爆倉線為125%,即如果抵押品的價值跌到了借貸額的1.25倍,就觸發(fā)系統(tǒng)拍賣程序,其他用戶可以通過將Dai發(fā)給拍賣程序,可以購買到低于市場價格(我們假定為低3%)的ETH。拍賣程序促使抵押借貸者在價格下跌時,及時將Dai還款,贖回抵押品。
那Dai如何能實現(xiàn)和美元錨定的目標(biāo)呢?
首先要問的是,MakerDao智能合約怎么可能知道Dai和美元之間的匯率?MakerDao合約本身并不知道,但有人會給合約提供這類數(shù)據(jù),這就是市場利率調(diào)節(jié)方。
MakerDao發(fā)行了一種幣,叫MKR。MKR持幣人享有合約運行收益(如Dai借貸的手續(xù)費)的分紅權(quán)。而抵押ETH借貸Dai的抵押率,爆倉線,等合約的參數(shù)是由MKR持幣人投票決定的。
MKR的分紅權(quán)讓持幣人有動力維持Dai和美元的穩(wěn)定錨定。一個策略是調(diào)節(jié)抵押率和爆倉線。第二個策略是市場套利。
MKR持幣者是Dai和美元波動最大的套利者,他們是拍賣程序的最積極參與者,為的是套取其中的拍賣價和市場價的差額。如果1Dai低于1美元,MKR持幣者就贖返Dai,以降低Dai在市場上的供應(yīng)。反之,1Dai高于1美元,MKR持幣者就會抵押ETH發(fā)行Dai,以提高Dai的供應(yīng)。
以上設(shè)計就形成一個邏輯自洽的抵押發(fā)行穩(wěn)定幣的系統(tǒng)。
MakerDao程序,就是一個智能合約。這個智能合約包含了比特幣挖礦這種“勞務(wù)合同”屬性,系統(tǒng)鼓勵參與者發(fā)現(xiàn)市場利率,從中套利;又包含了EOS-ICO智能合約的“商品出售合同”屬性,參與者可以使用ETH向合約“購買Dai”。
整個合約,同樣的,合約規(guī)則由代碼固定;參與合約無須授權(quán);合約執(zhí)行純自動;100%公開透明,不可篡改,不可刪除。
MakerDao已經(jīng)穩(wěn)定運行超過兩年了。市場抵押出1億Dai,即1億美元。沒出現(xiàn)問題。牛逼到爆炸。
從上面三個例子,我們可以看到將討論范圍限定的加密數(shù)字貨幣資產(chǎn)領(lǐng)域后,智能合約的定義。
智能合約是我們熟悉的經(jīng)濟生活中的合同概念在互聯(lián)網(wǎng)上的一個延伸。智能合約,就是智能合同。
合同最重要的三大屬性是:金錢或財產(chǎn);合同參與方的權(quán)力和責(zé)任;以及違約處置辦法。
智能合約最重要的三大屬性是:加密數(shù)字貨幣;參與合約的條件和收益;合約規(guī)則。
合同是依賴于現(xiàn)實生活世界的約定成俗,和法律保證,以及人的承諾信用等。
智能合約依賴于代碼規(guī)定,所以被廣泛地認(rèn)定為,code is law。
智能合約的重要特性包括:在合約條款以代碼形式固定;參與無須授權(quán);合約自動執(zhí)行;公開透明,不可篡改,不可刪除歷史記錄。
最后,我沒能給出一個智能合約高度抽象的定義,可能就目前來說,這是時代的局限,整個行業(yè)都沒法給出清晰的定義。