預言機是整個加密世界非常重要的一環,然而,目前的去中心化預言機(Oracle)還無法達到領先公鏈級別的安全和去中心化。如果預言機方面通過選擇高質量認證節點運營商,透過懲罰方式、聲譽指數等方式來確保安全,也許在短期和中期內有利於引導出網路,並提供一定程度的安全,但也存在一個很大的安全隱患:如何防止這些已知節點的合謀?本篇源自於 Zak Ayesh 的 Medium 文章《Chainlink and Randomness: A Needed Security Layer》,由專欄作者藍狐筆記重新編譯、整理和撰寫。
如果想要達成真正的去中心化預言機,最重要的是構建達到公鏈(public chain)級別的安全,而隨機選擇節點(random node)是其中的一種重要方法。它本質上也是一種共識機制(consensus algorithms)的設計。
本文將提出一個附加安全層(additional security layer)的想法,可被整合到諸如 Chainlink 這樣的預言機中,以供智能合約使用:隨機選擇節點運營商。
目前 Chainlink 的安全設計
Chainlink 試圖解決加密領域的重大問題:預言機問題。
在 Chainlink 白皮書中,我最喜歡的描述之一是其團隊開發協議的縱深防禦(defense in depth)方法。
該計劃允許智能合約開發者可以調整下列的安全變量,也稱為「服務級別協議(SLA)」,以適應各自不同的合約情況:
- 自由選擇所需的節點運營商數量
- 使用鏈上驗證合約來確定高質量的節點
- 使用鏈上和鏈下聲譽指標來確定高質量的節點
- 要求使用可信執行環境(TEE)
- 要求節點運營商持有一定數量的抵押資產
- 對惡意節點的抵押資產進行懲罰的嚴重程度
- 獎勵給行為良好節點的金額
- 如何聚合節點響應(這也控制了如何獎勵、懲罰節點的確切條件)
- 使用Chainlink自己的可信和經過審查的節點運營商,以抵抗女巫攻擊
- 底層區塊鏈的選擇。Chainlink是一種協議,可以移植到最安全的智能合約區塊鏈。
我們來舉一個例子:
假設我是一個開發團隊的成員,我們的團隊擁有一個有數萬億美元流動的「智能合約」。
我可以要求 300 個在驗證(validation)和聲譽(reputation)合約/服務上擁有最高分數的認證節點運營商,只能選擇那些在「可信執行環境(TEE)」中運行節點的運營商,並要求每個節點至少抵押了「100 萬美元的 Link 代幣」;爾後,要求懲罰所有偏離平均響應兩個標準差的節點運營商,慷慨獎勵所有兩個標準差以內的節點運營商。
延伸閱讀:落地應用痛點|為什麼預言機(Oracle)是區塊鏈落地應用的「剛性需求」?
這樣的結果提供了很高的安全性。但這樣的條件太過嚴苛,而且這樣的假設也不太可能在現實中實現。
而這就是 Chainlink 協議的精妙之處,它允許智能合約開發者及社群決定:為某個特定的「智能合約」在預言機中提供多大程度的安全性。
換言之,智能合約的「安全強度」取決於其「最薄弱的環節」。
Chainlink 的 CEO Sergey 也曾表示:他的目標是要讓「預言機」和「運行智能合約的區塊鏈」,達到一樣安全和去中心化。
然而,在所有這些防禦層中,缺少了實現這一目標的關鍵安全特徵:隨機節點運營商的選擇。
隨機節點運營商和抗合謀(Collusion Resistance)
讓我們簡單看下以太坊的共識算法 — 目前 Chainlink 就是運行在以太坊上的區塊鏈,而以太坊目前的運行是基於 PoW 共識算法,並有計劃的逐步實現轉換到 PoS 演算法(Ethereum)。
在PoW中,任何人都可以成為礦工並「創建」和「驗證」區塊,其方式是透過設置挖礦節點加入網路,並尋找正確的隨機數以挖出區塊。
儘管這創建了任何人都可以參與的「無須許可的網路」,但它同時也創建了一個更加抗合謀網路。
專欄作者註:抗合謀是指不易串通。
抗合謀 Collusion Resistance
這種抗合謀性(Collusion Resistance)來自於這樣的事實:區塊生產者並非由中心機構或人選擇的,而是根據它們所貢獻的哈希算力比例隨機選擇出來的;沒有實體可以確定地知道哪個節點會提議下一個區塊。
而提議的區塊由運行全節點的整個網路檢查。也就是說,攻擊者可以通過合謀來啟動區塊鏈篡改的唯一方法是:合謀的群體是否擁有超過 23% 的哈希率。
如果要造成任何實質性的損害,通常認為必須要控制超過 50% 的哈希率。
將之跟 EOS 的 DPoS 共識算法進行對比的話的話,那麼它就是透過社群投票,來選定有限的驗證者;也就是 21 個代表節點,它因此也遭受可能的腐敗及合謀的指責。
延伸閱讀:EOS 根本性問題浮現|去中心化?EOS紐約揭露: 至少6個節點由同一人或公司實體擁有
我的想法?
只要智能合約開發者在選擇特定的節點運營商,它們就無法達到跟領先公鏈相同的抗合謀級別。
一群已知的節點運營商遠比從一個池中隨機選擇的節點運營商更容易實現合謀;即使使用像 SGX 這樣的可信執行環境(TEE),但你實際上也要在組合中添加一個「可信運營者」例如 Intel。
專欄作者註:此處是指除了要相信已知的節點運營商之外,還要相信硬體廠商。
在這裡,我的意思不是 Intel 會有意地設計帶有後門的 SGX,也不是說所有合約都需要達到以太坊底層鏈級別的安全,但有些合約確實需要這種級別的安全。
如果我們想要達成這一目標,Chainlink 需要增加另外的安全性,基於 staking 上的「安全隨機信標」(randomness beacon)。
解決方案:以太坊 2.0 信標鏈 + Staking
對於緩解 Chainlink 中,節點運營商可能的合謀問題,我的建議是:允許智能合約開發者使用安全的隨機信標,從無須許可的節點運營商池中隨機選擇節點。
真正安全的隨機信標在區塊鏈中很難達成,但幸運的是,以太坊已經有提議要實現安全的通用隨機信標,即「以太坊 2.0 信標鏈」(Ethereum 2.0 beacon chain)。
若要說以太坊中的信標鏈,會產生不可預測和沒有偏見的隨機性,它是基於這樣的假設:至少有一個驗證者是誠實的,並且不存在:「VDF ASIC 硬體」速度,快於「商品 VDF ASIC 硬體」速度很多倍的情況。
實際上,你會看到我的建議實質上是使用一個非常類似於以太坊 2.0 的權益證明工作原理的系統。
我們假設:有特定的數據流,在很多不同的智能合約中都有非常高的需求。例如:假設其中的一個數據流就是 ETH/USD 價格流;任何人都可以為這個數據流啟動節點,並加入網路。
但是,不是加入和等待一個智能合約開發者來選擇你,而是你加入節點運營商的池子,在這個池中的所有節點都給智能合約提供相同的數據流。
以太坊隨機性信標被觸發,而當它觸發時,節點運營商的新委員會被選擇出來;委員會規模由需要此預言機服務智能合約的 SLA 決定。
專欄作者註:SLA是指服務級別協議。
Staking
其中,某個特定節點被選進委員會的機率,將與其在池中質押的 Link 代幣數量比例成正比;而這些節點將提供數據流,數據會被匯總,並將根據使用服務的智能合約的定義來進行獎勵或懲罰。
這可以疊在所有目前計劃的安全功能之上。
或許智能合約開發者,可以基於鏈上聲譽指標部分影響節點被選中的機率;質量聲譽越高,被選中的可能性越大。
智能合約可以獎勵使用 SGX 的節點,或者可用於目前中心化認證服務,其中你至少知道誰是池中的一些較大的節點。
當然,這需要足夠大的節點運營商池,才能從根本上消除池中已認證節點之外的女巫攻擊威脅。
在以太坊中,估計有數以萬計的節點,這很容易假定這些節點中的大多數並非由少數幾個假裝很多的運營商所控制。
結論
我不是第一個想出這個主意的人,有幾個即將到來的預言機網路也發現節點選擇缺乏隨機性,並提出了自己的解決方案(通常它們有自己的 PoW 鏈,對此我也有所保留)。
其中的案例包括 Witnet 和 Tellor。還有其他解決方案,例如可能的去中心化身份協議。
這是一個非常基本的建議,距離詳細的規範和設計相距甚遠。
還可以從以太坊的 PoS 設計中吸取營養,例如「鎖定期間」或對「同時離線的節點」處以更大的懲罰。
本文的目的更多是對拋磚引玉,希望 Chainlink 和社群採取行動。
從長遠看,我們必須最小化對第三方的信任,以及最大限度地減少預言機中出現的合謀威脅。
總體來說,我認為 Chainlink 目前的計劃和發展是出色的。使用認證服務用於抵抗女巫攻擊,同時結合所有上面提到的安全方法,這些給它超過大多數其他競爭預言機解決方案的最強防禦屬性。
這些方法還具有快速引導出網路的額外好處,並且在節點運營商還不夠多的情況下,可能在中短期內有更好的安全性。
然而,從長遠看,如果我們真正想要開發出最去中心化的預言機解決方案、想要在安全和無須信任方面盡可能達到與領先公鏈如以太坊相同的級別,那麼,我們就不能簡單地相信選擇的一組節點運營商不會合謀。
獲得隨機性,可能是 Chainlink 未來需要確保自己安全的最後一項功能。
?相關報導?
落地應用痛點|為什麼預言機(Oracle)是區塊鏈落地應用的「剛性需求」?
加密貨幣錢包的生態總覽:現在進展到什麼程度了?
《BlockTempo動區動趨》LINE官方號開通囉~立即加入獲得第一手區塊鏈、加密貨幣新聞報導!