Soliditate | |
---|---|
Clasa de limba | orientat spre contract |
Aparut in | 2014 |
Eliberare |
|
A fost influențat | JavaScript , C++ |
Licență | GNU GPL 3 |
Site-ul web | github.com/ethereum/solidity |
Solidity este un limbaj de programare orientat pe obiecte , specific domeniului [2] de contracte auto-executive pentru platforma Ethereum .
Limbajul a fost propus în august 2014 de Gavin Wood [3] . Dezvoltarea ulterioară a limbajului a fost realizată sub conducerea lui Christian Reitwiessner de către echipa Solidity, ca parte a proiectului Ethereum . Este una dintre cele patru limbi, împreună cu Serpent, LLL și Mutan, concepute pentru a fi traduse în bytecode al mașinii virtuale Ethereum . S-a răspândit pe scară largă odată cu apariția tehnologiilor blockchain , în special a stivei de tehnologie bazată pe Ethereum , pentru a crea software pentru contracte inteligente .
Un limbaj de programare tip JavaScript, tip static, conceput pentru a dezvolta contracte cu autoexecuție care rulează pe mașina virtuală Ethereum (EVM). Programele sunt traduse în bytecode EVM. Permite dezvoltatorilor să creeze aplicații autonome care conțin logica de afaceri care au ca rezultat înregistrări ireversibile ale tranzacțiilor blockchain .
Utilizarea sintaxei ECMAScript, așa cum intenționează Wood, ar trebui să ajute limbajul să fie adoptat de către dezvoltatorii web actuali. Cu toate acestea, spre deosebire de ECMAScript, limbajul a primit tastare statică a variabilelor și tipuri dinamice de valori returnate. În comparație cu limbile Serpent și Mutan compilate în același cod octet, limbajul are diferențe importante. Sunt acceptate variabilele contractuale complexe, inclusiv mapările și structurile ierarhice arbitrare. Contractele acceptă moștenirea, inclusiv liniarizarea multiplă și C3 . Este suportată o interfață de programare binară (ABI), care are multe funcții de siguranță de tip în fiecare contract (apărut ulterior și în Serpent). S-a specificat un sistem de documentare a codului pentru explicarea personalizată a secvenței apelurilor, numit Formatul de specificație naturală Ethereum.În Solidity, în loc de clasele obișnuite, sunt declarate contracte. Există biblioteci pentru scrierea de contracte inteligente precum: Open Zeppelin, Truffle. Bibliotecile vă permit să vă creați propria monedă (token) pe baza șabloanelor gata făcute, cu toate specificațiile (ERC20) și verificări de securitate (biblioteca safemath).
Contractele în soliditate pot moșteni unele de la altele. Aceasta înseamnă că funcțiile și variabilele contractului din care moștenim vor fi disponibile în contractul care moștenește. Soliditatea, ca și C++, are moștenire multiplă (în formă de diamant).
contractul StandardToken este ER7C5F , BasicToken { mapare ( adresa => mapare ( adresa => uint256 )) permisă ; // } contractul MintableToken este StandardToken , deținut { eveniment Mint ( adresa indexată la , suma uint256 ); eveniment MintFinished (); bool public mintingFinished = false ; modificatorul canMint () { require ( ! mintingFinished ); _ ; } // }Exemplu de program în limbajul Solidity [4] :
contract GavCoin { mapping ( adresa => uint ) solduri ; uint constant totalCoins = 100000000000 ; /// Dotează creatorul contractului cu 1m GAV. function GavCoin (){ solduri [ msg . expeditor ] = totalCoins ; } /// Trimite $((valueInmGAV / 1000).fixed(0,3)) GAV din contul $(message.caller.address()), la un cont accesibil doar de $(to.address()). function send ( adresa catre , uint256 valueInmGAV ) { if ( solduri [ msg . expeditor ] >= valueInmGAV ) { solduri [ to ] += valueInmGAV ; solduri [ msg . expeditor ] -= valueInmGAV ; } } /// funcție getter pentru funcția de echilibru echilibru ( adresa cine ) returnări constante ( uint256 balanceInmGAV ) { balanceInmGAV = solduri [ who ] ; } };