如何开发和部署Avalanche智能合约

本篇技术教程将教大家如何在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: MIT
pragma solidity 0.8;

import "@chainlink/contracts/src/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 Network Illustration - Custom RPC
在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接入外部数据。

Deploying to 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专家

Need Integration Support?
Talk to an expert
Faucets
Get testnet tokens
Read the Docs
Technical documentation