Remix以太坊在哪里签合同?

时间:2018-01-21 14:59:46

标签: ethereum web3js remix

当我点击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。但我无法连接到智能合约,因为它不知道,我在哪个网上实际发布了智能合约,对吗?

1 个答案:

答案 0 :(得分:4)

Remix有3种不同的环境选项,可用于部署/测试Solidity合同:JavaScript VM,Injected Web3和Web3 Provider。可以在“运行”选项卡下的“环境”下拉列表下更改此选项。 (看起来你已经有了这个部分......只记录完整性)。

  1. JavaScript VM:这是Remix自己的内部沙箱。它不连接到MainNet,TestNet或任何专用网络。它是一个内存中的区块链,可用于简单测试和快速挖掘。
  2. 注入Web3:这是用于浏览器插件(MetaMask)的选项。在这里,您告诉Remix将区块链集成的所有控制推迟到MetaMask插件。此时,MetaMask控制您要连接的网络。在插件中,您可以通过Infura的节点网络连接到MainNet,Ropsten,Rinkeby等。在这种情况下,您没有在本地运行节点。 MetaMask还有一个localhost选项,您可以在本地运行自己的节点,MetaMask将向其发送所有事务(此本地网络可以是使用任何节点客户端的专用网络,也可以使用TestRPC等测试区块链)。
  3. Web3 Provider:这允许您在Remix中输入URL以连接到区块链。这里最常见的设置是运行本地节点并通过它的IP /端口连接到它。这与使用MetaMask的localhost选项几乎相同,但你只是将插件从中间人中删除。与选项#2一样,您连接的网络取决于您如何配置本地节点(可以是主节点,测试节点,私有节点等)。
  4. 因此,“智能合约的去向”取决于您设置的配置。选择Injected Web3并不意味着您的合同正在部署到Ropsten。这取决于您在MetaMask插件中选择的网络。

    通过Remix使用MetaMask时,您需要使用插件选择适当的帐户并确认/拒绝交易。选择帐户有点令人困惑,因为Remix没有获取导入MetaMask的所有帐户。帐户下拉列表仅包含当前在MetaMask中选择的帐户。此外,如果您在MetaMask中更改帐户,则必须重新加载Remix才能在下拉列表中选择该帐户。它不会自动检测MetaMask中帐户的更改时间。

    正确选择帐户后(假设您使用的是持有以太帐户),您现在可以部署合同。在Remix中点击Create,然后再次切换到插件。在那里,您应该看到等待批准的待处理事务。选择交易,然后单击“提交”。

    交易清单:

    enter image description here

    批准/拒绝屏幕:

    enter image description here

    提交后,交易将需要几秒钟才能完成。 MetaMask将在完成时显示。而已!要与合同进行交互,您可以通过Remix启动交易,类似于上面的部署步骤。