我最近遇到了与我创建的稳定性合同有关的问题,并且正在尝试在Remix IDE内部进行部署并与之交互。我写的返回合同管理者地址的函数就是这样
function getManager() public view returns(address){
return manager;
}
合同经理的设置方式是如此
function Contest() public {
manager = msg.sender;
}
我创建了两个JavaScript编译和部署脚本,它们在终端内部运行。部署脚本是这样写的
const HDWalletProvider = require('truffle-hdwallet-provider');
const Web3 = require('web3');
const {interface, bytecode} = require('./compile.js');
const provider = new HDWalletProvider(
'MetaMask Mnemonic',
'Infura endpoint key'
);
const web3 = new Web3(provider);
const deploy = async () => {
const accounts = await web3.eth.getAccounts();
console.log('deploying from ', accounts[0]);
const ABI = interface;
const deployedContract = await new web3.eth.Contract(JSON.parse(ABI))
.deploy({data: bytecode})
.send({
gas: '1000000',
from: accounts[0]
});
console.log('contract deployed to', deployedContract.options.address);
}
deploy();
部署合同后,我会收到部署的地址(类似于0xbc0370FbC085FAf053b418e6ff62F26ED2C7Dee1),然后转到Remix IDE,在其中输入地址并使用Injected web3选项。但是,当我调用“ getManager”函数时,它返回的地址为0x0000000000000000000000000000000000000000000000,我似乎无法获取它来返回管理器的地址。这种方法以前只工作过一次,我似乎无法弄清楚为什么它不再起作用了。