7

How can I tell if an address is from Mist, MyEthereumWallet or Parity? Is there anyway to know? Are they encoded differently?

  • No, there's no way to differentiate. All addresses are generated in the same way from a private key. Private keys are 256 random bits. A private key can be generated from seed words, which is about 256 random bits. – Ismael Jun 7 '17 at 18:22
  • 1
    Not really true. See my answer below :) – Jeff Coleman Jun 7 '17 at 20:35
9

TL;DR: Sort of.

As Ismael notes above, keys are random and all clients are following the same basic standards, meaning that being able to tell which client an address was generated by is not an intended feature of addresses. From the network's perspective, all addresses are created equal and contain no metadata about where they came from.

However, this is not the whole story. If you poke around on the network you will notice a significant number of accounts that start with "0x00", such as:

"0x00A85d2d62E1851ad5702e31619B10c7E4308522"

This can happen by random chance, with about a 1 in 256 chance of just randomly getting two hexadecimal zeroes at the beginning of your account address when you generate it. But the Parity and CPP-Ethereum clients actually create all accounts like this on purpose, so that they are short enough to use with the International Bank Account Number, or IBAN system. Certain other libraries are also "IBAN compatible". Not all addresses that start with two zeroes were created by Parity or those other libraries, but unless this is done on purpose only 1 in 256 accounts will start that way. So most addresses starting with two zeroes were created either by Parity, by CPP-Ethereum, or by one of the IBAN-compatible libraries.

And that's only the beginning! By default, Mist deploys a certain "wallet contract" which users store their funds and tokens in, rather than just storing them directly in an account controlled by their private key. The deployment and code of this contract is publicly visible and is a strong indicator that a user is using Mist.

Also, different clients have different ways of deciding what fee to set. Some clients use a certain market rate to determine what fees should be on a constantly changing basis, while others use only a fixed fee over and over again, or allow the user to set their own fee. Again, this can provide some evidence as to which wallet software a user is using to send transactions. And other types of metadata can allow further information to be gleaned (though not as much as in Bitcoin where the UTXO system can be handled in many different ways by many different clients).

Combining all of these things together, there actually is a reasonable chance that you can determine which client/wallet a given address has been created by!

To summarise:

  • No, there is not any different encoding of addresses per client
  • Most but not all addresses which start with "0x00" were generated by Parity, CPP-Ethereum, or certain specific "IBAN compatible" libraries
  • Mist deploys a certain "wallet contract" for users by default, the code for which is visible in the blockchain
  • Fees and other information unintentionally contained in transactions can often offer further clues as to which wallet software a user is using
  • Gathering this type of information can sometimes tell you which client/wallet a user is using.
  • 1
    Note that CPP-Ethereum generates the addresses similar to Parity. – Waqar Lim Jun 8 '17 at 10:17
  • Added in to answer. – Jeff Coleman Jun 9 '17 at 19:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.