简体   繁体   English

使用 hardhat-upgrades 在单独的部署文件中获取先前部署的代理合同

[英]Get previously deployed proxy contract in a seperate deployment file using hardhat-upgrades

I have deployed a token like so using hardhat我已经像这样使用 hardhat 部署了一个令牌

const { getNamedAccounts, deployments, network } = hre
const { deploy, log, get } = deployments
const { deployer } = await getNamedAccounts()
log("----------------------------------------------------")
log("Deploying GovernanceToken and waiting for confirmations...")

const governanceTokenContractFactory = await ethers.getContractFactory(GOVERNANCE_TOKEN_NAME);
console.log(`Deploying ${GOVERNANCE_TOKEN_NAME}...`);

const deployedProxy = await upgrades.deployProxy(governanceTokenContractFactory, [], {
  initializer: "initialize",
  kind: "uups",
});


await deployedProxy.deployed();
console.log(`${GOVERNANCE_TOKEN_NAME} proxy deployed to: ${deployedProxy.address}`);

const governanceToken = await governanceTokenContractFactory.attach(
    deployedProxy.address
);

In a seperate script I'm trying to deploy the governor which requires the governance token.在一个单独的脚本中,我正在尝试部署需要治理令牌的调控器。 Normally I would be able to get the deployed token like so:通常我可以像这样获得部署的令牌:

const governanceToken = await get(GOVERNANCE_TOKEN_NAME)
//const governanceToken = await ethers.getContract(GOVERNANCE_TOKEN_NAME)

I'm getting an error when I try to do so:当我尝试这样做时出现错误:

Error: No Contract deployed with name GovernanceToken错误:没有使用名称 GovernanceToken 部署的合约

My guess is that this is related to me using @openzeppelin/hardhat-upgrades to deploy and that its not registering it the same way it would during normal deployment:我的猜测是,这与我使用@openzeppelin/hardhat-upgrades进行部署有关,并且它没有像在正常部署期间那样注册它:

import { upgrades } from "hardhat"

How can I get a previously deployed proxy contract in a seperate deployment file using hardhat-upgrades?如何使用 hardhat-upgrades 在单独的部署文件中获取之前部署的代理合约?

So after deploying I needed to save the artifact.所以在部署之后我需要保存工件。

const { getNamedAccounts, deployments, network } = hre
const { deploy, log, get } = deployments
const { deployer } = await getNamedAccounts()
log("----------------------------------------------------")
log("Deploying GovernanceToken and waiting for confirmations...")

const governanceTokenContractFactory = await ethers.getContractFactory(GOVERNANCE_TOKEN_NAME);
console.log(`Deploying ${GOVERNANCE_TOKEN_NAME}...`);

const deployedProxy = await upgrades.deployProxy(governanceTokenContractFactory, [], {
  initializer: "initialize",
  kind: "uups",
});


await deployedProxy.deployed();
console.log(`${GOVERNANCE_TOKEN_NAME} proxy deployed to: ${deployedProxy.address}`);

const governanceToken = await governanceTokenContractFactory.attach(
    deployedProxy.address
);
const artifact = await deployments.getExtendedArtifact(GOVERNANCE_TOKEN_NAME);
const proxyDeployments = {
    address: deployedProxy.address,
    ...artifact
}

await save(GOVERNANCE_TOKEN_NAME, proxyDeployments);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 使用安全帽编译智能合约时出错 - Errror compiling smart contract using hardhat 使用安全帽和 heroku 部署智能合约 - 未安装 ERR 安全帽 - Smart contract deploy with hardhat and heroku - ERR hardhat not installed 尝试使用安全帽编译合约但出现错误:- 错误:找不到指定的模块 - Tried to compile contract using hardhat but got error:- Error: The specified module could not be found 使用web3.js部署时如何获取智能合约地址 - How to get Smart Contract address when it is deployed with web3.js 从节点js中的单独文件获取回调 - get a callback from a seperate file in node js 一旦部署到Heroku,如何使用代理访问Node Express服务器? - How to access Node Express server using proxy once deployed to Heroku? 如何在使用 infura 部署在 ropsten 测试网上的智能合约中调用 setter 函数 - How to call a setter function in a smart contract which is deployed on ropsten testnet using infura 使用节点的智能合约部署无法正常工作 - Smart contract deployment with node is not working NGINX 反向代理部署后 ExpressJS 文件上传停止 - ExpressJS File Upload Stopped After NGINX Reverse Proxy Deployment 在安全帽上部署合同或创建 NFT 时出现错误:ProviderError: invalid sender - On hardhat when deploying a contract or minting an NFT getting error: ProviderError: invalid sender
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM