Blockchain addresses with different versions

Is this an issue?

Usually, VASP A will get the destination address from the Originator, who got the address from the Beneficiary, who got the address from the BeneficiaryVASP. So the address VASP A gets is most likely the same address format that the BeneficiaryVASP use.

Therefore it should only be in a handful of cases that you might receive a travel rule message with a different destination address format than the one you use.

How to verify addresses when there are different formats

Some virtual assets have more than one address format that is "interoperable," meaning you can send either of the addresses, and they will arrive in the correct wallet regardless. Below is a non-exhaustive list of these with how the conversion can be done.


Legacy vs. xaddress

If you are using the XRPL address format, but the originating VASP is sending you an 𝗫-address, you can use the following javascript to convert it before doing the look-up in your address book:

const {Encode, Decode} = require('xrpl-tagged-address-codec')

const tagged = Encode({ account: 'rPEPPER7kfTD9w2To4CQk6UCfuHM9c6GDY', tag: 495 })

const untagged = Decode(tagged)


Bitcoin Legacy vs SegWit

Legacy address has addresses starting from 1 and SegWit address start from 3 or bc1 (one is for P2SH nested SegWit and the other is for native SegWit).

Note that 3 addresses are for P2SH addresses in general and are not just for SegWit.

bc1 addresses are for SegWit specifically but not all wallets support it yet.

Most addresses today are SegWit, so you should be receiving that in your travel rule messages.

Bitcoin Cash

Legacy vs. CashAddr

CashAddr encoding is an address format used in Bitcoin Cash. This is a Base32 encoding format that prevents confusion with Base58Check legacy address encoding also used by Bitcoin-BTC. The goal of the encoding is to make it easier to copy and to share information, by using a QR code for instance.

A Cash Address consists of:

A prefix which is human-readable.
A separator (:).
A Base32 payload which contains a version byte and the data (or hash).
A Base32 checksum.

You can find their converter here and some more information cashAddr here.


Byron (legacy) addresses vs. Shelley (new) addresses

The legacy (Byron) wallet address starts with this format:

Icarus-style: Starting with Ae2

Daedalus-style: Starting with DdzFF

The new (Shelley) addresses start with this format: addr1

Since Byron address is no longer supported, you should always have a Shelley destination address in the travel rule message.


Got more examples?

This list is expanded as issues are reported to us, so if you know of more coins that have legacy and a new address format, please let us know.