前言:預(yù)言機(jī)是整個(gè)加密世界非常重要的一環(huán)。不過,當(dāng)前的去中心化預(yù)言機(jī)還無(wú)法達(dá)到領(lǐng)先公鏈級(jí)別的安全和去中心化。而需要預(yù)言機(jī)服務(wù)的智能合約安全會(huì)依賴于最薄弱的環(huán)節(jié),如果預(yù)言機(jī)方面通過選擇高質(zhì)量認(rèn)證節(jié)點(diǎn)運(yùn)營(yíng)商,通過懲罰方式,通過聲譽(yù)指數(shù)等方式來確保安全,也許在短期和中期內(nèi)有利于引導(dǎo)出網(wǎng)絡(luò),并提供一定程度的安全,但也存在一個(gè)很大的安全隱患:如何防止這些已知節(jié)點(diǎn)的合謀。如果想要達(dá)成真正的去中心化預(yù)言機(jī),最重要的是構(gòu)建達(dá)到公鏈級(jí)別的安全,而隨機(jī)選擇節(jié)點(diǎn)是其中的一種重要方法。它本質(zhì)上也是一種共識(shí)機(jī)制的設(shè)計(jì)。
本文提出一個(gè)附加安全層的想法,可被整合到諸如Chainlink這樣的預(yù)言機(jī)中,以供智能合約使用:隨機(jī)選擇節(jié)點(diǎn)運(yùn)營(yíng)商。
當(dāng)前Chainlink的安全設(shè)計(jì)
Chainlink試圖解決加密領(lǐng)域的重大問題:預(yù)言機(jī)問題。Chainlink白皮書中,我最喜歡的描述之一是其團(tuán)隊(duì)開發(fā)協(xié)議的縱深防御方法。該計(jì)劃允許智能合約開發(fā)者可以調(diào)整下列的安全變量,也稱為“服務(wù)級(jí)別協(xié)議(SLA)”,以適應(yīng)各自不同的合約情況:
自由選擇所需的節(jié)點(diǎn)運(yùn)營(yíng)商數(shù)量
使用鏈上驗(yàn)證合約來確定高質(zhì)量的節(jié)點(diǎn)
使用鏈上和鏈下聲譽(yù)指標(biāo)來確定高質(zhì)量的節(jié)點(diǎn)
要求使用可信執(zhí)行環(huán)境(TEE)
要求節(jié)點(diǎn)運(yùn)營(yíng)商持有一定數(shù)量的抵押資產(chǎn)
對(duì)惡意節(jié)點(diǎn)的抵押資產(chǎn)進(jìn)行懲罰的嚴(yán)重程度
獎(jiǎng)勵(lì)給行為良好節(jié)點(diǎn)的金額
如何聚合節(jié)點(diǎn)響應(yīng)(這也控制了如何獎(jiǎng)勵(lì)或懲罰節(jié)點(diǎn)的確切條件)
使用Chainlink自己的可信和經(jīng)過審查的節(jié)點(diǎn)運(yùn)營(yíng)商,以抵抗女巫攻擊
底層區(qū)塊鏈的選擇。Chainlink是一種協(xié)議,可以移植到最安全的智能合約區(qū)塊鏈。
那么,舉個(gè)例子。假設(shè)我是一個(gè)開發(fā)團(tuán)隊(duì)的成員,該團(tuán)隊(duì)擁有一個(gè)有數(shù)萬(wàn)億美元流動(dòng)的智能合約。我可以要求300個(gè)在驗(yàn)證和聲譽(yù)合約/服務(wù)上擁有最高分?jǐn)?shù)的認(rèn)證節(jié)點(diǎn)運(yùn)營(yíng)商,只選擇那些在可信執(zhí)行環(huán)境(TEE)中運(yùn)行節(jié)點(diǎn)的運(yùn)營(yíng)商,要求每個(gè)節(jié)點(diǎn)至少抵押了100萬(wàn)美元的Link代幣,懲罰所有偏離平均響應(yīng)兩個(gè)標(biāo)準(zhǔn)差的節(jié)點(diǎn)運(yùn)營(yíng)商,并慷慨獎(jiǎng)勵(lì)所有兩個(gè)標(biāo)準(zhǔn)差以內(nèi)的節(jié)點(diǎn)運(yùn)營(yíng)商。
這樣的行為有很高的安全性??赡軙?huì)過猶不及,我上述提到的假設(shè)也可能無(wú)法實(shí)現(xiàn)。但這是Chainlink協(xié)議的精妙之處。它允許智能合約開發(fā)者以及社區(qū)來決定為某個(gè)特定的智能合約在預(yù)言機(jī)中提供多大程度的安全性。智能合約的安全取決于其最薄弱的環(huán)節(jié),Chainlink的CEO Sergey曾表示其目標(biāo)是讓預(yù)言機(jī)跟運(yùn)行智能合約的區(qū)塊鏈一樣安全和去中心化。但是,在所有這些防御層中缺少實(shí)現(xiàn)這一目標(biāo)的關(guān)鍵安全特征:隨機(jī)節(jié)點(diǎn)運(yùn)營(yíng)商的選擇。
隨機(jī)節(jié)點(diǎn)運(yùn)營(yíng)商和抗合謀
讓我們簡(jiǎn)單看下以太坊的共識(shí)算法,以太坊是當(dāng)前運(yùn)行Chainlink的區(qū)塊鏈。以太坊當(dāng)前運(yùn)行在PoW共識(shí)算法上,有計(jì)劃切換到PoS。在PoW中,任何人都可以成為礦工,以創(chuàng)建和驗(yàn)證區(qū)塊,其方式是通過設(shè)置挖礦節(jié)點(diǎn),加入網(wǎng)絡(luò),并尋找正確的隨機(jī)數(shù)以挖出區(qū)塊。
盡管這創(chuàng)建了任何人都可以參與的無(wú)須許可的網(wǎng)絡(luò),但它同時(shí)也創(chuàng)建了一個(gè)更加抗合謀網(wǎng)絡(luò)。(藍(lán)狐筆記:抗合謀是指不易串通)
這種抗合謀性來自于這樣的事實(shí):區(qū)塊生產(chǎn)者并非由中心機(jī)構(gòu)或人選擇的,而是根據(jù)它們所貢獻(xiàn)的哈希算力比例隨機(jī)選擇出來的。沒有實(shí)體可以確定地知道哪個(gè)節(jié)點(diǎn)會(huì)提議下一個(gè)區(qū)塊。
然后提議的區(qū)塊由運(yùn)行全節(jié)點(diǎn)的整個(gè)網(wǎng)絡(luò)檢查,攻擊者可以通過合謀來啟動(dòng)區(qū)塊鏈篡改的唯一方法是,合謀的群體是否擁有超過23%的哈希率。如果要造成任何實(shí)質(zhì)性的損害,通常認(rèn)為必須要控制超過50%的哈希率。將它跟EOS的DPoS共識(shí)算法進(jìn)行比較,它通過社區(qū)投票來選定有限的驗(yàn)證者,也就是21個(gè)代表節(jié)點(diǎn),它因此也遭受可能的腐敗及合謀的指責(zé)。
我的想法?只要智能合約開發(fā)者在選擇特定的節(jié)點(diǎn)運(yùn)營(yíng)商,它們就無(wú)法達(dá)到跟領(lǐng)先公鏈相同的抗合謀級(jí)別。一群已知的節(jié)點(diǎn)運(yùn)營(yíng)商遠(yuǎn)比從一個(gè)池中隨機(jī)選擇的節(jié)點(diǎn)運(yùn)營(yíng)商更容易實(shí)現(xiàn)合謀。即使使用像SGX這樣的可信執(zhí)行環(huán)境(TEE),你實(shí)際上也要在組合中添加一個(gè)可信運(yùn)營(yíng)者,例如Intel(藍(lán)狐筆記:此處是指除了要相信已知的節(jié)點(diǎn)運(yùn)營(yíng)商之外,還要相信硬件廠商)。
在這里,我的意思不是說Intel會(huì)有意地設(shè)計(jì)帶有后門的SGX,也不是說所有合約都需要達(dá)到以太坊底層鏈級(jí)別的安全,但有些合約確實(shí)需要這種級(jí)別的安全。如果我們想要達(dá)成這一目標(biāo),Chainlink需要增加另外的安全性,基于staking上的安全的隨機(jī)信標(biāo)。
解決方案:以太坊2.0信標(biāo)鏈+Staking
對(duì)于緩解Chainlink中節(jié)點(diǎn)運(yùn)營(yíng)商可能的合謀問題,我的建議是允許智能合約開發(fā)者使用安全的隨機(jī)信標(biāo)從無(wú)須許可的節(jié)點(diǎn)運(yùn)營(yíng)商池中隨機(jī)選擇節(jié)點(diǎn)。真正安全的隨機(jī)信標(biāo)在區(qū)塊鏈中很難達(dá)成,但很幸運(yùn),以太坊已經(jīng)有提議要實(shí)現(xiàn)安全的通用隨機(jī)信標(biāo),即以太坊2.0信標(biāo)鏈。
說以太坊中的信標(biāo)鏈會(huì)產(chǎn)生不可預(yù)測(cè)和沒有偏見的隨機(jī)性,它基于這樣的假設(shè):至少有一個(gè)驗(yàn)證者是誠(chéng)實(shí)的,并且不存在VDF ASIC硬件的速度快于商品VDF ASIC硬件速度很多倍的情況。實(shí)際上,你會(huì)看到我的建議實(shí)質(zhì)上是使用一個(gè)非常類似于以太坊2.0的權(quán)益證明工作原理的系統(tǒng)。
讓我們假設(shè)有特定的數(shù)據(jù)流在很多不同的智能合約中都有非常高的需求,例如,讓我們假設(shè)其中的一個(gè)數(shù)據(jù)流就是ETH/USD價(jià)格流。任何人都可以為這個(gè)數(shù)據(jù)流啟動(dòng)節(jié)點(diǎn),并加入網(wǎng)絡(luò)。但是,不是加入和等待一個(gè)智能合約開發(fā)者來選擇你,而是你加入節(jié)點(diǎn)運(yùn)營(yíng)商的池子,在這個(gè)池中的所有節(jié)點(diǎn)都給智能合約提供相同的數(shù)據(jù)流。
以太坊隨機(jī)性信標(biāo)被觸發(fā),并且當(dāng)它觸發(fā)時(shí),節(jié)點(diǎn)運(yùn)營(yíng)商的新委員會(huì)被選擇出來,委員會(huì)規(guī)模由需要預(yù)言機(jī)服務(wù)的智能合約的SLA決定。(藍(lán)狐筆記:SLA是指服務(wù)級(jí)別協(xié)議)其中,某個(gè)特定節(jié)點(diǎn)被選進(jìn)委員會(huì)的概率將與其在池中質(zhì)押的Link代幣數(shù)量比例成正比。這些節(jié)點(diǎn)將提供數(shù)據(jù)流,數(shù)據(jù)會(huì)被匯總,并將根據(jù)使用服務(wù)的智能合約的定義來進(jìn)行獎(jiǎng)勵(lì)或懲罰。
這可以疊在所有當(dāng)前計(jì)劃的安全功能之上。
或許智能合約開發(fā)者可以基于鏈上聲譽(yù)指標(biāo)部分影響節(jié)點(diǎn)被選中的概率;質(zhì)量聲譽(yù)越高,被選中的可能性越大。智能合約可以獎(jiǎng)勵(lì)使用SGX的節(jié)點(diǎn),或者它可用于當(dāng)前中心化認(rèn)證服務(wù),其中你至少知道誰(shuí)是池中的一些較大的節(jié)點(diǎn)。
當(dāng)然,這需要足夠大的節(jié)點(diǎn)運(yùn)營(yíng)商池,才能從根本上消除池中已認(rèn)證節(jié)點(diǎn)之外的女巫攻擊威脅。在以太坊中,估計(jì)有數(shù)以萬(wàn)計(jì)的節(jié)點(diǎn),這很容易假定這些節(jié)點(diǎn)中的大多數(shù)并非由少數(shù)幾個(gè)假裝很多的運(yùn)營(yíng)商所控制。
結(jié)論
我不是第一個(gè)想出這個(gè)主意的人,有幾個(gè)即將到來的預(yù)言機(jī)網(wǎng)絡(luò)也發(fā)現(xiàn)節(jié)點(diǎn)選擇缺乏隨機(jī)性,并提出了自己的解決方案(通常它們有自己的PoW鏈,對(duì)此我也有所保留)。其中的案例包括Witnet和Tellor。還有其他解決方案,例如可能的去中心化身份協(xié)議。這是一個(gè)非?;镜慕ㄗh,距離詳細(xì)的規(guī)范和設(shè)計(jì)相距甚遠(yuǎn)。
還可以從以太坊的PoS設(shè)計(jì)中吸取營(yíng)養(yǎng),例如鎖定期間或?qū)ν瑫r(shí)離線的節(jié)點(diǎn)處以更大的懲罰。本文的目的更多是對(duì)拋磚引玉,希望Chainlink和社區(qū)采取行動(dòng)。從長(zhǎng)遠(yuǎn)看,我們必須最小化對(duì)第三方的信任,以及最大限度地減少預(yù)言機(jī)中出現(xiàn)的合謀威脅。
總體來說,我認(rèn)為Chainlink當(dāng)前的計(jì)劃和發(fā)展是出色的。使用認(rèn)證服務(wù)用于抵抗女巫攻擊,同時(shí)結(jié)合所有上面提到的安全方法,這些給它超過大多數(shù)其他競(jìng)爭(zhēng)預(yù)言機(jī)解決方案的最強(qiáng)防御屬性。這些方法還具有快速引導(dǎo)出網(wǎng)絡(luò)的額外好處,并且在節(jié)點(diǎn)運(yùn)營(yíng)商還不夠多的情況下,可能在中短期內(nèi)有更好的安全性。
然而,從長(zhǎng)遠(yuǎn)看,如果我們真正想要開發(fā)出最去中心化的預(yù)言機(jī)解決方案,如果我們想要在安全和無(wú)須信任方面盡可能達(dá)到與領(lǐng)先公鏈如以太坊相同的級(jí)別,那么,我們就不能簡(jiǎn)單地相信選擇的一組節(jié)點(diǎn)運(yùn)營(yíng)商不會(huì)合謀。獲得隨機(jī)性可能是Chainlink未來需要確保自己安全的最后一項(xiàng)功能。
責(zé)任編輯;zl
評(píng)論
查看更多