在市場較為低迷的情況下,預言機的需求仍一直呈現指數型增長趨勢。

原文:20230402 Chainlink by Fran

演講:Frank,Chainlink Labs 開發者關係工程師

整理: aididiaojp.eth,Foresight News

封面: Photo by  Monti Timpanogus  on  Unsplash

我是來自 Chainlink Labs 的開發者關係工程師 Frank。我的主要工作是能夠讓更多的開發者,或者對這個行業抱有熱情的建設者更多地去了解關於預言機的知識。基於我們目前基礎架構下面的智能合約,我們可以把它看作一種混合型智能合約。智能合約能夠跟 Web2 世界裡面各種各樣的數據,包括計算服務等更好地緊密結合起來,然後基於這個架構極大限度地拓展鏈上智能合約所能做的事情。

在今天的分享中,我首先會介紹一下預言機的概念,然後基於預言機的概念我會簡單介紹去中心化預言機網絡,以及我們能夠提供的一些服務,包括數據服務和計算服務等。

什麼是預言機?

從 Web 1 到 Web 2 再到 Web 3 這三個階段網絡和數據狀態是在不斷變化的。最開始 Web1 是一個數據只能靜態讀取的網站服務,發展到 Web2 階段時,數據變得可讀、可寫、可參與。很多大公司就基於自己的服務締造出來商業帝國,它們會把所有的用戶數據存在自己的數據庫裡面,如果出於一些需要,它們其實是可以擁有並且修改用戶數據。那這樣的話就衍生出來一個問題,就是我們在互聯網上或者在虛擬世界裡面創造的一些數據,有時是有一些價值的,那這個價值到底是屬於誰?基於這個背景下,我們希望能夠在 Web 3 階段很好地解決這個問題。在 Web 3 階段所有的數據,它並不是存在一個服務器裡面,或者不是存在一個節點裡面,它是有一個去中心化網絡,而去中心化網絡是一個由多個節點組成的多賬本系統。數據存儲在多個節點裡面,只有每一個節點都認同數據的修改和存儲,最終數據才可以被存下來。那這樣就會給我們帶來一個好處,就是無論我們想去對數據做什麼樣的修改,我們需要按照預先約定好的共識進行修改。比如說我想修改錢包餘額,如果沒有人給我去打錢,不論這個數據的擁有者想去怎麼樣修改,他最終都通過不了共識過程,這導致錢包餘額是不能被修改的。只有數據的擁有者發送一個符合規則的交易才最終能夠將數據修改,這樣帶來的一個好處非常明顯。同時它也帶來一些缺點,最大的一個缺點就是它使得系統變成一個確定性的系統。也就是說因為在整個過程中會有一個共識的過程,所以它只能去執行別人可以驗證的操作。你在發送一個操作的時候,別人需要執行你的操作,別的節點執行操作如果能夠成功的話,其實它就可以去把結果返回。至於超過 50% 還是 70%,這個取決於共識算法。最終就可以把操作寫到交易裡面,交易寫到區塊,變成完整的交易。

但是如果我們需要做一些非確定性的操作,例如區塊鏈之外獲取一些 API 數據和隨機數的生成等,確定性的區塊鏈系統就無法完成。我們抽獎需要生成隨機數,或者鏈上協議需要知道鏈下的資產價格,像獲取股票或者是大宗商品的價格,屬於一種非確定性操作,並且不能夠由區塊鏈本身完成的。再比如像 API 的調用,如果我作為網絡中的一個節點,我調用了外部的 API 數據,然後我告訴網絡中的其他節點這個結果,其他節點為了驗證結果的真實性,那它們也會去執行同樣的操作,然後得到一個結果。但是對於一個外部的 API 來說,不同的人在不同的時間去取同樣一個 API,那有可能服務器會挂機,或者服務暫停,再或者隨著時間的變化,數據發生了變化。你不同的時間去做同一個事情,得到的結果是不一致的。只要結果是不一致的話,最終操作就沒有辦法入塊,也就沒有辦法完成。這就是我們擁有了數據所有權以後,同時也需要去承擔它所帶來的一些短板。

想要解決這個問題就需要依靠預言機。區塊鍊是一個孤立的,同時也是一個確定性的系統,它無法主動從鏈下獲取到數據,預言機的出現就是為了解決這個問題。在兩三年前,預言機的概念就出現了,但當時適用的場景不多,有很大的局限性。比如想獲取一些市場數據,把股票數據上傳到區塊鍊網絡上,或者做一個架構把邏輯放在鏈下去執行,但是資產端放在鏈上,通過智能合約保護交易的正常進行等操作時,這時就需要從鏈下去獲得一些數據,並且需要周期性地進行數據同步,包括銀行的支付或者零售數據,甚至還包括一些其他公共事件的數據,像天氣情況、地理的信息,物流信息、體育比賽結果等,這些數據如果不通過預言機是無法獲取到的。這就會讓鏈上生態非常受限。隨著 Web 3 生態不斷發展,Web 3 跟 Web 2 兩個世界的鏈接會越來越緊密。如果我們想讓 Web3 實現大規模採用,或者能夠被更多的人去使用的話,它一定需要提供非常豐富的功能,不能僅僅局限於只能通過鏈上原生數據做的一些操作。

