What is blockchain?
Every article with ‘blockchain’ in its title should start with this question answered in a way that is too simplified for developers and too complicated for business users. Let's repeat this mistake here. Blockchain is a technology to store and manage data. It has been a crypto-magic before becoming a buzzword, spoiled by ‘tokens’ and ‘crypto-currencies’. It is still a very complicated technology if you try to understand how it is built. Bitcoin (https://bitcoin.org/en/how-it-works) as a first mass-market blockchain application requires very good knowledge of cryptography and algorithms to understand its nature. Etherium (https://ethereum.org/en/developers/docs/) - the second big step forward (from geeks to people) - is even more complicated and adds to blockchain the idea of managing code similar to managing data. Let’s stop here and allow a meticulous reader to read official documentation, blueprints, protocol standards… (for a month or two…)
The truth is that you don’t have to understand cryptography behind blockchain in order to use it. But it is still too complicated to use it without understanding how it works inside. And it is too complicated for non-technical people to apply it in their business.
How to use blockchain?
Blockchain is a very interesting technology, attractive for a wide variety of programmers. It includes network technologies, algorithms, cryptography, data structures, high availability and more top grade programmers’ attractions. As a result there is a strong community of professionals who have created a vast codebase and knowledgebase ready to use and adapt. Blockchain is considered to be very promising in certain business domains. As a result, big companies are also contributing a lot into the technology, making it ready for enterprise usage.
Today we don’t need to develop blockchain, we need to choose a set of tools and frameworks that are already developed, tested and ready for any purpose. There are SDKs for all popular languages and platforms (https://ethereum.org/en/developers/docs/programming-languages/), there are blockchain implementations (https://www.hyperledger.org/use, https://consensys.net/quorum/, https://trufflesuite.com/ganache/) and algorithms (https://ethereum.org/en/developers/docs/consensus-mechanisms/) for any scale. These tools are complicated, highly qualified developers and sysadmins required to configure and use those properly. But they shouldn’t be cryptography experts, they do not need to implement new security-critical algorithms or communication protocols. Anyone can build a crypto-token today, just use the standard (https://ethereum.org/en/developers/docs/standards/tokens/) you like!
What about Sitecore?
Let’s say you need to use blockchain in a Sitecore solution. We are ready! Most probably you will want to have a private blockchain. It can be installed on your own servers, popular cloud providers have a number of templates that can start a private blockchain for you in minutes. Next, your development team will use an appropriate client (just take a look at one of them - https://github.com/Nethereum/Nethereum - it is close to perfect!) or adapt something suitable. Use smart contracts in Order Cloud, blockchain operations in Sitecore XM, xConnect, request a distributed ledger data from Sitecore Identity Server or CDP - it is all possible. I can imagine such code running virtually in any part of any Sitecore product.
We may even adapt our Sitecore solution to a revolutionary Web 3 architecture (https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application), but this transition looks questionable today (https://moxie.org/2022/01/07/web3-first-impressions.html)
Where to use blockchain?
Well, in reality this should be the first question to ask and to answer. Because, as someone said, “blockchain is a solution looking for a problem”. Let’s skip all the tokens and crypto-currency hype, burning oil and gas for mining and other doubtful applications of the technology.
Blockchain has unique capabilities and here are some known problems it can solve better than anything else.
Trust. Multiple interacting parties are writing data in a common database without need to build any ‘trust’ between them, because the write operations are immutable and ‘written in stone’ by design - this is the blockchain. One party doesn’t need to trust others (or trust ‘the center’) - they use math and algorithms to make sure everything is all right.
Transparency. There is no hidden logic to trust if your blockchain utilizes Smart Contracts (https://ethereum.org/en/developers/docs/smart-contracts/). All public transactions are visible to all parties (this can vary though - some blockchains like Quorum https://consensys.net/docs/goquorum/en/latest/concepts/privacy/private-and-public/ support private transactions still having transparency). Every blockchain node sees all history and its actual state. Everyone can see what happened and when.
Availability. Every blockchain node contains everything and helps your blockchain to handle transactions. These nodes are connected in a network and support high availability by design. There is no problem to work disconnected from other nodes for a while - they will sync and share transactions once reconnected.
Ownership. Yes, NFT https://en.wikipedia.org/wiki/Non-fungible_token can be a solution to a business problem, not just a crypto-traders buzzword. In a complex environment with multiple parties involved it might be important to track ownership of something in a transparent and reliable manner - everyone can see it, only Smart Contract can change it.
Shared logic. Smart Contracts can work as code library, transparently published and available for all participants for utilizing in their client apps.
We are trying to solve a problem, to help someone, to make the world better - and this is not achieved yet. Many of the existing blockchain use cases are good examples of how it can be used, but they do not really need a blockchain and can be built without it with the same efficiency or even better. This technology is complicated, and for sure it can solve complicated problems. But to do this we need to put together a complicated business with developers who can understand both business and the possibilities blockchain offers. This synergy might produce an elegant solution for a challenging goal.