Skip to main content
Unchained system addresses are generated by deriving from the public key, which is itself derived from the client's BLS private key, specifically within the G2 curve context. This setup is optimized for shorter signatures, with the trade-off of utilizing longer public keys.
After deriving the public key from the private key, the address is generated by first calculating the Shake256 hash of the public key, then taking the first 20 bytes of the hash, and finally encoding the result in Base32.
Two checksum bytes are appended to the address, which is calculated by taking the first 2 bytes of the Shake256 hash of the address, calculating the modulo 32 of each byte, and then encoding the result in Base32.
The final address format is as follows:
block-beta
  columns 4

  addr["FCB64Q7Y72N123NED23N0C0TEHHXZFSE"]:3 sum["8B"]:1
  space:4
  addrb["Address"]:3 sumb["Checksum"]:1

  addr --> addrb
  sum --> sumb

Unchained Address Format

This address format is used for the Unchained system and is the default address format for the client. The address is used to identify the client in the system and is used for various purposes, such as signing transactions and verifying signatures.
The address is case-insensitive, meaning that the same address can be written in either uppercase or lowercase. The checksum is used to ensure that the address is valid and has not been tampered with.
Unchained uses a custom Base32 encoding scheme for encoding public keys into addresses. The custom Base32 encoding scheme is designed to be more human-readable and easier to transcribe than the standard Base32 encoding scheme.
The custom Base32 encoding scheme uses the following character set:
As you can see, the custom Base32 encoding scheme excludes the letters "I", "L", and "O" to avoid confusion with the numbers "1", and "0". It also drops the letter "W" to avoid confusion with the letters "U" (double-U in English), and "V" (double-V in French).