Error: Unknown address - unable to sign transaction for this address

I have issues executing methods on my contract after deployment on Ropsten.

$ zos send-tx --network ropsten --from=0x9F833d555c786cb748bd7b8072b18e699A093f24
[ '0x2353e45ff9613cfb05cc797e15cc37fd0d7f9658' ]
[ '0x2353e45ff9613cfb05cc797e15cc37fd0d7f9658' ]
? Pick an instance NCDToken at 0xb11d2ca96CE8C0923868E9E662A8c65dbE4E0afd
? Select which function mint(to: address, value: uint256)
? to (address): 0x9F833d555c786cb748bd7b8072b18e699A093f24
? value (uint256): 100
✖ Calling: 'mint' with:
- to (address): "0x9F833d555c786cb748bd7b8072b18e699A093f24"
- value (uint256): "100"


Error while trying to send transaction to 0xb11d2ca96CE8C0923868E9E662A8c65dbE4E0afd. 
Error: Unknown address - unable to sign transaction for this address: "0x9f833d555c786cb748bd7b8072b18e699a093f24"

0x9F833d555c786cb748bd7b8072b18e699A093f24 has the minter role, as can be verified on Etherscan.io:
https://ropsten.etherscan.io/address/0xb11d2ca96ce8c0923868e9e662a8c65dbe4e0afd#events

Therefor I call the transaction with --from=minter-address

Since the error message is called “unknown address”, what does it mean? I have seen this error quiet often recently in combination with the --from statement.
Do I use “zos send-tx” wrong?

I guess that private key to this address is not known to zos, although it was derived from mnemonics out of network.js. Is there any chance to unlock it somehow in order to sign transactions for send-tx?

zos-version: 2.4

1 Like

truffle-hdwallet-provider exposes one address (by default) so using --from with any other address will fail.

To expose additional addresses from the same mnemonic set num_addresses in your config.

For example, the following starts at address index 0 and loads two addresses. You can then send-tx with a --from using the second address.

    ropsten: {
      provider: () => new HDWalletProvider(process.env.DEV_MNEMONIC, 'https://ropsten.infura.io/v3/' + infuraProjectId, 0, 2),
      networkId: 3,
    },
2 Likes

Ah yes, this was it :slight_smile: Thanks again. Finally I use this snippet including the HD-wallet-address-issue in order to use MyCrypto-App for managing funds and token:

ropsten: {
  provider: () => new HDWalletProvider(
    process.env.DEV_MNEMONIC, "https://ropsten.infura.io/v3/" + infuraProjectId, 0, 10,
    true, "m/44'/1'/0'/0/"
    ),
  network_id: 3,       // Ropsten's id
  gas: 6000000,
  gasPrice: 5e9,
},

It gives me 10 addresses.

1 Like

I have updated the guide to include a note on this.

MyCrypto has a default for Ethereum of m/44' /60' /0' /0 and suggests m/44' /1' /0' /0 for testnet.

1 Like