以太坊智能合約預言機

什麼是預言機(oracle)?和以太坊智能合約開發是什麼關係?在區塊鏈去中心化的條件下如何實現預言機?面對這些疑惑首先來了解下咱們開發以太坊智能合約的需求。node

當咱們須要獲取一些必要的數據時,可能不得不與與第三方進行交流。緣由可能有不少種。mongodb

例如說在簽署比特幣多重簽名交易時,你可能不相信單一實體。比方說,你但願某些資金在某些條件下被移動。要麼本身手動來要麼將其其委託給第三方(你可能還不太放心),按照比特幣的方式,會經過多重簽名交易強制執行你的邏輯,將交易審批流程分發給不一樣的簽署方(預言機)。express

利用N-M多重簽名交易的方法是確保每一個簽署者(預言機)只擁有一個私鑰,以便他能夠在他認爲正確的時機放置一個簽名,但交易只會有效N次M個簽署者(預言機)將就要簽署的交易達成共識。這比信任單一的外部實體信息源要強大得多,由於選定的簽署者(預言機)是相互競爭的,而且變化不會不大。網絡

其實擁有分佈式預言機網絡的想法已經存在了不少年,可是在一個跨越不一樣預言機的通訊上找到共識是十分困難的。尋找願意加入該網絡的各方更加困難,由於這須要創建一個良好的激勵機制,而關於如何與這個預言機網絡進行交互的適當設計也尚未達成一個共識。除此以外,一個主要限制多是你須要用來獲取數據的數據源,其中一些可能在未通過外部各方許可的狀況下就已經可使用了。oracle

可是以太坊智能合約出現後,這個想法就有很大不一樣,你的交易批准邏輯由網絡經過你本身的智能合同代碼實施。這意味着一旦某些條件獲得驗證(智能合約意味着你能夠設置驗證條件),預言機就不會簽名,而是它只向你提供符合你要求的數據,能夠直接驗證條件並觸發你想要的任何事務或狀態更改。目前智能合約仍然不能依靠分佈式網絡來獲取外部數據,鏈上執行的應用程序或者服務,還活在本身的區塊鏈圍城裏,所以你須要使用預言機才能將外部數據引入進來。app

對數據日益增加的需求來講,愈來愈多的行業尋找愈來愈複雜的現實世界。然而,大多數關於預言機的誤解是因爲你可能但願預言機爲你得到某些數據而形成的。分佈式

例如Augur或Gnosis這樣的預測市場的以太坊項目就是爲了圍繞將來的事實提供一個關於人羣不斷情緒變化的良好和可靠的指標,例如博彩。預測市場一般被也被稱爲預言機,但與咱們討論的不一樣,它的意義更爲普遍和徹底不一樣。區塊鏈

還有一點值得討論,咱們可能會想這是咱們要調用預言機的價格嗎?這只是一個數據源,大多數時候它不會與區塊鏈有任何關聯。金融機構一般將「彭博社」或「路透社」也稱爲預言機,但他們真正的意思是將它們用做信息數據的來源。做爲預言機會帶來與區塊連接口的全部複雜性,這是數據源不可能直接提供的(由於這須要額外的複雜性和成本)。儘管如此,一旦選擇了適當的數據源和公式,預言機仍能夠訪問好比彭博社的數據。把這些也成爲是提供「預言機」而不是「數據源」實際上是對這個術語的另外一種濫用。設計

爲了讓這個問題更清楚,咱們能夠定義3個部分:
1. 數據源
數據源,這是你要查找的信息的來源,這能夠取決於你的實際查詢,能夠是「Augur」(查看將來事件/事實),「Bloomberg」(查找財務數據),「比特幣區塊鏈」(查找地址餘額,給定交易OP_RETURN的內容或任何其餘區塊鏈數據),「WolframAlpha」(查找給定Wolfram Alpha查詢的響應)或其餘任何來自「網絡」的數據。獲取網絡數據並使用或經過API獲取數據既是你想從中獲取數據的最簡單也是最經常使用的方式方法。
2. 查詢
查詢能夠選擇的數據源,以便確認你想要獲取的數據。
3. 預言機 / 預言機網絡
預言機/預言機網絡負責將你和數據源的一方鏈接起來。3d

推薦兩個以太坊實戰教程:

相關文章
相關標籤/搜索