Solidity

Răspuns scurt
Solidity este limbajul de programare folosit pentru a scrie contracte inteligente pe Ethereum și rețelele compatibile EVM. A fost creat special pentru blockchain — nu există în afara acestui context. Dacă un contract inteligent e o lege automată, Solidity e limba în care acea lege e scrisă.

Ce este Solidity?

Solidity este un limbaj de programare de nivel înalt, orientat pe obiecte, creat exclusiv pentru scrierea contractelor inteligente. A fost dezvoltat de echipa Ethereum — în principal de Christian Reitwiessner — și a apărut public în 2014, odată cu pregătirile pentru lansarea Ethereum.

Sintaxa sa e influențată de C++, Python și JavaScript — deci relativ familiară pentru programatorii cu experiență. Dar scopul e complet diferit: codul Solidity nu rulează pe un server sau calculator obișnuit, ci pe Ethereum Virtual Machine (EVM) — un mediu de execuție descentralizat, replicat pe mii de noduri simultan.

Analogie simplă: Dacă blockchain-ul e o țară cu propriile legi, contractele inteligente sunt legile, iar Solidity e limba în care sunt scrise. La fel cum legile românești sunt scrise în română — nu în engleză sau latină — contractele Ethereum sunt scrise în Solidity, nu în Python sau Java.

De ce a fost creat Solidity?

Limbajele de programare existente în 2014 nu erau potrivite pentru scrierea contractelor inteligente. Aveau probleme fundamentale în contextul blockchain:

✗ Problemele limbajelor existente
Nu aveau concepte native de „proprietate” sau „transfer de valoare”. Nu gestionau nativ starea persistentă pe blockchain. Nu aveau mecanisme pentru gas și comisioane. Nu erau proiectate pentru execuție deterministă pe noduri distribuite.
✓ Ce aduce Solidity
Tipuri native pentru adrese Ethereum. Transferuri de ETH direct în cod. Gestionarea automată a stării pe blockchain. Modificatori de acces pentru securitate. Eventuri pentru notificarea aplicațiilor externe.

Cum arată un contract Solidity — exemplu simplu

Nu trebuie să știi să programezi pentru a înțelege structura de bază. Iată cel mai simplu contract posibil — un „cont de economii” pe blockchain:

// Versiunea Solidity folosita
pragma solidity ^0.8.0;

// Definitia contractului
contract ContEconomii {

// Stocam proprietarul
address public proprietar;

// Rulat o singura data la publicare
constructor() {
proprietar = msg.sender;
}

// Oricine poate depune ETH
function depune() public payable { }

// Doar proprietarul poate retrage
function retrage() public {
require(msg.sender == proprietar);
payable(proprietar).transfer(
address(this).balance
);
}
}
pragma solidity
Specifică versiunea de Solidity folosită — important pentru compatibilitate și securitate.
address
Tip de date specific Solidity — stochează o adresă Ethereum (20 bytes). Nu există în alte limbaje.
msg.sender
Variabilă globală — adresa celui care a apelat funcția. Fundamentală pentru securitate și control acces.
payable
Modificator care permite funcției să primească ETH. Fără el, tranzacțiile cu ETH sunt respinse automat.
require
Verifică o condiție — dacă e falsă, tranzacția e anulată și ETH-ul e returnat. Mecanism esențial de securitate.

Conceptele cheie din Solidity

📦 State variables (variabile de stare)
Date stocate permanent pe blockchain — soldul unui utilizator, proprietarul unui NFT, prețul unui token. Spre deosebire de variabilele obișnuite care dispar după execuție, state variables persistă între tranzacții. Fiecare modificare costă gas.
⚙️ Functions (funcții)
Blocuri de cod executabile — pot fi publice (oricine le apelează), private (doar contractul) sau restricted (doar anumiți utilizatori). Funcțiile view citesc date fără să consume gas. Funcțiile care modifică starea costă gas.
🔔 Events (evenimente)
Mecanismul prin care contractul „anunță” lumea externă că ceva s-a întâmplat. Aplicațiile web3 ascultă evenimentele pentru a actualiza interfața. De exemplu, un transfer de token ERC-20 emite un eveniment Transfer vizibil pe Etherscan.
🛡️ Modifiers (modificatori)
Bucăți de cod reutilizabile care se atașează funcțiilor pentru a adăuga condiții de acces. Cel mai comun: onlyOwner — permite execuția doar proprietarului contractului. Evită duplicarea codului de verificare.
🔗 Inheritance (moștenire)
Contractele pot moșteni funcționalitate din alte contracte — similar cu moștenirea din programarea orientată pe obiecte. Tokenii ERC-20 moștenesc un contract standard și adaugă doar logica lor specifică. Reduce codul și riscurile.
📋 Interfaces & Mappings
Mappings sunt ca dicționarele — asociază o cheie cu o valoare (adresă → sold). Interfaces definesc un „contract” de comunicare între contracte — cum un contract DeFi poate interacționa cu orice token ERC-20 fără să cunoască implementarea specifică.

Standardele Solidity care au schimbat crypto

Comunitatea Ethereum a standardizat cele mai comune tipuri de contracte — asta înseamnă că orice aplicație știe cum să interacționeze cu ele fără să cunoască implementarea specifică:

