When working with cryptocurrencies, an address is a unique alphanumeric identifier that is used to receive payments. It can be shared with other users in the same way an e-mail address would be shared. Addresses can also be transformed into the QR code format, so it can be scanned by a mobile device or another camera. The QR code can (potentially) contain other information as well, such as transaction amount and a message. In public blockchains, such as Bitcoin, it is possible to see all transactions that have been made on a particular address by looking into a blockchain explorer.
How an address is derived
A public key is used as the basis for an address and it is derived from an associated private key. The private key allows the owner to spend the funds associated with its address. In hierarchical deterministic wallets, such as Trezor, all private keys and addresses (public keys) are derived from the user's recovery seed. The address derivation is as follow:
Recovery seed -> Account private key -> Private key -> Public key -> Address
For detailed information about how addresses are derived, please see this Address map
This process can be reproduced with the same result at any time, even offline. Therefore, when the same recovery seed is used, the same private keys and addresses are created in the same order. Public-key cryptography ensures that it is not possible to go backward - knowing the address does not make it possible to find the associated private key or recovery seed.
Users can create as many addresses as they want without any costs. This can be useful for e-commerce websites where a fresh (or unused) address is generated for each customer. On the other hand, the BIP44 standard for Bitcoin hierarchical deterministic wallets proposed to respect the Address gap limit, which is also used in Trezor Wallet, limits the number of fresh addresses created under one account to 20.
The address is a part of a given cryptocurrency network only after it is used in a transaction. Until then, it is just a string of characters suitable for fusing as an address.
Bitcoin addresses can be 26-34 characters long and consist of random digits and uppercase and lowercase letters (except I,l,0 and O due to visual ambiguity). All addresses also contain checksum (for verifying data integrity) which helps to prevent typos- addresses containing typos are rejected due to invalid checksum.
Several address types can be used for Bitcoin transactions. New address types were developed together with new Bitcoin features, eg., the new type of transactions which allowed multisignature and SegWit transactions. Bech32 addresses are the newest type of addresses that should improve the security of multisig transactions.
Address types are:
* P2PKH starting with 1, eg. 1Aais5SFub9MsLNPKFU7Aufroi4QebSiHC * P2SH starting with 3, eg. 33o9h1Vo6ghGRJPSW1edAsogWyNU2ypFv7 * Bech32 starting with bc1, eg. bc1qyvs3wwgr4x88ec3pjdf4xnwrgghq8whmmy5q0j
Addresses in Trezor Wallet
In Trezor Wallet, following the BIP44 standard, addresses are organized into separate accounts, and each can be given a custom label. According to the above-mentioned address gap limit, it is possible to generate 20 new unused addresses. It is considered best practice to use a new address for each incoming transaction, as it benefits user privacy. Trezor Wallet can also show receiving wallet addresses as QR codes, so they can be quickly scanned from a mobile device or by using another camera. If given access to a camera, Trezor Wallet can also scan the QR code of an address to send funds to. It is also possible to create as many accounts as the user wants, but only if the previous account has been already used.