Solidity é uma linguagem de programação de alto nível e tipagem estática para contratos inteligentes executados na Máquina Virtual Ethereum (EVM). Ela permite definir o estado, as funções e os eventos de um contrato, além das regras de interação com ativos digitais.
Do código-fonte ao contrato
Um compilador transforma o código Solidity em bytecode da EVM. A interface binária de aplicação (ABI) descreve como outros programas chamam funções e interpretam dados. Implantar um contrato ou alterar seu estado na blockchain exige transações e gas. Consultar o estado existente por uma chamada a um nó local não exige necessariamente uma transação paga.
Solidity é usada em tokens, custódia condicional e governança. A sintaxe pode parecer familiar a desenvolvedores JavaScript, mas a execução segue as regras da blockchain, e não as de um navegador. As configurações do compilador e os recursos da EVM aceitos pela rede de destino afetam a compatibilidade.
Visibilidade do código e segurança
Publicar código-fonte verificado facilita compará-lo com o contrato implantado, mas não comprova sua segurança. Controles de acesso, chamadas externas, premissas sobre oráculos e poderes administrativos ainda precisam de revisão.
Uma variável marcada como private não é secreta em uma blockchain pública. A reentrância pode ocorrer quando uma chamada externa entra novamente no contrato antes da atualização segura de seu estado. Testes e uma revisão independente de segurança reduzem os riscos sem eliminá-los.