Bitcoin mining is a process through which Bitcoin transactional information is validated and stored on the blockchain. It is also an incentive for people to provide their computing power to help support the network, thereby ensuring that transactions are validly executed and secured.
Transactions are collected by miners into what are called ‘blocks.’ Every block contains a hash of the previous block, thus all blocks together make a chain, hence the term ‘blockchain’. You can also visit Bitcoin Revolution if you are interested in bitcoin trading.
In order to add another transaction to a blockchain, you have to “mine” it.
Mining isn’t just about adding new transactions into blocks – it’s also about making sure that everything in your version of the blockchain is accurate. In particular, it confirms that none of your transactions will be invalidated by subsequent transactions, and so all of your trades will be completed as expected.
When a new transaction is initiated, it has to get in line to be mined into a block. Transactions are listed in the order they are received by everyone on the network. Miners have software that selects which transactions go next in line for their block, so there’s no guarantee any given transaction will be added to the next block, but typically only high-fee transactions remain viable long enough to ensure inclusion into several blocks.
When mining software selects a new set of transactions to work on every 10 minutes or so (the current average), it chooses according to criteria designed to give “honest” miners an advantage over “cheating” ones trying to do things like double spend.
The first miner to add a given set of transactions into a block gets their block added to the end of the blockchain, and then all other nodes in the network begin working on extending that chain (hence “blockchain”). When your Bitcoin software signs onto the peer-to-peer network and begins listening for new transactions, it has no way to know which ones are destined for you and which ones might be headed elsewhere. The reason we can trust our Bitcoin software is that there’s no one else it needs to trust; every node connected to the Bitcoin network validates every transaction before accepting it as real. If you’re trying to get someone who doesn’t trust you at all (and let’s say they’re capable of running a node on the Bitcoin network), you have to fool them.
To fool a node, you have to include some data in your transaction that tells their software it’s valid even if it isn’t. That is called a “redirect”. In practice, this means that at least one of the other transactions in your block will be invalidated by yours because you’re spending coins from another transaction that happened later chronologically but was placed earlier in the mempool list by someone else. Think of a payee who tries to cheat a merchant by sending a copy of the same money several times; only one would win and become valid while all others lose their funds for being second-place finishers. The way the mining process decides which transactions are invalid and which are valid is by whether or not they have a “higher” or “lower” hash than the current block. In fact, if you tweaked any aspect of a transaction in your new block at all — increasing its fee to be higher, for instance — it would create an entirely different hash value and thus a different result. The mining process uses certain data from each transaction to generate a unique ID number that helps it keep track of which transactions go into which blocks. That ID number is called a Merkle root.
The sequence of Events for Mining a Block
The sequence of events for mining a block basically goes like this:
1) Mining software collects new transactions from the peer-to-peer network and places them in the mempool ( list of transactions waiting to be mined into a block ).
2) The mining software chooses the transactions from the mempool that pay sufficient fees to be included in the new block.
3) The mining software calculates an appropriate nonce (random number). 4) The mining software uses the nonce along with other data about the current block to generate another number: the hash of the block.
5) If that hash doesn’t meet certain specific requirements, it’s back to step 3 for another nonce. If it does, then we’ve successfully mined a new block!
All of this is done by “mining” hardware — ASICs specifically designed for processing SHA-256 using an efficient mix of hardware and software. In order to win as much Bitcoin as possible with your mining hardware, you want to calculate hashes as fast as possible.