==== Ethereum: Solidity Language Specification ==== [[dido:public:ra:xapend:xapend.b_stds:defact:ethereum:start| return to the Ethereum Standards ]] | Title | Solidity Language Specification | | Acronym | Solidity | | Version | 0.6.8 | | Document Number | Solidity | | Release Date | 17 December 2019 | | About Specification | [[https://solidity.readthedocs.io/en/v0.6.8/index.html]] | | Download | [[https://github.com/ethereum/solidity/releases]] |
Data sheet for Solidity Language Specification
: **Note**: The following is an excerpt from the official Ethereum site. It is provided here as a convenience and is not authoritative. Refer to the original document as the authoritative reference. === Description === Source: [[https://en.wikipedia.org/wiki/Solidity | Wikipedia Description of Solidity]] ://Solidity is a statically-typed [[dido:public:ra:xapend:xapend.a_glossary:p:programlang|programming language]] designed for developing [[dido:public:ra:xapend:xapend.a_glossary:s:smart_contract|smart contracts]] that run on the EVM(( "Hyperledger Fabric Tutorial - Create a blockchain app for loyalty points". IBM Developer. Retrieved 10 April 2019. ))(( Allison, Ian (30 March 2016). "Microsoft adds Ethereum language Solidity to Visual Studio". International Business Times. Retrieved 11 May 2016. )) Solidity is compiled to bytecode that is executable on the EVM. With Solidity, developers are able to write [[dido:public:ra:xapend:xapend.a_glossary:a:application|applications]] that implement self-enforcing business logic embodied in smart contracts, leaving a non-repudiable and authoritative record of transactions.(( Allison, Ian (30 March 2016). "Microsoft adds Ethereum language Solidity to Visual Studio". International Business Times. Retrieved 11 May 2016. )) Writing smart contracts in smart contract specific languages such as Solidity is referred to as easy (ostensibly for those who already have programming skills).(( Mougayar, William (26 April 2016). The Business Blockchain: Promise, Practice, and Application of the Next Internet Technology. Wiley Publishing. p. 58. ISBN 978-1119300311. ))// ://As specified by Wood it is designed around the ECMAScript [[dido:public:ra:xapend:xapend.a_glossary:s:syntax|syntax]] to make it familiar for existing web developers;[citation needed] 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 [[dido:public:ra:xapend:xapend.a_glossary:a:application_binary_interface_api]] 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".(( Kapetanios-2008-06-27 & p.309. ))(( ethereum. "Ethereum Natural Specification Format". GitHub. ))// === Overview === Source: [https://solidity.readthedocs.io/en/v0.5.8/index.html | Ethereum Release Page ]] : //Solidity is an object-oriented, high-level language for implementing smart contracts. Smart contracts are programs which govern the behaviour of accounts within the Ethereum state.// : //Solidity was influenced by C++, Python and [[dido:public:ra:xapend:xapend.a_glossary:j:javascript|JavaScript]] and is designed to target the [[dido:public:ra:xapend:xapend.a_glossary:e:evm]].// : //Solidity is statically typed, supports inheritance, libraries and complex user-defined types among other features.// : //With Solidity you can create contracts for uses such as voting, crowdfunding, blind auctions, and [[dido:public:ra:xapend:xapend.a_glossary:m:multi-signature|multi-signature]] wallets.// : //When deploying contracts, you should use the latest released version of Solidity. This is because breaking changes as well as new features and bug fixes are introduced regularly. We currently use a 0.x version number [[https://semver.org/#spec-item-4 | to indicate this fast pace of change]].// /**=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- /* To add a discussion page to this page, comment out the line that says ~~DISCUSSION:off~~ */ ~~DISCUSSION:on|Outstanding Issues~~ ~~DISCUSSION:off~~