區(qū)塊鏈的智能合約究竟有什么用
有讀者提到所謂的智能合約,事實(shí)上也能以中心化的系統(tǒng)運(yùn)作(譬如微信的小程序),那為什么還需要去中心化、區(qū)塊鏈的智能合約?
智能合約的起源
智能合約一詞是由學(xué)者Nick Szabo 于1994 年所提出,他倡議可將交易條款以程式自動化處理,為了闡釋智能合約的概念,他舉了自動販賣機(jī)當(dāng)例子:
如果使用者投入10 元且按A 按鈕,販賣機(jī)就掉出乖乖
如果使用者投入20 元且按B 按鈕,販賣機(jī)就掉出咖啡
如果使用者投入30 元且按C 按鈕,販賣機(jī)就掉出泡面
這很好理解,當(dāng)使用者跟自動販賣機(jī)互動時,只要滿足特定條件,就會有相對應(yīng)的價值轉(zhuǎn)移產(chǎn)生(錢換各種零食),這一切都透過電腦的軟硬體自動化執(zhí)行,無須借由第三者的協(xié)助,這就是智能合約的概念。
事實(shí)上剛讀到這段智能合約的起源時,我跟上面那位讀者一樣,頓時丈二金剛摸不著頭腦—— 智能合約這東西很稀奇?啊不是現(xiàn)在就有了嗎?
如果以自動販賣機(jī)的這個概念為基礎(chǔ)延伸下去,
· ATM 是智能合約(我驗(yàn)證身份就可以領(lǐng)錢)
· 在iTunes 上買專輯也是智能合約(我付錢拿電子專輯)
· 在線上游戲買虛寶也是智能合約(我付錢拿虛寶)
后來了解更多之后,才發(fā)現(xiàn)這樣的想法是剛好被Nick Szabo的舉例給綁住了,自動販賣機(jī)只是一個讓大家理解「條件滿足就自動執(zhí)行」的例子,事實(shí)上,Nick Szabo所設(shè)想的應(yīng)該是一個平臺,能夠讓人們透過某種共通的軟體工具,讓大家可以把交易的條件表達(dá)成自動執(zhí)行的程式碼,做到自動化的「價值轉(zhuǎn)移」。
如果只看自動販賣機(jī)的例子的話,智能合約的確可以用中心化的系統(tǒng)來處理,但要實(shí)現(xiàn)Nick Szabo 的理想,必須要有一個平臺用來儲存程式代碼并運(yùn)行程式,問題來了,既然牽涉到「價值轉(zhuǎn)移」,就攸關(guān)大家的利益,那平臺到底該由來誰運(yùn)行?
找政府?找有公信力的大企業(yè)?找社會達(dá)賢?都不適合,因?yàn)椴还苣阏艺l,這些家伙都有誘因竄改程式碼而中飽私囊,反正有錢的地方就有紛爭,有人的地方就有江湖,在缺乏適合平臺的狀況下,Nick Szabo 的理想自然很難實(shí)現(xiàn)了。
區(qū)塊鏈2.0以太坊的出現(xiàn),為智能合約提供了合適的平臺
接下來的故事大家應(yīng)該就很清楚了,2013 年俄國天才少年Vitalik Buterin 提出了新一代的區(qū)塊鏈——以太坊作為運(yùn)行智能合約的平臺,一下子把區(qū)塊鏈從原本的P2P 電子現(xiàn)金傳輸機(jī)制(比特幣),躍升為去中心化的「世界電腦」這個等級,開啟了區(qū)塊鏈2.0 的時代。
區(qū)塊鏈的智能合約
為什么區(qū)塊鏈適合作為智能合約的平臺?主要理由有三:
一、智能合約部署上區(qū)塊鏈后,就無法被修改,避免了合約被竄改的風(fēng)險。
二、智能合約在區(qū)塊鏈上是公開的,合約參與者可審查代碼是否有問題。
三、只要條件滿足,無人能阻止區(qū)塊鏈執(zhí)行智能合約,執(zhí)行效力是絕對的。
以上的三點(diǎn),讓區(qū)塊鏈的智能合約可具備「透明」、「去中心化」、「自動化」的特性。
「透明」有什么用?
在一些運(yùn)作機(jī)制不透明的產(chǎn)業(yè),譬如線上博奕,人們很難相信程式不會偏袒莊家,畢竟后端的代碼都掌握在博弈廠商的伺服器上,但如果改用區(qū)塊鏈的智能合約就不一樣了,其程式運(yùn)作邏輯都可以供公開檢視,玩家不用擔(dān)心被莊家坑。
還有一個例子是數(shù)位廣告,廠商把錢交給數(shù)位廣告代理商后,最后只會得到一些報(bào)表,內(nèi)容可能包含廣告被投放在哪里/花了多少錢/多少瀏覽/多少點(diǎn)擊等數(shù)據(jù),但事實(shí)上,報(bào)表是真是假,廠商根本無從得知。舉個例子,代理商可以唬爛廠商他把預(yù)算投放在A、B、C 平臺,但事實(shí)上只投了A 平臺,或是宣稱投了100萬廣告費(fèi),但實(shí)際上只花了50 萬,且數(shù)位廣告牽涉DMP、AD exchange、AD Network 等中間商,中間的利潤分配非常不透明,如果用區(qū)塊鏈的智能合約,把程式代碼公開讓大家檢視,就可以解決這個問題。
「去中心化」有什么用?
講去中心化之前,先補(bǔ)充個觀念,事實(shí)上所有牽涉「非實(shí)物交付」的價值轉(zhuǎn)移,都需要透過第三方作為信任中心,舉個例子,假設(shè)我要把一棟房子轉(zhuǎn)交給其他人,我不可能手捧著房子給他,所以我會先簽房契,然后再拿房契到地政事務(wù)所登記,這個例子中,地政事務(wù)所就是作為信任中心的「第三方」,也就是紀(jì)錄價值轉(zhuǎn)移的「帳本管理者」,它記錄了所有房產(chǎn)的所有權(quán)狀態(tài)及轉(zhuǎn)移歷史。
轉(zhuǎn)帳也是一樣,轉(zhuǎn)帳實(shí)務(wù)上沒有牽涉任何紙鈔或硬幣的轉(zhuǎn)移,你必須信任銀行不會做假帳,才能安心使用銀行的轉(zhuǎn)帳系統(tǒng)。
如果地政事務(wù)所或是銀行出錯,甚至是想要作惡,用戶就會被暴露在極高的風(fēng)險當(dāng)中,我們之所以信任類似銀行這樣的帳本管理者,是因?yàn)楸澈笥袊?、法律在支撐起整個社會的信任體系,在臺灣這種幸福的國家,這個信任是相對有保障的,但在一些金融體系和法治觀念比較落后的國家,銀行很容易就破產(chǎn),官商勾結(jié)的情況也比較嚴(yán)重,今天你的房產(chǎn)還是你的,明天可能就莫名其妙變成別人的了,這時候區(qū)塊鏈作為去中心化的資產(chǎn)轉(zhuǎn)移系統(tǒng),就有其應(yīng)用價值。
那有什么應(yīng)用的例子呢?假設(shè)今天有一個富翁,富翁的金庫存了一千萬美元等值的黃金,他想在死后把金庫的密碼告訴給他的女兒,但是他擔(dān)心遺產(chǎn)信托的單位會侵吞密碼,這時他可以寫一個智能合約,他每2 周至少會跟智能合約互動一次,這樣智能合約就知道:「富翁還活著」,如果他掛了,自然就會停止互動,2 周后智能合約就會自動把密碼傳送給女兒知道,這個做法除了可以確保遺產(chǎn)一定會轉(zhuǎn)給他女兒之外,富翁還省下了找遺產(chǎn)信托& 找律師寫遺囑的費(fèi)用。
這只是一個簡單的例子,任何「信任基礎(chǔ)薄弱」、「非實(shí)物交付」的資產(chǎn)轉(zhuǎn)移,都是區(qū)塊鏈的智能合約可以發(fā)揮的地方。
「自動化」有什么用?
相信很多人在媒體上看過智能合約的自動化程序,可省下人力與紙張成本等說法。
心思再稍微細(xì)膩一點(diǎn)的讀者,可能會想——「疑?中心化的程式不也可以省人力或紙張的成本嗎?這有什么好稀奇的?」
譬如隨便一個電商系統(tǒng),只要廠商從金流商那邊收到「使用者已付款」的資訊,系統(tǒng)就自動pass 訂單資訊到倉庫,然后由倉庫統(tǒng)一出貨,中間的運(yùn)作邏輯都由程式控制,一樣可以省人力或紙張成本。
所以區(qū)塊鏈的智能合約在「自動化」上,有比一般系統(tǒng)更獨(dú)到之處嗎?
答案是有的。
區(qū)塊鏈本身就是一個分散式的數(shù)據(jù)庫,因?yàn)閰⑴c者都維護(hù)相同的數(shù)據(jù)庫,而且還有數(shù)據(jù)不可被篡改的特性,所以可以解決「跨系統(tǒng)溝通的信任問題」。
在「電商系統(tǒng)」例子中,如果以功能區(qū)分的話,大致可以分成四個單位:
· 銀行(負(fù)責(zé)提供金流的infrastructure)
· 金流商(負(fù)責(zé)介接銀行,提供payment gateway)
· 電商系統(tǒng)(負(fù)責(zé)處理訂單資訊)
· 倉儲系統(tǒng)(負(fù)責(zé)處理出貨)
這四個家伙,他們中間存在信任問題嗎?
銀行會有誘因跟金流商撒謊,說某信用卡額度不足的客戶刷卡成功嗎?電商系統(tǒng)會跟倉儲系統(tǒng)亂報(bào)訂單資訊嗎?應(yīng)該不會吧!干嘛自己人打自己人??!
所以在以上例子中,各方系統(tǒng)開放API ,讓不同系統(tǒng)可以互相溝通就好了,用不到區(qū)塊鏈的智能合約。
那在怎樣的狀況下,會比較適合區(qū)塊鏈?
供應(yīng)鏈金融是很適合的應(yīng)用場景,簡單介紹一下供應(yīng)鏈金融的運(yùn)作方式——通常供應(yīng)商出貨給廠商之后,不會收到即時的現(xiàn)金(越大牌的廠商,賒帳期間越長),而是收到廠商發(fā)的「應(yīng)收帳款」的證明,約定好在幾個月后付錢,但這會造成供應(yīng)商現(xiàn)金流上很大的壓力,這時候解法有二:
1)供應(yīng)商用「應(yīng)收帳款證明」作為抵押品,跟銀行借錢,減輕周轉(zhuǎn)壓力。
2)供應(yīng)商用「應(yīng)收帳款證明」作為約當(dāng)現(xiàn)金(cash equivalents),跟更上游的供應(yīng)商叫貨。
這個時候問題就來了,不管是銀行,還是更上游的供應(yīng)商,一定都會擔(dān)心這個「應(yīng)收帳款證明」是假的,所以銀行和供應(yīng)商會去向廠商確?!笐?yīng)收帳款證明」的真實(shí)性,但這么一來稽核的成本就很高,需要有一個可信賴的協(xié)作平臺,讓大家可以安心地交換資料。
這個時候,廠商、各級供應(yīng)商跟銀行,就可以組成聯(lián)盟鏈,把各自互動的數(shù)據(jù)寫入?yún)^(qū)塊鏈中,資訊都透過電子簽章加密,以確保資訊的真實(shí)性。
舉「借錢」為例,智能合約的運(yùn)作步驟如下:
1. 供應(yīng)商以「應(yīng)收帳款證明」做擔(dān)保向銀行提出借錢的請求
2. 銀行透過聯(lián)盟鏈的權(quán)限,向廠商提出查詢請求。(上鏈資訊:附上「供應(yīng)商和銀行電子簽章」的「查詢請求」)
3. 廠商檢查「應(yīng)收帳款證明」的真實(shí)性,將查詢結(jié)果回傳給銀行。(上鏈資訊:附上「廠商電子簽章」的「查詢結(jié)果」)
4. 銀行確認(rèn)應(yīng)收帳款為真&貸款金額沒有超過應(yīng)收帳款后,放款給供應(yīng)商。
5–1. 如果供應(yīng)商準(zhǔn)時繳清貸款,結(jié)束貸款合約。
5–2. 如果供應(yīng)商付不出貸款,銀行就請廠商代償款項(xiàng),結(jié)束貸款合約。
以上智能合約的設(shè)計(jì),最大限度的保留了各方參與者的資料隱私,只把最必要的資訊——「應(yīng)收帳款的真實(shí)性」上鏈,而步驟1 、4、 5 的資訊就沒必要上鏈。而由于上鏈后的資訊不可篡改,且互動紀(jì)錄都附有各方的電子簽章,降低了參與者作惡的風(fēng)險。
所以總結(jié)來說,區(qū)塊鏈的智能合約可提供「可信賴」、「可跨系統(tǒng)溝通」的自動化機(jī)制,這才是區(qū)塊鏈智能合約在自動化上的價值所在。
結(jié)論
我們總結(jié)一下整篇文章的內(nèi)容:
1. Nick Szabo 提出的智能合約,并非一定要去中心化,中心化的智能合約一樣能運(yùn)作。
2. 要達(dá)到Nick Szabo 「通用型智能合約」的理想,需要一個去中心化的平臺,區(qū)塊鏈正是perfect match。
3. 區(qū)塊鏈的智能合約是透明的,適合用在運(yùn)作機(jī)制不透明的產(chǎn)業(yè)。(如線上博奕)。
4. 區(qū)塊鏈的智能合約是去中心化的,適合用在「信任基礎(chǔ)薄弱」、「非實(shí)物交付」的資產(chǎn)轉(zhuǎn)移場景。(如金庫密碼轉(zhuǎn)移)
5. 區(qū)塊鏈的智能合約可提供「可信賴」、「可跨系統(tǒng)溝通」的自動化機(jī)制,適合用在資訊需與多方確認(rèn)的應(yīng)用場景。(如供應(yīng)鏈金融)