智慧合約與可程式化
區塊鏈預言機
區塊鏈預言機是一種把現實世界的資訊帶上區塊鏈、好讓智慧合約能加以使用的服務。區塊鏈在設計上是一個密封的世界:合約只能看到鏈上已有的資料,無法自己去存取某個網站或感測器。這讓所有人的電腦都保持一致,但也意味著合約本身沒有辦法知道昨天的匯率、一場比賽的比分或天氣。預言機就是那個可信的信使,它從外部取來這類事實,並以合約能讀取的形式把它們送上鏈。
合約之所以不能乾脆自己去上網,原因在於確定性:每個節點都必須算出分毫不差的同一個結果,但外部網站的回答可能前一刻和後一刻不同、這台機器和那台機器不同,從而破壞這種一致。預言機的解法是:在鏈下收集好資訊,再把它作為普通資料寫到區塊鏈上,讓每個節點看到的都完全相同。為了避免只信任某個可能出錯或不誠實的單一來源,穩健的預言機往往從許多個相互獨立的提供方取資料並綜合它們的回答,這樣就沒有哪一個孤立的報信者能悄悄把一個假數字餵給合約。
預言機之所以重要,是因為大多數有用的應用都需要對外部世界做出反應。一筆必須核查抵押品是否仍然足值的貸款、一份由真實航班延誤觸發理賠的保險、一場依據真實比賽結果來結算的下注,全都依賴可靠的外部資料。預言機正是那座橋,讓自成一體的合約邏輯得以連接現實,這也是為什麼它有時被稱為整個領域的關鍵管道,以及為什麼它的誠實如此被嚴肅看待。
一個航班延誤保險 dapp 沒法自己去盯著機場。預言機在鏈下讀取官方的航班資料,並把「123 航班延誤了三小時」發布到區塊鏈上;保險合約看到這條鏈上的事實,便自動理賠,全程沒有理賠員參與。
由於合約會信任預言機所報告的內容,一個出錯或被操縱的預言機可能誤導合約;這正是嚴肅的預言機會從眾多獨立來源取資料的原因。
又稱
另見