Introduction to Blockchain


Blockchain talk seems to be everywhere these days. But what is a blockchain? Well, using as many buzzwords as possible, a blockchain is an uncensorable, immutable, decentralized, distributed ledger. Peeling these buzzwords away, one will see that a blockchain is an unalterable database that no one person or entity controls, spread out across multiple points of operation, and anyone can anonymously interact with it and add to it without a central authority controlling or stopping the interaction.

Consider this: What is “The Internet?” In the purest form of the term, the internet refers to a group of interconnected machines that forward packets of information to each other. Things like apps, websites, and message boards are accessible via the internet, but they are not the internet itself. Interestingly, a blockchain does not refer to the computers or machines that participate in the blockchain. A blockchain refers to the ledger itself, in simplest terms, a giant file that is identical and unalterable across all machines that store it. The file contains the entire history of interactions among the blockchain users. This “file” is referred to as the blockchain. Moreover, there will very likely never come a day where the general public refers to “The Blockchain” as a singular entity as we do with “The Internet.” At the very least, not accurately. There are already thousands of blockchains out there with more coming to existence every day, and all these blockchains are tailored to specific uses. One may be for music streaming, one for file storage, one for finance, one for asset management, and so on. In the future, these blockchains will be able to communicate with one another similar to how websites talk to one another today. However, to say that you are storing some money on “The Blockchain” and uploading a song to “The Blockchain” and signing a land contract on “The Blockchain” will probably be a misnomer, as you will likely be interacting with many different blockchains without even knowing it.

Deconstructing Blockchains

Blockchains come in many different types and flavors. They all utilize some form of the following concepts:

Ledger The ledger is the data set that is growing over time as participants add data to it. It holds a chronological history of all interactions and acts as a record of all activity. The ledger may represent transactions of value between participants. It may also represent code, static data, or whatever else one wants to store on the blockchain network, as different blockchains are designed differently.

Block The “block” in blockchain refers to a set of transactions neatly bundled into a single morsel of data. As each block is added to the ledger, it creates a “chain” of blocks. There is usually a set time period for each block that is added. In Bitcoin's case, it is ten minutes per block. Other blockchains vary, with ARK block times clocking in at a surprising eight seconds.

Node A node is represented as a machine that stores a copy of the ledger, and contributes to the entire network being in agreement that the ledger is correct. A node could be a personal computer, a server, or even a phone, depending on how the blockchain network is architected.

Consensus Model. The consensus model is used as the protocol by which all nodes abide. It is what allows the blockchain network to run accurately without a single person or entity in charge. Some examples of consensus models are Proof-of-Work, Proof-of-Stake, and Delegated Proof-of-Stake. More on consensus models will be revealed later on in this piece.

Economic Incentive. Because blockchains are trustless and decentralized, an economic incentive is needed to run nodes. That essentially means the people who keep the blockchain alive and honest need to get paid. This is usually achieved through collecting transaction fees every time average users interact with the ledger. In many blockchain designs, the system also issues new coins or tokens to the node operators, who then sell or trade them on the open market.

Mining. This is the act of using a node to acquire newly created coins or tokens. Various blockchain designs handle this process differently, but the most common use of the term refers to the Proof-of-Work consensus model like Bitcoin, where machines are spending processing power to attempt to solve a complex mathematical problem correctly. A successful answer awards the transaction fees of a block and new coins to the machine, and the block is added to the ledger.

Wallet. A wallet can also be viewed as a terminal or client that interacts with the blockchain and makes requests to the network for new data to be added. The primary reason this client is called a wallet is that right now in blockchain world, it is mainly used for viewing the balance and transferring value to other wallets. The wallet can also be used to carry out other use-case specific tasks, though, if these features are built. In many blockchain architectures, the wallet also maintains a copy of the entire blockchain on the client machine. This means that to use the wallet on the blockchain network, a “sync” process is required. In ARK's case, the wallet works instantly without syncing, as only nodes are responsible for maintaining copies of the ledger.

