Chainlink Aggregator 本地导入
说明
如果要在 Remix 中导入 Chainlink Aggregator ,可以在导入依赖的部分写下如下代码:
import {AggregatorV3Interface} from "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";
这样 Remix 可以自动下载对应的 npm 库(@chainlink/contracts)并导入对应的依赖。
但在本地开发时,却无法通过这种方式导入依赖,因为编译器不会自动联网并下载所缺依赖。为了解决这个问题,我们需要安装相应的依赖 Chainlink Starter Kit, 并让 @chainlink/contracts/
映射至该依赖。
前置条件
确保已经按照 Foundry 环境配置的要求初始化了项目。
解决步骤
1. 初始化合约
根据 Patrick Lesson 4 的代码,将 FundMe.sol
和 PriceConverter.sol
粘贴到 Foundry src 当中。
2. 下载所需依赖
由于 VSCode 不会像 Remix 一样自动下载所需的包,当我们下载 Chainlink 的 Aggregator 时,VSCode 将无法找到相应的文件。
因此,我们需要在命令行中手动下载 Chainlink 的开发者包,命令如下:
forge install smartcontractkit/chainlink-brownie-contracts@0.6.1 --no-commit
3. 设置对应映射
foundry.toml
是 Foundry 的配置文件,我们可以在其中添加映射:
remappings = ["@chainlink/contracts=lib/chainlink-brownie-contracts/contracts/"]
这样 Foundry 在导入时就能够自动从本地寻找相应的文件了。
之后,再去编译项目:
forge build
不会出现报错。