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