如果沒有來自政府或法律的保護,智能合約能夠保證我買到那杯咖啡嗎?

如果沒有來自傳統的信用保障,如國家法律等等,基於區塊鏈接技術的去中心化驗證的智能合約理論上能保證以加密貨幣支付的涉及現實中商品的交易一定會履約嗎?例如,國家宣布不為任何涉及加密數字貨幣的交易背書,被騙了別找我。我為了買咖啡而支付以太幣,對方收幣後不給我咖啡怎麼辦?

當然,智能合約可以做成這樣:我先把錢轉入合約賬戶,等我拿到咖啡後,我確認收到,錢再轉給商家。但這樣的話,風險就全部由商家承擔了。我收到後不確認收貨怎麼辦?


你可以想像數字世界和物理世界之間有一個「結界」,通過這個結界的時候定律會被改寫。

所以,智能合約的能力到結界邊界就失效了,咖啡店給你咖啡是物理世界的事,還是需要現實層面的規則來監管。

當然,我們還是可以把這個結界的邊界再擴展一下,比如賣咖啡的是和乙太網區塊鏈相連的自動咖啡機。機器不會賴賬,除非被hack了。這個時候「賴賬」這件事就是極小概率事件了,就像現實中ATM不吐錢。

實際上,即使是在數字領域(結界內),區塊鏈如何可靠地和區塊鏈之外的數據交互,也是目前正在解決的一個大問題。


針對本題的答案:

你依靠智能合約拿到咖啡的結果,與你不使用智能合約的結果是一樣。

智能合約完全,徹底,沒有任何辦法讓你一定拿到你的「咖啡」,或者你拿不到不會有任何「補償」--他只是合約,無法確保執行。

以下是為什麼:

1:簡要概述:

「一個智能合約是一套以數字形式定義的承諾(promises),包括合約參與方可以在上面執行這些承諾的協議。」

--Nick Szabo(百度百科)

關鍵詞:承諾(promises)、協議

「區塊鏈技術是利用塊鏈式數據結構來驗證與存儲數據、利用分散式節點共識演算法來生成和更新數據、利用密碼學的方式保證數據傳輸和訪問的安全、利用由自動化腳本代碼組成的智能合約來編程和操作數據的一種全新的分散式基礎架構與計算範式」

--袁勇,王飛躍. 區塊鏈技術發展現狀與展望[J]. 自動化學報,2016,42(04):481-494

--關鍵詞:數據、共識演算法、安全

「區塊鏈會現實出四個主要的特性:去中心化(Decentralized)、去信任(Trustless)、集體維護(Collectively maintain)、可靠資料庫(Reliable Database)。並且由四個特性會引申出另外2個特性:開源(Open Source)、隱私保護(Anonymity)。如果一個系統不具備這些特徵,將不能視其為基於區塊鏈技術的應用。」

--暴走恭親王《什麼是區塊鏈》

2:智能合約的缺陷和優點

2.1:智能合約的缺陷

2.1.1:執行缺陷

智能合約的執行是有缺陷的,由於智能合約的技術基礎是區塊鏈,所以所有智能合約隱含的約束都應該考慮到區塊鏈四特性:去中心化、去信任、集體維護、可靠資料庫

其中的集體維護和可靠資料庫與你答案所提例子無關,目前已經基本都實現了這2點。

但是關於去中心化和去信任的限制,你所提的咖啡例子是智能合約做不到的,原因如下:

--------去中心化確保了數據不會被篡改和銷毀,但也限制了智能合約的共識是去中心的,在合約發布後,合約的執行就必須在整個鏈路上達成「合約共識」,如果該鏈路里有任意一個節點是失效的,則鏈路失效,基於鏈路的合約也失效

你的例子里,你不承認收到咖啡,或者商戶並沒有給你提供咖啡但在鏈路里確認了提供,那麼這就是一個典型的「共識失效」,最少有一個節點不再承認這個「共識/鏈路」,鏈路斷掉了,合約失效了。

--------去信任確保了鏈路的任意一個節點不會有超出「共識」的話語權,但是你提的咖啡例子里,你「把錢轉入合約賬戶」,這就是一個典型的例子,因為「合約賬戶」必須隱含一個「賬戶管理者」的角色,這個角色是超出與鏈路之外的信任,而且他本身也是一個隱藏的「鏈路參與者」,這種合約隱含條件,就是鏈路的參與者都「天然信任這個賬戶管理者」,那麼去信任就無從談起。

如果你們都信任這個「賬戶管理者」,那麼完全無需「智能合約」,或者說這份合約沒有意義。

有人會說,如果不考慮合約賬戶呢?

如果排除了例子里隱藏的「賬戶管理者」拿掉,或者你放棄「把錢轉入合約賬戶,交給合約保障」這個想法。那麼問題來了,合約生效的前提和合約生效後的執行結果,都變成不可控了。因為合約缺乏「強制性」了,一份合約如果沒有約束性,無論他的規則多麼完善,數據多麼安全都沒有意義。

拿你的咖啡例子為例,你承不承認拿到咖啡結果都只能鏈路各個節點去監督,如果這些節點對合約的執行沒有強制力,那麼你不會付出任何代價。而如果他們有了強制力,又缺乏對你的公平性。

沒有強制力的例子大家可以參考ofo的自行車,和滴滴拒絕付款的乘客,換個手機號和身份證號就好了。

缺乏公平性的例子大家可以參考快遞員被惡意投訴,快遞員完全沒有任何話語權。

