最近有很多區塊鏈項目找到我,項目方動不動就說我要開發個公鏈;動不動就說老子還要做個側鏈;動不動就說自己的智能合約所向無敵;動不動就整出一堆的專業性名詞,節點、共識機制、去中性化。然后白皮書上列上一堆專業數學計算公式整的跟數學家一樣,最后只不過就想發個幣。
我也就是一臉的呵呵!!!
吐槽完后,今天想和大家聊聊大家口中的智能合約其實并不智能。
150萬份現有智能合約,用真實價值跑動的不到500。
當下炒的火熱的區塊鏈智能合約起源于以太坊。
2014年,19歲加拿大籍俄羅斯的少年天才程序員 Vitalik Buterin受比特幣啟發后提出以太坊概念并通過ICO眾籌得以發展。基本理念是在區塊鏈之上運行程序協助合約談判,來有條件的執行承諾交易。
少年天才程序員 Vitalik Buterin
智能合約的意義在于可以讓眾多組織的數據庫得以用低廉的成本交互,并且讓用戶寫下精密的合約,功能之一是產生去中心化自治組織(DAO),也就是一間只是由以太坊合約構成的虛擬公司。
這個理念對區塊鏈技術是一個創新,但實質上這自動執行的功能絕非新概念。
自動售貨機就是我們日常生活中最多見的例子:你給它5塊錢,它會自動給你一瓶可樂。它并非多么智能,同時它也不是一個法律意義上的合約,當事人無追索權。因此,專題嘉賓前摩根大通區塊鏈負責人Amber Baldet認為區塊鏈智能合約 “命名不當”,充其量僅僅是“分布式世界計算機 (decentralized world computer)”。

