Solidity

From WEB3 Vulnerapedia
Jump to navigation Jump to search

Solidity is a programming language specifically designed for writing smart contracts on the Ethereum blockchain and other compatible platforms such as those that support the EVM, such as Polygon, Binance Smart Chain and Avalanche. It enables developers to create decentralized applications (DApps) by defining the rules and behavior of smart contracts. Solidity's syntax is similar to JavaScript, making it accessible for developers and facilitating the implementation of complex logic within smart contracts. It's a vital tool in the Web3 space for building decentralized applications and automating blockchain-based processes while ensuring security and reliability.

History

Solidity was designed by Gavin Wood in August 2014. It was further developed by Christian Reitwiessner, Alex Beregszaszi, and several other former Ethereum core contributors.

Use

Solidity is the primary language on Ethereum. Programs in Solidity run on virtual machines, mostly on Ethereum Virtual Machine.

It's also used on other private blockchains, such as the enterprise-oriented Hyperledger Fabric blockchain. SWIFT deployed a proof of concept using Solidity running on Hyperledger Fabric.

Technical

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

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 smart contracts, including arbitrarily hierarchical mappings and structs. Solidity smart contract support inheritance, including multiple inheritance with C3 linearization. Solidity introduces an application binary interface (ABI) that facilitates multiple type-safe functions within a single smart 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 (computer programming) | method]-calls.

External links

https://github.com/ethereum/solidity

https://soliditylang.org/

https://en.wikipedia.org/wiki/Solidity

Solidity Checklist & Reentrancy Attack

EVM Limitations & Assembly Auditing Tips

Initializing, Proxy, Oracles & Multi-Chain