Trisha Shetty (Editor)

Solidity

Updated on
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit
Paradigm  object-oriented
Website  github.com/ethereum/solidity

Solidity is an object-oriented programming language for writing smart contracts. It is used to implement smart contracts on various blockchain platforms. It was developed by Gavin Wood, Christian Reitweissner, Alex Beregszaszi, Yoichi Hirai and several former Ethereum core contributors to enable writing smart contracts on blockchain platforms such as Ethereum.

Contents

History

Solidity was initially proposed in August 2014 by Gavin Wood; the language was later developed by the Ethereum project's Solidity team, led by Christian Reitwiessner. It is one of four languages (the others being Serpent, LLL and Mutan (deprecated) designed to target the Ethereum Virtual Machine (EVM).

Solidity is currently used as the primary language on Ethereum as well as on other private blockchains running on platforms that compete with Ethereum, such as Eris Tendermint. SWIFT has deployed a proof of concept using Solidity running on Monax Industries Eris implementation of Tendermint.

A Cornell University researcher stated that Solidity was partially to blame for The DAO hack that took place in 2016. He stated: "this was actually not a flaw or exploit in the DAO contract itself: technically the 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."

Description

Solidity is a JavaScript-like statically-typed programming language designed for developing smart contracts that run on the EVM. Solidity is compiled to bytecode that is executable on the EVM. With Solidity, developers are able to write applications that implement self-enforcing business logic embodied in smart contracts, leaving a non-repudiable and authoritative record of transactions. Writing smart contracts in smart contract specific languages such as Solidity is referred to as easy (ostensibly for those who already have programming skills).

As specified by Wood it is designed around the ECMAScript syntax to make it familiar for existing web developers; unlike ECMAScript it has static typing and variadic return types. Compared to other EVM-targeting languages of the time such as Serpent and Mutan, Solidity contained a number of important differences. Complex member variables for contracts including arbitrarily hierarchical mappings and structs were supported. Contracts support inheritance, including multiple inheritance with C3 linearization. An application binary interface (ABI) facilitating multiple type-safe functions within a single contract was also introduced (and later supported by Serpent). A documentation system for specifying a user-centric description of the ramifications of a method-call was also included in the proposal, known as "Natural Language Specification".

Example of a Solidity program:

Development platform availability

  • Remix, the official Solidity IDE
  • Microsoft Visual Studio
  • ConsenSys Enterprise
  • Tendermint on Microsoft Azure by PWC
  • ErisDB by AWS
  • Blockchain Platforms

    Solidity is available on:

  • Ethereum
  • Tendermint & ErisDB (a version of Tendermint)
  • Zeppelin by Digital Currency Group (which supports both Rootstock and Solidity)
  • Counterparty (which runs on Bitcoin)
  • References

    Solidity Wikipedia


    Similar Topics
    52nd Street (film)
    Travis Brigley
    Norman A Mordue
    Topics
     
    B
    i
    Link
    H2
    L