1

If I mis-typed or left out some characters, what is the threshold where the address won't be valid? I know Bitcoin and some other addresses have some type of error correction built into the address. What is Monero's?

1

The odds of getting a 4-byte cryptographic checksum to match is roughly 1 in 4 billion, 2^32 = (2^8)^4. A Monero address provides a 4 byte cryptograph checksum for detecting errors (parity). No Hamming error correction services are provided. Monero addresses without payment addresses and multisig abilities are always 95 characters in length.

The last 5-bytes of the hex encoded representation of a Monero address are base58-encoded. The lower 4-bytes of hex characters represent the checksum while the last byte of public view key bleeds into the top portion of the ninth base58-encoded segment that contains the checksum.

For details on how a Monero address is constructed see the working example at the bottom of Constructing a Stealth Monero Address?. For this working example, the 9th base58-encoding of ffADD56816 (hex) is Vr5GCd (base58). The ff comes from the lower portion of the public view key 3c450f27cd6849d9130addb2c566d910c5ef9bf4cecaed547004496fda52a4ff, and the ADD56816 comes from top four bytes of a Keccak-256 bit hash the Monero Cryptonote prefix in hex (12) + public spend key in hex + public view key in hex.

  • It's a 4-byte checksum, not a 5-byte checksum. – knaccc May 2 '18 at 17:52
  • i dont understand what that means. – Patoshi パトシ May 3 '18 at 2:57
  • The answer was updated to remove ambiguities. – skaht May 4 '18 at 15:43
0

A Monero wallet address is base58 encoded, and prior to encoding contains a four byte checksum.

This means that if you enter one or more characters incorrectly, there is only a one in 4.3 billion chance that the checksum will still validate.

The base58 encoded string will always be 95 characters long, so it cannot validate if you accidentally add or leave out any characters.

Note that the first character will communicate the address prefix, for which there are only 3 valid options for the live Monero network (regular, integrated and subaddress). Therefore you are even more restricted if attempting to change the first character of the address.

  • if i say remove a character from this address. what can it be replaced with to make it valid again, even though the address aren't 100% the same? – Patoshi パトシ May 2 '18 at 16:57
  • Should take a look at this working example at monero.stackexchange.com/questions/1409/…, where a base58-encoode operation is applied 9 times. The checksum is obtained from the 1st 5 bytes resulting from a Keccak operation of the Monero prefix + public_spend_key + view_public_key. – skaht May 2 '18 at 17:07
  • Don't confuse base58-encoding used by Monero addresses with base58check-encoding that has 4 byte checksums. – skaht May 2 '18 at 17:38
  • 1
    @skaht prior to being base58 encoded, a checksum is added which is the first 4 bytes of a keccak-256 hash of the address prefix and the two 32 byte public keys – knaccc May 2 '18 at 17:46
  • @knaccc - the example at the bottom of monero.stackexchange.com/questions/1409/… makes the details of how a Monero address is computed with a complete working example. It shows the 5-byte Keccak checksum prefix with a bit of crossover ffADD56816 (hex) that is converted to Vr5GCdj (base58) and is appended to the resulting Monero address. – skaht May 2 '18 at 18:48

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.