Solidity is a programming language used for developing smart contracts on Ethereum and other blockchain platforms, such as Monax and its Hyperledger Burrow blockchain. British software developer Gavin Wood proposed Solidity in 2014 and developed the high-level programming language along with other Ethereum aficionados, including Christian Reitwiessner, Alex Beregszaszi, Liana Husikyan and Yoichi Hirai.
Solidity is compiled to bytecode (or portable code) that is executable on the Ethereum Virtual Machine (EVM), the runtime environment for smart contracts in Ethereum. Although other languages, including Serpent, Viper and Mutan, can also be compiled into EVM machine-level bytecode to run on Ethereum nodes for payment, Solidity is the most widely adopted.
Developers working with Solidity can write apps that implement self-enforcing business logic incorporated in smart contracts. A smart contract, also known as a cryptocontract, is a computer program that directly controls the transfer of digital currencies or assets between parties under specific conditions. It sets the rules and penalties related to an agreement, much like a traditional contract does, but can also enforce those obligations automatically. Smart contracts are considered a secure, easy and reliable medium that enables individuals to transact business with each other, even if they speak different languages or use different currency. Contracts also support complex member variables in hierarchical mapping and structures.
Solidity has a compiler that breaks down high-level code into simple instructions like "put data into a register," "add data from two registers," "jump back to instruction at memory point xxxxx." The programming language is statically typed (meaning variable types are declared explicitly and determined at compile time) and supports inheritance, libraries and complex user-defined types. Inheritance refers to an object or class that is based on another object or class and uses the same implementation to maintain the same behavior.
In addition, there are several integration platforms (to compile, execute and run code) that implement Solidity, including Remix, which is an easily available browser-based integrated development environment (IDE). Also supported are various type-safe functions, which means the compiler will validate types and produce an error if the wrong type is assigned to a variable.