智能合約的概念在區(qū)塊鏈技術(shù)世界中已經(jīng)使用了很長時間。比特幣允許編寫程序代碼,強制各方遵守協(xié)議條件。實現(xiàn)更復(fù)雜的編程語言來編寫合約是為了增加了它們的潛力和擴大它們的使用機會。以太坊本身可以被認(rèn)為是這種智能合約應(yīng)用的一個原始模型。
使用智能合約可以確保協(xié)議在達(dá)到一定條件后自動得到執(zhí)行。但必須核實這些條件是否符合。如果交易只涉及區(qū)塊鏈及其組件,則沒有問題。不幸的是,區(qū)塊鏈不存儲關(guān)于離線世界的任何信息。因此,這種驗證不能完全通過區(qū)塊鏈和智能合約來實現(xiàn)。
智能合約存在缺陷
一些區(qū)塊鏈解決方案允許編寫智能合約,以便能夠處理外部數(shù)據(jù)源。不幸的是,這涉及各種并發(fā)癥和不可接受的后果。由于不同的地理位置、網(wǎng)絡(luò)時滯、分布式服務(wù)等對計算機網(wǎng)絡(luò)的破壞,同一個智能合約的兩個實例經(jīng)過計算可能會得到不同的結(jié)果。如果不同節(jié)點上的兩個相似合約得出不同的結(jié)論,就會發(fā)生事務(wù)不一致。因此,事務(wù)可能永遠(yuǎn)不會被添加到塊中,甚至可能導(dǎo)致分叉。此外,智能合約的主要概念有以下缺點:
· 合約以其區(qū)塊鏈為適用范圍;
· 正確的目標(biāo)執(zhí)行需要考慮存在變化的因素;
· 正確書寫合約是困難的;
· 激活的合約不能更改或刪除。
Oracle公司介紹
為了彌補訪問限制,智能合約需要區(qū)塊鏈與外部環(huán)境之間的鏈接。一種叫做“Oracle”的軟件就扮演著這樣的角色。簡單地說,oracle是一個程序,它提供基于區(qū)塊鏈的合約,可以訪問外部信息。合約要求oracle提供有助于其做出決策的信息,oracle將相應(yīng)地向合約提供這些信息。
Oracle可以被認(rèn)為是一種特殊類型的智能合約。實際上,oracle代碼必須放在一個完整的節(jié)點中。它與來自智能合約的請求進行交互,并按照嚴(yán)格的算法進行操作。另一方面,oracle本身不會對區(qū)塊鏈內(nèi)容進行任何更改。它只能向外部數(shù)據(jù)源發(fā)送請求,并將響應(yīng)重新傳輸?shù)街悄芎霞s。
需要注意的是,智能合約對于每個區(qū)塊鏈都是不同的。這是由于應(yīng)用了不同的編程語言。就比特幣而言,它是一種腳本語言。以太坊智能合約是用幾種語言編寫的成熟程序。其他加密貨幣可能有完全不同的方法。合約的不同決定了神諭的多樣性。盡管如此,Oracle在智能合約中所扮演的角色并沒有根本區(qū)別。
后記
智能合約是小型的程序產(chǎn)品,包含在區(qū)塊鏈中。每個完整節(jié)點所有者都擁有所有智能合約的完整副本。智能合約只能使用區(qū)塊鏈內(nèi)容來做決策。
oracle是放置在區(qū)塊鏈邊界上的程序代碼,它可以與智能合約交換數(shù)據(jù)。oracle起著硬件或軟件接口的作用。顯然,區(qū)塊鏈上唯一智能的oracle威脅到對對手方完全不信任的原則。為了解決這個問題,oracle使用了各種方法,包括硬件組件的驗證。