Could your application benefit from a blockchain? (Part 1)
Can your application leverage a blockchain? While not every application can use a blockchain, there are application characteristics that lend themselves to the functionality that blockchains provide.
In this two part article, I want to propose a structure for determining whether or not your application can leverage a blockchain. To be clear however, I’m going to focus on enterprise-type applications, and I’m going to specifically ignore applications that have to do with trading cryptocurrencies.
Before we get into the determining whether or not your application can use a blockchain — we need to define some terms so we are all talking about the same things. I’ve tried to make these definitions nontechnical (well — except for the “double linked list”) and understandable by everyone.
Peer-to-Peer Network (P2P)
In a peer-to-peer network, computers on the network are equal, with each workstation providing access to resources and data.¹
Examples of peer-to-peer networks include the music sharing service Napster from the late 1990s.
Node
Each independent computer on a P2P network.
Double Linked List
A special version of a linked list data structure which has pointers (a link) to the previous item in the list as well as the next item in the list. (This is where the chain in Blockchain comes from.)
Distributed Database
A database with copies on the nodes of a P2P network.
Note that there has to be software on these nodes to keep the database in sync across all nodes. Often times blockchains call this the “Core” software.
Ledger
A book or collection of accounts in which account transactions are recorded. Each account has an opening or carry-forward balance, and would record each transaction as either a debit or credit in separate columns, and the ending or closing balance.²
Historically, ledgers were actual books. Now, digital ledgers use a database to store transactions.
Cryptography
The practice and study of techniques for secure communication in the presence of adversarial behavior.³
Blockchain
A digital ledger on a distributed database that leverages cryptography to secure the stored transactions. The ledger is stored in blocks (the block part of blockchain), connected via a double linked list, thereby allowing the order of the transactions to be maintained.
For another (but similar) take on the definition of a blockchain see https://learn.block6.tech/blockchains-future-ee7b1861d9ae
There are a few other concepts that we need to define and discuss to fully understand whether your applications can leverage the blockchain.
Permissioned vs Permissionless blockchains⁴
In short, permissionless blockchains are open blockchains that allow anyone to run a node. (Just a side note — you don’t need to run nodes to have an application running on a blockchain.) Permissioned blockchains are private and you need to be invited in by the blockchain consortium that is running that particular blockchain. Obviously permissioned blockchains are more centralized than permissionless.
Smart Contracts
If there was one concept in blockchain that couldn’t be easier, but isn’t — it’s the smart contract. You can research smart contracts yourself and find a plethora of definitions and concepts of what it is. I’m going to make this really simple — a smart contract is application code that runs on a blockchain. (So we are not talking about the code that keeps the distributed ledger in sync on the nodes — we are talking about application code — business logic that runs on the blockchain.) Simple enough?
Next Steps
That’s all we need to define to determine whether your application can leverage a blockchain. In Part 2, I’ll pull these terms together to help you decide whether you can use a blockchain for your application.
- Are application objects being transferred between accounts? Can these be modeled via ledger transactions?
- Do you need to trust a third party (but would prefer not to)?
- Do you need to run your own nodes?
- What about Personal Identifiable Information (PII)?
- What type of blockchain should you use? Permissioned or Permissionless?
- Smart contracts
- Transaction costs
- https://www.sciencedirect.com/topics/computer-science/peer-to-peer-networks
- https://en.wikipedia.org/wiki/Ledger
- https://en.wikipedia.org/wiki/Cryptography
- https://www.techtarget.com/searchcio/tip/Permissioned-vs-permissionless-blockchains-Key-differences#:~:text=Permissionless%20blockchains%2C%20also%20known%20as,fully%20decentralized%20across%20unknown%20parties.