Solidity
A Solidity okosszerződéseket támogató, imperatív, objektumorientált programnyelv. Elsősorban az Ethereumon és az Ethereumra épülő egyéb blokkláncon használják. A nyelvhez tartozik a solc (Solidity Compiler) fordító, mely az Ethereum Virtual Machine-nal kompatibilis bájtkódot állít elő a Solidity kódból.
Programozási paradigmák
[szerkesztés]- Imperatív
- Procedurális
- Objektumorientált
- Támogatja a többszörös öröklődést
- Támogatja több szimultán visszatérési érték megadását
Szintaxis, nyelvi elemek
[szerkesztés]Solidityben a blokkok kapcsoszárójelekkel vannak jelölve. Az utasítások végén pontosvessző szerepel. A kód az opcionális SPDX licenszazonosítóval és az aktuális Solidity fordító verziószámának megadásával kezdődik.
Főbb kulcsszavak
[szerkesztés]pragma solidity <verzió>: A Solidity fordító (solc) verziójának megadására szolgál. Megadható fix verzió, vagy akár intervallum. A fejlesztő ezzel jelzi, hogy melyik verzión fut el a program. Elhagyása vagy nem megfelelő megadása fordítási hibát eredményez.
contract <név>: Okosszerződést definiáló blokk.
public, private, external, internal: Láthatóságot beállító kulcsszavak. A public és private megegyezik a többi objektumorientált nyelvben ismeretes működéssel. Az external módosítószó kikényszeríti, hogy az adott metódus kizárólag kívülről legyen meghívható, míg az internal ezzel ellenkezőleg azt adja meg, hogy kizárólag az őt magába foglaló okosszerződés tudja meghívni.
import: Más fájl tartalmának beolvasása
constructor: konstruktor
event: esemény definiálására szolgál
emit: esemény rögzítése
library: származtatással újrahasznosítható függvényeket definiáló blokk
Adattípusok
[szerkesztés]address: ETH (wallet) cím hexadecimális formában, 0x-szel prefixelve.
uint: előjel nélküli egész
uint8: 8 bites előjel nélküli egész (uint16, uint32, uint256, stb. ennek mintájára működik)
int: előjeles egész
bool: logikai érték
string: karakterlánc
bytes: bájtok sorozata (meghatározható a mérete hasonlóképp a uint-hez)
mapping: Asszociatív tömb tetszőleges típusú kulccsal és értékkel, mely típusokat a definícióban kell megadni. Például mapping (address => uint) associatedAddresses;
struct: Különféle adattípusokat aggregáló struktúra (hasonlóképpen működik, mint a C nyelvcsaládban)
enum: enumerátor típus
Hivatkozások
[szerkesztés]A Solidity dokumentációja: https://docs.soliditylang.org/en/latest/