当我点击remix.ethereum.org下的create时,我不明白智能合约的实际位置。如果我选择Injected Web3,这应该将合同发布到ropsten测试网,对吧?但是我怎样才能获得合同呢?当我使用元掩码时,它会在我使用web3.js时为我注入正确的提供程序,但如果我不想使用注入的web3,但是如何在web3.js中手动选择提供程序地址,我现在如何才能找到此合同?我可以通过这种方式访问智能合约吗?
编辑:我不知道我的问题应该是什么问题。我真的没有找到如何连接到智能合约,例如在没有注入web3的ropsten测试网络中。通常你在web3.js中执行此操作:if (typeof web3 !== 'undefined') {
web3 = new Web3(web3.currentProvider);
} else {
// set the provider you want from Web3.providers
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
}
}
但是如果你没有注入web3,那么你使用localhost。但我无法连接到智能合约,因为它不知道,我在哪个网上实际发布了智能合约,对吗?
答案 0 :(得分:4)
Remix有3种不同的环境选项,可用于部署/测试Solidity合同:JavaScript VM,Injected Web3和Web3 Provider。可以在“运行”选项卡下的“环境”下拉列表下更改此选项。 (看起来你已经有了这个部分......只记录完整性)。
因此,“智能合约的去向”取决于您设置的配置。选择Injected Web3并不意味着您的合同正在部署到Ropsten。这取决于您在MetaMask插件中选择的网络。
通过Remix使用MetaMask时,您需要使用插件选择适当的帐户并确认/拒绝交易。选择帐户有点令人困惑,因为Remix没有获取导入MetaMask的所有帐户。帐户下拉列表仅包含当前在MetaMask中选择的帐户。此外,如果您在MetaMask中更改帐户,则必须重新加载Remix才能在下拉列表中选择该帐户。它不会自动检测MetaMask中帐户的更改时间。
正确选择帐户后(假设您使用的是持有以太帐户),您现在可以部署合同。在Remix中点击Create,然后再次切换到插件。在那里,您应该看到等待批准的待处理事务。选择交易,然后单击“提交”。
交易清单:
批准/拒绝屏幕:
提交后,交易将需要几秒钟才能完成。 MetaMask将在完成时显示。而已!要与合同进行交互,您可以通过Remix启动交易,类似于上面的部署步骤。