“圍墻花園”并不是一個區(qū)塊鏈的專屬概念。Facebook、Twitter、微信、支付寶、甚至蘋果的iOS,當今幾乎每一個互聯(lián)網(wǎng)科技巨頭都在建立自己的圍墻花園。通過外部分享限制、生態(tài)搜索限制與小程序限制,大量用戶被綁定在某一個生態(tài)里。AppStore內的開發(fā)者被蘋果強迫抽成、百度里無法搜到微信10w+文章、在微信里分享一個淘寶鏈接也要使用非主流語言寫成的“淘口令”。除了為自己生態(tài)鎖住流量、保證用戶信息的安全與內容的質量,這些花園的建立也讓目前的互聯(lián)網(wǎng)環(huán)境高度中心化。
而在以去中心化為己任的區(qū)塊鏈世界,“圍墻花園”問題也是所有基于智能合約的區(qū)塊鏈都持續(xù)面臨的一個難題。簡單而言,由于智能合約的作用范圍僅限于所在的區(qū)塊鏈,這使得智能合約無法與區(qū)塊鏈之外的其他實體進行交互。
雖然這一問題在NEO3中可以通過引入運行在共識節(jié)點上的Oracle預言機得到緩解,這允許NEO區(qū)塊鏈獲取外部數(shù)據(jù),但要想完全實現(xiàn)與外部數(shù)據(jù)交互仍然是不可能的。事實證明智能合約無法操作任何私有信息、保存私鑰或主動觸發(fā)鏈外的操作。
由于智能合約的運行會受到這些嚴重的限制,那么需要這些功能的區(qū)塊鏈解決方案又該如何避開這個問題呢?
一種解決方案是使用預言機,這是一種可信的服務器,可保存私有數(shù)據(jù)、密鑰或憑據(jù),并監(jiān)聽來自智能合約的事件,在觸發(fā)這些事件時執(zhí)行相應的操作,從而可承擔智能合約的部分功能。當然,這個解決方案需要信任這樣的服務器,這會失去在公鏈上構建項目所具備的去信任的屬性。
康奈爾大學的研究所創(chuàng)新性地提出了一個更好的解決方案,即在可信執(zhí)行環(huán)境(TEEs)中運行預言機,TEEs是嵌入到CPU中的硬件系統(tǒng),在其中運行的程序是完全相互隔離的,使得其他部分的CPU或計算機不可能改變其狀態(tài)或篡改內部運行的代碼,因為一切都受到硬件級別的隔離保護。
然而,對于預言機而言,TEEs最重要的特性是,在TEE中創(chuàng)建代碼實例時,可以創(chuàng)建一個證明:用TEE的私鑰簽名的TEE狀態(tài)的哈希(包括TEE中的所有內存和代碼)。然后,可以使用此證明向其他節(jié)點證明服務器正在運行特定的代碼并處于特定的狀態(tài),因此它將始終遵循該代碼(如果您提供了一個密碼,并且代碼中沒有任何發(fā)送該密碼的指令,則可以確保密碼不會被泄露)。
此外,由于所有與Intel SGX兼容的CPUs(實現(xiàn)了TEE)都有一個來自Intel的唯一私鑰,因此可以使用該私鑰來對所創(chuàng)建的證明進行簽名,以便向任意實體證明代碼實際上是在TEE內運行的,確保服務器處于已知的狀態(tài)并且不會被篡改,從而可以隨時了解服務器的運行過程。
此外,如果不能直接信任Intel的私鑰(Intel可能被黑客攻擊),可以不考慮這個假設,我們仍可以發(fā)現(xiàn)自己的系統(tǒng)比標準服務器需要更少的信任,因為一旦一個程序開始在TEE中運行,它就不能被篡改,因此我們只需要信任在創(chuàng)建預言機時運行著預言機的實體,而不必持續(xù)信任它。有人也許會說,這不能完全消除對Intel的信任,因為當我們假設Intel沒有在這些系統(tǒng)中留有任何硬件后門時,就是一種隱式的對Intel的信任,但這種信任可以通過使用多個TEE提供商(如AM)來消除, 例如AMD,ARM…
最后,需要注意的是,這些系統(tǒng)都不能完全和絕對地消除對運作服務器的人員或組織的信任,因為這些實體仍然可以關閉TEE,或者,如果有足夠的資源的話,發(fā)起一次TEMPES攻擊*來泄露私有數(shù)據(jù)。通過在由不同實體托管的一組服務器之間進行責任分配并使用閾值加密算法來保證密碼也同樣被分發(fā),某種程度上可以減輕,但不能完全消除這些風險。
來源: NEO智能經(jīng)濟