0

我最近在创建的 Solidity 合约中遇到了一些问题,我正在尝试在 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”函数时,它返回的地址为 0x0000000000000000000000000000000000000000,我似乎无法让它返回管理器的地址。这种方法以前工作过一次,我似乎无法弄清楚为什么它不再工作了。

4

0 回答 0