2017-02-20

Blockchain Terminology - a developer perspective

One of the discussions I had with SCC's committee on "Blockchain and electronic distributed ledger technologies" was about the various terminologies used by the Bitcoin / blockchain community. In light of that, I figured I would put together some of my interpretations of those terms as they might be viewed by a developer working in the field. The following list is by no means exhaustive and it could be further refined, but I hope at least some of the examples and nuances in meaning would be helpful in expanding some of the definitions of more rigorous dictionaries.

Address

A string of characters representing the destination of a funds transfer on a Blockchain. For example, "1PiachuEVn6sh52Ez7o6Fymvw54qvQ4RBm" is a Bitcoin address, "0xcd234a471b72ba2f1ccf0a70fcaba648a5eecd8d" is an Ethereum address. Addresses are usually a human-readible representations of a Public Key composed using a fixed scheme, but they can also represent concepts that don't correspond to Keys, like Ethereum's contract addresses.

In most blockchain systems, every entity can own many addresses. Some blockchains like Bitcoin focus on creating a lot of addresses, while others, like Ripple, focus on reusing the same address many times over.

Addresses are analogous to bank account numbers.

Altcoin

A term that originated early in the Bitcoin history, an Altcoin refers to "an alternative coin implementation", usually being an alternative to Bitcoin. It has often been used dismissively and sometimes even derogatorily, especially when referring to a lot of "copycat coins" that are a carbon copy of Bitcoin with minor tweaks. Most well known Altcoins include Litecoin and Dogecoin.

A lot of Altcoins mostly focus on tweaking small parameters of Bitcoin while preserving how the system operates on a higher level. The tweaks most often focus on the Hashing Algorithm, Block creation time, Coin distribution, name and branding.

When an Altcoin is created solely to be speculated on and then abandoned, it's usually referred to as a "pump and dump" or a "ScamCoin".

Some part of the community refers to every non-Bitcoin cryptocurrency as an Altcoin, while others shy away from this term when talking about more sophisticated projects that differ greatly from Bitcoin, such as Ripple or Ethereum.

Block

A Block is a cryptographically secured collection of Transactions along with some extra information stored in the Block Header. That extra information usually states the Hash of the previous Block, the current time, and the Merkle Root of the transactions, among other information.

There is usually some limitation to how many and how often Blocks are created in a given Blockchain project. In Bitcoin, the Blocks require a Proof of Work to be valid. Ripple Blocks require a consensus to be reached.

Blocks are usually referred to by their Hash. Due to how their Hash is computed, the Block cannot be altered without creating a completely different Hash.

Blockchain

A Blockchain is a collection of Blocks refering to one another in a linear sequence all the way to a Genesis Block. Because of how the chain is created, any change to any Block in the sequence would invalidate all of the Blocks that came afterwards. This is one of the core features of a Blockchain known as Immutability.

If two or more Blocks refer to the same previous Block Hash, this is known as a Fork. In most systems, only one of those Blocks will be considered valid, usually the one that will end up in the longest branch.

The term "Blockchain" is also used to refer to the projects that use Blockchains. Bitcoin is a Blockchain project that contains the Bitcoin Blockchain. This term was popularized in mid-2015 by large enterprises such as Overstock and NASDAQ wanting to use the then called "Bitcoin technology" without using the term "Bitcoin" due to its various connotations.

Colored Coins

A Colored Coin is an idea of "earmarking" particular outputs of a given Transaction and assigning some extrinsic value to them, usually representing some real world assets or currencies. This is the most basic implementation of a Crypto 2.0 system, allowing simple Blockchains such as Bitcoin to track non-native currencies.

There are specific rules governing how a perticular implementation of Colored Coins handles transaction mixing and other related features.

CryptoCurrency

A CryptoCurrency is a cryptographically secured currency. The authorisation of transfers of CryptoCurrency between Addresses is handled either by public-key cryptography, or Smart Contracts.

