如何開發和部署 Avalanche 智能合約

原文鏈接:

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 網絡中。

如何開發和部署 Avalanche 智能合約

在 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 智能合約

部署至 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 的內容細節,請掃描下方二維碼▼

如何開發和部署 Avalanche 智能合約

END

▲獲取 Chainlink 官方最新資訊
**
**

加入 Chainlink 官方社區▼

如何開發和部署 Avalanche 智能合約

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 中文官網