0
雷鋒網(wǎng)按:本文譯自fintechranking,原文出自LTP,作者M(jìn)ilos Dunjic,fintech技術(shù)顧問,擁有25年支付、電子交易軟件系統(tǒng)開發(fā)經(jīng)驗,曾就職于加密算法RSA實(shí)驗室等。
智能合約是安裝在區(qū)塊鏈網(wǎng)絡(luò)節(jié)點(diǎn)中離散的計算機(jī)程序組件,從本質(zhì)上講,這些自動合約的工作原理類似于其它計算機(jī)程序的if-then語句。當(dāng)智能合約準(zhǔn)備好被部署的時候,代碼的哈希值會被計算出來并打上數(shù)字簽名。單向哈希值,數(shù)字簽名和代碼本身會被同時復(fù)制到由參加區(qū)塊鏈的節(jié)點(diǎn)所組成的網(wǎng)絡(luò)之中。作為部署流程的一部分,每一個節(jié)點(diǎn)第一件要做的事情是要驗證哈希值。如果驗證通過,節(jié)點(diǎn)會在本地部署代碼。接下來,這個節(jié)點(diǎn)會等待智能合約的調(diào)用。
因為智能合約代碼的完整性是被它的單向哈希值和作者的數(shù)字簽名所保護(hù)起來的,沒有人能在部署之后改變它。從某種方面來講,它非常像配置在智能芯片卡中的密碼的防篡改保護(hù)特性。事實(shí)上,在安裝之后,智能合約的代碼與全部交易記錄和內(nèi)部數(shù)據(jù)一起,成為了不可篡改的區(qū)塊鏈的一部分。
當(dāng)條件被觸發(fā)時,在每一個代碼有被安裝、并且有挖礦和驗證功能的節(jié)點(diǎn)上,智能合約代碼都會被執(zhí)行。這些節(jié)點(diǎn)會嘗試就他們各自的智能合約代碼執(zhí)行的結(jié)果達(dá)成共識。作為尋找共識過程的一部分,區(qū)塊鏈網(wǎng)絡(luò)協(xié)議會保證將最新更新過的智能合約內(nèi)部數(shù)據(jù)可靠地復(fù)制到每一個節(jié)點(diǎn)。內(nèi)部數(shù)據(jù)結(jié)構(gòu)是不可改變的,這意味除了智能合約代碼自己之外,沒有東西可以改變它的內(nèi)容。
在區(qū)塊鏈節(jié)點(diǎn)全都平行地、完全獨(dú)立地執(zhí)行同一段代碼的狀態(tài)下,要保證執(zhí)行的穩(wěn)健和可靠,就要求智能合約的代碼本身必須有非常高的確定性。這要求智能合約的代碼在每一個執(zhí)行的節(jié)點(diǎn)上,必須產(chǎn)出完全相同的結(jié)果。這樣的要求就極大的限制了智能合約什么可以做、什么不可以做。
關(guān)于智能合約的最大問題在于,人們并不完全理解它們是如何運(yùn)作的;對于智能合約基礎(chǔ)特性的錯誤理解,也引致了一些無法被實(shí)現(xiàn)的想法。
雖然聽起來十分簡單,同時又被許多人相信是可行的,但是智能合約不應(yīng)該調(diào)用外部的web服務(wù)或者數(shù)據(jù)庫。這樣的設(shè)計極大地提高了同一段智能合約代碼在被重復(fù)獨(dú)立地執(zhí)行時產(chǎn)生不同結(jié)果的概率。因為這樣會導(dǎo)致區(qū)塊鏈節(jié)點(diǎn)無法得出可靠地共識,這樣的設(shè)計會導(dǎo)致系統(tǒng)的混亂。
另外一個智能合約設(shè)計的反面例子是試圖從智能合約調(diào)用另一個簡單的API,比如說銀行資金轉(zhuǎn)賬。因為每一個區(qū)塊鏈中的節(jié)點(diǎn)都會獨(dú)立地執(zhí)行相同的智能合約代碼,讓每一個節(jié)點(diǎn)上的每一次代碼執(zhí)行都調(diào)用“資金轉(zhuǎn)賬”的API真的是一個好的想法嗎?這明顯感覺像是一個自己造成的對可憐API的一次DDOS攻擊。這樣的設(shè)計要求API本身的設(shè)計足夠復(fù)雜,能夠偵測并正確地處理數(shù)以百計的重復(fù)調(diào)用。同時這也一定會造成計算機(jī)資源的無謂浪費(fèi)。
接下來,因為智能合約需要可靠地知道API調(diào)用的狀態(tài)并以此為依據(jù)來做出內(nèi)部決定,我們能夠保證每一次智能合約對API的調(diào)用都會收到API一模一樣的反饋嗎?總之這一切看起來十分混亂。
許多人滿腔熱情地相信智能合約會是對區(qū)塊鏈天生的數(shù)據(jù)隱私問題的優(yōu)雅解答。既然智能合約可以很容易地封裝它的內(nèi)部數(shù)據(jù)庫并控制對它的訪問(基本上它表現(xiàn)得像是分布式對象),這不就能夠保證將數(shù)據(jù)保護(hù)起來了嗎?不幸的是,相同的智能合約數(shù)據(jù)總是被復(fù)制和儲存在每一個區(qū)塊鏈參與者有安裝智能合約代碼的電腦中。因此,沒有東西可以阻止一些參與者機(jī)器上的聰明的本地代碼得到訪問一切存儲在本地系統(tǒng)上信息的權(quán)限。
雖然存在著一些(不是很優(yōu)雅的)針對以上提到的智能合約設(shè)計局限的變通措施,智能合約仍應(yīng)該只被用來管理它內(nèi)部數(shù)據(jù)狀態(tài)的更新。換一種說法就是,智能合約提供了比普通比特幣區(qū)塊鏈技術(shù)在去中心化數(shù)字資產(chǎn)轉(zhuǎn)移的技術(shù)實(shí)現(xiàn)上多那么一點(diǎn)點(diǎn)的靈活性,但是除此之外,智能合約并沒有更多其他的優(yōu)點(diǎn)了。
總結(jié)起來,目前的智能合約很難在內(nèi)部數(shù)據(jù)狀態(tài)管理作用之外有別的應(yīng)用。更加復(fù)雜的應(yīng)用就會要求智能合約與外部環(huán)境和服務(wù)產(chǎn)生互動,這會導(dǎo)致不可想象的測試復(fù)雜性,這樣的復(fù)雜性天生就存在于分布式及去中心化的系統(tǒng)結(jié)構(gòu)中。它很容易就變成一個噩夢般的測試和支援情景。問問the DAO程序員吧。雷鋒網(wǎng)雷鋒網(wǎng)
【招聘】雷鋒網(wǎng)堅持在人工智能、無人駕駛、VR/AR、Fintech、未來醫(yī)療等領(lǐng)域第一時間提供海外科技動態(tài)與資訊。我們需要若干關(guān)注國際新聞、具有一定的科技新聞選題能力,翻譯及寫作能力優(yōu)良的外翻編輯加入。
簡歷投遞至 wudexin@leiphone.com,工作地 北京。
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。