Most Blockchain projects contain at least one form of Native CryptoCurrency, often referred to as a Coin or a Token. Bitcoin the project is used to transact in bitcoin the currency, Litecoin - litecoins, etc. Some projects have multiple native tokens (such as Factom with its Factoids and EntryCredits), while a few projects (usually Permissioned Blockchains) have none (such as Hyperledger or Eris).

Some Blockchain projects, sometimes referred to as "Crypto 2.0", can also support user-created CryptoCurrencies. Those usually take a form of an IOU for a real-world asset, such as BitstampUSD on Ripple, or TetherUSD on Omni. A few projects also create currencies based on derivatives from the Native Tokens, such as BitUSD. Some of the Crypto 2.0 projects that support Smart Contract allow for complex script to manage how the currency behaves.

Decentralized Autonomous Organizations

A Decentralized Autonomous Organization (or DAO) is a computer software that is able to manage money without being reliant on third parties. They usually take a form of an automated Smart Contract, but the definition can also include some Blockchain Projects as a whole, such as BitShares.

DAOs are created with a set of rules governing how it will handle its money (usually in a form of the Native Cryptocurrency). Once put in place those rules are usually immutable.

DAOs can exist in a legal gray area due to their distributed nature. One of the first concepts for a DAO is that of a decentralized casino. While operating an online casino might be illegal in some jurisdictions, it is hard to say whether a DAO casino is legal or not.

The most well-known example of a DAO was called "The DAO".

Distributed Ledger Technology

Distributed Ledger Technology is a term used to describe a superset of the Blockchain Technology and ledgerless crypto suites (such as Corda or Open Transactions).

The term is relatively new as of February 2017 and it may be seen as a way for governments and big companies to further move away from the terms "Bitcoin" and "Blockchain".

Fork

There are multiple different concepts in the Blockchain space that are referred to as "forks".

The simplest Fork is a Repository Fork - a term originating from software development where a developer copies a repository of a given project to create their own version of the software. This is most often used to create Altcoins - most of them are Forks of the Bitcoin repository, or other forked repositories.

Another type of Fork is a Blockchain Fork. It is an event in which there are multiple competing blocks of the same height. Those Forks may occur naturally due to multiple Miners creating a Block each at a similar time, or they can be malicious, for example - a result of a 51% Attack.

