Solidity

Solidity è un linguaggio di programmazione utilizzato per lo sviluppo di contratti intelligenti su Ethereum e altre piattaforme blockchain, come Monax e la sua blockchain Hyperledger Burrow. Lo sviluppatore di software britannico Gavin Wood ha proposto Solidity nel 2014 e ha sviluppato il linguaggio di programmazione di alto livello insieme ad altri appassionati di Ethereum, tra cui Christian Reitwiessner, Alex Beregszaszi, Liana Husikyan e Yoichi Hirai.

Solidity è compilato in bytecode (o codice portatile) eseguibile su Ethereum Virtual Machine (EVM), l'ambiente di runtime per gli smart contract in Ethereum. Sebbene altri linguaggi, tra cui Serpent, Viper e Mutan, possano anche essere compilati in bytecode a livello di macchina EVM per essere eseguiti su nodi Ethereum a pagamento, Solidity è il più ampiamente adottato.

Solidità è stata creata per essere facilmente appresa perché impiega molti concetti - come variabili, funzioni, classi, operazioni aritmetiche e manipolazione di stringhe - che compaiono nei più diffusi linguaggi di programmazione moderni. Un linguaggio volutamente ridotto e digitato in modo approssimativo, Solidity si basa su C, C ++, C #, JavaScript, PowerShell e Python. Adotta anche una sintassi simile a ECMAScript (JavaScript). Ad esempio, in Java o C, un programmatore creerebbe una qualche forma di funzione "principale", mentre Solidity utilizza un "contratto" scritto in modo simile.

Gli sviluppatori che lavorano con Solidity possono scrivere app che implementano la logica di business autoapplicata incorporata negli smart contract. Uno smart contract, noto anche come cryptocontract, è un programma per computer che controlla direttamente il trasferimento di valute o risorse digitali tra le parti a condizioni specifiche. Stabilisce le regole e le sanzioni relative a un accordo, proprio come fa un contratto tradizionale, ma può anche far rispettare tali obblighi automaticamente. I contratti intelligenti sono considerati un mezzo sicuro, facile e affidabile che consente alle persone di effettuare transazioni commerciali tra loro, anche se parlano lingue diverse o utilizzano valute diverse. I contratti supportano anche variabili membro complesse nella mappatura e nelle strutture gerarchiche.

Solidity ha un compilatore che scompone il codice di alto livello in semplici istruzioni come "inserisci i dati in un registro", "aggiungi dati da due registri", "torna all'istruzione al punto di memoria xxxxx". Il linguaggio di programmazione è tipizzato staticamente (il che significa che i tipi di variabili sono dichiarati esplicitamente e determinati in fase di compilazione) e supporta ereditarietà, librerie e tipi complessi definiti dall'utente. L'ereditarietà si riferisce a un oggetto o una classe basata su un altro oggetto o classe e utilizza la stessa implementazione per mantenere lo stesso comportamento.

Inoltre, ci sono diverse piattaforme di integrazione (per compilare, eseguire ed eseguire codice) che implementano Solidity, incluso Remix, che è un ambiente di sviluppo integrato (IDE) basato su browser facilmente disponibile. Sono supportate anche varie funzioni indipendenti dai tipi, il che significa che il compilatore convaliderà i tipi e produrrà un errore se il tipo sbagliato viene assegnato a una variabile.