スマートコントラクト
ブロックチェーン上に置かれ、誰かが呼び出すたびに全ノードが実行するコード。1994年にNick Szaboが命名し、2015年にEthereumが実用化した。
多くはSolidityで書かれてEVMバイトコードにコンパイルされ、一度デプロイすると変更できない。そのため、プロキシコントラクトによる更新パターンが生まれた。「コードが法である」という原則は、2016年のDAOハッキングまで保たれた。リエントランシーのバグで360万ETHが流出し、Ethereumコミュニティは事件をなかったことにするハードフォークを実施した(残った側がEthereum Classicである)。代表的な脆弱性にはリエントランシー、整数オーバーフロー(Solidity 0.8以降は減少)、オラクル操作、フロントランニングがある。1行ごとにガスがかかるため、最適化と安全性はしばしば綱引きになる。