The last type of Fork is a Blockchain Fork caused by changes in the software operating the Blockchain (such as bitcoind). Those Forks may be incidental (such as the March 2013 Bitcoin fork), or deliberate (Ethereum's DAO fork). The latter are generally split into two kinds - Soft Forks and Hard Forks.

Soft Forks are less invasive and mainly require the Miners to upgrade their software. Old software will still recognize new blocks created after the Soft Fork as valid. An example of a Soft Fork could be the bugfix for Value Overflow Incident.

Hard Forks are more invasive and require everyone to upgrade their software. Old software will not recognize new blocks or transactions as valid after the Hard Fork. The Ethereum DAO Fork is perhaps the most famous example of a Hard Fork.

Contentious Hard Forks can sometimes lead to network splits, where a part of the network and community decide not to opt into the Forked code and Blockchain, and instead decide to take a different approach. Ethereum Classic is a network split that resulted from the DAO Fork.

Hash

A Hash is a cryptographic digest of a piece of data. Hashes are most often used to refer to a given Transaction or a Block, as each of them would have a unique Hash, and the length of that Hash is short enough to be easy to use.

Most Blockchain Projects use the SHA256 hashing algorithm dominantly, with ocasional use of other algorithms (such as RIPEMD-160 being used by Bitcoin for creating its Addresses).

The Block Hash is also an integral part of the Proof of Work Mining algorithm.

Merkle Tree

Merkle Tree is a tree build out of Hashes. Each node in the tree is a hash of its child nodes. The final hash in the Merkle Tree is called a Merkle Root.

Merkle Trees are used to create a single Hash that represents a collection of Hashes. It can be used in Simplified Payment Verification or Proof of Existence to prove a given Transaction was part of a Block by specifying only log2(n) hashes, rather than n hashes it would take to list all of the Transaction Hashes. SPV is an important part of Light Nodes / Wallets.

Miner

Miner is an entity involved in the Mining process of a Proof of Work Blockchain, such as Bitcoin. Other Block generation schemas use different terminology for similar functions - Validators, Farmers, etc.

The term Miner can refer to:
  • The machine doing the computations
  • The business owner running said machines
  • Less frequently, to the piece of software performing the computations
Miners often use Mining Pools to pool their computation resources and create Blocks together to reduce the variance of their income.

Mining

Mining is the process by which Miners create a Proof of Work Block in Blockchains such as Bitcoin. It is a process of iterating through many possible Blocks (often iterating using the Nonce) until the Block satisfied the PoW criteria. This involves the Hash of the Block being a number smaller than the Target for a given block (see: Difficulty).

The Miners are rewarded for creating a valid Block by the Block Reward and any Fees spent by Transactions included in the Block.

There are also a handful of minor activities similar to Block Mining that serve a different purpose. As Addresses are essentially random numbers, some people iterate over them in a process of Vanity Address Mining to create a desirable looking Address (similar to vanity plates for cars). One can also mine for different Transaction Hashes, but it's a fringe activity used only in special cases.

Node

A Node is a computer running the specialized software used to communicate directly with a Blockchain Network. A Node is often a Wallet, but it doesn't need to be.

Generally, there are two types of Nodes - a Full Node and a Light Node.

A Full Node downloads and stores all of the Blockchain information. It can provide the data to other Nodes in the network as needed. Distributed Blockchain Networks require a web of Full Nodes to be operating at all times to maintain the network.

A Light Node only downloads the core data it needs to validate the current Blockchain status (most often - Block Headers) and any information relating to the Addresses it cares about. It has a much lower memory and network footprint than a Full Node, but it cannot provide all of the information a Full Node might. A set of Full Nodes is till required to maintain the network.

Nonce

A nonce is a random number used to easily create a different input. It is most notably used in a Block Header to create a different Block Hash without changing any important information stored in a Block. This is most often used in Proof of Work Blockchains that need to iterate over many block hashes. Due to the avalanche effect, changing even a single bit in the nonce creates a completely different Hash.

Permissioned Blockchain

A Permissioned Blockchain is a Blockchain Project that restricts access to its Blockchain in some way to the users. It could require user authentication before they can connect their nodes to the network, or even download their Clients.

In constract, Permissionless Blockchains, such as Bitcoin, are inclusive by nature, allowing anyone to join and transact on the network.

Permissioned Blockchains are still in early phases of adoption as of February 2017. For their time being, their target market consists of banks, governments and other large entities that want to exert some form of control over their Blockchain network. This could be done due to regulatory, KYC or other reasons.

Some Permissionless Blockchains do offer some features for their users to restrict access to some of their financial assets. Ripple allows explicit white- and blacklists of Addresses, while Smart Contract scripts give even finer control over how a given asset can be used.

Proof of Existence

Proof of Existence is a cryptographics-based proof that a given piece of data existed, unchanged, at a given point in time. It can be used as a replacement for a notary service.

Proof of Existence relies on a public Blockchain, such as Bitcoin's. The data in question is hashes and embedded into a Transaction or a Block. Given that a Block contains a timestamp and it is impossible to rewrite old Blocks without invalidating the proceeding Blocks, it is possible to prove the data existed in its current form no later than when that Block was created.

Factom is one Blockchain project that focuses on providing Proof of Existence "as a service". It maintains its own Blockchain that is itself "anchored" into the Bitcoin Blockchain, extending the Proof of Existence to a bigger amount of data.

Proof of Stake

Proof of Stake is an alternative Block creation algorithm to Proof of Work. Instead of relying on a lot of computational power to create a Block, one instead relies on a large supply of Coins. The reasoning behind Proof of Stake is that an attacker trying to subvert the network would be risking a lot of their wealth in the attempt, therefore they would be disincentivised to attack the network to preserve the value of their Coins. Similarly, users with a lot of Coins have a high stake in keeping the Blockchain operating properly to increase the value of their Coins.

Proof of Work

Proof of Work is a Block creation algorithm that uses a Hashing algorithm to ensure predictable Block creation rate. It relies on the fact that a Hash of a Block is essentially a very large random number, and that it takes some computational time to create the Hash. While it might take a fraction of a second to create one Hash, having to create a lot of Hashes takes a significant amount of time and resources.

A valid Block has a Hash smaller than a given Target (see Difficulty). To create a Hash that satisfies that criteria, the Miner needs to compute many potential Hashes until they find a satisfactory one. Since Hashes are essentially random numbers, it is easy to approximate how many times one would need to compute a Hash to get one that is small enough.

As more Miners join the network with more powerful Mining machines, they naturally can compute more Hashes in the same amount of time. The Proof of Work algorithms are designed to handle that by making it harder to compute a valid Hash by lowering the Target more and more. If the Miners leave the network and the available computational power decreases, the Target increases to maintain the Block creation speed.

Another important design of the Proof of Work algorithm is that it takes a lot of computational power to create a valid Hash, but very little to verify it (one needs to hash the data once).

Proof of Work is used to secure the Blockchain Network from attackers trying to subvert it (they would need to have a lot of spare computing power), as well as to create a fair distribution model for the Coins (Miners are rewarded with newly minted Coin for creating a valid Block).

Smart Contracts

A Smart Contract is a simple computer script that represents an implicit contractual agreement between the parties to transact in the way described by that contract ("Code is Law"). Smart Contracts are an important aspects of such Blockchain Projects like Ethereum. In contrast to traditional legal contracts, Smart Contracts do not need a legal team to enforce them, and once put in place they usually cannot be altered. Smart Contracts can contain functions that can be called by creating a specific Transaction. The code execution is deterministic and is carried out by the Miners.

Smart Contracts may be paired with legal contracts (such as in the case of Corda), but that's rarely the case on most Blockchains.

See also: Decentralized Autonomous Organizations.

Transactions

A Transaction is an atomic operation on the Blockchain. It usually involves transfer of Cryptocurrency between Addresses, but some Blockchain Projects also have non-monetary Transactions (such as invoking a function in a Smart Contract on Ethereum, or setting a trustline in Ripple). Transactions are grouped into Blocks.

In Blockchains like Bitcoin, Transactions specify the Transaction outputs they consume to cover their fees and the outputs they create. There are some Blockchains (like Ripple or Factom) that operate on account-balance model, which keeps a running tally of the funds remaining in an account, so a Transaction doesn't need to specify which outputs they are consuming.

Transactions are authorised by the use of private-public key cryptography. A Transaction spending an output from a given Address is only valid if the private key associated with a given Address has signed the transaction.

Most Blockchain projects contain some special Transaction types. Most common special Transaction type is the Coinbase Transaction. It is the first Transaction of a given Block that credits the Miner newly minted Coins for creating that Block. This Transactions has no Inputs and is not signed by any Address. Coinbase Transactions are both rewards to the Miners and a way to distribute new Coins into the network.

Wallet

A Wallet is a collection of Addresses along with their associated private keys. The term can also refer to the piece of software that manages that Wallet, and the file that stores the data (a Wallet file).

Wallets can take the form of a standalone application (sometimes paired with a Node or a daemon, such as BitcoinQT), a web application (such as Blockchain.info's MyWallet), or be managed by a third party (such as Coinbase).

Access to the private keys is an important aspect of the Wallet design. There are services that host encrypted Wallet files, but don't have access to the keys as the user is encrypting and decrypting the file on their local machine. Other services secure their own keys and manage user's funds akin to a bank.