Invoice address

From Bitcoin Wiki
Revision as of 22:56, 21 November 2012 by Casascius (talk | contribs) (Addresses can be created offline)
Jump to: navigation, search

A Bitcoin address, or simply address, is an identifier of 34 alphanumeric characters (or less), beginning with the number 1, that represents a possible destination for a Bitcoin payment. Addresses can be generated at no cost by any user of Bitcoin. For example, using Bitcoin-Qt, one can click "Get Address" and be assigned an address. It is also possible to get a Bitcoin address using an account at an exchange or online wallet service.

An example of a Bitcoin address is 175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W.

A Bitcoin address is like an e-mail address

Like e-mail, you can send bitcoins to a person by sending bitcoins to one of their addresses. A person can have many different Bitcoin addresses and, for increased privacy, it is recommended that you use a unique address for each transaction. Most Bitcoin software and websites will help with this by generating a brand new address each time you perform a transaction. Some services provide a facility to request a new Bitcoin address for use with their service when desired.

When using a web site that accepts bitcoins or holds Bitcoin balances on your behalf, that website will assign a Bitcoin address to your account, so you can transfer funds into your account at the site. Very much unlike e-mail, this address may change every time funds come in so care should be taken when sending additional funds to a previously-used address. When you send Bitcoins to your account at a web site, they will usually be credited to your account at that web site after the transaction is confirmed.

Addresses can be created offline

Creating addresses can be done without an Internet connection and does not require any contact or registration with the Bitcoin network. The network starts tracking an address when it is first seen in a valid payment transaction.

It is possible to create large batches of addresses offline using freely available software tools. Generating batches of addresses is useful in several scenarios, such as e-commerce websites where a unique pre-generated address is dispensed to each customer who chooses a "pay with Bitcoin" option.

An average desktop computer can generate thousands of new Bitcoin addresses a minute. Addresses are created simply by generating random numbers and then performing mathematical operations to derive matching pairs of "public" and "private" keys. Because addresses can be created easily and at minimal cost, it is not uncommon to create temporary addresses that can be discarded if unused.

Addresses are case sensitive and exact

Bitcoin addresses are case-sensitive. Bitcoin addresses should be copied and pasted using the computer's clipboard wherever possible. If you hand-key a Bitcoin address, and each character is not transcribed exactly - including capitalization - the incorrect address will most likely be rejected by the Bitcoin software. You will have to check your entry and try again.

The probability that a mistyped address is accepted as being valid is 1 in 232, that is, approximately 1 in 4.29 billion.

Address validation

If you would like to validate a Bitcoin address in an application, it is advisable to use a method from this thread rather than to just check for string length, allowed characters, or that the address starts with a 1.

Addresses have a "private key"

For each properly-generated Bitcoin address, there is a corresponding secret number known as a private key which is required for access to the funds assigned to that address.

When using a Bitcoin client, private keys are typically stored in the wallet file. The private key has a special purpose - it is mathematically needed to create valid transactions that spend the funds originally sent to the address. If the private key to an address is lost (for example, in a hard drive crash, fire or other natural disaster), any associated Bitcoins are effectively lost forever.

Future addresses that start with '3'

A new address format has been proposed where the addresses start with the number 3 instead of 1. These addresses represent "complex" destinations: instead of paying a wallet in the simple sense, a payment to such an address has a requirement for being respent that typically involves more than knowing a single private key. These can be thought of as the equivalent of writing a check to two parties - "pay to the order of somebody AND somebody else" - where both parties must endorse the check in order to receive the funds. Usually, the same person or organization manages all of the private keys associated with a complex address, but they are split up among different people or stored in different places in order to implement the security policy that the person or organization desires.

The actual requirement (number of private keys needed, their corresponding public keys, etc.) that must be satisfied to spend the funds is decided in advance by the person generating this type of address, and once an address is created, the requirement cannot be changed without generating a new address.

These addresses aren't intended to replace addresses starting with a 1, and addresses starting with 3 will not be available until support for P2SH (pay-to-script-hash) and BIP 0013 is formalized. When this happens, older versions of client software will not be able to send to addresses starting with 3. In order to send funds to such addresses, the software must be upgraded, or the funds must first be sent to another wallet managed by software that supports sending to such addresses.

What's in an address

Most Bitcoin addresses are 34 characters. They consist of random digits and uppercase and lowercase letters, with the exception that the uppercase letter "O", uppercase letter "I", lowercase letter "l", and the number "0" are never used to prevent visual ambiguity.

Some Bitcoin addresses can be shorter than 34 characters and still be valid. A significant percentage of Bitcoin addresses are only 33 characters, and some addresses may be even shorter. Every Bitcoin address stands for a number - somewhat like an account number. These shorter addresses are valid simply because they stand for numbers that happen to start with zeroes, and when the zeroes are omitted, the encoded address gets shorter.

Several of the characters inside a Bitcoin address are used as a checksum so that typographical errors can be automatically found and rejected. The checksum also allows Bitcoin software to confirm that a 33-character (or shorter) address is in fact valid and isn't simply an address with a missing character.

See Also