Solidity

From Wikipedia, the free encyclopedia
Jump to: navigation, search
Solidity
Paradigm object-oriented
Website github.com/ethereum/solidity
Influenced by
JavaScript, C++

Solidity is an object oriented domain-specific language[1] for the Ethereum public blockchain and programmable transaction platform.[2][3][4]

History[edit]

Solidity was initially proposed in August 2014 by Gavin Wood;[5] the language was later developed by the Ethereum project's Solidity team, lead by Christian Reitwiessner. It is one of two languages (the other being Serpent[clarification needed]) designed to target the Ethereum Virtual Machine. Since the rise of blockchain technology and in particular Ethereum-derived architectures, it has found substantial usage[6][7][8] for authoring on-chain software programs known as "smart contracts".

Description[edit]

Solidity is a JavaScript-like statically-typed programming language designed for developing smart contracts that run on the Ethereum Virtual Machine (EVM).[9][10] 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."[11]

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, and later[when?] became known as "Natural Language Specification".[12]

Example of a Solidity program:[13]

contract GavCoin
{
  mapping(address=>uint) balances;
  uint constant totalCoins = 100000000000;

  /// Endows creator of contract with 1m GAV.
  function GavCoin(){
      balances[msg.sender] = totalCoins;
  }

  /// Send $((valueInmGAV / 1000).fixed(0,3)) GAV from the account of $(message.caller.address()), to an account accessible only by $(to.address()).
  function send(address to, uint256 valueInmGAV) {
    if (balances[msg.sender] >= valueInmGAV) {
      balances[to] += valueInmGAV;
      balances[msg.sender] -= valueInmGAV;
    }
  }

  /// getter function for the balance
  function balance(address who) constant returns (uint256 balanceInmGAV) {
    balanceInmGAV = balances[who];
  }

};

Development platform availability[edit]

References[edit]

  1. ^ "Solidity — Solidity 0.2.0 documentation". readthedocs.io. 
  2. ^ Popper, Nathaniel (2016-03-27). "Ethereum, a Virtual Currency, Enables Transactions That Rival Bitcoin's". New York Times. Retrieved 2016-05-01. 
  3. ^ Gray, Jeff (7 April 2014). "Bitcoin believers: Why digital currency backers are keeping the faith". The Globe and Mail. Phillip Crawley. Retrieved 17 February 2016. 
  4. ^ Vigna, Paul (28 October 2015). "BitBeat: Microsoft to Offer Ethereum-Based Services on Azure". The Wall Street Journal (Blog). News Corp. Retrieved 17 February 2016. 
  5. ^ Benoit Schweblin. "StackEdit Viewer". stackedit.io. 
  6. ^ "Blockchain Technology and Applications from a Financial Perspective". Scribd. 
  7. ^ slockit. "GitHub - slockit/DAO: The Standard DAO Framework, inc. Whitepaper". GitHub. 
  8. ^ "Augur documentation". augur.net. 
  9. ^ Mougayar, William (2016-04-26). The Business Blockchain: Promise, Practice, and Application of the Next Internet Technology. Wiley Publishing. ISBN 978-1119300311. 
  10. ^ Allison, Ian (2016-03-30). "Microsoft adds Ethereum language Solidity to Visual Studio". International Business Times. Retrieved 2016-05-11. 
  11. ^ Bradley, Joseph (2016-05-04). "Ethereum's Solidity Now Available in Microsoft Visual Studio". Cryptocoinnews. Retrieved 2016-05-11. 
  12. ^ ethereum. "Ethereum Natural Specification Format". GitHub. 
  13. ^ RJ Catalano, one of the core developers, see VoR0220 on github
  14. ^ "Ethereum's Solidity Now Available in Microsoft Visual Studio". CCN: Financial Bitcoin & Cryptocurrency News. Retrieved 1 May 2016. 
  15. ^ http://rethink-iot.com/2016/04/01/hyperledger-blockchain-code-almost-comes-together-for-iot/, accessed 23 April 2016.
  16. ^ "Microsoft Adds Ethereum to Windows Platform For Over 3 Million Developers". CoinDesk. Retrieved 1 May 2016. 
  17. ^ Allison, Ian (2016-03-30). "Microsoft adds Ethereum language Solidity to Visual Studio". International Business Times. Retrieved 2016-05-11. 

External links[edit]