Solidity

Solidity is an object-oriented programming language for implementing smart contracts on various blockchain platforms, most notably, Ethereum. It was developed by Christian Reitwiessner, Alex Beregszaszi, and several former Ethereum core contributors. Programs in Solidity run on Ethereum Virtual Machine.

History
Solidity was proposed in August 2014 by Gavin Wood; the language was later developed by the Ethereum project's Solidity team, led by Christian Reitwiessner.

Solidity is the primary language on Ethereum as well as on other private blockchains on platforms that compete with Ethereum, such as Monax and its Hyperledger Burrow blockchain, which uses Tendermint for consensus. SWIFT deployed a proof of concept using Solidity running on Burrow.

Description
Solidity is a statically typed programming language designed for developing smart contracts that run on the Ethereum Virtual Machine (EVM).

Solidity uses ECMAScript-like syntax which makes it familiar for existing web developers; however unlike ECMAScript it has static typing and variadic return types. Solidity is different from other EVM-targeting languages such as Serpent and Mutan in some important ways. It supports complex member variables for contracts, including arbitrarily hierarchical mappings and structs. Solidity contracts support inheritance, including multiple inheritance with C3 linearization. Solidity introduces an application binary interface (ABI) that facilitates multiple type-safe functions within a single contract (this was also later supported by Serpent). The Solidity proposal also includes "Natural Language Specification", a documentation system for specifying user-centric descriptions of the ramifications of method-calls.

Example of a Solidity program:

Development platform availability

 * ErisDB by AWS
 * Hardhat
 * Microsoft Visual Studio
 * Microsoft Visual Studio Code
 * Tendermint on Microsoft Azure
 * Remix by Ethereum

Blockchain platforms
Solidity is available on:
 * Ethereum
 * Binance Smart Chain
 * Ethereum Classic
 * Avalanche C-Chain
 * Counterparty (which runs on Bitcoin)
 * Tron
 * Hedera Hashgraph

Criticism
Many security properties of smart contracts are inherently difficult to reason about directly, and the Turing-completeness of Solidity means that verification of arbitrary properties cannot be decidably automated. Current automated solutions for smart contract security analysis can miss critical violations, produce false positives, and fail to achieve sufficient code coverage on realistic contracts. Solidity has been blamed for the error-prone implementation of Ethereum smart contracts due to its counterintuitive nature, its lack of constructs to deal with blockchain domain-specific aspects, and its lack of centralized documentation of known vulnerabilities.

In 2016, a Cornell University researcher stated that Solidity was partially to blame for The DAO hack that took place that year. He stated: "this was actually not a flaw or exploit in the DAO contract itself: technically the Ethereum Virtual Machine (EVM) was operating as intended, but Solidity was introducing security flaws into contracts that were not only missed by the community, but missed by the designers of the language themselves."

Limitations of Solidity
Unlike programs in traditional programming languages, which can be debugged, in Solidity contracts mistakes cannot be edited or fixed; transactions cannot be reversed. Solidity follows the "Code is Law" mantra, which means any smart contract must be flawlessly coded when it comes into effect.

There have been some hacking cases such as the aforementioned 2016 DAO hack in which US$60 million was stolen, and a 2021 hack that caused a fork in the Ethereum system.

To prevent technical errors and mistakes, Coinbase, the largest cryptocurrency exchange in the US, introduced a new tool named Solidify. This tool is an AI auditing system that detects and classifies smart contract risks.