Introduction to Bitcoin Terminology part I
- A hash is a function which transforms any number or string into a fixed size output which is impossible to do in reverse without trying all possible inputs. As an example of a simple hash function, consider the square root: the square root of 17202 is easy to calculate – it’s about 131.15639519291463, so a simple hash function might be the later digits of this, 9291463. However, given just 9291463 it’s much harder to figure out what number it came from, and you basically have to go through all the possibilities. Modern cryptographic hashes like SHA-256 are a much more complex and secure version of this. The word is also used to refer to the output of such a function.
- A traditional encryption algorithm is a function that transforms a message into an unreadable, random-seeming string using an encryption key, which cannot be reversed (ie. getting the original message back) except by someone who also knows the key. Encryption is the way that private data is sent over the public internet without serious risk of outsiders finding out what is being said.
- Public key cryptography is a method of encryption where every private key has a corresponding public key, from which it is impossible to determine the private key, and data encrypted with one key can be decrypted with the other. This lets you publish a key that lets anyone send encrypted messages to you without having to exchange a secret key first.
- A digital signature is something which can be attached to a message to show that the sender of the message is the owner of a private key corresponding to some public key while keeping the private key secret. It works by taking the hash of the message and then encrypting the hash with the private key. Someone checking the signature will decrypt the encrypted hash with the public key and check that the result matches the hash of the message. If the message is at all changed, or the private key is wrong, the hashes will not match. Outside of the Bitcoin network, signatures are generally used to authenticate the identity of the sender of a message – people publish their public keys, and send messages signed with the corresponding private key which can then be verified against the public key.
- A Bitcoin client is a piece of software that handles receiving and sending bitcoins. The most popular is the standard Bitcoin client downloadable from bitcoin.org, although there are many other options with different features.
- The term wallet can have two meanings: it can either be a synonym for a Bitcoin client (although the terms are in practice used slightly differently, “client” referring more to fully fledged desktop clients and “wallet” more to lightweight browser-based and online managed services) or it can refer to a file which stores bitcoin addresses and the private keys needed to use them.
- A Bitcoin address is a string like “13ignD31FysQbaBBVJUzffcQoFxxEuEcbE” that you need to know from someone to send bitcoins to them. The process of creating a bitcoin address and the private key going along with it can be done by bitcoin clients.
- A private key in the context of Bitcoin is a key connected to an address (technically, the address is the hash of the public key corresponding to the private key) that is stored behind the scenes and allows you to send bitcoins that have been previously sent to that address. Note that because of the way the encryption algorithm that Bitcoin uses (ECDSA) works it is possible to generate the public key and the address from just the private key.
- A transaction is a message that informs the Bitcoin network that a transfer of ownership of bitcoins has taken place, allowing the recipient to spend them and preventing the sender from spending them again once the transaction becmes public.