Chapter 1 Lesson 1 - Learning Blockchain Concepts
Hello! Yes, it is me. Your favourite developer of all time, Jacob. You are currently viewing the first lesson of the entire course. Let’s start this journey together.
Let’s start off our first lesson by going over what seems to be complicated terms that you will need to understand for the journey ahead.
What the heck is a Blockchain?

If you already understand what the Blockchain is or you simply don’t care (that’s fair!), you can skip this section.
When learning about the Blockchain, you may find some complicated articles. It’s easy to get completely lost in the sauce and feel like you want to give up. So, I’m going to explain the Blockchain in a very easy way that may have some innacuracies/left out information but is meant to help you get started. Specifically, I will help you understand the Blockchain from the perspective of someone who is looking to code Smart Contracts or make some Decentralized Applications (both of which we will do!).
In one sentence: the Blockchain is an open, decentralized, shared database that allows anyone to store stuff publically.
Okay, woah. What does that mean?
- OPEN: Anyone can interact with it. There are no restrictions.
- DECENTRALIZED: Nobody owns it. There is no central authority dictating stuff.
- DATABASE: You can store information on it.
- PUBLIC: Anyone can view the data on it.
Because of these things, we can interact with the Blockchain however we please. Often times, we may want to set up “rulebooks” that determine how people can interact with specific parts of the Blockchain so that it has some functionality - specifically our own applications that we will define. This is done with Smart Contracts.
It’s also important to note that there are many different Blockchains out there. For example, Ethereum is probably the most popular Blockchain. In this course, we will be learning about the wonderful Flow Blockchain, because that’s where my expertise lies ;)
Smart Contracts? Ooo, that sounds cool.

Why yes, yes it is. Smart Contracts are very cool. Smart Contracts are programs, or “rulebooks” that developers make. Developers create them because it allows us to specify some functionality that users can interact with. For example, if I want to make an application that allows users to store their favourite fruit on the Blockchain, I need to make a Smart Contract that:
- Has a function that anyone can call
- Takes in a parameter (the person’s favourite fruit)
- Stores that parameter in some data
- Sends the updated data to the Blockchain (happens automatically)
If I created this Smart Contract and “deployed” it to the Blockchain (deployed means we put the contract onto the Blockchain so people can interact with it), then anyone could put their favourite fruit on the Blockchain, and it would live there forever and ever! Unless we also had a function to remove that data.
So, why do we use Smart Contracts?
- Speed, efficiency and accuracy: Smart Contracts are fast, and there is no middleman. There is also no paperwork. If I want to update the data on the Blockchain by using a Smart Contract that allows me to call some function, I can just do it. I don’t have to get approval from my parents or my bank.
- Trust and transparency: The Blockchain, and thus Smart Contracts, are extremely secure if we make them that way. It is near impossible to hack or alter the state of the Blockchain, and while that’s due to other reasons, it is largely because of Smart Contracts. If a Smart Contract doesn’t let me do something, I simply can’t do it. There’s no way around it.
What are some downsides?
- Hard to get right: While Smart Contracts are cool, they are NOT smart. They require sophisticated levels of expertise from the developer’s side to make sure they have no security problems, they are cheap, and they do what we want them to do. We will learn all of this later.
- Can be malicious if the developer is mean: If a developer wants to make a Smart Contract that steals your money, and then tricks you into calling a function that does that, your money will be stolen. In the world of the Blockchain, you must make sure you interact with Smart Contracts that you know are secure.
- Cannot undo something: You can’t just undo something. Unless you have a function that allows you to.
Transactions & Scripts

“Okay, so we have a Smart Contract. How do I actually interact with it? You keep saying call a function, but what does that mean!?”
A transaction is a glorified, paid function call. That’s pretty much the simplest I can put it. What’s important to know is that a transaction CHANGES the data on the Blockchain, and usually is the ONLY way we can change the data on the Blockchain. Transactions can cost different amounts of money depending on which Blockchain you are on. On Ethereum, to store your favourite fruit on the Blockchain, it could cost dang near 100$. On Flow, it’s fractions of a cent.
On the other hand, a script is used to VIEW data on the Blockchain, they do not change it. Scripts do not cost any money, that’d be ridiculous.
Here is the normal workflow:
- A developer “deploys” a Smart Contract to the Blockchain
- A user runs a “transaction” that takes in some payment (to pay for gas fees, execution, etc) that calls some functions in the Smart Contract
- The Smart Contract changes its data in some way
“MainNet” vs. “TestNet”
You may have heard these terms come up, but what do they actually mean?
TestNet is an environment where developers test their applications before releasing it to the public. This is a perfect space to figure out what’s wrong with your application before actually releasing it to the public to use. Here are a few additional notes:
- Everything is fake
- No actual money involved
- Transactions cost fake money
- A good way for developers to test their smart contracts and applications BEFORE releasing to the public
- If something bad happens, no one cares.
MainNet is an environment where everything is real. When you release your application to the public, you put it on MainNet. On MainNet, everything is live, so things cost real money, there are risks, and you must make sure everything is working correctly. Here are a few additional notes:
- Everything is real
- Money is involved
- Transactions cost real money
- When your application is fully ready, you put it on MainNet for users to interact with.
- If something bad happens, that’s really bad.
Decentralized Applications (DApps)

Oh no, this sounds complicated. Nope! It’s not. DApps are literally just normal applications (Javascript, Python, etc) that ALSO have Smart Contracts involved. That’s it.
For example, Instagram is an application that is not a “DApp” because it doesn’t involve any blockchain code. However, after Flow’s recent announcement of NFT integration into Instagram, we can officially call Instagram a DApp. Examples of other DApps includes FLOAT.
Also, we will be building a DApp throughout this course :)
Why do I care about all this?
Well, because that’s what this course is all about, knucklehead! In this course, we will be making our own Smart Contracts, specifically on the Flow Blockchain. In addition, we will be making Decentralized Applications that use those Smart Contracts.
Conclusion
Jacob is the best. No, no. That’s not the conclusion. The conclusion is that although all of this stuff sounds very complicated, it really isn’t. And if you still don’t understand ANY of this, that’s totally okay. Sometimes it’s better to jump into some examples to make things make more sense. We’ll be doing that in the upcoming lessons.
Quests
You are free to answer these questions in your own language of choice. And no, I don’t mean computer programming language, haha.
Explain what the Blockchain is in your own words. You can read this to help you, but you don’t have to: https://www.investopedia.com/terms/b/blockchain.asp
Explain what a Smart Contract is. You can read this to help you, but you don’t have to: https://www.ibm.com/topics/smart-contracts
Explain the difference between a script and a transaction.
What is the difference between Testnet and Mainnet? When would you develop on each?