You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Ubuntu下truffle migrate连接Rinkeby报401错误咨询

报错根因

Unexpected server response: 401是Websocket连接区块链节点时鉴权失败的标准返回,和合约编译逻辑无关,问题由两个核心原因导致:

  • Rinkeby测试网已于2022年底正式关停,包括Infura在内的所有节点服务商都已停止Rinkeby节点服务,你配置的wss://rinkeby.infura.io地址本身已经失效
  • 配置存在逻辑错误:代码开头定义了从环境变量读取私钥和Infura ID,但实际初始化HDWalletProvider时硬编码了打码截断的私钥、打码的Infura地址,即便Rinkeby没关停,残缺的鉴权参数也会被节点直接拒绝连接返回401。
修复步骤
  1. 弃用已下线的Rinkeby测试网,更换为当前官方支持的Sepolia测试网
  2. 修正配置逻辑,不要硬编码打码的私钥、节点地址,统一从环境变量读取有效参数,避免参数残缺
  3. 调整网络参数匹配Sepolia规则,删除Rinkeby专属的无效配置
  4. 确认Infura控制台中对应项目状态正常,若开启了强制Project Secret鉴权,需要在初始化Provider时传入对应secret参数

修正后的可用truffle-config.js配置参考:

const HDWalletProvider = require('@truffle/hdwallet-provider');
const privateKey = process.env.privateKey;
const infuraId = process.env.infuraId;

module.exports = {
  networks: {
    sepolia: {
      provider: () => new HDWalletProvider(
        privateKey, 
        `wss://sepolia.infura.io/ws/v3/${infuraId}`
      ),
      gas: 5000000,
      gasPrice: 15000000000,
      network_id: 11155111,
      timeoutBlocks: 200,
      confirmations: 2
    },
  },
  mocha: {},
  compilers: {
    solc: {
      version: "0.8.11",
      settings: {
        optimizer: {
          enabled: true,
          runs: 200
        },
        evmVersion: "london"
      }
    }
  },
};

配置完成后,提前给部署钱包地址领好Sepolia测试ETH,执行truffle migrate --network sepolia即可完成部署。

安全提示:不要把私钥硬编码在配置文件中,避免私钥泄露造成资产损失。

内容的提问来源于stack exchange,提问作者theone satoshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 10:15:29