当我通过hardhat (特别是hardhat- deploy )将Ownable合同部署到乐观的Kovan时,它似乎没有正确地设置所有者,而当我通过Remix部署相同的契约集时,它确实正确地设置了所有者。我有一个指向repro的github链接:https://github.com/zawazawa01/ownable-repro。
部署这些合同的正确方法是什么?
我的脚本如下:
module.exports = async ({getNamedAccounts, getUnnamedAccounts, deployments}) => {
const {deploy} = deployments;
const {deployer} = await getNamedAccounts();
const accounts = await getUnnamedAccounts();
await deploy('TestOwnable', {
from: accounts[0],
args: [],
log: true,
});
};
module.exports.tags = ['TestOwnable'];而相关的网络配置是
'kovan-ovm': {
url: 'https://kovan.optimism.io',
ovm: true,
accounts: [process.env.PRIVATE_KEY],
},合同是最基本的:
//SPDX-License-Identifier: ISC
pragma solidity 0.7.6;
pragma experimental ABIEncoderV2;
// Inherited
import "@openzeppelin/contracts/access/Ownable.sol";
contract TestOwnable is Ownable {
constructor() Ownable() {}
}我使用命令yarn deploy:ovm (运行hardhat deploy --network kovan-ovm )部署它,事务成功,但是根据日志,我们可以看到所有权没有转移到部署帐户:https://kovan-optimistic.etherscan.io/tx/0x9740d01219838ea7a7c8155dc30df9fb12a69105014386a14df4aedd9e401aa9#eventlog。
另一方面,使用混合方式部署时,所有权的转移确实成功:https://kovan-optimistic.etherscan.io/tx/0x2b92f8ae26994055d19b5f90fe975dc605177da38865e247cd24f980659315d0#eventlog。
我在这里错过了什么?
发布于 2022-05-07 03:33:28
看看“硬帽”的部署您的合同,他们有一个例子。
应该是这样的-
const TestOwnable = await hre.ethers.getContractFactory("TestOwnable");
const testOwnable = await TestOwnable.deploy();
await testOwnable.deployed();https://ethereum.stackexchange.com/questions/127716
复制相似问题