智能合約的意義在于執行的確定性,與法律合約受當事人及律師主觀解釋的不確定性形成鮮明對比。而正是由于這樣按照事先寫好的電腦程序的確定意義的執行,省去了交易雙方對信任的需求。
中間:Amber Baldet;最右:Lee Schneider
區塊鏈上的智能合約的許多細節仍在研究中,包括如何寫出完善的合約以及驗證合約的功能。合約的公開性也意味著如果合約中有漏洞,任何人都可以立刻看到,而修正程序可能會需要一些時間。
黑客可以利用這個時間進行攻擊。區塊鏈智能合約從出現至今的短短數年屢屢受到大規模的攻擊或自射烏龍。最早引起人們關注的被襲事件是2016年6月的 “The DAO Hack”。一個“攻擊者”利用了“The DAO”(一個德國初創公司的網絡融資)軟件代碼的一個漏洞,即“遞歸調用錯誤”,在以前的提款生效之前不斷地提取數字貨幣。攻擊被發現之時,存在DAO系統內的大量數字貨幣(價值約5,000萬美元)已被轉移至DAO成員無法控制的一個獨立賬戶內。更近的影響力較大的例子還有2017年11月以太坊執行自身漏洞而造成的1億7千萬美元的賬戶完全消失,2018年4月市值排名21位的Verge幣因程序漏洞受到51%襲擊,損失25萬代幣(Verge幣),占市值的22%。
鑒于不久前爆出的Facebook用戶個人數據使用上的問題,Amber Baldet認為目前的公有鏈并無數據隱私可言。當今是一個技術框架的交叉口,接下來要做的選擇不外兩個:一是鏈上加密,二是類似于File-coin的結構,在獨立封閉的隱私系統之間進行有控制的溝通。“如果能讓個人用自己的數據牟利也許能真正改變之前隱私總是排在便利之后的情況。”
McDermott Will & Emery的資深律師Lee Schneider解釋了區塊鏈中一種“激進透明”的觀點,認為既然我們已經為了方便放棄了自己的隱私,那何不干脆透明到底,反而可能也就使得隱私沒有那么重要。“我認為未來會出現不同透明程度的區塊鏈:有些會非常公開透明,有些有一定的透明度,另外一些非常私密,這些各有各的存在價值。或者那些“激進透明”的鏈有隱藏的側鏈,即使所有的交易都記錄在透明鏈上但歸屬仍隱藏于視線之外…用戶可以根據需要選擇參與各種區塊鏈。”
普遍認為區塊鏈有潛力改變很多傳統行業的運行方式,首當其沖的是風險投資,保險,以及航運。但同時區塊鏈在各個行業的應用也會受到非技術原因的阻礙,最大的一點是對現有工作崗位的重大影響。
舉個例子,特拉華州區塊鏈計劃落實的第一個項目是智能商法典(UCC)備案。商法典備案原來是非常簡單但是極容易出錯的文書工作,對大小商業交易的記錄很重要,尤其是完成證券登記。UCC最為人所知的一個錯誤是在通用汽車破產案中,因為文書偏差差點導致15億美元的公司債券從有抵押債務變成無擔保。如此適合區塊鏈的經典用例的都不是能輕易實現的,因為實施之前首先要幫這些被取代的文書人員再就業。
區塊鏈作為分布式賬本有一些應用場景,但是不會太大范圍的應用。智能合約則非常不靠譜,最多能在彩票、地下賭場有些半黑半白的應用。而那些幣,除了黑市洗錢、違法交易以外沒有任何價值。
區塊鏈的宣傳點不外乎分布式去中心化、公開透明可審計、安全不可篡改。所以當有大公司提供BaaS服務的時候,我第一反應就是掛羊頭賣狗肉,按道理認為區塊鏈是未來將重構一切的那些支持者,更應該出來反對,但是遺憾沒有,他們把這些服務當做區塊鏈是未來的依據。微軟也好,IBM也好,他們提供的區塊鏈服務讓開發者開發,用戶使用,這些賬本存儲在哪里?在這些互聯網巨頭的云數據中心里,在互聯網的巨無霸手心里面,完完全全違背了去中心化的理念好么?
當有大公司宣稱自己的業務運行在區塊鏈上時,我有同樣的反應。這些區塊鏈節點有多少個?控制權在誰的手里?哦,全部在這些大公司的運維部么手里。我區你媽的塊。
那么公有鏈是不是更靠譜?相比而言,就分布式去中心化和公開透明可審計方面要好很多,但是不夠大的區塊鏈很容易遭受計算力攻擊。物聯網設備這么發達,安全又是原始階段,黑客控制的大規模pc加上物聯網設備,達到幾十萬的規模不是難事,更不用說國家機關的超級計算機了,51%攻擊?我看91%攻擊都有可能,真的不可篡改不可撤銷么?
有沒有可能的區塊鏈應用?聯盟鏈也許是一個好主意。多加企業聯合在一起,每家多少節點,共同存儲托管一些不太敏感的數據,還是可行的。
所以我認為,區塊鏈能有一些應用,但是不會很廣泛的應用。
再說智能合約。這是大家談得很多的一個東西,有人反對區塊鏈重構一切或者說幣是泡沫的時候,就有人跳出來說我們有智能合約多么多么牛逼,去中心化的信任,重構社會機制。前幾天我花了一晚上時間看了看,就兩個字,呵呵……
首先,請把智能兩個字去掉,或者改成自動合約,因為這跟智能沒有一毛錢關系。
然后我們繼續。兩只球隊比賽,我賭a贏,你賭b贏,于是5毛賭局開始了。我怕你反悔,你怕我反悔,我們決定一起把錢交給黃鶴,讓他主持公道。結果比賽結束了,我去找黃鶴領錢,發現他拿著錢帶著小姨子跑了。如果有智(自)能(動)合約怎么做呢?我們寫一個合(程)約(序),雙方的錢包都寫進去,如果a贏了你給我錢包打錢,b贏了我給你錢包轉賬,把這個job發到區塊鏈的分布式網絡去,這個job不可撤銷不可篡改。然后靜待結果,比賽結束了,結果出來了,job執行,一個人拿到錢,很贊,完美。
似乎有個問題,這個比賽結果哪里來?
去 第!三!方!權!威!地!址!拿!
啊?不是說去中心化的信任嘛?
“假設在區塊鏈體系的租房APP上,租客與房東達成了租賃協議,其中有一個智能合同規定,在退房時,如果租客弄壞了客廳的小米9A電視,則需要按退房當天小米官方的價格原價賠償。轉眼到了退房的那一天,租客在APP上點擊一鍵退房,APP自動下發指令讓客廳的小米9A電視自檢(確認是否損壞),因為租客在使用過程中,確實弄壞了小米電視,導致自檢結果觸發了智能合同中的賠償條款,很不巧的時,當天小米天貓旗艦店正在做活動,比小米商城要便宜300元,此時智能合同賠償金額要以哪個價格為準?
假設現在有一個第三方系統(預言機)可以提供權威準確、不可篡改、穩定、并可接受審計的價格查詢接口,包括查詢小米9A電視的價格,在執行賠償智能合約時會自動觸發該預言機,向區塊鏈發送一筆交易,交易的數據塊攜帶了小米電視9A的價格,隨著每個礦工節點區塊的同步,就保證了價格完全一致。
換一種解釋,預言機整個完整的工作流程是這樣的,首先預言機從小米官方獲取小米9A的電視價格,然后向特定區塊鏈上的地址進行轉賬,并將價格信息寫入交易備注,這樣智能合約只需要查看特定地址的交易記錄,就可以獲取小米9A的價格了。而由于區塊鏈會自動同步存儲包含交易的區塊,所以智能合約幾乎只需要訪問本地就能得到價格信息。既保證了訪問效率,又保證了價格的一致性。
總的來說就是由預言機(第三方)將數據推送給區塊鏈,而不需要智能合約主動向第三方拉取數據。”
有卵用?講了一大堆,預言機,分布式預言機,預言機網絡,各種概念,最終呢?nb的預言機還是要去小米官網拿數據,而且折舊什么的一樣各種糾纏,你的合約里面不可能考慮了各種情況萬無一失。球賽的話,還得去球賽官方拿數據。
信任不是無源之水,最終還是有權威第三方作為根。所謂智能合約,并沒有完成去中心化的信任構建,使用的還是區塊鏈網絡的不可篡改不可撤銷特性——關于這個特性我前文講過了,區塊鏈節點要么在云計算巨頭的計算中心里面,要么直接掌握在大企業私有的idc中心里面。智能合約的生效,還是依賴一個獨立權威第三方,提供結果,作為合約執行的條件,這跟支付寶有多大區別?
“如果說預言機和預言機網絡是數據的搬運工,那么預測市場則可以給智能合同提供未來準確的數據。
假設今天晚上在天河體育中心舉行世界杯決賽,所有的直播和賽事數據都來自于CCTV5,卻沒有人能保證CCTV5的網站不被攻擊,或者出現無法訪問等各種意外情況,而一旦出現這些意外將造成嚴重的后果,在這種情況下,我們就可以運用預測市場的技術。
預測市場的最終數據從哪里來呢?數據來自于人,而非機器,比如那些博彩,下注,競猜等一切與比賽結果相關,并捆綁了自身利益的人,都可以成為預測數據的提供者,因為他們捆綁了自身利益,他們不會犧牲自身利益提供虛假數據,從而有效地保證了數據的可靠性和真實性。”
最后是關于預測市場的。簡單一句話概括,就是一人一票,我說a贏了你說b贏了。誰人多就是誰贏了。你們愿意參與到這種合約里面去嗎?每次都賭自己在人多的那一面?
當然,智能合約在某些時候還是有用的。比如說彩票、賭博。這種結果不需要第三方給出,在job里面直接隨機生成。但是如果合約代碼有鬼,那就自認倒霉吧——別人還可以解釋成bug。一旦涉及到現實,智能合約就乏力了。
幣,我都懶得說了。
區塊鏈有一些應用場景,聯盟鏈可以搞搞,但是顛覆一切?做夢。智能合約?比作為賬本的區塊鏈都不如——最后可能成為分歧爭端機那樣的東西,就在一個大的同一平臺上對賭,反正要權威第三方,還要區塊鏈干啥,阿里云飛天提供一套DSL語言就ok了。
醒醒吧!!!
一切脫離商業本源的項目,最終都是一地雞毛!!!