詳解如何在Matic網絡上使用Chainlink預言機
自Matic在今年早些時候上線以來,由於其安全和可擴展的基礎設施和即時交易的特性,該網絡已經迅速成為Ethereum開發人員的熱門第二層解決方案。 Matic的高性能、低費用的基礎設施為DeFi應用提供了一個可行的平台,以促進大規模的應用。同樣在區塊鏈預言機領域,Chainlink已經成為DeFi協議的首選預言機解決方案,Chainlink Price Feeds目前已經保障了數十億美元的價值。在這篇技術文章中,我們將向您展示如何在您的Matic DeFi應用中使用Chainlink預言機,以及如何利用Chainlink Price Feeds讓您的應用訪問高質量、防篡改的數據,不容易受到一級標題一級標題
對可擴展和安全的DeFi協議的需求
今年,DeFi協議出現了爆炸性的增長,DeFi的總鎖倉量(TVL)從1月份的6.8億美元飆升到現在的140多億美元。然而,伴隨著這種增長的是鏈上交易水平的提高,以及來自破壞者的不必要的關注,他們試圖利用這些協議為自己謀取利益。
以太坊的可擴展性有限,吞吐量低,由於DeFi的增長,鏈上交易數量的增加阻礙了區塊鏈的性能。這就產生了流量效應,使DeFi協議的用戶體驗差,費用高,交易時間慢。
交易速度慢和交易費用高是阻礙DeFi跨入主流的兩大限制因素。 Matic等二層網絡憑藉其更高的可擴展性、高吞吐量和低成本的交易,可以開啟DeFi下一階段的發展。 Matic側鏈也是可組合的,完全兼容EVM。 DeFi的核心價值之一是其無須許可的可組合性,因此Matic為希望構建各種有用的DeFi應用的開發人員提供了一個令人信服的選擇,這些應用可擴展、提供低成本的交易、確保無須許可的可組合性,並提供無縫的用戶體驗。
然而,這些DeFi應用仍然需要訪問高質量和可靠的外部數據。正如我們今年多次看到的那樣,DeFi協議可能會受到各種形式的攻擊,例如價格預言機攻擊,即作惡者將閃電貸與低質量預言機結合起來,操縱市場,為自己謀取利益,損害其他用戶的利益。
一級標題
在Matic網絡上使用Chainlink Price Feeds
Chainlink Price Feeds使用多個高質量的數據輸入,並將其與Chainlink預言機網絡相結合,將價格數據輸入參考合約,然後將結果聚合。 DeFi協議對數據質量和完整性的重視是極其重要的,Chainlink Price Feeds為這些不想因數據質量問題而發生的各種DeFi漏洞影響的協議提供了最佳的實戰型生產環境解決方案。
以下兩個教程也可以在Remix中作為一個完整的智能合約使用。
在Matic網絡上使用Chainlink Price Feeds和預言機的第一步是設置你的MetaMask錢包以二級標題圖片描述
獲取Testnet MATIC
創建智能合約MATIC Faucet圖片描述
創建智能合約
創建智能合約
在Matic上開始構建使用Chainlink Price Feeds的智能合約的最簡單方法就是從標準的Price Consumer合約開始。這是一個基礎的標準化合約,用於發起對Chainlink Price Feeds的請求。在Remix中打開這個合約,並根據需求進行修改。在本例中,我們將使用ETH/USD價格數據。第一步是在我們的構造函數中初始化一個[Mumbai Testnet上的。
部署和測試智能合約lastRoundData部署和測試智能合約

部署和測試智能合約
現在我們準備部署和測試我們的合約。在remix中編譯合約,然後在部署選項卡上,將環境改為"Injected Web3",並確保下面的錢包地址是你的MetaMask錢包中包含你的MATIC代幣的地址,按下部署按鈕,然後按照步驟操作。最終的結果是你的智能合約已經部署到了Matic Mumbai testnet。通過remix控制台中的交易輸出可以獲取部署的合約地址。
一級標題"getLatestPrice "圖片描述
一級標題
二級標題
二級標題
獲取Testnet LINK
創建智能合約Matic Discord創建智能合約
創建智能合約
開始在Matic上構建使用Chainlink預言機的智能合約的最簡單方法就是從標準的Chainlink APIConsumer合約開始。這是一個基本的標準化合約,用於通過Chainlink預言機發起對外部數據的請求。所以我們將在Remix中打開這個合約,並根據我們的需求進行修改。
首先,我們將把"volume "參數改名為"ethPrice",把"requestVolumeData "函數改名為"requestEthereumPrice"。完成後,我們需要修改構造函數如下。
Mumbai測試網的LINK token地址是`0x70d1F773A9f81C852087B77F6Ae6d3032B02D2AB` 所以我們把它傳入"setChainlinkToken "按照
按照Matic文檔中的規定,Mumbai測試網上有一個oracle合約運行在`0x1cf7D49BE7e0c6AC30dEd720623490B64F572E17`,所以我們將oracle變量設置為這個值
API通過HTTP GET請求獲得,返回值是一個無符號整數。在Mumbai testnet上運行的oracle有各種job specifications可以使用。根據Matic文檔中的jobs列表,根據這些需求,適合我們的是`d8fcf41ee8984d3b8b0eae7b74eca7dd`,因為我們要執行HTTP GET請求,返回的數據是一個無符號整數,所以我們將"jobId "將
將"fee"和

和"requestEthereumPrice"和"fulfill"函數。
對Chainlink預言機的請求使用Chainlink請求和響應設計模式工作,鏈上函數創建並發出請求,oracle檢測請求,然後將響應發回給同一合約中的另一個函數。在我們的案例中,"requestEthereumPrice "函數創建並發出請求,"fulfill "函數處理響應,這是由`this.fulfill.selector`定義的。
選擇的API是crypto.com的ETH/EUR在
在"requestEthereumPrice "函數中,修改如下:
將URL設置為[ETH/EUR](ETH/EUR) API的端點
將請求中的"path "變量設置為"EUR"。這是要找到並返回的JSON響應的路徑,根據在瀏覽器中看到的API端點的輸出,它包含了Ethereum的當前價格
將結果乘以100,因為Solidity 不能處理數字中的小數
在

在"fulfill "部署和測試智能合約

部署和測試智能合約
部署和測試智能合約
圖片描述
圖片描述
向合約中轉入LINK
圖片描述"requestEthereumPrice "圖片描述
測試已部署的合約
DeFi應用"ethereumPrice "圖片描述
總結
總結
DeFi應用DeFi應用這裡