預言機概火起來是在 2020 年,就是 DeFi Summer 的時候,大多數人才認識到它。最開始預言機做的事情也非常簡單,比如想要獲取外部數據上傳到去中心化網絡,也就是區塊鏈當中,那其實最簡單的方式就是在鏈下建立一個中心化節點,也就是搭建一個服務器,然後通過服務器獲取數據,最終再把數據寫入到去重的區塊鍊網絡裡面,那這個模式就叫中心化預言機。它雖然實現起來比較簡單,但會帶來一些問題,例如它有單點失敗的風險,就是中心化節點可能會因為自身的基礎原因導致宕機。還有一種可能,就是如果鏈上智能合約所提供這個服務是依賴於中心化節點提供的數據,而如果鏈上智能合約涉及的資金量是非常大的話,那這個中心化預言機有可能通過自己所能夠操控的數據,對服務發起攻擊。只要利益足夠大,沒有辦法通過技術手段實現完全性保障,那這就是單點失敗。我們想把應用放在在去中心化網絡裡面,包括以太坊或者其他的 Layer 2 生態裡,其實也是希望我們可以通過網絡裡面成百上千的預言機節點來保證我們應用也就是智能合約的公平性和安全性。

當然如果說我們依賴中心化節點來獲取數據端,即使別的方面安全性都可以保證,但最重要的資產數據端沒有辦法保證安全性的話,也會讓整個 dApp 失去意義。所以在中心化預言機之後,就出現了去中心化預言機網絡,它能夠很好地去解決我們剛才所提到單點失敗的風險。去中心化預言機網絡最大的區別不是單個預言機節點向去中心化網絡提供服務,而是通過去中心化預言機網絡來提供服務,也可以把它理解成某種 Layer 2,就是每一個去中心化預言機網絡裡面的節點都可以通過自己的數據源獲取到數據,得到結果以後可以跟其他的去中心化網絡進行數據聚合,那也可以把它理解成一種達成共識過程,包括查一下數據是否是有沒有節點,或者所返回的數據是否偏離平均值太遠了,或者就是單純做一個平均值,然後把數據做一次聚合等,再寫到去中心化網絡當中。這種方式帶來的好處,一個是技術上可以保證服務不會中斷,除非去中心化預言機網絡裡面的所有節點都停止服務,但這個可能性是非常低的。另外在數據端也可以保證預言機給鏈上合約所提供這個數據並不是由單一的節點所控制的,而是由很多個節點控制。如果想操縱數據發動攻擊的話,成本就非常高了,這就相當於你要去攻擊 Layer 2,或者甚至是以太坊這樣的去中心化網絡,那基本上是不太可能成功的。

去中心化網絡能夠使智能合約接收數據的安全性和公平性得到極大的提升。對於用戶來說,我們只是一個去中心化預言機網絡,但是基於去中心化預言機網絡,我們又可以提供一些別的服務,比如數據服務、計算服務和跨鏈服務等。如果是基於預言機給網絡提供數據,其實有一些比較複雜和成本較高的操作,也可以在鏈下完成,就是把它打包給鏈下預言機網絡進行計算,然後再寫回到安全性比較高的區塊鏈上面。我們如果能夠從鏈下獲得數據,那也可以從其他的鏈獲取數據,再寫到這條區塊鏈上,那這其實就涉及到了跨鏈。只要去中心化預言機網絡安全性足夠強,那它可以保障基於它之上所建立的數據服務、計算服務和跨鏈服務的安全性都是非常強的。Chainlink 基於去中心化預言機提供了各種各樣的服務,能夠把 Web 3 跟 Web 2 的數據,包括 Layer 1 和 Layer 2 的數據打通,讓大家盡可能多地獲得相對應的數據和服務。

Chainlink 預言機提供的服務有哪些?

接下來我來簡單介紹一下 Chainlink 預言機所提供的服務。當然基於 Chainlink 所提供的服務有很多,我分享一些適用場景比較多的服務。

如果大家以後要做關於 DeFi、 GameFi 、NFT,還有 SocialFi 等領域的一些創新的話,大概率是需要預言機來獲取數據的。因為你一定要需要以一種非常去中心化且安全的方式獲取鏈數據,並寫回到你的鏈上智能合約裡面。

第一個服務是餵價,這個可能也是大家之前經常會聽到的一個詞彙,它的爆火是在 2020 年 DeFi Summer。2020 年出現了很多 DeFi 項目,最開始是 Uniswap,後面出現了借貸合約 Compound,再然後是合成資產項目 Synthetics 等應用,它們對於鏈下的數據都有大量的需求,因為只有基於安全的數據才能夠通過合約以去中心化的方式讓數據能夠被用戶所使用,那其中扮演一個重要角色的就是預言機的餵價服務。

