適配器是每個Chainlink節點默認支持的數據操作功能。節點在這種情況下是分散的。它們滿足數據請求,而Chainlink網絡由數量不斷增長的節點組成。其節點由眾多獨立的運營商運營。通過適配器,所有開發人員都具有用于發出數據請求的標準接口,而節點操作人員將遵循用于處理該數據的標準。這些適配器包括HTTP GET、HTTP POST、比較,復制等功能。適配器是dApp與外部世界數據的連接。
例如,這是HttpGet適配器的參數:
Get:獲取包含API URL的字符串以向Get請求。
headers:將包含鍵作為字符串,將值作為字符串數組的對象。
queryParams:獲取URL的查詢參數的字符串或字符串數組。
extPath:采用斜杠分隔的字符串或字符串數組,以附加到作業的URL。
Chainlink請求
為了使通用智能合約與這些適配器進行交互,需要其他功能。從Chainlink Client繼承的所有合同都可以創建Chainlink.Request結構,該結構允許開發人員向Chainlink分散的Oracle發出請求。該請求應根據要發出的請求將所需的適配器參數添加到結構中。提交這一請求需要一些基本字段,例如要用作Oracle的節點的地址、jobId和約定的費用。除了這些默認字段之外,還可以將所需的適配器參數添加到請求結構中:
//設置網址以在上執行Get請求
request.add("get", "https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=USD");
使用這個結構,其請求是靈活的,并且可以制定為適合各種情況的請求,這些情況涉及從任何API獲取、發布和操作數據,因為請求可以包含任何適配器功能。使該系統去中心化的原因是Chainlink的Oracle網絡由許多這些節點組成,并且開發人員可以根據自己的需求自由選擇節點和數量。正如高可靠性dApp經常需要的那樣,這可以通過多個來源實現冗余故障轉移和錯誤檢查。
有關構造請求以及在ChainlinkClient合同內提交請求和接收響應所需的功能的更多信息,可以查看Chainlink的完整HTTP GET請求示例。
對于常見請求,節點操作人員可能已經預先配置了現有的Oracle作業,在這種情況下,其請求要簡單得多。而無需構建自定義請求結構并添加必要的適配器。無需其他適配器參數,選擇的分散式預言集將基于創建請求結構時提供的jobId知道如何響應。
這一示例來自完整的CoinGecko Consumer API:
Chainlink.Request memory req = build Chainlink Request(jobId, address(this),this. fulfill Ethereum Price.selector);send Chainlink Request To(oracle, req, fee);
可以使用分散的Oracle數據服務(例如Chainlink Market)搜索現有的Oracle及其支持的作業以找到所需的jobId。
外部適配器
但是如果智能合約有復雜的用例,而默認適配器功能未涵蓋這一用例,那么該怎么辦?如果需要執行一些高級數據操作怎么辦?也許不是要提交到合同的原始數據,而是由對多個數據點進行統計分析生成的元數據。也許可以使用默認適配器在鏈上操作數據,但希望降低成本。也許由于使用憑據來源,不希望其API請求在鏈上,并且不想在鏈上或在Oracle作業規范中指定這些憑據。這是外部適配器發揮作用的地方。
由于外部適配器是與Chainlink Oracle節點脫鏈存在的代碼段,因此它們可以用選擇的任何語言編寫,并執行人們可以想到的任何功能,只要數據輸入和輸出遵循適配器的JSON規范。外部適配器充當Chainlink分散式Oracle網絡與外部數據之間的接口,使節點操作員知道如何請求和接收JSON響應,然后在鏈上使用它們。
通過外部適配器在鏈外定義這一接口規范將帶來巨大的可能性:現在可以根據個人安全標準在鏈外存儲API憑據,可以采用選擇的語言以任何方式對數據進行編程,所有這些無需使用任何
以太坊費用來資助鏈上交易的情況。從某種意義上說,外部適配器就像去中心化Oracle的另一層一樣,以低成本、快速地將數據打包到
區塊鏈外部,然后將其轉換為整潔的JSON格式,以由Chainlink oracle節點在鏈上進行驗證。
外部適配器是使Chainlink成為一個多功能的分散式Oracle網絡的重要部分。合同開發人員可以根據需要自由實施這些適配器,也可以從Chainlink市場上的現有適配器中進行選擇。如果是尋求創建外部適配器的智能合約開發人員,Chainlink只要求為數據請求和返回數據指定JSON接口。在這兩個接口之間,開發人員可以自由創建和操作數據以適應其用例。作為Oracle節點操作人員,要支持外部適配器并處理其他請求,必須在節點用戶界面中為其創建網橋,并將適配器的橋名稱添加到支持的任務中。
你可以在Chainlink構建外部適配器頁面上訪問創建外部適配器的完整示例。
Chainlink致力于為區塊鏈和智能合約開發人員提供工具,使他們可以根據實際需要,以真實數據來支持通用智能合約。
Chainlink致力于為區塊鏈和智能合約開發人員提供工具,使他們可以根據實際需要,以真實數據來支持通用智能合約。Chainlink的設計結合了通過默認適配器和可擴展外部適配器對任何API的直接調用,為開發人員提供了一個靈活的平臺,可以根據需要創建所需的任何數據。這為智能合約打開了一個真正的數據世界,并賦予新的用例。
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。