2.1.2:隱私缺陷

智能合約是基於共識的,區塊鏈是集體維護的,鏈路的參與者對合約是全部知情的。

數據加密針對的是鏈路外,對鏈路內是弱加密的,幾乎每一個節點的參與者在具備一定技術水平下,都可以獲取你的全部數據記錄。

你凌晨2點在上海某漢庭酒店外的24小時咖啡廳消費了一杯咖啡。

你晚上10點在漢庭外超市消費了一款避孕套,還是小號的。

你之前的所有記錄都在北京

............

所有節點差不多都知道你從北京去上海出差,住漢庭酒店在7-11超市買了最小號的避孕套,應該是跟某個人做頭髮了。

了確保合約的嚴謹,合約約定的數據應該具備完整性(所有基於信任的數據都應該具有完整性),所以你幾乎無法避免丟失自己的個人隱私。

以電商為例,訂單sku和個人信息都要具備才能確保訂單有效和可追溯,這就是完整性,合約約定的行為應該是個完整的數據,否則合約的約束就滿是漏洞了。

2.2:如果智能合約只是作為合約,他完美無缺

由於區塊鏈的基礎就是去中心化,所以只要確保鏈路里的節點足夠多,那麼合約的約束就會理論上無限大。

以上面的例子換成外賣為例,如果你拿到咖啡想賴賬,鏈路的「溯源」里,有完成的a(咖啡店)交付d(外賣公司),d(外賣公司)交付e(外送人員)的記錄,如果合約只是一個「憑證」,作用只是給c(支付寶)來做仲裁,那麼支付寶大概率可以降低誤判的可能,而且成本十分低廉。

好多人對區塊鏈和智能合約的理解,都是盲目的,認為智能合約就一定「可以做一件事」,這是根本上的理解錯誤。

智能合約最大的特色不是「一定能做一件事」而是「確保你所在鏈路所有節點都認同一件事」的前提下,「這件事公告天下」。

他是個完美的合約,有約束,有條件,有結果,有參與者,有記錄,不可更改永久保存。

只要不考慮執行

智能合約是個超大的,去中心化,有共識的,不可篡改的資料庫,他只是「合約」,也只能做「合約「。

合約的執行不能作為智能合約設計的前提,執行的事情應該與合約無關,只與鏈路有關。

3:有沒有確保你一定「拿到咖啡」或者「等價與咖啡」的可能

但是必須有一個超出與整個區塊鏈的共識(信任)

也就是所有使用區塊鏈的節點,認同區塊鏈里的「數據」有價值

是否能做到,你去問問比特幣啊

如果所有節點認同電子貨幣價值,那麼c(合約賬戶)的存在合理了,智能合約才能確保「必須執行」

只要合約約束在鏈路的必要節點(基於特定key的幾個節點,比如商戶,外賣公司,快遞員3個節點)進行合約生效判定,那麼自動扣除你的電子貨幣就OK。

~~~~~未完待續,等待問題整理思路

好多人對智能合約的認識過於複雜:

給程序員的答案:區塊鏈就是個超大的無篡改去中心的資料庫,合約就是一個無需軟硬體資源投入的可執行程序。程序的執行結果仍然與程序的創作者思路有關。

技術上的缺陷:無法修改刪除,不具備實時性(這個很坑的),封閉的鏈路(只在生效和結束外接收外部數據,不能主動「出鏈」),鏈路損壞只能追溯無法修復重啟(比如某個合約的參與者節點損壞,合約失效,鏈路失效)---從這些看來智能合約就是資料庫里一個存儲過程

對普通人的答案:狹義上,智能合約是你交易的小票,銀行流水,票根,房產證和身份證,他是「憑證」而不是「交易」

大家有問題可以留言

我會逐漸補充修改這一份答案,太晚了也沒法排版。

轉載請基於知乎規範,無來源和無署名的轉載視同為侵權


區塊鏈安全的前提是有足夠多的用戶,設使區塊鏈安全的用戶數臨界值是N;當很多人都承認加密貨幣的時候,也必然會倒逼政府作出規範,設能影響政府的用戶數臨界值是M。

如果M&

如果N&

以上這些,其實是所有新貨幣被人群自發認可的過程,和智能合約沒太大關係。跑個題,我認為智能合約最重要的貢獻在於提供了機器對機器的交易規範,只要代碼能控制的東西,就可以和智能合約結合到一起。現在我們可以通過智能合約簡化虛擬商品交易過程,比如金融衍生品交易、網路廣告分成、主播打賞等。以後結合物聯網和人工智慧,智能合約可以做到更多,比如全自動網購、全自動醫療、全自動租車等。當然這些用支付寶也可以完成,但是智能合約基於區塊鏈,不需要一堆伺服器和工程師來維持服務,結算成本非常低,這是中心化的網路支付不能比的。


你憑什麼相信政府或法律可以公正的保護你?


技術是不能提供信用的,智能合約是為合同信用提供了不可更改的技術憑證,而信用是個體,機構和交易之間的信任關係,如果這個信任關係被廣泛認可,不論是否有政府的參與在內,智能合約就能提供信用的證明,幫你買到咖啡,否則就不行。


推薦閱讀:

比特幣,萊特幣,以太坊,以太經典,BCC,Dash價格分析(46)
7. 以太坊初探
Coinmarket首批開啟BTC和ETH交易,比原鏈主網上線
為什麼以太坊智能合約不可更改?

TAG:區塊鏈Blockchain | 以太坊 | 智能合約 |