Using Solidity to Build Smart Contracts and Decentralized Applications (DApps)

The Ethereum network has been filled with innovation, and this can mostly be attributed to its smart contract system and functionality. 

You see, these smart contracts are programs that exist on the Ethereum blockchain itself, and perform a variety of different tasks which are pre-programmed onto them, such as transferring Ether from one address to another, as well as other tasks.

What you might be wondering at this point in time is, how exactly are these smart contracts built, and what do you need to know to build them?

Well here’s the thing, just like any other program out there, Ethereum contracts out there need to be written in a specific programming language, which is known as Solidity

Solidity was specifically built for Ethereum, however, there are other programming languages as well which work fine with smart contracts. 

With all of that in mind, let’s take a deeper dive into the world of Ethereum and Solidity, and see exactly how smart contracts and decentralized applications are built on Ethereum.

What is Solidity?

Before we dive too deep into Solidity, let’s take a quick crash course into programming languages. Throughout history, there have been numerous programming languages built with the intention to, well, make computers do things that we want them to. We essentially made materials “think”, or in other words, made them follow commands that we have specifically written. 

There are a lot of programming languages being used consistently today, such as C, C++, C#, Python, Java, JavaScript as well as others. There are programming languages that are used for multiple use-cases, and ones that are used for specific cases. 

Solidity was created as an easy-to-learn programming language, especially for people who are already familiar with some of the aforementioned programming languages and the logic behind them. 

