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

使用Truffle部署合约到Avalanche Fuji测试网遇PollingBlockTracker超时错误

部署Avalanche Fuji测试网时的Socket连接超时问题分析与解决

问题描述

尝试使用Truffle将智能合约部署至Avalanche Fuji测试网,使用的Truffle配置代码如下:

require('dotenv').config();
const mnemonic = process.env["MNEMONIC"];
const infuraUrl = process.env["INFURA_URL"]; //https://avalanche-fuji.infura.io/v3/...
 
const HDWalletProvider = require('@truffle/hdwallet-provider');

module.exports = {
  networks: {
    development: {
      host: "127.0.0.1",
      port: 8545,
      network_id: "*"
    },
    fuji: {
      provider: () => new HDWalletProvider(mnemonic, infuraUrl),
      network_id: "43113",
      gas: 5000000,
      networkCheckTimeout: 1000000,    
      timeoutBlocks: 200,
    }
  },
  ...
};

执行命令 truffle migrate --network fuji 时出现以下错误:

Compiling your contracts...
===========================
> Everything is up to date, there is nothing to compile.

/Users/me/Projects/myProject/node_modules/eth-block-tracker/src/polling.js:51
        const newErr = new Error(`PollingBlockTracker - encountered an error while attempting to update latest block:\n${err.stack}`)
                       ^
Error: PollingBlockTracker - encountered an error while attempting to update latest block:
undefined
    at PollingBlockTracker._performSync (/Users/me/Projects/myProject/node_modules/eth-block-tracker/src/polling.js:51:24)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at runNextTicks (node:internal/process/task_queues:64:3)
    at listOnTimeout (node:internal/timers:540:9)
    at processTimers (node:internal/timers:514:7)
UnhandledRejections detected
Promise {
  <rejected> {
    code: -32603,
    message: 'Socket connection timeout',
    data: { originalError: [Object] }
  }
} {
  code: -32603,
  message: 'Socket connection timeout',
  data: { originalError: { code: 'ERR_SOCKET_CONNECTION_TIMEOUT' } }
}
...

可能原因

  • Infura端点兼容性问题:Infura的Avalanche Fuji端点与Truffle的HDWalletProvider可能存在适配问题,或Infura节点对Avalanche网络的支持存在临时故障。
  • 网络配置参数缺失:现有配置缺少适配Avalanche网络的关键参数(如gasPrice),或HDWalletProvider未设置足够长的超时时间。
  • 本地网络拦截:即使网速正常,本地防火墙、VPN或代理可能阻止了与远程节点的长连接。
  • Infura API密钥无效:API密钥未启用Avalanche Fuji网络,或超出Infura的请求限额。

解决方案

1. 替换为Avalanche官方公共节点

直接使用Avalanche官方提供的Fuji测试网RPC端点,避免Infura的兼容性问题:

fuji: {
  provider: () => new HDWalletProvider(mnemonic, "https://api.avax-test.network/ext/bc/C/rpc"),
  network_id: "43113",
  gas: 5000000,
  gasPrice: 25000000000, // 设置为Avalanche推荐的25 Gwei
  networkCheckTimeout: 1000000,    
  timeoutBlocks: 200,
  skipDryRun: true // 跳过预运行步骤,减少连接请求
}

2. 调整HDWalletProvider超时配置

如果坚持使用Infura,给HDWalletProvider添加更长的超时参数:

provider: () => new HDWalletProvider({
  mnemonic: mnemonic,
  providerOrUrl: infuraUrl,
  timeout: 60000 // 将超时时间延长至60秒
}),

3. 检查本地网络环境

  • 关闭本地防火墙或临时禁用VPN/代理,尝试重新部署。
  • 若使用代理,确保代理规则允许访问Infura的Avalanche端点(https://avalanche-fuji.infura.io)。

4. 验证Infura API密钥

  • 登录Infura控制台,确认API密钥已启用Avalanche Fuji网络。
  • 检查密钥的请求统计,确认未超出免费额度或付费限额。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 20:13:15