ETIMEDOUT error when I want to deploy my contracts on binance smart chain testnet

Hey community, I deployed my ERC 721 contract and NFT marketplace contract on binance smart chain testnet everything was ok then I would like to try something new with the same codes and I got error ETIMEDOUT. is there any limit on bcc testnet ? I tried also this truffle deploy --network BSCTestNet --reset --compile-nonebut it did not work. after 5-6 confirmations I got this error sometimes I could deploy ERC721 token and when it start to deploy Marketplace contract , this issue came out . I will try also different testnet but anyway I would like to fix the error . Thank you so much

Are you using your Moralis Speedy Node url for BSC Testnet in the truffle config? Truffle can be rather spammy when deploying contracts. Some public node providers can’t handle it and hit rate limits or timeout.

  • If you’re using a different node provider try using the websocket connection (Moralis nodes will support websockets very soon)
  • You can try increasing the timeouts in the truffle config see the truffe docs

thank you for fast responding.ok I see the problem now. yes I use Moralis Speedy Node for BSC Testnet , for sure I tried to increase timeouts in my truffle-config.js but I did not work well. what would be solution for it ? to use different node ?

please post your truffle config and migration code.

Migration code

// SPDX-License-Identifier: MIT
pragma solidity >=0.4.22 <0.9.0;

contract Migrations {
  address public owner = msg.sender;
  uint public last_completed_migration;

  modifier restricted() {
      msg.sender == owner,
      "This function is restricted to the contract's owner"

  function setCompleted(uint completed) public restricted {
    last_completed_migration = completed;


 * Use this file to configure your truffle project. It's seeded with some
 * common settings for different networks and features like migrations,
 * compilation and testing. Uncomment the ones you need or modify
 * them to suit your project as necessary.
 * More information about configuration can be found at:
 * To deploy via Infura you'll need a wallet provider (like @truffle/hdwallet-provider)
 * to sign your transactions before they're sent to a remote public node. Infura accounts
 * are available for free at:
 * You'll also need a mnemonic - the twelve word phrase the wallet uses to generate
 * public/private key pairs. If you're publishing your code to GitHub make sure you load this
 * phrase from a file you've .gitignored so it doesn't accidentally become public.

const HDWalletProvider = require('@truffle/hdwallet-provider');
// const infuraKey = "fj4jll3k.....";
// const fs = require('fs');
const mnemonic = require("./secrets.json").mnemonic

module.exports = {
   * Networks define how you connect to your ethereum client and let you set the
   * defaults web3 uses to send transactions. If you don't specify one truffle
   * will spin up a development blockchain for you on port 9545 when you
   * run `develop` or `test`. You can ask a truffle command to use a specific
   * network from the command line, e.g
   * $ truffle test --network <network-name>

  networks: {
    // Useful for testing. The `development` name is special - truffle uses it by default
    // if it's defined here and no other network is specified at the command line.
    // You should run a client (like ganache-cli, geth or parity) in a separate terminal
    // tab if you use this network and you must also set the `host`, `port` and `network_id`
    // options below to some value.
    // development: {
    //  host: "",     // Localhost (default: none)
    //  port: 8545,            // Standard Ethereum port (default: none)
    //  network_id: "*",       // Any network (default: none)
    // },
    // Another network with more advanced options...
    // advanced: {
    // port: 8777,             // Custom port
    // network_id: 1342,       // Custom network
    // gas: 8500000,           // Gas sent with each transaction (default: ~6700000)
    // gasPrice: 20000000000,  // 20 gwei (in wei) (default: 100 gwei)
    // from: <address>,        // Account to send txs from (default: accounts[0])
    // websocket: true        // Enable EventEmitter interface for web3 (default: false)
    // },
    // Useful for deploying to a public network.
    // NB: It's important to wrap the provider as a function.
    BSCTestNet: {
     provider: () => new HDWalletProvider(mnemonic, ``),
     network_id: 97,       // Ropsten's id
     gas: 5500000,     // Ropsten has a lower block limit than mainnet
     confirmations: 10,    // # of confs to wait between deployments. (default: 0)
     timeoutBlocks: 200,  // # of blocks before a deployment times out  (minimum/default: 50)
     skipDryRun: true     // Skip dry run before migrations? (default: false for public nets )
    // Useful for private networks
    // private: {
    // provider: () => new HDWalletProvider(mnemonic, ``),
    // network_id: 2111,   // This network is yours, in the cloud.
    // production: true    // Treats this network as if it was a public net. (default: false)
    // }

  // Set default mocha options here, use special reporters etc.
  mocha: {
    // timeout: 100000

  // Configure your compilers
  compilers: {
    solc: {
      version: "0.8.0",    // Fetch exact version from solc-bin (default: truffle's version)
      // docker: true,        // Use "0.5.1" you've installed locally with docker (default: false)
      // settings: {          // See the solidity docs for advice about optimization and evmVersion
      //  optimizer: {
      //    enabled: false,
      //    runs: 200
      //  },
      //  evmVersion: "byzantium"
      // }

  // Truffle DB is currently disabled by default; to enable it, change enabled: false to enabled: true
  // Note: if you migrated your contracts prior to enabling this field in your Truffle project and want
  // those previously migrated contracts available in the .db directory, you will need to run the following:
  // $ truffle migrate --reset --compile-all

  db: {
    enabled: false

Thank you so much

I did not solve the problem exactly but I deployed the contracts. I chanced my internet from wifi to mobil and It went much better , I don’t know definitely why then I used truffle deploy --compile-none after connected with network and contracts start to deploy again where it stopped.i tried a couple times and it works.

1 Like

Hey @aliekber1976, hope you are ok.

Glad to know that you solved, but I do think is not an issue from your side only, neither our speedy nodes, there are also other users that are facing the same issue.

Some suggest to add the option --compile-none, others by adding networkCheckTimeout to the truffle config.

you can follow more of those suggestions here:

Carlos Z


thank you I hope you ok too :slight_smile: , I see now the problem. I will try also adding networkCheckTimeout maybe works better.

1 Like