Az okosszerződések nem is szerződések és különösebben nem is okosak. Ezek egyszerű programok, amelyek a blokkláncon vannak tárolva az érmékre, tokenekre és tárcákra vonatkozó információkkal együtt. Az okosszerződések kulcsfontosságúak a kriptovalutákon alapuló decentralizált alkalmazások fejlesztésében.
A Bitcoin blokkláncon nem futnak okosszerződések. A technológiát az Ethereum specifikációjának részeként vezették be 2014-ben, amely tartalmazta az okosszerződés definícióját is. Tehát, ha az okosszerződésekről van szó, akkor az Ethereum az ász. Ez az egyik oka annak, hogy olyan sok dApp-ot építettek úgy, hogy az Ethereumon és az Ethereum-kompatibilis blokkláncokon fussanak.
Szóval mi az okosszerződés valójában? Egyszerű IF/THEN (ha/akkor) utasításokként kezdődtek. Az “okosszerződés” kifejezést megalkotó fejlesztő az okos szerződést az automata gépek blokkláncváltozataként írta le: HA a megfelelő érméket befizetik, AKKOR kiad egy üdítőt. Bizonyos értelemben az automata gép okos, mivel képes automatikusan és önállóan végrehajtani a feladatát.
Az Ethereum hálózatán egy okosszerződés meghatározhatja, hogy HA egy összeg beérkezik a felhasználó tárcájába, AKKOR az adott összeg 10%-a átutalódik egy második tárcába, melynek célja a hosszú távú megtakarítás.
A legtöbb okosszerződést ma már a Solidity nevű programozási nyelven írják, amit ugyanazok a szoftvermérnökök hoztak létre, akik az Ethereum korai verzióit is megalkották. A Solidity támogatja az egyszerű HA/AKKOR modellnél kifinomultabb okosszerződések létrehozását is.
Az okosszerződéseket az Ethereum virtuális gépe (Ethereum Virtual Machine vagy EVM) hajtja végre, ami egy olyan szoftverplatform, amelyet a blokklánc tranzakciók másolataival együtt telepítenek az Ethereum csomópontokra. Ma már olyan EVM-ek léteznek, amelyek lehetővé teszik az okosszerződések létrehozását C++, C#, Go, Haskell, Java, JavaScript, Python, Ruby, Rust, Elixir, Erlang és más programozási nyelveken is. Az olyan vizuális programozási eszközök, mint az EtherScripter, virtuális környezetként szolgálnak, lehetővé téve az okosszerződések létrehozását anélkül, hogy kódot kellene írni programozási nyelven.