繁体   English   中英

Remix Ethereum合约去哪儿了?

[英]Remix Ethereum where goes the contract?

当我单击remix.ethereum.org下的create时,我不理解智能合约的实际去向。 例如,如果我选择“注入的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。 但是我无法连接到智能合约,因为它不知道我实际在哪个网络中发布了智能合约,对吗?

Remix具有3个不同的环境选项,可用于部署/测试Solidity合同:JavaScript VM,注入的Web3和Web3提供程序。 可以在“运行”选项卡下的“环境”下拉列表中更改此选项。 (看来您已经掌握了这一部分...只是为了完整起见才进行记录)。

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

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

通过Remix使用MetaMask时,您需要使用插件来选择适当的帐户并确认/拒绝交易。 选择帐户有些混乱,因为Remix不会提取导入到MetaMask中的所有帐户。 帐户下拉列表将仅具有当前在MetaMask中选择的帐户。 另外,如果您在MetaMask中更改帐户,则必须重新加载Remix才能在下拉列表中选择该帐户。 它不会自动检测帐户在MetaMask中的更改时间。

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

交易清单:

在此处输入图片说明

批准/拒绝屏幕:

在此处输入图片说明

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM