首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在安全帽环境中运行下一个dev命令?

如何在安全帽环境中运行下一个dev命令?
EN

Stack Overflow用户
提问于 2022-10-17 19:33:49
回答 2查看 113关注 0票数 -3

我正在使用安全帽框架来测试我的智能合同。我还在开发一个前端应用程序,使用React和NextJS。

目前,我正在本地机器中的分叉中使用多边形测试网,并使用它来部署我的合同。然而,我希望我的前端与分叉测试网中的智能契约进行交互,而不是真正的实时测试网。

为了分叉测试网,我在我的hardhat.config.js中包含了这个

代码语言:javascript
运行
复制
  networks: {
    hardhat: {
      forking: {
        url: "https://polygon-mumbai.g.alchemy.com/v2/xxxxxxxxxxxxxxxxxxxxxxxxx",
        blockNumber: 27270000
      }
    }
  },

我在前端设置了web3,如下所示:

代码语言:javascript
运行
复制
if (typeof window !== "undefined" && typeof window.ethereum !== "undefined") {
  // We are in the browser and metamask is running.
  window.ethereum.request({ method: "eth_requestAccounts" });
  web3 = new Web3(window.ethereum);
} else {
  // We are on the server *OR* the user is not running metamask
  const provider = new Web3.providers.HttpProvider(
    "https://polygon-mumbai.g.alchemy.com/v2/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  );
  web3 = new Web3(provider);
}

我可以在分叉网络中成功地部署我的合同。

到目前为止,运行npm next dev允许我的前端与实时测试网上的智能契约进行交互,这不是我想要的。如何更改开发环境以与分叉网络进行交互?

EN

回答 2

Stack Overflow用户

发布于 2022-10-20 18:14:04

当您启动本地硬顶帽节点npx hardhat node时,您将看到如下消息:Started HTTP and WebSocket JSON-RPC server at http://127.0.0.1:8545/

然后,只需将您的钱包或应用程序连接到http://127.0.0.1:8545

票数 0
EN

Stack Overflow用户

发布于 2022-10-20 19:17:11

用硬帽子叉子意味着

您可以启动一个硬帽子网络的实例,分叉主板。这意味着它将模拟具有与mainnet相同的状态,但它将作为本地开发网络工作。

因此,对于您的配置,您需要启动本地硬顶帽节点(请参阅多么):

代码语言:javascript
运行
复制
$ npx hardhat node
Started HTTP and WebSocket JSON-RPC server at http://127.0.0.1:8545/

这个本地URL (RPC )是您需要指向钱包的地方。

MetaMask

对于硬帽子,请确保将chainId: 1337添加到您的hardhat.config.js中(参见超链问题):

代码语言:javascript
运行
复制
module.exports = {
  solidity: "0.8.17",
  networks: {
    hardhat: {
      chainId: 1337,
      forking: {
        url: "https://polygon-mumbai.g.alchemy.com/v2/xxxxxxxxxxxxxxxxxxxxxxxxx",
        blockNumber: 27270000,
      },
    },
  },
};

然后,在本地运行分叉节点之后,您应该能够通过将本地网络添加到MetaMask钱包中来连接。

请参阅如何添加自定义网络RPC

  1. 单击顶部的“网络”下拉列表
  2. 选择Add Network
  3. 网络名称可以是你想要的任何东西(硬帽子)
  4. 输入RPC的http://127.0.0.1:8545
  5. 输入链ID的1337
  6. 由于您在多边形上,请输入货币符号的MATIC
  7. 点击保存并确保切换到本地网络

备注:

要设置web3js对象并连接到本地节点(通过WebSocket),您应该能够调用:

代码语言:javascript
运行
复制
const web3 = new Web3(Web3.givenProvider || "ws://localhost:8545")

为了检测Next.js应用程序中的Next.js钱包,我建议使用@元查询/检测-提供者包。

为了与区块链交互,我建议使用ethers.js而不是web3.js (参见关于虚实StackExchange的讨论)。它还有更好的工具,特别是使用hardhat

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74102327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档