ERC-20 — Tokeni fungibili
Standardul pentru tokeni interschimbabili. USDT, USDC, mii de alte tokeni sunt contracte ERC-20. Definește funcțiile: transfer, balanceOf, approve.
ERC-721 — NFT-uri
Standardul pentru tokeni non-fungibili — fiecare token e unic. Certifică proprietatea asupra operelor digitale, colecțiilor, itemelor de gaming. Fiecare NFT are un tokenId unic.
ERC-1155 — Multi-token
Un singur contract gestionează atât tokeni fungibili cât și NFT-uri. Popular în gaming — un joc poate gestiona monede, echipamente rare și personaje unice cu un singur contract. Mai eficient ca gas față de ERC-721.
ERC-4626 — Vaulturi tokenizate
Standardul pentru vaulturile DeFi — depui tokeni, primești „shares” (acțiuni) în schimb. Folosit de protocoale de yield farming și staking liquid.

Solidity vs. alte limbaje pentru smart contracts

LimbajRețea principalăInspirat dinPopularitate
SolidityEthereum, EVMC++, JavaScript, Python⭐⭐⭐⭐⭐ Dominant
RustSolana, NearRust (general purpose)⭐⭐⭐⭐ Crescând
VyperEthereumPython⭐⭐⭐ Nișă (securitate)
MoveAptos, SuiRust⭐⭐ Emergent
PlutusCardanoHaskell⭐⭐ Ecosistem Cardano
De ce Solidity domină? Ethereum a fost prima platformă majoră de smart contracts și a creat cel mai mare ecosistem de dezvoltatori. Standardele ERC-20 și ERC-721, bibliotecile open-source (OpenZeppelin), tool-urile (Hardhat, Foundry) și documentația sunt incomparabil mai mature decât orice alternativă. Rețelele EVM-compatibile (BNB Chain, Polygon, Arbitrum) au adoptat Solidity direct — extinderea ecosistemului fără a schimba limbajul.

Securitate în Solidity — de ce contează atât de mult

Un bug într-un contract Solidity nu poate fi „patch-uit” după publicare — și poate costa milioane. Istoria crypto e plină de exemple:

⚠️ Reentrancy attack — The DAO Hack (2016, $60M)
Un contract trimitea ETH înainte de a actualiza soldul. Atacatorul a creat un contract care apela recursiv funcția de retragere înainte ca soldul să fie resetat. Rezultat: $60 milioane furate, un hard fork controversat al Ethereum.
⚠️ Integer overflow/underflow
Înainte de Solidity 0.8, numerele puteau „depăși” limita și reveni la zero sau la maximum. Un sold de 1 token scăzut cu 2 devenea 2²⁵⁶ – 1 — astronomic. Solidity 0.8+ a rezolvat automat această problemă.
⚠️ Access control mistakes
Funcții critice (mint, withdraw, upgrade) lăsate publice accidental. Un atacator descoperă că poate emite tokeni nelimitat sau retrage toți banii din protocol. Cea mai frecventă cauză de hack în contracte DeFi.
Best practice: Proiectele serioase folosesc OpenZeppelin — o bibliotecă open-source de contracte Solidity auditate și testate, care implementează standardele ERC și pattern-uri de securitate. Un token ERC-20 scris cu OpenZeppelin e incomparabil mai sigur decât unul scris de la zero.

Întrebări frecvente despre Solidity

Ce este Solidity?
Solidity este limbajul de programare folosit pentru a scrie contracte inteligente pe Ethereum și rețelele EVM-compatibile. A fost creat special pentru blockchain și rulează pe Ethereum Virtual Machine.
Trebuie să știu Solidity ca să folosesc crypto?
Nu. Utilizatorii obișnuiți interacționează cu contractele inteligente prin interfețe grafice — nu scriu cod. Solidity e pentru dezvoltatorii care creează protocoale DeFi, NFT-uri sau alte aplicații blockchain. E similar cu HTML — nu trebuie să știi HTML pentru a naviga pe internet.
Unde rulează codul Solidity?
Pe Ethereum Virtual Machine (EVM) — un mediu de execuție descentralizat replicat pe mii de noduri simultan. Nu rulează pe un server, nu poate fi oprit de nimeni.
Ce este ERC-20 și are legătură cu Solidity?
ERC-20 este un standard de contract Solidity pentru tokeni fungibili. USDT, USDC și mii de alte tokeni sunt contracte Solidity care implementează standardul ERC-20.
Poate fi modificat un contract Solidity după publicare?
În mod normal nu — contractele Solidity sunt imutabile după publicare pe blockchain. Există pattern-uri de upgradabilitate (proxy contracts), dar adaugă complexitate. Imutabilitatea e în același timp securitate și responsabilitate — codul trebuie să fie corect de la început.
Cât costă să execuți un contract Solidity?
Fiecare operație din contractul Solidity are un cost în gas — unitatea de măsură a resurselor computaționale pe Ethereum. Costul variabil în funcție de complexitate, rețea și congestionare. Pe Layer 2 (Arbitrum, Optimism), aceleași contracte Solidity costă de 10–50x mai puțin.

solidity
smart contract
ethereum
erc-20
defi
blockchain
dictionar crypto