Remix Ethereum 合约去哪儿了?

Posted

技术标签:

【中文标题】Remix Ethereum 合约去哪儿了?【英文标题】:Remix Ethereum where goes the contract? 【发布时间】:2018-06-30 06:59:28 【问题描述】:

当我单击 remix.ethereum.org 下的创建时,我不明白智能合约的实际去向。如果我选择例如 Injected Web3,这应该将合同发布到 ropsten 测试网,对吗?但是我怎样才能访问合同呢?当我使用 metamask 时,它会在我使用 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】:

Remix 有 3 种不同的环境选项可用于部署/测试 Solidity 合约:javascript VM、Injected Web3 和 Web3 Provider。可以在运行选项卡下的环境下拉菜单下更改此选项。 (看起来你已经掌握了这部分......只是为了完整性而记录)。

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

因此,“您的智能合约的去向”取决于您设置了哪些配置。选择 Injected Web3 并不意味着您的合同正在部署到 Ropsten。这取决于您在 MetaMask 插件中选择的网络。

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

一旦正确选择了帐户(并假设您使用的是持有以太币的帐户),您现在就可以部署您的合约了。在 Remix 中点击 Create,然后再次切换到插件。在那里,您应该会看到等待批准的待处理交易。选择交易,然后点击提交。

交易清单:

批准/拒绝屏幕:

提交后,交易将需要几秒钟才能被挖掘。 MetaMask 将在完成时显示。而已!要与合约交互,您可以通过类似于上述部署步骤的 Remix 发起交易。

【讨论】:

谢谢你,这对我帮助很大。因此,对于我的测试,我会将带有 metamask 的合约部署到 ropsten 测试网中,然后运行一个连接到 ropsten 测试网的本地节点。 @AdamKipnis 非常简洁的答案,应该在 Remix FAQ 中。谢谢。

以上是关于Remix Ethereum 合约去哪儿了?的主要内容,如果未能解决你的问题,请参考以下文章

去哪儿网怎么沦为骗子的平台了,一步步揭开去哪儿网欺骗消费者的把戏

去哪儿网消息队列设计与实现

我提交的文件去哪儿了?

POST 请求去哪儿了?

.bss vs COMMON:啥去哪儿了?

AutowirePartialView 可绑定属性去哪儿了?