Lately, I'm hearing a lot about crypto, blockchain, bitcoin, Ethereum, smart contracts, defi (decentralized finance), dapps (decentralized applications), DAOs (decentralized autonomous organizations), NFTs (non-fungible tokens), web3, and on and on.
I wanted to learn more about all of this stuff so I started digging around for tutorials. I found myself pausing each one shortly after starting because they all seemed to assume I had even the slightest clue as to what some of this means. I got particularly confused because they'd call it a beginners guide and yet reference some of the other terms as if I already knew what they meant. Reader, I did not know!
Eventually, I found a wonderful tutorial on Free Code Camp. This video tutorial is 16 hours long, so this will probably be a series of blog posts.
Here are my notes on the concepts - from an absolute complete beginner's perspective.
It's difficult to grasp new concepts when you don't know what they are used for, so let's start here.
Physical currency and the way we spend it is governed by entities such as country leaders, banks, and other financial institutions. A couple of recent cases that come to mind are with Robinhood and OnlyFans.
Robinhood haulted buying of GameStop shares (at least for some people) after a coordinated effort of Reddit users caused the value of the shares to skyrocket. While Robinhood's move infuriated a lot of people, there wasn't much they could do because Robinhood governs who can buy and sell what on their platform.
OnlyFans announced they were banning sexual content after mounting pressure from payment providers such as Visa and Mastercard. Because of the power of these financial institutions, the company feels forced to play by their rules or lose the ability to accept these forms of payments.
There have also been many instances where banks prevent withdrawing your own money for various reasons, or hold deposits before allowing you access.
A decentralized network that is not controlled by individual entities addresses these concerns. With decentralized networks, we get transparency, freedom, and security.
The starting point is blockchain - a type of database that stores information in individual blocks that are chained together.
A blockchain is shared across many computers (known as nodes), so there's no single record, but rather multiple copies of the record - making it almost impossible to hack. All of these records are visible to everyone.
Unlike traditional databases, blocks within the blockchain are immutable, which means they cannot be changed. So when something is written onto the blockchain, it serves as a permanent record.
When new data needs to be added to the blockchain, it must be written in a new block and then chained together to the last block. The blocks are in sequential order.
Because blockchain is decentralized, there is no central governance controlling what can and cannot occur.
Bitcoin is one of the first protocols to use blockchain. It is a cryptocurrency (I'm thinking of it as "digital money") used in peer to peer transactions in a decentralized network to buy and sell things. Records of all of these transactions are stored on the blockchain.
But just because it's digital doesn't mean there's an infinite amount of it. There is a finite amount of bitcoin, just like with physical money.
Ethereum is another blockchain protocol. The cryptocurrency of this protocol is called Ether (ETH).
Ethereum takes its use of blockchain a step further than bitcoin. With Ethereum, you're not just limited to decentralized currency, but it enables people to build decentralized applications (also known as dapps) and decentralized organizations (also known as DAOs).
Ethereum is not the only advanced protocol utilizing blockchain, but it is by far the most popular.
Ethereum is turing-complete which means we can also program anything with it! These programs are known as smart contracts.
Smart contracts are code that describe an agreement between parties and executes the terms of that agreement on its own. Smart contracts execute on a blockchain. On Ethereum, smart contracts are coded in the Solidity programming language.
What's great about smart contracts is that trust between parties is not required. The terms and conditions are coded and automatically executed, so you don't have to worry about the other party (e.g., insurance company) not holding up their end of the bargain.
This is one of the main advantages of the Ethereum protocol over the Bitcoin protocol. Bitcoin also has smart contracts, however, by design, they are not turing-complete - meaning they aren't capable of the wide range of functionality possible with Ethereum. Bitcoin is viewed more as an asset whereas Ethereum is an asset as well as a platform to build smart contracts.
What happens in blockchain stays in blockchain (this concept is also known as on-chain), which poses a problem for smart contracts that need to access outside data or computations. Blockchain Oracles solve this.
Oracles are able to perform computations and provide information to smart contracts on the blockchain. But because oracles are external to the blockchain, we need to make sure the data they are providing is decentralized before sending it to the blockchain.
Chainlink is a decentralized oracle network (the most popular one) that will facilitate the transfer of the external data onto the blockchain, ensuring that it is clean. Smart contracts that use external data are technically known as hybrid smart contracts, but this term is interchangeable with smart contracts. If someone explicitly says "hybrid smart contract" they are intentionally pointing out the fact that external data (off-chain) was used. Chainlink can be used with any of the blockchain and smart contract platforms, not just Ethereum.
Dapps are decentralized applications that typically comprise of multiple smart contracts.
Ok, that's what I know for now. Stay tuned as I learn more.