(source: docs.soliditylang.org

So now you might be wondering, what makes Solidity special? Here’s what you need to know. Solidity uses a large number of programming features that exist in other languages.

Solidity features:

  • Variables
  • String Manipulation
  • Classes
  • Functions
  • Arithmetic Operations

The list goes on really, but here’s how you can think about it to get a clearer understanding: in programming languages such as C for example, a programmer would create a function such as “int main”, however, solidity works with a “contract” which is created in an analogous way. 

Still with us? Excellent. Solidity works in a similar way as C++ would, or C#, or even JavaScript. This is due to the fact that in solidity, all variables will need to be explicitly declared, alongside all other differences. 

(Source: Subcurrenyc Example from Solidity)

There’s just one small flaw about the language, and this really isn’t a flaw in the language itself, but more in terms of the resources and documentation. 

You see, C was released in 1972, while C++ was created in 1985, so if you were to go out there and research for documents about these programming languages, the chances are high that you’d find literally terabytes of data in the form of videos and documents detailing them in the highest of details. 

That being said, Solidity is limited in this department as it’s still a fairly new programming language in comparison. So, if you wanted to learn C++, you’d buy a book, maybe buy an online video course, and so on, but if you want to learn Solidity, there are only a handful of resources available. 

However, that being said, if you already have programming prowess, and know another language, Solidity does offer widespread documentation for how the code itself works.

So if you haven’t coded in the past, it might be tricky to get into, however, you can think of the documentation as more of an orientation if you already know a language. 

Another question a lot of people have is, is the language worth learning? Well, if you’re already a programmer, or just starting out learning programming, investing your time and energy into blockchain skills and technologies can be valuable for you long-term. 

At many companies, you’ll notice that programmers are required to know at least one more language, aside from Solidity, such as AngularJS or NodeJS.

(Source: esearchgate.net)

If you want to dedicate a few years of your life to learning Solidity, try it. Given the fact that blockchain technology is truly hitting mainstream appeal, a career in this industry is highly likely to last for decades. 

Think of it as having your own company, would you rather spend years of time, money, and resources to train your staff to learn Solidity, which could or could not prove to be successful, or would you hire someone who already knows the language? 

There is a huge difference between the supply as well as the demand for talented Solidity developers, so why not be on that list?

Smart Contracts

We’re now at the fun part, smart contracts. You see, due to the fact that the blockchain is a distributed system between permitted parties, there are 0 requirements for a middleman and as such, it saves a lot of time and potential disagreements. Blockchains are quick, inexpensive, and far more secure than other systems, which is why we have seen a spree of banks, as well as governments, turn to them. 

So what are smart contracts, really?

The answer you’ve probably been waiting for is actually quite simple. Here’s how you can think about them:

Smart contracts serve the role of assisting everyone when it comes to swapping over money, shares, or anything of value in a conflict-free way, all whilst avoiding the service of middlemen. 

They are self-executing contracts with the terms of the agreement between the buyer as well as the seller being written into the lines of the Solidity code itself.

They make transactions traceable, transparent, and irreversible. So if you’re curious about what they bring to the table in a little bit more in-depth way, here’s what you need to know.

  • Smart contracts bring autonomy – you are the only one making the conformity and do not require a middleman of any kind.
  • Smart contracts bring trust – your documents are on a shared ledger and encrypted, which means that they can never be misplaced. 
  • Smart contracts bring backup – you can never lose your savings on the blockchain as all of your credentials are placed on multiple locations, many times over. 
  • Smart contracts bring safety – your documents are always encrypted, which means that they cannot get hacked easily.
  • Smart contracts bring speed – due to the fact that smart contracts utilize code to computerize tasks, they avoid a lot of business processes that would otherwise eat up a lot of time.
  • Smart contracts bring savings – since there are no middlemen, you avoid a lot of the costs associated with them. 
  • Smart contracts bring accuracy – the automated contracts are not just quicker, but they are also fewer in terms of errors which can occur through manually filling out forms. 

Decentralized Applications

We are now at decentralized applications. Here’s what you need to know.

DApps have their back-end code running on a decentralized network, and not a centralized server. As such, they use the Ethereum blockchain for data storage purposes and smart contracts for logic. 

A smart contract, as previously discussed, is a set of rules which live on-chain, and anyone can see and run according to them. This means that once the DApps are deployed on Ethereum, you cannot change them. They are decentralized due to the fact that they are controlled by the logic which is programmed with Solidity into the smart contract. 

Furthermore, a DApp can have frontend code and user interfaces that are written in any language, which can make calls to the back-end. It can be hosted on decentralized storage such as IPFS as well.

To summarize, if you are curious as to how to develop DApps, they can be:

  • Decentralized – they are independent and as such, no one has the ability to control them as a group.
  • Deterministic – they perform the same function anywhere they are executed. 
  • Turing Complete – when they are given the resources they require; they can perform any action.
  • Isolated – they are executed in a virtual environment known as the Ethereum Virtual Machine, so if they have bugs, they won’t interfere with the function of the blockchain network itself.

Due to this, they have several benefits, including zero downtime, which means that once the smart contract at the core of an app is deployed and gets on the blockchain, the network is always able to deliver it to users who need it. 

(Source: xbt.net)

They also have a high level of privacy, which means that you do not have to provide any real-world documents to deploy them or interact with them. They are resistant to censorship, have complete data integrity, and work through trustless computation and verifiable behavior. 

In terms of their drawbacks, they can be harder to maintain, have huge performance overhead, contribute to network congestion and it can be harder to engineer user-friendly experiences. 

That being said, writing smart contracts and creating decentralized applications can be a difficult task, however, with enough time, effort, and resources put into the learning process, a lot of people have the potential to truly get across the road to mastery of the Solidity programming language which can contribute their efforts towards the future development of blockchain technology which is truly an appealing career path for many.

Given the recent rise of decentralized finance (DeFi) and the mainstream adoption of blockchain technologies across many banks and even payment systems such as Mastercard and Visa, it is clear that companies are starting to get really interested in cryptocurrency payments, and DeFi is the next step in this development and will play an integral part of our future.

Hopefully, now you understand a bit more about the basic utilities in regards to using the Blockchain and Ethereum, as well as what smart contracts and decentralized applications are, and how they are written as well as encrypted through the usage of specific methods. 

Share this article: