Solidity Tutorial — Solidity Programming For Beginners
Tags: Blockchain Startup, Blockchain, Blockchain Technology, Blockchain Application, Blockchain Development

Modern tech is dominated by software- from our work applications to social media, everything runs on some complex lines of codes. Blockchains also use programming languages for creating smart contracts and decentralized apps. The most famous of them- Ethereum, has gone a step beyond and created its own programming language called Solidity. As Ethereum is one of the most used smart contract platforms, a huge amount of Blockchain Programming happens over Solidity.

In this article, we provide a beginners’ guide to solidity programming for the Ethereum Virtual Machine. We would be covering the fundamental building blocks of Solidity, its layout, where it stores the data, the common value types, operators, and data structures.

What is Solidity?

At its core, Solidity is a contract oriented language and resembles the syntax of JavaScript. It is used to execute code on Ethereum Virtual Machine (EVM) for blockchain development. The main feature of the solidity compiler is that it converts high-level codes into machine-level codes, which are simpler to understand.

Contracts

Contracts are the starting point of any project and contain all variables and functions. Hence, it is the most fundamental building block. Contracts closely resemble classes used in object-oriented languages.

Layout

The layout contains pragma directives, import directives, and contract definitions. All this information is stored in a source file.

Version pragma

It is used to define and restrict the compiler version which can run the code. Version pragma works like a security feature to make sure that the code is executed exactly in the way it is intended. A change in semantics would also need a change in syntax and past or future versions could misrepresent the current use of the code.

Importing other Source Files

Blockchain Solidity doesn’t hold the concept of a ‘default exporter’ but supports import statements, from ES6 onwards, that are similar to those in JavaScript. All global symbols from “filename” can be imported into the current global scope, however, it is advisable to import specific symbols individually.

Comments

Solidity supports both single-line and multi-line comments. It also contains another type of comment known as natspec comment. A natspec comment is used directly above a statement or a function declaration.

Before we move ahead, it is imperative to understand how and where Ethereum keeps its data.

Where does Ethereum store items?

Ethereum can store its data in the following three crucial areas:

Storage

Each account stores certain data in the storage area. The storage area stays persistent between function calls and transactions. The most important feature of the storage area is that the contract cannot read or write any part except its own. However, storage is comparatively costly to initialize and modify, let alone read.

Memory

Memory is used to hold temporary values. It gets erased between function calls and there is no requirement to expand it periodically. Hence, it is cheaper to use than storage but its cost would increase the larger it grows.

Stack

All computations are performed in the stack area. It holds small local variables and costs close to nothing. However, the stack area can only hold a limited amount of values during a time and, if required, the values have to be shifted to the memory or storage area.

Value Types in Solidity

Boolean

There are only two possible values in a boolean: true or false. A number of logical and equality operators can be used to create a boolean.

Integers

In Solidity, signed and unsigned integers of various sizes are possible. Comparison, bit, shift, and arithmetic operators can be used to retrieve information.

Operators

The rules applicable in Solidity are more or less similar to other programming languages.

Arithmetic

Solidity uses simple math operators such as addition (+), subtraction (-), multiplication (*), division (/), and modulus or remainder (%).

Bitwise

Used on two complementary representation of a number. For example, ~int256(0) == int256(-1)

Logical

The most common logical operators are: logical and, logical or, logical negation, equality, or inequality.

Incremental

Incremental and decremental operators in Solidity uses a prefix or suffix of either — or ++. For example, a++ and a+=1.

Data Structures

Structs

Structs are used to group multiple variables and works as a way to define new types in the form. It allows one to create complex data types holding multiple properties. A struct can only have 16 members, beyond that it presents an error.

Arrays

Arrays help in creating a collection of structs. These arrays can be a dynamic or compile-time fixed size.

Mappings

Mapping helps in locating each key to the whole byte-representation. Mappings are hash tables which are virtually initialized.

Conclusion

Ethereum Solidity Development has become a leading field in blockchain development. This guide can help early coders get broad insights into solidity programming and experienced coders understanding the similarities between Solidity and their current language. With the expected launch of Ethereum 2.0 in the coming weeks, Solidity is expected to gain more traction in the market.