Solidity
What is Solidity?
Solidity is a contract-oriented programming language for implementing smart contracts designed to run on the EVM (Ethereum Virtual Machine). Such contracts are published on the Ethereum blockchain and Solidity is one of the two main languages meant for this, the other being Serpent. Solidity is Turing complete and compiled to Etherium Virtual Machine (EVM) bytecode, which is executed on the EVM on Ether mining machines. The language is similar in syntax to JavaScript. Solidity is poised to produce a disruptive change in the world of business digitalization, by decentralizing and automating contracts.
What is a smart contract and why are smart contracts interesting?
Smart contracts are build with blockchain technology. The first thing people associate with blockchain are crypto currencies, the hype that surrounded it left many people with a negative view on crypto currencies. However, the underlying blockchain technologies have great potential. Blockchain allows the storage of data in a way that makes the data accessible for many people but without the need for a middle man to ensure security. This feature is of great use in the construction of smart contracts.
A smart contract is “a set of programmable instructions, intended to automatically facilitate, enforce and verify the execution of an agreement”. The contracts are inspired by regular legal contracts between multiple parties. The difference with conventional contracts is that they are enforced automatically in a decentralized manner, as opposed to being enforced manually by a central authority. As such, as long as all the inputs and outputs of a contract are digital, a smart contract is fully automated and self-regulated.
The contracts can be used to record agreements and ensure the execution of such an agreement. One can imagine that this will be useful in many industries, ranging from mortgages to voting.
Why is Solidity interesting and what does Solidity offer?
Today, there are four major platforms for smart contracts, namely:
- RSK
- Ethereum
- EOS
- Cardano
When thinking about whether Solidity is the right choice for you, you may ask yourself two questions. First, why Ethereum? Second, why Solidity?
-
Why choose Ethereum?
Ethereum was released in 2013 by Russian-Canadian programmer Vitalik Buterin. He envisioned it as a decentralized global supercomputer, allowing developers to pay “gas” to run their decentralized applications on it, known as dApps. It was incorporated as Ethereum Switzerland GmbH in 2014 and raised $18.4 million during its ICO.
- Ethereum plans to move away from Proof-of-work (POW) into Proof-of-stake (POS)
Proof of work, also known as Nakamoto Consensus, is the same consensus protocol used by Bitcoin. This comes with the same problems that Bitcoin has, notably considerable operating costs. Notably, the Bitcoin network is due to this very reason prone to reduced scalability, throughput and large power costs (in 2018, it used as much power as the entire country of Hungary!).
By replacing it with proof of stake, Ethereum estimates a reduction of over 99% in energy consumption.
-
Why choose Solidity?
Solidity is one of the first programming languages with support to compile to bytecode that can be run on the Ethereum Virtual Machine. As a result, it has more tools and has grown in popularity compared to other existing languages for the same purpose. The strong developer community is a good reason to choose for Solidity. There is a huge amount of online and offline documentation and help available for anyone who wishes to explore, learn and contribute to Solidity - making it ideal for a project such as ours.
The main perk of using Solidity as compared to another blockchain technologies is its ease of application to smart contracts. It is easy to learn as it shares a large number of programming constructs and perceptions that exist in other programming languages variables such as string manipulation, classes, functions, arithmetic operations, and so on. Solidity code looks surprisingly similar to C++, C#, or JavaScript. It can also be uses to write smart contracts for the RSK (Rootstock) blockchain, which is the most secure platform for smart contracts.
Meet the Team
We are a diverse team with multiple nationalities, all following a master at the TU Delft. Our interest in blockchain technologies and smart contracts unites us into a solid (pun intended) team.
Our team members:
-
David Cian
David is a CS undergrad on exchange at TU Delft, coming from EPFL. He loves learning while keeping as broad a horizon as possible. He is excited about the novel applications of blockchain technology besides cryptocurrency and the opportunities it offers to build a better world. You can find more info about him on his personal website.
-
Max Groenenboom
Max is an Embedded Systems master student with a background in Computer Science. He wants to broaden his view and knowledge of the world, and hasn’t worked with blockchain yet. This project would be a great chance to make a first step into blockchain technology, considering Etherium is a very novel and new way of using the blockchain.
-
Luc Lenferink
Luc is a Computer Science master student interested in sequential prediction. He likes to be in touch with new trends and believes that blockchain and smart contracts have a future in multiple industries.
Solidity: The Product Vision
This is the first in a series of 4 essays that analyse the architecture of Solidity. We start off with a description of the vision underlying Solidity and a peek into the future of Solidity.
Solidity: From vision to architecture
Previously, we introduced Archie’s vision for Solidity. This time, let’s dive deeper into Solidity’s architecture with our ever-curious software architect apprentice!
Solidity: Solid code or not?
This is the third essay on the Solidity project. This essay is about the code quality of Solidity. It will give an answer to the important question: Is the code of Solidity of solid quality or not, and how it this quality maintained?
Solidity and its variability
This is the fourth and the last essay on the Solidity project. It covers an analysis on the variability of the Solidity compiler. Like most compilers, Solidity allows a lot of command line arguments that alter the expected input and output files and the expected command line arguments themselves. Because in the first place we are talking about a compiler, and in the second place security plays a crucial role in the project, it is rather important that the process and the output is trustworthy in all possible variances. This is why we decided that a variability analysis would be an interesting final vision on the Solidity project.