Understand that an Address: defined in CryptoCurrency; is a string of letters, and-or numbers that is publicly available and allows cryptocurrency to be received, held and sent.
--------------------------
A
Bitcoin address, or simply
address, is an identifier of 26-35 alphanumeric characters, beginning with the number
1
,
3
or
bc1
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 Core, one can click "New 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.
There are currently three address formats in use:
- P2PKH which begin with the number
1
, eg: 1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2
.
- P2SH type starting with the number
3
, eg: 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy
.
- Bech32 type starting with
bc1
, eg: bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq
.
List of address prefixes
Blockchain-based currencies use encoded strings, which are in a Base58Check encoding with the exception of Bech32 encodings. The encoding includes a prefix (traditionally a single version byte), which affects the leading symbol(s) in the encoded result. The following is a list of some prefixes which are in use in the reference Bitcoin codebase.
Decimal prefix
|
Hex
|
Example use
|
Leading symbol(s)
|
Example
|
0
|
00
|
Pubkey hash (P2PKH address)
|
1
|
17VZNX1SN5NtKa8UQFxwQbFeFc3iqRYhem
|
5
|
05
|
Script hash (P2SH address)
|
3
|
3EktnHQD7RiAE6uzMj2ZifT9YgRrkSgzQX
|
128
|
80
|
Private key (WIF, uncompressed pubkey)
|
5
|
5Hwgr3u458GLafKBgxtssHSPqJnYoGrSzgQsPwLFhLNYskDPyyA
|
128
|
80
|
Private key (WIF, compressed pubkey)
|
K or L
|
L1aW4aubDFB7yfras2S1mN3bqg9nwySY8nkoLmJebSLD5BWv3ENZ
|
4 136 178 30
|
0488B21E
|
BIP32 pubkey
|
xpub
|
xpub661MyMwAqRbcEYS8w7XLSVeEsBXy79zSzH1J8vCdxAZningWLdN3
zgtU6LBpB85b3D2yc8sfvZU521AAwdZafEz7mnzBBsz4wKY5e4cp9LB
|
4 136 173 228
|
0488ADE4
|
BIP32 private key
|
xprv
|
xprv9s21ZrQH143K24Mfq5zL5MhWK9hUhhGbd45hLXo2Pq2oqzMMo63o
StZzF93Y5wvzdUayhgkkFoicQZcP3y52uPPxFnfoLZB21Teqt1VvEHx
|
111
|
6F
|
Testnet pubkey hash
|
m or n
|
mipcBbFg9gMiCh81Kj8tqqdgoZub1ZJRfn
|
196
|
C4
|
Testnet script hash
|
2
|
2MzQwSSnBHWHqSAqtTVQ6v47XtaisrJa1Vc
|
239
|
EF
|
Testnet Private key (WIF, uncompressed pubkey)
|
9
|
92Pg46rUhgTT7romnV7iGW6W1gbGdeezqdbJCzShkCsYNzyyNcc
|
239
|
EF
|
Testnet Private key (WIF, compressed pubkey)
|
c
|
cNJFgo1driFnPcBdBX8BrJrpxchBWXwXCvNH5SoSkdcF6JXXwHMm
|
4 53 135 207
|
043587CF
|
Testnet BIP32 pubkey
|
tpub
|
tpubD6NzVbkrYhZ4WLczPJWReQycCJdd6YVWXubbVUFnJ5KgU5MDQrD9
98ZJLNGbhd2pq7ZtDiPYTfJ7iBenLVQpYgSQqPjUsQeJXH8VQ8xA67D
|
4 53 131 148
|
04358394
|
Testnet BIP32 private key
|
tprv
|
tprv8ZgxMBicQKsPcsbCVeqqF1KVdH7gwDJbxbzpCxDUsoXHdb6SnTPY
xdwSAKDC6KKJzv7khnNWRAJQsRA8BBQyiSfYnRt6zuu4vZQGKjeW4YF
|
|
|
Bech32 pubkey hash or script hash
|
bc1
|
bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4
|
|
|
Bech32 testnet pubkey hash or script hash
|
tb1
|
tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx
|
Note: that private keys for compressed and uncompressed bitcoin public
keys use the same version byte. The reason for the compressed form
starting with a different character is because a 0x01 byte is appended
to the private key before base58 encoding.
The following table shows the leading symbol(s) and address
length(s) for 160 bit hashes for each of the possible decimal version
values:
Decimal version
|
Leading symbol
|
Address length
|
0
|
1
|
up to 34
|
1
|
Q-Z, a-k, m-o
|
33
|
2
|
o-z, 2
|
33 or 34
|
3
|
2
|
34
|
4
|
2 or 3
|
34
|
5-6
|
3
|
34
|
7
|
3 or 4
|
34
|
8
|
4
|
34
|
9
|
4 or 5
|
34
|
10-11
|
5
|
34
|
12
|
5 or 6
|
34
|
13
|
6
|
34
|
14
|
6 or 7
|
34
|
15-16
|
7
|
34
|
17
|
7 or 8
|
34
|
18
|
8
|
34
|
19
|
8 or 9
|
34
|
20-21
|
9
|
34
|
22
|
9 or A
|
34
|
23
|
A
|
34
|
24
|
A or B
|
34
|
25-26
|
B
|
34
|
27
|
B or C
|
34
|
28
|
C
|
34
|
29
|
C or D
|
34
|
30-31
|
D
|
34
|
32
|
D or E
|
34
|
33
|
E
|
34
|
34
|
E or F
|
34
|
35-36
|
F
|
34
|
37
|
F or G
|
34
|
38
|
G
|
34
|
39
|
G or H
|
34
|
40-41
|
H
|
34
|
42
|
H or J
|
34
|
43
|
J
|
34
|
44
|
J or K
|
34
|
45-46
|
K
|
34
|
47
|
K or L
|
34
|
48
|
L
|
34
|
49
|
L or M
|
34
|
50-51
|
M
|
34
|
52
|
M or N
|
34
|
53
|
N
|
34
|
54
|
N or P
|
34
|
55-56
|
P
|
34
|
57
|
P or Q
|
34
|
58
|
Q
|
34
|
59
|
Q or R
|
34
|
60-61
|
R
|
34
|
62
|
R or S
|
34
|
63
|
S
|
34
|
64
|
S or T
|
34
|
65-66
|
T
|
34
|
67
|
T or U
|
34
|
68
|
U
|
34
|
69
|
U or V
|
34
|
70-71
|
V
|
34
|
72
|
V or W
|
34
|
73
|
W
|
34
|
74
|
W or X
|
34
|
75-76
|
X
|
34
|
77
|
X or Y
|
34
|
78
|
Y
|
34
|
79
|
Y or Z
|
34
|
80-81
|
Z
|
34
|
82
|
Z or a
|
34
|
83
|
a
|
34
|
84
|
a or b
|
34
|
85
|
b
|
34
|
86
|
b or c
|
34
|
87-88
|
c
|
34
|
89
|
c or d
|
34
|
90
|
d
|
34
|
91
|
d or e
|
34
|
92-93
|
e
|
34
|
94
|
e or f
|
34
|
95
|
f
|
34
|
96
|
f or g
|
34
|
97-98
|
g
|
34
|
99
|
g or h
|
34
|
100
|
h
|
34
|
101
|
h or i
|
34
|
102-103
|
i
|
34
|
104
|
i or j
|
34
|
105
|
j
|
34
|
106
|
j or k
|
34
|
107-108
|
k
|
34
|
109
|
k or m
|
34
|
110
|
m
|
34
|
111
|
m or n
|
34
|
112-113
|
n
|
34
|
114
|
n or o
|
34
|
115
|
o
|
34
|
116
|
o or p
|
34
|
117-118
|
p
|
34
|
119
|
p or q
|
34
|
120
|
q
|
34
|
121
|
q or r
|
34
|
122-123
|
r
|
34
|
124
|
r or s
|
34
|
125
|
s
|
34
|
126
|
s or t
|
34
|
127-128
|
t
|
34
|
129
|
t or u
|
34
|
130
|
u
|
34
|
131
|
u or v
|
34
|
132-133
|
v
|
34
|
134
|
v or w
|
34
|
135
|
w
|
34
|
136
|
w or x
|
34
|
137-138
|
x
|
34
|
139
|
x or y
|
34
|
140
|
y
|
34
|
141
|
y or z
|
34
|
142-143
|
z
|
34
|
144
|
z or 2
|
34 or 35
|
145-255
|
2
|
35
|
References
A Bitcoin address is a single-use token
Like e-mail addresses, you can send bitcoins to a person by sending bitcoins to one of their addresses.
However,
unlike e-mail addresses, people have many different
Bitcoin addresses and a unique address should be used for each
transaction.
Most Bitcoin software and websites will help with this by generating a
brand new address each time you create an invoice or payment request.
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.
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.
Newer "HD wallets"
can generate a "master public key" token which can be used to allow
untrusted systems (such as webservers) to generate an unlimited number
of addresses without the ability to spend the bitcoins received.
Addresses are often case sensitive and exact
Old-style 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 2
32, that is, approximately 1 in 4.29 billion.
New-style bech32 addresses are case insensitive.
Proving you receive with an address
Most Bitcoin wallets have a function to "sign" a message, proving the
entity receiving funds with an address has agreed to the message.
This can be used to, for example, finalise a contract in a
cryptographically provable way prior to making payment for it.
Some services will also piggy-back on this capability by
dedicating a specific address for authentication only, in which case the
address should never be used for actual Bitcoin transactions.
When you login to or use their service, you will provide a signature
proving you are the same person with the pre-negotiated address.
It is important to note that these signatures only prove one receives with an address.
Since Bitcoin transactions do not have a "from" address, you cannot prove you are the
sender of funds.
Current standards for message signatures are only compatible with
"version zero" bitcoin addresses (that begin with the number 1).
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 or 3. Validation may also be done using
open source code available in various languages or with an online validating tool.
Multi-signature addresses
Addresses can be created that require a combination of multiple
private keys.
Since these take advantage of newer features, they begin with the newer
prefix of 3 instead of the older 1.
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.
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.
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 (as few
as 26) 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.
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.
Testnet
Addresses on the Bitcoin Testnet are generated with a different address version, which results in a different prefix.
Misconceptions
Address reuse
Addresses are not intended to be used more than once, and doing so has numerous problems associated.
Address balances
Addresses are not wallets nor accounts, and do not carry balances.
They only receive funds, and you do not send "from" an address at any time.
Various confusing services and software display
bitcoins received with an address, minus bitcoins sent in random unrelated transactions
as an "address balance", but this number is not meaningful: it does not
imply the recipient of the bitcoins sent to the address has spent them,
nor that they still have the bitcoins received.
An example of bitcoin loss resulting from this misunderstanding
is when people believed their address contained 3btc. They spent 0.5btc
and believed the address now contained 2.5btc when actually it contained
zero. The remaining 2.5btc was transferred to a change address which
was not backed up and therefore lost. This has happened on a few
occasions to users of Paper wallets.
"From" addresses
Bitcoin transactions do not have any kind of origin-, source- or "from" address.
Address map