101: Blockchain Terminology
After a few months of trading cryptocurrencies, I was intrigued by what was going on under the Blockchain “hood”. I started with the usual google search “What is Blockchain” and as I started reading research papers and articles I found myself down a Google blackhole, googling every fifth word I was reading, thinking wtf is a merkle tree 🤷🏼 .
By the time I started building my own smart contracts I had a solid understanding of what was going on and found it easier to navigate the process of building a smart contract, from The Three Layer Model to the word Fungible (it’s fun to say, right?)
Below, is a compiled list of words that I needed further explanation on when I was starting out. In alphabetical order and starting from 0 because you know.. binary, array’s, genesis blocks.. cough cough.
Oh, and there’s a meme every ten definitions because there are sixty one in total and I want to keep this shit interesting (well more interesting). (Also Medium doesn’t let you insert an image into numbered lists so there are six groups of 10. I think about these things for my readers).
0. Addresses (Cryptocurrency addresses): Addresses are used to receive and send transactions on the network. An address is a string of alphanumeric characters, but can also be represented as a scannable QR code.
- Asymmetric Cryptography (Public Key Cryptography): Asymmetric cryptography, is also known as public key cryptography. It uses public and private keys to encrypt and decrypt data. The keys are large numbers that have been paired together but are not identical (asymmetric). A public key can be shared with everyone. The private key in the pair is kept secret. Protocols such as SSH, S/MIME rely on asymmetric cryptography for encyption and digital signature functions.
- Blockchain: Blockchain is a type of distributed ledger, comprised of unchangable, digitally recorded data in packages called blocks (rather like collating them on to a single sheet of paper). Each block is then ‘chained’ to the next block, using a cryptographic signature. This allows block chains to be used like a ledger, which can be shared and accessed by anyone with the appropriate permissions.
- Burning: Refers to the Proof of Burn consensus algorithm. Burning coins is the action of sending them to an address where they are irretrievable. As a miner, the more coins you burn, the better chance you have of being selected to mine the next block, thus earning more rewards.
- Confirmation: Confirmation means that the blockchain transaction has been verified by the network. This happens through a process known as mining, in a proof-of-work system (e.g. Bitcoin). Once a transaction is confirmed, it cannot be reversed or double spent (immutable). The more confirmations a transaction has, the harder it becomes to perform a double spend attack.
- Consensus Algorithm: A consensus algorithm ensures that the next block in a blockchain is the one and only version of the truth, and it keeps powerful adversaries from derailing the system and successfully forking the chain.The most widespread form of consensus algorithm is Bitcoin’s Proof of Work and involves contributing power in the form of computing capacity measured as hash rate. The most common alternative to POW of Proof of Stake. Other consensus algorithms include Proof of Activity, Proof of Burn, Proof of Capacity, Proof of Elapsed Time.
- Cryptography: Cryptography is the encryption and decryption of data. There are two main cryptographic concepts used in Blockchain, Hashing and Digital Signatures. In general, there are three forms of encryption that are widely used, symmetric cryptography, asymmetric cryptography, and hashing.
- dApp: A dApp is a decentralized application that must be completely open-source, it must operate autonomously, and with no entity controlling the majority of its tokens.
- Decentralisation: Decentralisation means the network operates on a peer-to-peer basis. A global network of computers use blockchain technology to jointly manage the database that records transactions instead of one central server.
- Design Goals: Design goals refer to the first step in the Blockchain 3 layer model. They are set of concepts or properties that you wish your smart contract to have. These include Distribution, Decentralization, Immutability and Peer to Peer.
- Digital Signature: Digital Signatures are a way to prove that somebody is who they say they are. A digital signature is a way to prove that a message originates from a specific person and no one else. When you visit a website, you are using SSL. This uses a digital signature to establish trust between you and the service.
- Disintermediation: The removal of middlemen. In Blockchain it refers to the removal of intermediaries from transactions. Examples of middlemen would be Visa and Mastercard.
- Distributed ledgers: Distributed ledgers are a type of database that are spread across multiple sites, countries or institutions. Distributed ledger data can be either “permissioned” or “un-permissioned” to control who can view it.
- Elliptic Curve Digital Signature Algorithm (ECDSA): ECDSA is a cryptographic algorithm used by Bitcoin to ensure that funds can only be spent by their rightful owners.
- Encryption: Encryption is the process of turning a clear-text message (plaintext) into a data stream (cipher-text), which looks like a meaningless and random sequence of bits.
- Ether: Ether is the native token of the Ethereum blockchain which is used to pay for transaction fees, miner rewards and other services on the network.
- Ethereum: Ethereum is an open software platform based on blockchain technology that enables developers to write smart contracts and build and deploy decentralized applications.
- Ethereum Test Network: To mitigate the risk of bugs in your smart contract on the main net it is important to test it before deploying to the Main Network. Ethereum has multiple test networks that you can set up as an acceptance environment. Ethereum Test networks include: Rinkeby, Ropsten and Kovan.
- EVM — Ethereum Virtual Machine: EVM is the Ethereum smart contracts byte-code execution environment. Every node in the network runs EVM. All the nodes execute all the transactions that point to smart contracts using EVM, so every node does the same calculations and stores the same values.
- EVM Byte Code: EVM Byte code is the programming language in which accounts on the Ethereum blockchain can contain code. The EVM code associated with an account is executed every time a message is sent to that account, and has the ability to read/write storage and itself send messages.
- Fiat Currency: Fiat currency is any money declared by a government to be to be valid for meeting a financial obligation, like USD or AUD.
- Fork: A fork is the creation of an ongoing alternative version of the blockchain, by creating two blocks simultaneously on different parts of the network. This creates two parallel blockchains, where one of the two is the winning blockchain.
- Fungible: Fungibility is the idea that every item in a set is worth exactly the same amount. In cryptocurrency, that means that tokens have the same value, regardless of who owns them or what their history is. Fungibility is extremely important to the success of a decentralised network.
- GAS: The usage of Blockchain costs money, the money is used to reward miners who validate your transactions and append them to the Blockchain. All transactions on the Blockchain have a fee associated with it, called GAS. GAS is a unit of complexity that is used to set the price of code execution. GAS complexity doesn’t depend on the current value of ether.
- Genesis Block: The Genesis Block is also known as Block 0. It is the block that every other block in the chain can be traced back to.
- Geth console (Go Ethereum): Geth is the the command line interface for running a full ethereum node implemented in Go. By installing and running geth, you can take part in the ethereum frontier live network and mine real ether, transfer funds between addresses, create contracts and send transactions, explore block history and more.
- Hardfork: A hardfork is a change to the blockchain protocol that makes previously invalid blocks/transactions valid, and therefore requires all users to upgrade their clients.
- Hashing Functions: The hash function transforms the digital signature, then both the hash value and signature are sent to the receiver. The receiver uses the same hash function to generate the hash value and then compares it to that received with the message. If the hash values are the same, it is likely that the message was transmitted without errors.
- Hashrate: Hashrate is the number of hashes that can be performed by a bitcoin miner in a given period of time (usually a second).
- Immutability: Immutability means a block cannot be modified after it is created. In Blockchain, blocks are chained together so that you can’t go back and change the contents of a block without having to change every subsequent block. Depending on the consensus protocol, you can’t change blocks without everyone else agreeing to it. This is sometimes referred to as “mutable by consensus”.
- Initial Coin Offering (ICO): Initial Coin Offering (ICO) is an event in which a new cryptocurrency sells advance tokens from its overall coinbase, in exchange for upfront capital. ICOs are frequently used for developers of a new cryptocurrency to raise capital.
- Instances: This process of creating a genesis block and associating it with a network is what we call an instantiation. And the chain of blocks that is built on top of genesis block is what we call an instance.
- Keccak-256: A type of cryptographic hashing function. Ethereum uses Keccak-256.
- Ledger: A ledger is an append-only record store, where records are immutable and may hold more general information than financial records.
- Master Node: A masternode is a cryptocurrency full node or wallet that keeps the full copy of the blockchain in real-time. It is always running. Master nodes are different to normal nodes because they increase the privacy of transaction, provide instant transactions, participate in governance and voting and enable budgeting and treasury systems in cryptos.
- Merkle Tree: A cryptographic hash tree structure that can store a very large amount of data, where authenticating each individual piece of data only takes O(log(n)) space and time. In Ethereum, the transaction set of each block, as well as the state, is kept in a Merkle tree, where the roots of the trees are committed to in a block.
- MetaMask: “MetaMask is a bridge that allows you to visit the distributed web of tomorrow in your browser today. It allows you to run Ethereum dApps right in your browser without running a full Ethereum node. MetaMask includes a secure identity vault, providing a user interface to manage your identities on different sites and sign blockchain transactions.”
- Mining: Mining is the process by which transactions are verified and added to a blockchain. This process of solving cryptographic problems using computing hardware also triggers the release of cryptocurrencies.
- Node: A node is any computer that connects to the blockchain network.
- OPcodes: Operation codes from the Bitcoin Script language which push data or perform functions within a pubkey script or signature script.
- Open Source: Open source software is software with source code that anyone can inspect, modify, and enhance.
- Peer-to-peer (P2P): Peer-to-peer (P2P) refers to the decentralized interactions that happen between at least two parties in a highly interconnected network. P2P participants deal directly with each other through a single mediation point.
- Permissioned Blockchains: Permissioned Blockchain networks allow the network to appoint a group of participants in the network who are given the express authority to provide the validation of blocks of transactions. Or, to participate in the consensus mechanism.
- Private Key: A private key is a string of data that shows you have access to bitcoins in a specific wallet. Private keys can be thought of as a password; private keys must never be revealed to anyone but you, as they allow you to spend the bitcoins from your bitcoin wallet through a cryptographic signature.
- Proof of Authority: Proof of Authority is a consensus mechanism in a private blockchain which essentially gives one client (or a specific number of clients) with one particular private key the right to make all of the blocks in the blockchain.
- Proof of Stake: Proof of Stake is an alternative to the proof-of-work system, in which your existing stake in a cryptocurrency (the amount of that currency that you hold) is used to calculate the amount of that currency that you can mine.
- Proof of Work: Proof of Work is a system that ties mining capability to computational power. Blocks must be hashed, which is in itself an easy computational process, but an additional variable is added to the hashing process to make it more difficult. When a block is successfully hashed, the hashing must have taken some time and computational effort. Thus, a hashed block is considered proof of work.
- Pseudonymity: Bitcoin is pseudonymous. In Bitcoin, your pseudonym is the address to which you receive Bitcoin. Every transaction involving that address is stored forever in the blockchain. If your address is ever linked to your identity, every transaction will be linked to you.
- SHA 256: SHA 256 is the cryptographic function used as the basis for bitcoin’s proof of work system.
- Sharding: Sharding is a type of database partitioning that separates very large databases the into smaller, faster, more easily managed parts called data shards. The word shard means a small part of a whole. The method is being researched by Ethereum to increase network scalability.
- Smart Contract: Smart contracts are contracts whose terms are recorded in a computer language instead of legal language. Smart contracts can be automatically executed by a computing system, such as a suitable distributed ledger system.
- Solidity: Solidity is a contract-oriented programming language for writing smart contracts. It is used for implementing smart contracts on various blockchain platforms.
- TestRPC: TestRPC is a Node.js based Ethereum client for testing and development. It uses ethereumjs to simulate full client behavior and make developing Ethereum applications much faster. It also includes all popular RPC functions and features (like events) and can be run deterministically to make development a breeze.
- The 3 Layer Model: It is said a blockchain is made up of three layers. 1. Design goals, 2. Implementations and 3. Instances. Each layer has additional properties that belong to it.
- Token: A token is a digital identity for something that can be owned.
- Transaction Block: A transaction block is a collection of transactions on the bitcoin network, gathered into a block that can then be hashed and added to the blockchain.
- Truffle: Truffle is a development environment, testing framework and asset pipeline for Ethereum, aiming to make life as an Ethereum developer easier.
- Turing Complete: A computer is Turing complete if it can solve any problem that a Turing machine can, given an appropriate algorithm and the necessary time and memory. When applied to a programming language, this phrase means that it can fully exploit the capabilities of a Turing complete computer.
- Unspent Transaction Output (UTXO): Referring to the bitcoin blockchain implementation (the second layer) the basic element being tracked are UTXO’s. A digital equivalent of a cheque. A bitcoin transaction regroups a set of non cashed cheques as input, cashes them in and produces a set of non cashed cheques as outputs. There are no UTXO’s used in Ethereum.
- Wallet: A wallet is a file that contains a collection of private keys.
- Web3.js: Web3.js is a collection of libraries which allow you to interact with a local or remote ethereum node, using a HTTP or IPC connection. Under the hood it communicates to a local node through RPC calls. web3.js works with any Ethereum node, which exposes an RPC layer.