Redefining the blockchain terminology in eosio.
As you go deeper through the eosio rabbit hole, you start reading these other new terms that you are not used to if you come from Bitcoin or Ethereum, or you never heard at all if you are a web developer like me. So, let me try to make a list of some redefinitions I learned:
AddressesAccounts: An account is a human-readable name that is stored on the blockchain. It can be owned by an individual or group of individuals depending on permissions configuration. For example I can send 10 EOS from @stuardo to @deliciouscakes for a purchase. This is very important because if we want to use blockchain for daily transactions we need to make it easy for every human to memorize their accounts, just like they do with their email accounts.Block RewardN/A: There are no block rewards! In Bitcoin, the first GPU that calculates the hash for the block, gets 12.5 BTC as a reward for the block. That means tons of computers are there just waisting electricity for nothing. In eosio, we have 21 delegated block producers and they all get payed for their work.MiningN/A: Again, there is no mining in eosio! In Bitcoin, calculating the hash for the block is a very expensive task that does not produce any value (other than calculating the hash). With eosio, we don't waste time nor electricity in calculating complicated hashes, making the block production thousands times faster.Muti-SignatureMessage params: This one is very annoying. Initially, Bitcoin was a 1-to-1 way to send money. Address-A sends n BTCs to address-B. That's all it could do. With Ethereum, they started separating the blockchain from the "balances-app", to call it somehow. The idea was to make a generic machine that could run general purpose applications. The idea of using another param in the transaction was way to much for non-developers, they even had to make a name for it. As a developer, you know you can ask for as many params as you want, so for devs, it's just another param to the function being called.Smart contract: ...
Now, this one is the one that I don't get. We are still calling them "smart contracts", even when they are not smart nor contracts at all!
In Ethereum they created an app to invest for them. It was decentralized in the way that anyone could join in and tell the app how much to invest for them, without having paperwork, lawyers, nor a middleman. There was no way to modify the app as it was written in stone in the blockchain. A couple of days later, the app had a bug and it lost all the money. They called it a smart contract. Smart!
Now, imagine you have a phone, and you installed the most popular social app FaceMagazine (because no one really has time to read an entire book), where you could post pictures of your breakfast and dinner. People started wanting more! They wanted to upload pictures of their babies too, so a modification had to be done to the FaceMagazine app, but because it was stored in the blockchain, there was no way to do that, so you had to download FaceMagazine-v2, and start again creating your account and uploading your dinner photos again. A couple of days later, FaceMagazine-v3 was uploaded with the option to upload pictures of kitties. Yes! Kitties! You HAVE to get that one. Imagine every time a bug was fixed or a feature was added, you had to start all over again, and again, and again. I would send the blockchain to hell and go back to my Hi5 where everything was easier.
An app developer should be able to update their apps in a general purpose blockchain, like they do in every other environment. They (we) are not smart! They (we) are humans, and humans make mistakes and they should be able to correct them. If you see the original video when Vitalik revealed Ethereum for the first time, you can see how he used "smart contracts" as an example of an app that could be run in Ethereum's blockchain. Not that every single app ruining there should be called "smart contract".
If you are a mobile or web developer and you start creating apps in eosio you see the same two layers:
front end: the way the user interacts with the app. This is almost straight forward as it's just a JavaScript library called eosjs
back end: the logic in the blockchain that stores the data in tables like any other database. This logic is written in C++ instead of PHP/Python/Ruby, but it does the same. The main difference is the database structure and data is public.
There are no contracts nor anyone trying to call himself smart because they were able to create a C++ code that actually compiles.
I'm not the only one that hates the term "smart contract", and there have been multiple proposals of how to name them but there has not been any consensus. I thought eosio scripts
would be a good name, like we call PHP scripts
, but eosio is compiled, so it's not a scrpt
. In conferences or if anyone asks me, I call them eosio backend
.
In eosio, they understand people make mistakes, code is never bug-free nor complete, and you can overwrite previous apps with newer and better ones. This is starting to sound more like the general purpose blockchain we need, to get mass adoption, where in the future, we can think in a currency that could change the world. But meanwhile, we need to stop calling the back end, a "smart contract".
With Dawn-3.0 / eosio RC1, we saw a lot of name changes, from EOS/eosio to eosd/nodeos or eosc/cleo. I really hope @dan gets the time one day to ready this article and call eosio-backend something else other than "smart contracts".
I'm (mockingly) annoyed by EOS. I was researching multiple crypto/blockchain projects from a fundamental perspective, and got pulled deep into the rabbit hole as well. This project seems to be exactly what I've been looking for... and I'm trying to stay as objective and unexcited as possible (which is getting harder by the day).
Good read. I didnt hear from you in a while already.
Are you done with steemit?
Well written article Stuardo, I completely agree with the "smart contract" terminology, people should be able to patch and update their contract as their project evolves. Developers should not have to re-publish a
v2
every time there's a bug fix or an update their smart-contract.Not too sure what would be an appropriate name to replace the term "smart-contract".
Great article, looking forward to your next post @stuardo
Congratulations @stuardo! You have completed some achievement on Steemit and have been rewarded with new badge(s) :
You made your First Comment
Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here
If you no longer want to receive notifications, reply to this comment with the word
STOP
Hello! I really liked the part where you talked about how a dev can write code for the front and backends. Can you also explain where do I save my code, I undestand that in Ethereum you have it in the blockchain, but in EOS where do you store and read your code from?
thanks
Nice discussion point. I would like to go with "Digital contracts" :)
"Digital contracts" are misleading as they are not contracts at all, they are just programs that run in a distributed network. Simple programs like a calculator or notepad. You don't call notepad a contract, right?