Openzeppelin

deployProxy()後如何獲取實現地址?(@open-zepplin/hardhat-upgrades)

  • July 16, 2021

我正在通過安全帽升級使用代理模式部署我的令牌。

const TokenFactory = await ethers.getContractFactory('MyToken');
const token = await upgrades.deployProxy(TokenFactory);

const result = await token.deployed();

接下來我想使用 etherscan 驗證合約hardhat-etherscan

await run('verify:verify', {
  address: token.address,
  constructorArguments: []
});

問題是token.address指向代理。據我了解,不需要驗證代理,而是需要驗證實現。

但我似乎無法找到獲取實現地址的方法。

這個難以捉摸的地址在哪裡?部署代理後如何以程式方式訪問它?

試試下面,

import { getImplementationAddress } from '@openzeppelin/upgrades-core';
   
const currentImplAddress = await getImplementationAddress(provider, proxyAddress);

引用自:https://ethereum.stackexchange.com/questions/103530