The Bitcoin wallet is a file in users’ file system. It holds public and corresponding private key pairs and transactions made from and to that wallet. Also The keys are used to receive and send Bitcoins. Public keys are given to payers to identify recipients and private keys are used to sign transaction messages and confirm currency exchange. User preferences are also kept in wallet files which can and should be encrypted to mitigate the risk of parts loss to a hacker.
A Bitcoin address is a character identifier of 25-34 characters consisting of numbers and lowercase and lowercase letters. Most of the addresses used have 33 or 34 characters. The address usually starts with 1 and never contains the number 0 or the uppercase letter “O”, or the lower case “l” or “I” for better legibility. The address itself is removed from the public part of the Elliptic Curve Digital Signature Algorithms (ECDSA) key pair . After several hashing cycles with the RIPEMD-160 and SHA- 256 hashing algorithms, a checksum for the address is added and they are encoded with a modified Base 58 coding which results from the mentioned format.
The Bitcoin addresses and ECDSA key pairs both are not part of the structure of the Bitcoin network.
They can be created safely offline after the hash and encoding rules described in the original design. The Bitcoin network will only know the address after its first use and a transaction has reported it.
As the creation of addresses is simple and fast with several tools, including the original Bitcoin client, in order to improve these tools anonymity it is commonplace for the users to exploit several thousands of addresses. Although sending Bitcoins to invalid addresses is not possible, a transaction can be made to an address where the wallet file with keys is lost due to negligent owner behavior, machine failures, or malicious activity.
There is no way to use these parts again and they are lost forever.
This is another reason why it is wise for Bitcoin users to keep secure backups of their wallet.
The original Bitcoin client is written in C++ and is open-source, but several other programs are available to connect to the Bitcoin network and participate such as Java client BitCoin J that download just the block headers. By design, it is possible to ignore Bitcoin transactions since all the money received is already spent and therefore included in other transactions. These measures are necessary for Bitcoin to be scalable and to be used with high transaction volumes,