導入
ビットコインが主に「送金」の台帳なのに対し、Ethereum は台帳の上でプログラムを動かせるようにしたブロックチェーンです。この「ブロックチェーン上で自動実行されるプログラム」が スマートコントラクトであり、Solidity で書きます。
説明
スマートコントラクト(smart contract) は「契約を自動で実行するプログラム」です。たとえば「Aが1ETH送ったら、自動でデジタルチケットをAに発行する」というルールをコードにしておくと、仲介者なしで、条件が満たされた瞬間に自動で・確実に実行されます。一度デプロイ(配置)されると、そのコードは台帳に刻まれ、誰にも勝手に止められず・書き換えられません。
graph TB
U[利用者] -- 1ETH送金 --> C
subgraph chain["Ethereumブロックチェーン"]
C["スマートコントラクト<br/>(Solidityのコード)"]
C -- 自動実行 --> R[チケットをUに発行]
C -- 記録 --> L[(台帳に永久保存)]
end
Ethereum 自体の通貨は ETH(イーサ) で、送金やコントラクトの手数料の支払いに使います。スマートコントラクトを使うと、次のようなものが「管理者なし」で作れます。
- トークン(独自の通貨・ポイント。ERC-20 規格。第5章で扱います)
- NFT(デジタル資産の所有証明。ERC-721)
- DeFi(銀行を介さない貸し借り・両替)
- DAO(プログラムで運営される組織)
「Code is Law(コードが規則)」――合意された条件どおりに、感情も忖度もなく実行される。これがスマートコントラクトの思想です。
やってみよう
自動販売機を思い浮かべてください。「お金を入れる → ボタンを押す → 商品が出る」は、店員がいなくても機械のルールで実行されます。スマートコントラクトは「お金と条件を入れると自動で価値を返す、改ざんできない自動販売機」だと考えると、イメージが掴めます。