If you want to start playing with Bitcoin you need to open an address or a wallet — that is how many addresses are called. Because Bitcoin keeps the users anonymous, some of the information has to be omitted — like the name or the transfer title.
Opening a new address can be as easy as registering a new email address. There are many services and applications that have an interface for Bitcoin wallets, like bitcoin.info or blockchain.info. A new address can be opened from the web browser without installing any additional software on your computer. Usually, the account will be protected only by a password, and if you would like to use this address from other services, a private key should be generated.
Another method to open a new address is to install one of the node applications like the Bitcore, the btcd, or the Bcoin. The difference between the software installed on your computer and services available on the Internet is that, for the former, no one keeps the password to your account but you. However, installing the Bitcoin node requires 160-200 GB of free space on the disk and a couple of days to download and synchronize your database with the public Blockchain.
The Wallet Address
The Wallet Address is a specific kind of address that you can login into. For every transaction, a new address should be generated (see The Transaction section). It does not mean that you should keep all the addresses and private keys for them to manage your funds. All new addresses will be automatically assigned to your wallet. All funds received by any of the assigned addresses will automatically be counted into the wallet balance.
The wallet number should not be used for any transaction and should not be shared with anybody else.
As I described before, the transaction can be described as a statement that some number of Bitcoins are moved from address A to address B and signed by address A’s owner's private key. This is the simplest situation that may occur in the blockchain. If you run an e-commerce shop that sells much stuff in one day, you will receive many transfers. Usually, every transfer will have a defined title related to the order number in your shop. Because of the anonymity that the Blockchain provides, there will be no title in the transfer, and it would be irrational to ask your customers to paste their Bitcoin address into every order.
In Bitcoin, if you would like to request a payment from someone else, you generate a unique address for this specific payment or a specific person. So, you, as a wallet owner, can have many addresses and generate a new one every time somebody needs to pay you with Bitcoin.
In the e-commerce shop, when the user selects the Bitcoin payment method, a newly generated address should be presented to him. A QR code is usually generated with the address because many users are using their smartphones to pay with Bitcoin. It is recommended to avoid rewriting the address by hand, as every mistake will cause the money lost.
The generated address should be saved in the database and assigned to the order. When the user makes the transfer, the funds appear at the generated address, and the user or the order can be recognized by this address.
There is no need to generate a new address for every order. They can be generated for a specific user or for a specific case. That depends on your business needs — if you run an e-commerce platform, then payments should be related to orders. If you run an investment or ICO project, then maybe it is best to generate an address for a user, and when you are raising money by an application similar to the Kickstarter, you may consider keeping only one address per project.
Making a Transfer
Let us consider another point of view — the returns. We will stick to the e-commerce example for a little bit longer. If somebody orders a dress and it does not fit, they should be able to return the order and receive the money back. The application should ask for the pay-back address. This address should be generated by the user, but it is not necessary.
The system prepares the transfer and publish it to the blockchain. This transfer will not be confirmed until it is mined with the next block. Moreover, there should be a fee added to the transfer which will be received by the miner. The fee is set by the sender and should be balanced to keep it low, but not too low, because it may happen that the transfer remains waiting on the pending list forever.
I described that a transfer could be described as moving funds from address A to address B. But, as I wrote before, the funds are counted to the Wallet. If you received 10$ to 10 different addresses and would like to make a payment for 10$ you do not need to make 10 different transfers. In Bitcoin, every unit is assigned to your wallet, and you make a payment from your wallet and sign it with your wallet's private key. In the Blockchain, the transfer will be presented as a transfer from those 10 different addresses to the receiver address.
This transfer is done by one user that received his funds to a couple of different addresses that are listed on the left side. If the amount of money does not match the amount of money that is sent to the receiver, the rest is transferred to a new address that will be assigned to your wallet. If the numbers match, there will be only one address on the right site.
Every transaction needs to be sent with the fee. The miner will be rewarded with this fee when the transaction is added to the next block. All miners want to earn as much Bitcoin as they can so transactions with the highest fees will be mined first. The Bitcoin algorithm does not specify the lowest fee, so it is possible to send a transfer without any fee, and some of the miners accept transactions without fees, but this is a really rare situation. Most likely, this transaction will remain stuck on a pending list.
The block is a set of information with a list of transactions. The block is defined by its hash number, the previous block's hash number, and the list of transactions. Every block is published in approximately 10 minutes. That means if you send a proper transaction with the fee high enough to be mined in the next block, the block with this transaction may be published in next 2 minutes, next 10 minutes, or next 60 minutes (with another 6 blocks).
When the transaction is added to the first block, it is already confirmed.
The Blockchain is a ledger containing all published and confirmed blocks in a specific, chronological order. All blocks that are added to the blockchain are safe and cryptographically confirmed. The question is, what happens if somebody wants to add a wrong block to the blockchain? Bitcoin provides a mechanism that secures this state called mining or proof of work. Those two terms define the same thing.
When you receive a transfer to your bank account, you trust that that money can be spent. Bitcoin does not provide a true/false value that says the transaction was successfully processed, but gives a number of confirmations. Because some of the blocks may be orphaned (for different reasons) the number which you trust should be balanced with the time of confirmation.
That happens because while every block is mined in approximately 10 minutes, it depends on the fee and the blockchain load. So, if you would like to be pretty sure that the payment is secure, then it has to have more confirmations. This implies that it requires more time — 1 confirmation takes 10 minutes, 6 confirmations take 60 minutes.