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-none
but 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() {
require(
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:
*
* trufflesuite.com/docs/advanced/configuration
*
* 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: infura.io/register.
*
* 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: "127.0.0.1", // 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, `https://speedy-nodes-nyc.moralis.io/4a7bb064f4ec9a2b9f650726/bsc/testnet`),
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, `https://network.io`),
// 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.
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: https://github.com/trufflesuite/truffle/issues/3356
Carlos Z
thank you I hope you ok too , I see now the problem. I will try also adding networkCheckTimeout
maybe works better.
Hey guys, So what was the final solution to this problem? Im having the error issue in ETH Game Programing course. Trying to deploy on testnet Kovan, any leads?
Hey @TotalingArc, try to increase the timeout parameter in truffle-config.js
or you can truffle migrate
again if it fails, usually it will continue where the migrations stop previously
@YosephKS
Hey man, Thanks for tip, but for some reason I didnt do that. I figured out what was the issue , thank again.
Hey, @YosephKS,
Im currently trying to create a migration file that put (ERC1155)tokens inside a marketplace to be sold to player. Im trying to complete my ETH Game Programming course. You think you can help me out? Thanks
ERC1155 Mintable.
Solidity 0.8.0
I can try my best, but please specify more in here also when you mean put ERC1155 inside the marketplace contract does it mean you want to mint the tokens first then pass it as a parameter in the contract or maybe have the ERC1155 as a child contract of the marketplace contract?
thanks for your answer, i had same issue and when i used wss it worked
can you tell me what is the diffrence of using wss or https when we use speedy node on Binance testnet and main net ? thanks alot
I think that it shouldn’t be a difference for deploy
okay thanks, cuz i see wss better for deployment and i dont get any error
thanks for the answer
the thing is i tried 10 times deploying with http node and i get timeout always with truffle
bsc_testnet: {
provider: () => new HDWalletProvider(
privateKeys.split(','),
`https://speedy-nodes-nyc.moralis.io/asdfaf/bsc/testnet`
),
network_id: 97,
confirmations: 10,
timeoutBlocks: 30000,
skipDryRun: true,
networkCheckTimeout: 5000000,
},
i want http and not wss
you could use the official http RPC from Binance too