原文鏈接:
https://blog.chain.link/how-to-build-and-deploy-an-avalanche-smart-contract-zh/
本篇技術教程將教大家如何在 Avalanche 區塊鏈上開發和部署智能合約,並利用 Chainlink Data Feeds 將 Avalanche 上的混合型智能合約連通鏈下市場數據。
Chainlink Price Feeds 現已在 Avalanche 主網上線,開發者能以 Avalanche 鏈完整的原生速度和低成本輕鬆獲得 Chainlink 網絡成熟可靠的喂價。Chainlink Price Feeds 會從多個喂價源聚合數據,通過 Chainlink 去中心化的節點運營商網絡將數據聚合至單一數據點,並保障數據的準確性以及市場覆蓋。接入此類數據對新興區塊鏈的發展至關重要,因爲許多去中心化應用必須接入喂價或其他外部數據才能正常運行。Avalanche 是近期異軍突起的區塊鏈生態,在集成 Chainlink 預言機後,總鎖倉量、交易量以及地址數量都呈現爆發式增長。有越來越多開發者希望學習如何開發和部署 Avalanche 智能合約。
Avalanche 不僅集成了 Chainlink Price Feeds,近期還發布了 Avalanche Rush,這是面向 Avalanche 生態開發者推出的價值 1.8 億美元的激勵機制。而這也爲開發者提供了絕佳的機會,學習如何在 Avalanche 上部署去中心化應用。本文將介紹如何開發和部署一個接入 Chainlink 喂價的 Solidity 智能合約,Chainlink 喂價可以用於決定貸款抵押、通證匯率以及 dApp 用戶的回報率等。Avalanche 區塊鏈吞吐量高,交易確定延遲性低,並且擁有可擴展性和去中心化水平極高的驗證節點架構,而這一切都要歸功於其創新的共識算法。除此之外,由於 Avalanche 可以兼容 EVM,因此開發者可以使用所有標準化的以太坊工具。本文實例中採用了 Remix 框架,這是一個基於瀏覽器的 Solidity IDE。
各位可以按照本教程,用這個 Remix Gist 自己部署代碼。
*
// SPDX-License-Identifier: MITpragma solidity 0.8; import \"@chainlink/contracts/hide/v0.8/interfaces/AggregatorV3Interface.sol\"; contract AvaxLinkFeeds { AggregatorV3Interface internal priceFeed; /** * Network: Fuji * Aggregator: AVAX/USD * Address: 0x5498BB86BC934c8D34FDA08E81D444153d0D06aD * URL: https://docs.chain.link/docs/avalanche-price-feeds/ */ constructor() { priceFeed = AggregatorV3Interface(0x5498BB86BC934c8D34FDA08E81D444153d0D06aD); } /** * Returns the latest price */ function getLatestPrice() public view returns (int) { ( uint80 roundID, int price, uint startedAt, uint timeStamp, uint80 answeredInRound ) = priceFeed.latestRoundData(); return price; }}
編寫智能合約
首先,導入所需的 Chainlink 喂價所需要的合約“AggregatorV3Interface.sol”,其中包含從聚合的去中心化喂價中獲取數據的接口。要使用這個接口,就必須知道喂價地址。喂價地址可以在 Chainlink Avalanche Feeds 文檔中查詢。這裏我們使用的是 AVAX/USD 喂價地址,所以只需用這個地址初始化喂價接口即可,因爲這是合約創建時唯一的參數,具體如下:
“priceFeed = AggregatorV3Interface(0x5498BB86BC934c8D34FDA08E81D444153d0D06aD)”。
初始化以後,就可以通過調用方法 latestRoundData(),從聚合器接口獲取最新喂價數據,正如 getLatestPriceData() 中所示。結果會返回多個喂價數據點,而我們只需要價格這一項,所以只需返回價格即可。由於這個方法並沒有做任何修改,只是單純地從聚合器接口讀取數據,因此被定義爲 view function,其優勢是不會消耗 gas。
編譯並部署合約
代碼部署非常簡單,而且由於 Avalanche 可以兼容 EVM,標準化的以太坊部署路徑幾乎不需要任何修改。首先在 Remix 的 Compiler tab 下點擊 Compile AvaxLinkFeeds.sol。然後,到 Deploy tab 下,將環境設置成 Injected Web3 (MetaMask),並針對 Avalanche 的 Fuji 測試網配置你的 MetaMask。將以上設置作爲“Custom RPC”添加到 MetaMask 網絡中。
在 MetaMask 中選擇 RPC
Network Name:Avalanche FUJI C-Chain
New RPC URL:https://api.avax-test.network/ext/bc/C/rpc
ChainID:43113
Symbol:AVAX
Explorer: https://cchain.explorer.avax-test.network
然後,登錄 https://faucet.avax-test.network/,獲取免費的測試網 AVAX,用於部署合約。更多設置過程詳情,可查看關於如何在 Avalanche 上部署智能合約的文檔。
現在,合約編譯好了,網絡設置成了 Fuji,地址中也充值了測試網的 AVAX。你可以選擇 AvaxLinkFeeds 合約並點擊 Deploy 鍵,將合約部署至測試網。這樣,你的合約就發佈到了 Avalanche 區塊鏈上,並隨時可以通過 Chainlink 接入外部數據。
部署至 Avalanche
調用方法 getLatestPrice,就可以獲取精度爲小數點後八位的 AVAX/USD 喂價,這裏返回的值是 $51.54。
大功告成了!首先是導入,然後用構造函數初始化數據,再調用一個方法讀取喂價數據(不用支付 gas 費!)。經過這簡單的三步就可以讓你的智能合約接入 Chainlink 優質的喂價數據。
總結
Avalanche 爲智能合約應用的開發提供了強大的工具,提高速度並降低網絡成本,吸引了衆多開發者。Avalanche 集成了 Chainlink 去中心化的預言機網絡後如虎添翼,爲區塊鏈連通至各種鏈下數據和事件。Chainlink Price Feeds 爲用戶提供了優質的聚合喂價數據,可以用於各種應用場景,包括去中心化的交易所(DEX)、流動性資金池、去中心化的保險解決方案以及自動做市商(AMM)等。
Chainlink 爲預言機服務的開發、訪問和銷售建立了行業標準,可服務於任何區塊鏈上的混合型智能合約。Chainlink 預言機網絡可以將智能合約可靠地連接至任何外部 API,並安全地展開鏈下計算,爲應用實現豐富的功能。Chainlink 目前爲 DeFi、保險和遊戲等各大行業保障了數百萬億美元資產,併爲全球企業和領先的數據提供商提供通用的門戶,一站式接入所有區塊鏈。
想要了解關於 Chainlink 的更多內容,請訪問 chain.link,或訪問 docs.chain.link 查看 Chainlink 文檔。想要討論集成相關事宜,請聯繫 Chainlink 專家。
(文中鏈接請複製至瀏覽器打開)
__
__
Chainlink 2.0 白皮書中文版已於日前發佈,想要了解更多關於 Chainlink 2.0 的內容細節,請掃描下方二維碼▼
END
▲獲取 Chainlink 官方最新資訊
**
**
加入 Chainlink 官方社區▼
Chainlink 官方渠道
QQ 羣 : 6135525
微博 : https://weibo.com/chainlinkofficial
知乎:https://www.zhihu.com/people/chainlink
SegmentFault:https://segmentfault.com/u/chainlink
幣乎 : https://bihu.com/people/1869894547
GitHub: https://github.com/smartcontractkit/chainlink
Discord: https://discord.gg/aSK4zew
Twitter: https://twitter.com/chainlink
中文 Twitter: https://twitter.com/ChainlinkChina
Telegram: https://t.me/chainlinkofficial
合作聯繫 : [email protected]
點擊“閱讀原文” 進入 Chainlink 中文官網