Ethereum 在Remix IDE中合同部署后返回0x00000经理地址的Solidity函数

Ethereum 在Remix IDE中合同部署后返回0x00000经理地址的Solidity函数,ethereum,solidity,remix,metamask,Ethereum,Solidity,Remix,Metamask,我最近在创建一份solidity合同时遇到了一些问题,我正试图在RemixIDE内部部署和交互。我写的用于返回合同经理地址的函数如下 function getManager() public view returns(address){ return manager; } 合同经理的设置方式也是如此 function Contest() public { manager = msg.sender; } 我已经创建了两个JavaScript编译和部署脚本,在终端内部运行。部

我最近在创建一份solidity合同时遇到了一些问题,我正试图在RemixIDE内部部署和交互。我写的用于返回合同经理地址的函数如下

 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),然后我转到混音IDE,在那里输入地址并使用注入的web3选项。然而,当我调用“getManager”函数时,它返回一个0x0000000000000000000000000000的地址,而我似乎无法让它返回管理器的地址。这个方法以前曾经有效过,我似乎无法理解为什么它不再有效了

什么是完整的源代码?@raghasood项目的完整源代码就在我的github上,如果你需要仔细查看,应该可以。您提到您正在使用注入式web3,您是否在testnet上进行测试?如果是,您是否在查询之前等待挖掘事务?即使在发送挂起时,您也可以获得地址,但在收到联系人之前,您将无法使用该地址。我实际上是在混音IDE中测试的,而不是在testnet上。在它开始工作之前,我会在它部署后从控制台获取地址,然后它就会工作,我可以在我将合同部署到我在Remix内部收到的地址后尽快返回经理的地址。现在在Rinkeby testnet上部署的似乎是一个有效的契约,所以看起来您的web3已连接到该契约。尝试将其从注入的Web3更改为javascript虚拟机,这样您就可以在本地进行测试。