An Account represents a private-public keypair which is accepted by the network.
An Account address is created from the public part of a keypair, usually encoded in base32 format, creating a 56-character string.
Private keys can digitally sign transactions and through the public account address, the network can verify if transactions were signed by the right account.
An Account is the most basic entity on the network and can own token, agreements, create traffic, ...
Decoded, the account address uses 35 bytes right now.
Account address byte contents
- 2 bits reserved for future usage FF
- 1 bit for marking pulse transaction
- 3 bits for different address types (8 options) TTT
- 2 bits for signing algo (4 options) AA
For signing and verifying transactions, we use ed25519 public-key cryptography. More info on ed25519
- This is a crc16 CCITT cyclic redundancy check on the other 33 bytes
While the address can be encoded in any format, the network uses base32 RFC 4648 without padding.
This provides all the advantages of base32 (can be put on url, easy to double-click copy, no weird characters, compact, ...)
Since base32 consumes 8 characters for every 5 bytes, this uses 56 characters for a 35-byte address.
Since one doesn't know if an account is derived from a parent key (hd-keys), it's important to never transfer ownership to another party by sharing the private key for an account.
One has no guarantee that the key isn't derived from another parent key. Where that parent key will retain signing capabilities and thus is able to to forge transactions in your name.
- Never share the key under the promise to not use it anymore.
- Always transfer ownership of the assets to a new account.
Example: imagine you want to sell an affiliate domain.
This means an ownership transfer operation should be done on the network, where you transfer the domain to a new account.