Obsah
Smart Contracts: Vývoj pro EVM
Vývoj pro EVM se točí především kolem jazyka Solidity. Jde o objektově orientovaný, staticky typovaný jazyk, který byl navržen tak, aby jeho výsledný bytecode mohl být vykonán libovolným uzlem v síti Ethereum.
1. Životní cyklus vývoje
Proces od nápadu k běžící smlouvě na hlavní síti (Mainnet) má přísná pravidla:
1. **Návrh a kódování:** Psaní logiky v Solidity (soubory .sol). 2. **Kompilace:** Solc (kompilátor) přeloží kód do **Bytecodu** (pro EVM) a vygeneruje **ABI** (Application Binary Interface - popis rozhraní pro komunikaci s aplikací). 3. **Lokální testování:** Spuštění kódu na lokálním blockchainu (např. Hardhat, Foundry nebo Ganache). 4. **Nasazení na Testnet:** Vyzkoušení na sítích jako Sepolia nebo Holesky, kde se nepoužívá skutečné ETH. 5. **Audit:** Revize kódu bezpečnostními experty. 6. **Mainnet Deployment:** Odeslání transakce, která kód uloží na trvalo do blockchainu.
—
2. Struktura kontraktu v Solidity
Základní kontrakt vypadá podobně jako třída (class) v jiných jazycích:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract JednoduchaBanka {
// Stavová proměnná (uložená trvale v blockchainu)
mapping(address => uint) public zůstatky;
// Funkce pro uložení peněz
function vklad() public payable {
zůstatky[msg.sender] += msg.value;
}
// Funkce pro výběr
function vyber(uint _castka) public {
require(zůstatky[msg.sender] >= _castka, "Nedostatek penez");
zůstatky[msg.sender] -= _castka;
payable(msg.sender).transfer(_castka);
}
}
—
3. Klíčové koncepty při psaní kódu
Úložiště: Storage vs. Memory
EVM rozlišuje, kde jsou data uložena, což má obrovský vliv na cenu transakce:
- Storage: Data uložená trvale na blockchainu. Nejdražší operace.
- Memory: Dočasná paměť, která existuje jen během vykonávání funkce. Levnější.
- Stack: Velmi omezený prostor pro lokální proměnné (maximálně 16 hluboko).
Globální proměnné
Solidity poskytuje speciální proměnné pro přístup k informacím o síti:
- msg.sender: Adresa toho, kdo právě volá funkci (klíčové pro autorizaci).
- msg.value: Množství zaslaných peněz (v jednotkách Wei).
- block.timestamp: Čas vytvoření aktuálního bloku.
—
4. Bezpečnost: Na co si dát pozor
Chyby v chytrých smlouvách nelze opravit pomocí „patche“. Mezi nejznámější hrozby patří:
- Reentrancy: Útočník zavolá funkci výběru a dříve, než se aktualizuje jeho zůstatek, ji zavolá znovu (rekurze), čímž vyčerpá banku.
- Integer Overflow/Underflow: Přetečení číselné hodnoty (v nových verzích Solidity již ošetřeno automaticky).
- Gas Limit: Pokud je funkce příliš složitá, spotřebuje veškerý Gas a transakce selže, což může způsobit „zamrznutí“ prostředků.
—
5. Vývojářské nástroje (Truffle Suite & Hardhat)
Moderní vývojář nepoužívá jen textový editor, ale celé vývojové frameworky:
- Foundry: Moderní nástroj v Rustu, který umožňuje psát testy přímo v Solidity.
- OpenZeppelin: Knihovna hotových, prověřených a bezpečných šablon (např. pro tvorbu ERC-20 tokenů).
- Remix IDE: Webové prostředí pro rychlé prototypování a testování přímo v prohlížeči.
Související články:
Tagy: it solidity programming ethereum evm devops blockchain security
