Solidez é uma linguagem de programação usada para desenvolver contratos inteligentes no Ethereum e em outras plataformas de blockchain, como Monax e seu Hyperledger Burrow blockchain. O criador de software britânico Gavin Wood propôs Solidity em 2014 e desenvolveu a linguagem de programação de alto nível juntamente com outros aficionados do Ethereum, incluindo Christian Reitwiessner, Alex Beregszaszi, Liana Husikyan e Yoichi Hirai.
Solidity é compilado para bytecode (ou código portátil) que é executável na Ethereum Virtual Machine (EVM), o ambiente de tempo de execução para contratos inteligentes no Ethereum. Embora outras linguagens, incluindo Serpent, Viper e Mutan, também possam ser compiladas em bytecode de nível de máquina EVM para execução em nós Ethereum para pagamento, Solidity é a mais amplamente adotada.
Solidity foi criada para ser facilmente aprendida porque emprega muitos conceitos - como variáveis, funções, classes, operações aritméticas e manipulação de strings - que aparecem em linguagens de programação modernas populares. Uma linguagem intencionalmente pared down, de tipagem livre, Solidity desenha a partir de C, C++, C#, JavaScript, PowerShell e Python. Também adopta uma sintaxe que se assemelha ao ECMAScript (JavaScript). Por exemplo, em Java ou C, um programador criaria alguma forma de função "principal", enquanto Solidity usa um "contrato" escrito de maneira similar.
Desenvolvedores trabalhando com Solidity podem escrever aplicativos que implementam lógica de negócios auto-forçadores incorporados em contratos inteligentes. Um contrato inteligente, também conhecido como cryptocontract, é um programa de computador que controla diretamente a transferência de moedas digitais ou ativos entre as partes sob condições específicas. Ele estabelece as regras e penalidades relacionadas a um acordo, muito parecido com um contrato tradicional, mas também pode fazer cumprir essas obrigações automaticamente. Contratos inteligentes são considerados um meio seguro, fácil e confiável que permite aos indivíduos fazer negócios uns com os outros, mesmo que falem idiomas diferentes ou usem moedas diferentes. Os contratos também suportam variáveis complexas de membros em mapeamento hierárquico e estruturas.
Solidity tem um compilador que decompõe o código de alto nível em instruções simples como "colocar dados em um registro", "adicionar dados de dois registros", "saltar de volta às instruções no ponto de memória xxxxx". A linguagem de programação é estaticamente tipada (o que significa que os tipos de variáveis são declarados explicitamente e determinados em tempo de compilação) e suporta herança, bibliotecas e tipos complexos definidos pelo usuário. Herança refere-se a um objeto ou classe que é baseado em outro objeto ou classe e usa a mesma implementação para manter o mesmo comportamento.
Além disso, existem várias plataformas de integração (para compilar, executar e executar código) que implementam Solidity, incluindo Remix, que é um ambiente de desenvolvimento integrado (IDE) baseado em navegador facilmente disponível. Também são suportadas várias funções de tipo seguro, o que significa que o compilador irá validar tipos e produzir um erro se o tipo errado for atribuído a uma variável.