上圖是餵價服務的基本流程圖,其中包括 3 個重要的參與方。第一個就是我們剛才提到的預言機去中心化網絡;第二個是數據提供商,有可能是交易所,也有可能是其他大型權威機構,它們都可以作為數據的提供商;第三個是用戶合約。上圖展示的流程是非常簡單的,每個數據提供商都可以通過數據源接口或者服務給到 Chanlink 預言機網絡的某一個節點,預言機網絡的每一個節點也都可以根據自己的服務來獲取數據,然後再經過聚合過程,把每個渠道獲取的數據寫到鏈上部署好的驗證合約裡面。如果通過驗證的話,數據就可以被記錄下來,以後就可以被用戶所使用,這就是整個流程。用戶端只需要使用合約就能夠獲取和使用多個數據。

餵價的使用案例是非常多的,比如剛才我們提到的 Compound、Uniswap 和 Synthetics,它們需要把 Web2 裡面的資產映射到 Web3,這時它們需要外部機制提供資產的價格。就像穩定幣一樣,它基於多少資產能夠發多少穩定幣,那它的資產價格也要基於預言機去獲取。另外像一些資管平台和比較火熱的衍生品交易應用,他們對於價格都是高度依賴的,所以這其實都是餵價服務的重要用戶。從趨勢上來看,餵價服務的需求屬於指數型上升的。儘管在市場不是那麼活躍的情況下,數據使用量也是在一直增長的。

接下來我介紹第二個比較有特色的服務是 Any API,簡單來說就是幫助鏈上智能合約獲取一些非標數據,比如一些長尾數據。這些數據可能只有某一些人或者某一些合約可以用得到了,但它並不是像是代幣價格一樣,或者資產價格一樣的標準數據。很多 DApp 都需要非標數據,比如說 Web 3 保險業務類應用需要獲取天氣數據或者是航班的延誤數據。像是溫室氣體可以做一些類似於 ESG 的項目,包括選舉體育比賽可以跟預測市場結合起來。我們基於 Any API 提供了數據市場,每個數據市場裡面是有各種不同的數據提供商基於自身數據向外部提供服務,只要用戶發送請求,那他就可以根據服務要求把數據寫回到用戶合約。數據的提供方跟數據的接收方都是由市場決定的。用戶和數據提供商存在市場,並不是由 Chainlink 官方把所有的數據都壟斷掉,然後向鏈上提供數據。

Any API 跟餵價的工作流程其實也比較一致,合約首先發送請求,然後請求會被 Chanlink 的節點所發現。發現以後,Chanlink 可以根據請求選擇所需數據,然後再寫回到區塊鏈之上。Any API 能夠給用戶提供各種各樣的數據,但是它有一個特點,就是雖然它搭建起來的速度比較快,但是它是由單個節點提供數據的。Any API 要做到的是盡可能快的通過簡單的方式獲取數據,而非是通過我們之前所提到的去中心化網絡預言機去獲得到數據。

後來隨著數據需求的多樣性增加,很多非標數據也希望能夠通過去中心化的方式寫回到鏈上。我們在今年 4 月初的時候也做了一個新的服務叫 Functions,簡單來說就是通過去中心化預言機網絡執行用戶的任何請求。用戶可以用一些高級的編程語如 Javascript 等把操作程序寫出來,不再只能通過 Solidity 語言編寫,用 Javascript 寫出來的程序肯定是比 Solidity 更加豐富。Functions 服務可以把寫出來的程序封裝進請求當中,並發給整個預言機網絡。網絡裡面的每一個節點都會執行相同的操作,可能是計算服務,可能是獲取數據服務,也可能是其他的服務。在每個節點執行得到結果後,經過我們剛才所提到的聚合過程,再寫回智能合約裡面。

跟餵價相比,它的自由度就非常高了。也就是說可以給到智能合約向外的接口來使用任何一種它想要的方式。也能夠把它要做的一些邏輯寫到合約裡面,然後不是由區塊鏈去執行了,而是由預言機去執行,就相當於把預言機服務直接嵌入到智能合約裡面,變成是混合型的智能合約。如果以這種方式去做,那你的執行是通過去中心化的網絡去保證的,那你這些非確定性的操作,就是在區塊鏈上做不了的操作,能夠通過去中心化預言機網絡執行,並且返回結果的。總體來說能夠大大提升智能合約的功能性。它能做的功能會比以前更加豐富,然後在用戶端實際應用起來也非常簡單,只需要在你的合約裡面加入兩個函數,就可以直接把去中心化預言機網絡作為你的智能合約一部分來使用。而且對於傳統 Web2 的程序員也是非常友好,因為執行邏輯是可以通過傳統的編程語言完成。整體的流程並未發生改變,發送請求,然後給到去中心化預言機網絡,執行以後進行聚合,最後再寫回到用戶的智能合約裡面。

以上就是我分享關於預言機,以及基於預言機的去中心化網絡所能提供一些服務。

免責聲明:作為區塊鏈信息平台,本站所發布文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。本文內容僅用於信息分享,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。