Testnet deployment error: Could not create addresses from your mnemonic or private key(s)

hi. I am trying to deploy my contract to Ropsten testnet and I keep getting this error message:

Could not create addresses from your mnemonic or private key(s). Please check that your inputs are correct.

Here is my truffle.config file:

    require("dotenv").config();
    const HDWalletProvider = require('@truffle/hdwallet-provider');

    module.exports = {
      networks: {
        development: {
        host: "127.0.0.1",     // Localhost (default: none)
        port: 8545,            // Standard Ethereum port (default: none)
        network_id: "*",       // Any network (default: none)
        },
        ropsten: {
          provider: () => 
            new HDWalletProvider(
              process.env.MNEMONIC,
              `https://ropsten.infura.io/v3/${process.env.INFURA_API_KEY}`
          ),

and my .env file:

    INFURA_API_KEY=dab2...
    MNEMONIC=”okay rhythm current...”
1 Like

Hi @crypto_economics,

It looks like there is an issue with your mnemonic. I was able to reproduce the error if I provided an invalid mnemonic. (For more details on connection to public test networks see: https://docs.openzeppelin.com/learn/connecting-to-public-test-networks)

I just generated a new mnemonic (:warning: This mnemoic is public so anyone has access to any value controlled by it)

$ npx mnemonics
npx: installed 18 in 2.959s
split axis exist miracle have input kite stock laugh govern property call

Access accounts from the console

$ npx truffle console --network ropsten
truffle(ropsten)> accounts
[ '0x1d22D1D6fd5724B0c3752f34718B1C3EC9C721e8',
  '0x7F310244AF80a72Be8a0FD3CD075e470D536ca34',

.env

Please note you would need to add your Infura Project ID

INFURA_API_KEY="ADD YOUR INFURA PROJECT ID HERE"
MNEMONIC="split axis exist miracle have input kite stock laugh govern property call"

truffle-config.js

/**
 * 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 = fs.readFileSync(".secret").toString().trim();

require("dotenv").config();
const HDWalletProvider = require('@truffle/hdwallet-provider');

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])
    // websockets: 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.
    // ropsten: {
    // provider: () => new HDWalletProvider(mnemonic, `https://ropsten.infura.io/v3/YOUR-PROJECT-ID`),
    // network_id: 3,       // Ropsten's id
    // gas: 5500000,        // Ropsten has a lower block limit than mainnet
    // confirmations: 2,    // # 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)
    // }
    ropsten: {
      provider: () => 
        new HDWalletProvider(
          process.env.MNEMONIC,
          `https://ropsten.infura.io/v3/${process.env.INFURA_API_KEY}`
        ),
        network_id: 3,       // Ropsten's id
        gas: 5500000,        // Ropsten has a lower block limit than mainnet
        confirmations: 2,    // # 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 )
   
    }
  },

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

  // Configure your compilers
  compilers: {
    solc: {
      // version: "0.5.1",    // 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"
      // }
    }
  }
};

@abcoathup thank you Andrew. So was there something wrong with the mnemonic!!! I just did what you posted above and I got "Network is up to date. truffle(ropsten)>" is that it then???

1 Like

I assume there was an issue with your mnemonic.

I recommend generating a new mnemonic and trying to deploy a contract to a public testnet.

Hi. I did generate a new mnemonic and followed all the steps above and when I ran truffle migrate --network ropsten i got ``Network is up to date. truffle(ropsten)>"` shouldn’t i be done then?

1 Like

Hi @crypto_economics,

It sounds like you already have deployed your smart contract.

You can remove your build directory and re deploy again.

@abcoathup Hi. I am trying to deploy again. Question: the new mnemonic generated above, I created a newHD wallet and input the new mnemonic. I also updated the mnemonic on my .env file. I ran again and go the same error: Could not create addresses from your mnemonic or private key(s)

1 Like

Hi @crypto_economics,

I would check the double quotes that you are using and make sure that you have all 12 words.

MNEMONIC="split axis exist miracle have input kite stock laugh govern property call"

@abcoathup yes, i tried that with the newly generated mnemonic and it didn’t work. Am trying to just revert it to directly entering the API KEY and mnemonic on my contract in order for it to work again…what a headache!

1 Like

Hi @crypto_economics,

I am sorry that you are having this issue.

What operating system, version of node and version of Truffle are you using?
I am not able to reproduce unfortunately.

@abcoathup hi. I am on a mac and Truffle v5.1.51 (core: 5.1.51)
Solidity - 0.6.0 (solc-js)
Node v10.15.0
Web3.js v1.2.9

1 Like

Hi, Andrew. Just wanted to let you know that I managed to finally get it to work! Thank you so much for your help! Open Zeppelin Community support is awesome.

Luke

1 Like

Hi @crypto_economics,

Glad to hear that you got it working. :clap:

What did you do to make it work?

@abcoathup hi. I setup a new folder and reinstalled all packages and tried from the beginning, which seems to keep working for me. This is the code in my trufflle.config.js file, which is no different from what I previously tried.

ropsten: {
  provider: () =>
    new HDWalletProvider(
      process.env.MNEMONIC,
      `https://ropsten.infura.io/v3/${process.env.INFURA_API_KEY}`
    ),
1 Like

A post was split to a new topic: Resources/examples to build out a front end for an ERC20 contract using React?