首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >部署MockV3Aggregator不起作用

部署MockV3Aggregator不起作用
EN

Ethereum用户
提问于 2022-10-28 01:05:00
回答 3查看 194关注 0票数 0

我学到了坚固的安全帽,遵循这个过程,帕特里克·柯林斯(https://www.youtube.com/watch?v=gyMwXuJrbJQ )在Lesson7硬帽基金Me节嘲笑/标签在“硬帽子”10:49:02中,部署一个智能契约(Chainlink MockV3Aggregator)。

在终端的yarn hardhat deploy --tags mocks信息中运行此命令

纱线运行v1.22.19警告./Package.json:没有许可字段$ /Users/liwei/hardhat-fund-me/node_modules/.bin/hardhat部署-标记不模拟在2.34 s中编译✨所做的任何事情。

看来这份聪明的合同还没有部署。

代码如下

00-deploy-mock.js

代码语言:javascript
复制
const { network } = require("hardhat")
const { developmentChains } = require("../helper-hardhat-config")

//声明chainId,MockV3Aggregator的构造函数参数

const DECIMALS = "8"
const INITIAL_PRICE = "200000000"

module.exports = async ({ getNamedAccounts, deployments }) => {
    //console.log(`chainId is ${chainId}`)
    const { deploy, log } = deployments
    // The deployments field itself contains the deploy function.字段本身包含部署功能。
    const { deployer } = await getNamedAccounts()
    // Fetch the accounts.获取账户 These can be configured in hardhat.config.ts as explained above.
    const chainId = network.config.chainId

    /*
    是否在本地或hardhat网络上,chainId.name pull from hardhat config,
    developmentChains pull from helper-hardhat-config
    includes关键字:看哪些变量是否在数组中
    */
    if (developmentChains.includes(chainId.name)) {
        log("Local network detected! Deploying mocks ...")
        await deploy("MockV3Aggregator", {
            contract: "MockV3Aggregator",
            from: deployer,
            log: true,
            args: [DECIMALS, INITIAL_PRICE],
        })
        log("Mocks deployed!")
        log("----------------------------------------------")
    }
}
// 如何只部署deploy mock文件
module.exports.tags = ["all", "mocks"]

01-deploy-funde-me.js

代码语言:javascript
复制
const { network } = require("hardhat")
const { networkConfig, developmentChains } = require("../helper-hardhat-config")
//const { verify } = require("../utils/verify")
require("dotenv").config()

module.exports = async ({ getNamedAccounts, deployments }) => {
    // we get the deployments and getNamedAccounts which are provided by hardhat-deploy. 也就是hre

    const { deploy, log } = deployments
    // The deployments field itself contains the deploy function.字段本身包含部署功能。
    const { deployer } = await getNamedAccounts()
    // Fetch the accounts.获取账户 These can be configured in hardhat.config.ts as explained above.
    const chainId = network.config.chainId

    let ethUsdPriceFeedAddress = networkConfig[chainId]["ethUsdPriceFeed"] // 参数priceFeed

    const fundMe = await deploy("FundMe", {
        from: deployer,
        args: [ethUsdPriceFeedAddress],
        log: true,
    })
}

module.exports.tags = ["all", "fundme"]

harhat.config.js

代码语言:javascript
复制
module.exports = {
    // solidity: "0.8.17",
    solidity: {
        compilers: [{ version: "0.8.8" }, { version: "0.6.6" }],
    },
    defaultNetwork: "hardhat",
    networks: {
        hardhat: {
            chainId: 31337,
            // gasPrice: 130000000000,
        },
        goerli: {
            url: GOERLI_RPC_URL,
            accounts: [PRIVATE_KEY],
            chainId: 5,
            blockConfirmations: 6,
        },
    },

    namedAccounts: {
        deployer: {
            default: 0, // 这样会默认把第一个账户作为部署合约的账户
            1: 0, //在主网上也会把第一个账户作为部署账户,不管conifg怎么配置,不同网络上的account 0 并不一样
        },
    },
}

helper-hardhat-config.js

代码语言:javascript
复制
const networkConfig = {
    31337: {
        name: "localhost",
    },

    5: {
        name: "goerli",
        ethUsdPriceFeed: "0xD4a33860578De61DBAbDc8BFdb98FD742fA7028e",
    },
}
// 声明develomentChains

const developmentChains = ["localhost", "hardhat"]
// export config可以让其他文件来交互
module.exports = {
    networkConfig,
    developmentChains,
}
EN

回答 3

Ethereum用户

发布于 2022-10-28 02:36:33

确保您的文件夹结构中有一个“部署”目录,以便实际部署合同。00-deploy-mock.js01-deploy-funde-me.js文件应该位于该目录中。

票数 1
EN

Ethereum用户

发布于 2022-10-28 13:09:10

FundMe回购复制所有包,并重新安装它们。

票数 0
EN

Ethereum用户

发布于 2022-11-01 07:19:05

更新仅修复脚本00-deploy-mock.js

当识别网络应该是" network.name“而不是"chainId.name”时,由network.name描述的配置文件中的原因

if (developmentChains.includes(network.name)) {

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/138306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档