再說智能合約
參閱:什麼是智能合約
智能合約被認為是使用區塊鏈技術的又一個熱門技術,在這個領域內,最著名的初創企業就屬Ethereum和Eris Industries了,近期很多媒體也一直在報道相關的新聞。
智能合約其實並不是特別智能,也不是嚴格意義上的合約。
從用戶角度來講,智能合約通常被認為是一個自動擔保賬戶,例如,當特定的條件滿足時,程序就會釋放和轉移資金。
從技術角度來講,智能合約被認為是網路伺服器,只是這些伺服器並不是使用IP地址架設在互聯網上,而是架設在區塊鏈上。從而可以在其上面運行特定的合約程序。
但是與網路伺服器不同的是,所有人都可以看到智能合約,因為這些智能合約的代碼和狀態都在區塊鏈上(假設區塊鏈是公開的)。而且,與網路伺服器不同的是,智能合約不依賴某個特定的硬體設備,事實上,智能合約的代碼由所有參與挖礦的設備來執行(這也意味著進入單個合約的算力是有限的,儘管挖礦難度的自動調整會調節這種影響)。
智能合約是編程在區塊鏈上的彙編語言。通常人們不會自己寫位元組碼,但是會從更高級的語言來編譯它,例如用Solidity,與Javascript類似的專用語言。這些位元組碼確實給區塊鏈的功能性提供了指引,因此代碼可以很容易與它進行交互,例如轉移密碼學貨幣和記錄事件。
代碼的執行是自動的:要麼成功執行,或者所有的狀態變化都撤消(包括從當前失敗的合約中已經送或接收的信息。)這是很重要的,因為它避免了合約部分執行的情況(例如,在證券購買交易中,證券所有者已經轉移發送了證券,但是密碼學貨幣的支付轉移卻失敗了)。在區塊鏈環境中,這尤為重要,因為沒有辦法來撤消執行錯誤所帶來的不好的後果(而且如果對手不配合的話,根本就沒有辦法逆轉交易)。
智能合約的使用案例
證券登記和清算。合約狀態包含了證券所有權的信息。如果登記的證券所有者注意到該合約中證券已經出售給了其他的參與者,其他參與者就會把密碼學貨幣發送到擔保賬戶,然後證券登記信息就會更新,貨幣就會轉發給原來的證券持有者。取決於哪個信息先到達,證券或貨幣都會保管在一個擔保賬戶中以避免雙重使用,當交易取消或過時後,擔保也將取消。
銀行現有賬戶。區塊鏈本身已經使用了密碼學貨幣賬戶,因此這裡不需要智能合約。然而,現實生活中的人們想說歐元或美元賬戶,與上面所講到的證券登記賬戶類似。使用合約會存在合約對手風險,正如在現實世界中的任何銀行一樣。這種風險可以通過對手風險監管來轉移,或者通過擔保來消除這種風險。
衍生產品、博彩。假設對手同意某個在互聯網能夠訪問的數據源,他們就可以對數據源的價值進行衍生合約或博彩。
預付款和再充值。合約可以和移動SIM卡、預支付電費卡等綁定,當收到密碼學貨幣時,就可以進行充值。
智能合約面臨的問題
智能合約目前還處在初級階段,尚未有任何實質進展。關鍵問題是信任度的問題,這與影響區塊鏈實施的問題類似:這些系統都設計成了無需信任的環境,這意味著無法改正出現的錯誤。例如,在區塊鏈中,如果你將貨幣發送給某個地址,這個操作是無法撤銷的。因此,如果你與欺詐者進行交易 – 或者你已經將貨幣發送到錯誤的地址中 – 那麼金錢損失是無法挽回的。
智能合約能夠轉移欺詐對手的問題 – 事實上,這就是智能合約設計的原因之一:無論何時,合約都能能夠可靠地監控合約中參與方的執行情況,參與方是無法進行欺騙的。
然而,問題並沒有解決,只不過是出現在了新的層級:例如,合約可能有漏洞,能夠轉移證券,但卻無法轉移貨幣。
在現實生活中,這些事情可以通過中心化的系統來撤消。但是如果是去中心化的系統,則只能自己承擔風險。
同樣地,也有欺詐的問題:某人需要設計(編程)合約,在合約設計時就會需要確保沒有欺詐的問題。至少參與者要確保:
高層級(例如Solidity)的代碼中需要充分描述合約參與方的目的
代碼中的位元組碼實際上相當於高層級的代碼,需要在進入合約之前進行審核
合約信息需要很好地理解,以避免出現烏龍指操作(例如,人們用錯誤的報價方式-例如USD/ERU而不是EUR/USD-這會導致嚴重損失。
在現實生活中,上述的這些問題原則上都可以在事後進行處理解決,如果需要的話,還可以通過法院,但是在無需信任的工作量證明區塊鏈中這是不可能的:問題是為什麼人們想要依賴一個工作量證明系統(背後的原理是浪費大量的能源來挖礦,這樣的話攻擊這個系統在經濟上是不划算的)而不是使用一個中心化運行的公開賬本和依賴中心化的權力機構 – 政府、法院等 – 來執行合約。


※萬維網協議使得信息成為可編程的,區塊鏈將讓資產可編程
※基於區塊鏈技術的一些可能前景
※比特幣的創始神:創世塊
※比特幣之交易、貨幣存儲、貨幣發行
TAG:迦雲一創 |