In recent weeks I’ve spent a bit of time discussing various aspects of blockchain, altcoins, and Bitcoin, and today I’m going to give transaction verification a once-over for our readers. Unlike the near-instant validation of funds that occurs when you utilize your fiat-based debit or credit card, there’s a slighter longer wait and some rather unique steps when it comes to transactions with Bitcoin and likeminded altcoins.
Bitcoin has raised so many hopes because it’s a “trustless” monetary system, meaning one that doesn’t require banks or other third-parties to verify transactions. But how exactly do they accomplish this feat?
In a word — miners.
At their core, miners are simply computers, or nodes, on the network that validate all transactions. When a cryptographically secure Bitcoin transaction is broadcast to the network, it’s added to a “block” with other transactions and the miners then utilize a mathematical process in order to verify the block, as well as all transactions contained within, and add it to the chain of prior blocks.
The miners are rewarded for contributing their computing resources to the network in freshly minted Bitcoin.
Bitcoin uses what’s known as the “SHA256” algorithm in order to “hash” data into a 256-bit number. This means that you can enter any type of data into the algorithm and it will “hash” it into a 256-bit number that uniquely identifies that data.
Before verifying a transaction, miners verify multiple key requirements:
- Whether the data structure and the syntax of the transaction are correct.
- Is the transaction under 1 MB.
- Is the transaction size more than or up to 100 bytes.
- Confirms that the outputs and inputs have values are not less than 0 or more than 21 million.
- Confirms that the locktime is less than the number allowed.
- Confirms that the input unlocking scripts are verified against that of the output.
- Confirms that the input value is within the required range.
- Confirms that the locking script and the standard format match.
- Confirms that a matching script exists.
- Ensure that all Coinbase transactions have a maturity of at least 100 confirmations.
- Confirms that the output for each input exists. If it has been spent, the transaction is rejected.
- Verifies that the script for unlocking can push numbers onto the stack.
- Rejection of transactions with values too low for an empty block.
- Rejection of transactions with input value that’s not as high as the output value.
- The node ensures that the signatures are not above the signature limit.
- Any transaction that is missing is moved into the orphan transaction pool.
Any transaction that doesn’t meet these requirements is rejected, helping to ensure that fraudsters don’t infiltrate the system by verifying that every transaction meets all requirements before being verified.
The “trustless” system is a little more complex than you may realize, but when it’s broke down to the basics, transaction verification isn’t all the difficult at all.