如何在Fantom链上开发并部署智能合约

随着多链生态的发展,像Fantom这样的区块链提供了高吞吐量、低交易成本和即时确定性等特性–这对那些希望在大多数Layer-1区块链上进行重大可扩展性升级和成本效益升级的开发者来说是至关重要的功能。Fantom与EVM兼容,所以各类dApp和现有的开发者基础设施都可以很容易地在这个日益流行的链上移植和使用。

Chainlink Price Feed在Fantom主网上是可用的,可以用来在Fantom上构建需要去中心化、防篡改的数据输入的应用程序。在本技术教程中,我们将详细说明如何使用Chainlink预言机的价格数据在Fantom区块链上构建和部署一个智能合约。

什么是Fantom?

Fantom是一个高吞吐量,且具有具有低交易成本和即时确定性的区块链。由于其EVM的兼容性,它被许多以太坊开发者用作扩展其dApp的方式。以太坊开发者可以用标准的以太坊开发者工具轻松部署他们现有的合约,同时使用更快的区块链,增加他们能够开发的dApp类型的多样性。

用Fantom构建

在Fantom上构建和部署合约与在以太坊或其他EVM兼容链上操作一样简单。第一步是选择一个开发合约的框架。在本教程中,我们将使用Remix,但也可以随意使用任何其他基于Solidity的工具,如HardhatBrownieTruffle等。

构建合约

我们需要做的第一件事是导入必要的用于Price Feed的Chainlink合约AggregatorV3Interface.sol,它包含了从现有预先聚合的去中心化Price Feed中检索数据的接口。为了使用这个接口,我们需要知道Price Feed的合约地址–具体细节可以在Chainlink Fantom Feeds文档中找到。我们使用的是FTM/USD Price Feed的地址,所以我们可以简单地在构建合约时用该地址作为唯一的参数来初始化Price Feed接口,像下面这样:

// SPDX-License-Identifier: MIT
pragma solidity 0.8;

import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";

contract FantomLinkFeeds {

    AggregatorV3Interface internal priceFeed;

    /**
    * Network: Fantom Testnet
    * Aggregator: FTM/USD
    * Address: 0xe04676B9A9A2973BCb0D1478b5E1E9098BBB7f3D
    * URL: https://docs.chain.link/docs/fantom-price-feeds/
    */
    constructor() {
        priceFeed = AggregatorV3Interface(0xe04676B9A9A2973BCb0D1478b5E1E9098BBB7f3D);
    }

    /**
    * Returns the latest price
    */
    function getLatestPrice() public view returns (int) {
    (
        uint80 roundID, 
        int price,
        uint startedAt,
        uint timeStamp,
        uint80 answeredInRound
    ) = priceFeed.latestRoundData();
        return price;
    }
}

一旦初始化完成,我们可以通过调用聚合器接口的函数latestRoundData()来获得最新的价格数据,如getLatestPriceData()所示。这将返回关于Price Feed的多个信息点,但我们关心的只是价格,所以我们只返回价格数据。由于该函数没有修改任何东西,只是从聚合器接口读取数据,所以它被定义为一个view函数,调用它不需要支付gas费用。

部署合约

部署这段代码很简单,由于Fantom的EVM兼容性,与标准的Ethereum部署路径相比,几乎不需要改变。首先,在Remix的编译器选项卡下编译合约–简单地点击“Compile FantomLinkFeeds.sol”。然后,进入部署选项卡,将环境设置为Injected Web3(MetaMask),并为Fantom的测试网配置你的MetaMask钱包。要做到这一点,只需将这些设置作为“自定义RPC”添加到你的MetaMask网络中即可。

Select Custom RPC on MetaMask
在Metamask中选择自定义RPC

Network Name: Fantom testnet

New RPC URL: https://rpc.testnet.fantom.network/

ChainID: 0xfa2

Symbol: FTM

Custom RPC Set Up
自定义RPC设置页面

然后进入faucet.fantom.network水龙头领取一些免费的测试网FTM用于部署你的合约。关于这个设置过程的更多信息,你可以查看Fantom文档

现在,合约已经被编译,网络被设置为Fantom测试网,并且你的地址也领取到了测试网FTM,你可以通过选择 “FantomLinkFeeds”合约并点击部署来部署到Fantom网络。你的合约现在已经在Fantom测试网上运行,并准备好了使用Chainlink消费真实世界的数据。

Deploying to Fantom
部署合约到Fantom

只需要调用“getLatestPrice”函数,你就会看到以八位小数的精度返回的FTM/USD响应数据,这里的值表示的是2.66美元。

通过简单的导入,一个初始化Price Feed的构造函数和一个读取价格数据的函数,这些都不需要支付任何费用,但你已经用上了Chainlink的行业标准价格数据为你的智能合约赋能。

总结

对于来自基于Ethereum的生态的开发者来说,Fantom具有一定的吸引力。因为它结合了EVM的兼容性、高速和低成本等特性。并且当与Chainlink去中心化预言机网络结合时,开发者可以使用链外数据和事件,使得Fantom变得更加强大。Chainlink Price Feed提供高质量的聚合价格数据,可用于各种有用的应用,如去中心化交易所(DEX)、流动性池、借贷协议、去中心化保险解决方案和自动做市商(AMM)等。

现在你知道了如何在Fantom上构建和部署智能合约,你可以更深入地探索它,或在其他EVM兼容链上尝试开发,如Polygon、xDai或其他侧链和第二层解决方案等,它们也使用我们在本教程中使用的相同工具。如果你喜欢Hardhat、Brownie或Truffle,可以尝试使用Chainlink入门套件之一来启动你的开发之旅。

通过访问chain.link了解更多关于Chainlink的信息,或在docs.chain.link阅读文档。若要讨论集成问题,可以联系我们的专家。

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