Address. This is the virtual location where control of a wallet and coins reside. In this instance. Although usually, we manage funds through our wallets and addresses, it could be any data such as medical records, documents or smart-contract. The address is not dissimilar to something like a username, IP Address, email address, or bank account number. While you do not want something like your bank account number or even your email address to be publicly available, this is not an issue as the private key and public key are required to do anything related to the data associated with the address other than assign control of data to it (i.e. send funds to it). In most blockchain environments, the address is a cryptographic derivative of the public key.

Public Key. The public key is the part of the public/private key pair that is visible to the entire network when transactions are made. The public key is used by anyone in the network to verify the authenticity of a transaction. This means that when a wallet is used to submit data to be added to the blockchain, the public key is published as part of the transaction. Why are addresses used when the public key is just as good in identifying blockchain data owners? This is because the address adds an extra layer of protection against possible future vulnerabilities, and takes up less space since it is shorter. If someone were to send control of some blockchain data to a brand new address, the network would not know what the public key was- only the address, which is a cryptographic derivative of the public key. Thus, the public key would not be publicly known until the new address creates and signs a transaction. If some future vulnerability is discovered regarding the algorithm that governs the public/private key pair, funds in brand new addresses would still be safe and the vulnerability can then be repaired. This is why you hear of the idea where, to be hypervigilant in security, after you publish a transaction using address A to send funds to someone else over in address B, and address A has some “leftover data” (money), it is advised to move control of that leftover data (money) to brand new address C, which you control. It should be mentioned here, that in the ARK Ecosystem mainnet, voting for a delegate exposes the public key of a given address. Thus, if your plan is to practice hypervigilant security by moving unspent funds to brand new wallets that you then use to vote for delegates, you are not actually achieving anything. On its own, the cryptographic public/private key pair algorithm is quite secure indeed, so there is no imminent issue. However, to achieve an additional level of hypervigilant, tin foil hat, CIA black site level security, you may want to consider storing funds in brand new addresses that have never interacted with the blockchain or voted for delegates.

Private Key. This acts as the “password” allowing access to blockchain data controlled by the public key, and in effect, the address. Every public key has an associated private key. In most blockchain architectures, the private and public keys are generated using the cryptography standard of the blockchain network- you would not create your own custom private and public keys. When generating these keys, access to the Internet is not required and usually discouraged for security reasons. The keys will be generated in such a way that the system will understand when you use them, and you are not communicating with the system to generate the keys. After generating the keys, you would resume the Internet connection. Hacking a private key is astronomically difficult, and more on that is available later on in this piece.

Signatures. When a wallet wants to submit data to be added to the blockchain, the wallet cryptographically combines the public and private keys along with blockchain data to create a signature. This signature is used by the network to validate the origin and authenticity of a transaction. In most blockchain architectures, signatures are public, but no information about the private key can be gleaned from the signature itself. However, anyone can use the public key to determine the “correctness” of the signature.

Putting It All Together

Let us put it all together in the context of a blockchain that transfers value.

Alice wants to send Bob some coins or tokens, so she will first use a wallet to generate an address, with an associated public and private key. At this point, the public key is unknown to the system because Alice has not spent any money from the new address. Alice will then send the address to Dan via email for example, and Dan, who has a wallet with some tokens in it, will use his wallet to create a transaction with some blockchain data like “send Alice one token.” He will sign the transaction using his private key, which uses some more cryptography to create a signature. The transaction is then broadcast to the network, which goes into a list of unconfirmed transactions. The network operates on top of nodes that are maintaining copies of the ledger and searching for new transactions to add. The system groups some pending transactions into a block and waits for a node to be selected via the consensus model. The selected node is then awarded an economic incentive, possibly via mining, transaction fees, or both, and attaches the block to the blockchain. The other nodes then update their copies of the blockchain, double checking the work using some more cryptography. Now that Alice has one token, she can send 0.6 tokens to Bob, for example. In that case, Alice may want to transfer the unspent 0.4 tokens to a brand new address, if she is interested in maintaining hypervigilant security.