Making a hash of it
This
general ledger is a long list of blocks, known as the 'blockchain'. It
can be used to explore any transaction made between any bitcoin
addresses, at any point on the network. Whenever a new block of
transactions is created, it is added to the blockchain, creating an
increasingly lengthy list of all the transactions that ever took place
on the bitcoin network. A constantly updated copy of the block is given
to everyone who participates, so that they know what is going on.
But a general ledger has to be trusted, and all of this is held
digitally. How can we be sure that the blockchain stays intact, and is
never tampered with? This is where the miners come in.
When a block of transactions is created, miners put it through a
process. They take the information in the block, and apply a
mathematical formula to it, turning it into something else. That
something else is a far shorter, seemingly random sequence of letters
and numbers known as a hash. This hash is stored along with the block,
at the end of the blockchain at that point in time.
Hashes have some interesting properties. It’s easy to produce a hash
from a collection of data like a bitcoin block, but it’s practically
impossible to work out what the data was just by looking at the hash.
And while it is very easy to produce a hash from a large amount of data,
each hash is unique. If you change just one character in a bitcoin
block, its hash will change completely.
Miners don’t just use the transactions in a block to generate a hash.
Some other pieces of data are used too. One of these pieces of data is
the hash of the last block stored in the blockchain.
Because each block’s hash is produced using the hash of the block
before it, it becomes a digital version of a wax seal. It confirms that
this block – and every block after it – is legitimate, because if you
tampered with it, everyone would know.
If you tried to fake a transaction by changing a block that had
already been stored in the blockchain, that block’s hash would change.
If someone checked the block’s authenticity by running the hashing
function on it, they’d find that the hash was different from the one
already stored along with that block in the blockchain. The block would
be instantly spotted as a fake.
Because each block’s hash is used to help produce the hash of the
next block in the chain, tampering with a block would also make the
subsequent block’s hash wrong too. That would continue all the way down
the chain, throwing everything out of whack.
Competing for coins
So,
that’s how miners ‘seal off’ a block. They all compete with each other
to do this, using software written specifically to mine blocks. Every
time someone successfully creates a hash, they get a reward of 25
bitcoins, the blockchain is updated, and everyone on the network hears
about it. That’s the incentive to keep mining, and keep the transactions
working.
The problem is that it’s very easy to produce a hash from a
collection of data. Computers are really good at this. The bitcoin
network has to make it more difficult, otherwise everyone would be
hashing hundreds of transaction blocks each second, and all of the
bitcoins would be mined in minutes. The bitcoin protocol deliberately
makes it more difficult, by introducing something called ‘proof of
work’.
The bitcoin protocol won’t just accept any old hash. It demands that a
block’s hash has to look a certain way; it must have a certain number
of zeroes at the start. There’s no way of telling what a hash is going
to look like before you produce it, and as soon as you include a new
piece of data in the mix, the hash will be totally different.
Miners aren’t supposed to meddle with the transaction data in a
block, but they must change the data they’re using to create a different
hash. They do this using another, random piece of data called a
‘nonce’. This is used with the transaction data to create a hash. If the
hash doesn’t fit the required format, the nonce is changed, and the
whole thing is hashed again. It can take many attempts to find a nonce
that works, and all the miners in the network are trying to do it at the
same time. That’s how miners earn their bitcoins.
0 comments:
Post a Comment