スマートコントラクトとは
スマートコントラクト(Smart Contract)とは、ブロックチェーン上にデプロイされ、あらかじめ定義された条件が満たされると自動的に処理を実行するプログラムのこと。
従来の契約は、当事者間の合意を文書化し、履行は人間の行動や法的な強制力に依存していた。スマートコントラクトでは、合意内容がコードとして記述され、条件成立時の実行がプログラムによって保証される。第三者の仲介や信頼に頼る必要がない。
歴史
「スマートコントラクト」という概念自体は、1994年にNick Szaboが提唱したもので、ブロックチェーンよりも前に存在していた。Szaboは自動販売機を例に挙げている。コインを入れれば商品が出てくる、という条件付き実行の仕組みがスマートコントラクトの原型にあたる。
この概念を汎用的に実現する基盤を提供したのがEthereum。2015年のローンチにより、任意のロジックをブロックチェーン上で実行できるようになった。
仕組み
- 開発者がコントラクトのロジックをコードで記述する(Ethereumの場合はSolidityが主要な言語)
- コードをコンパイルし、ブロックチェーン上にデプロイする。デプロイされたコントラクトは固有のアドレスを持つ
- ユーザーやほかのコントラクトがトランザクションを送ると、コードが実行される
- 実行結果はブロックチェーンに記録され、改ざんできない
一度デプロイされたコントラクトは、原則として変更できない(イミュータブル)。この性質が信頼性を担保する一方で、バグがあった場合に修正が困難という側面もある。
主な活用領域
- DeFi(分散型金融): レンディング、DEX、リキッドステーキングなど、金融サービスのロジックがスマートコントラクトで実装されている
- トークン発行: ERC-20(代替可能トークン)やERC-721(NFT)といった標準仕様に基づくトークンの発行・管理
- DAO(分散型自律組織): 組織のガバナンスルール(投票、資金配分など)をコントラクトで運用する
- エスクロー: 条件が満たされるまで資金をコントラクトが保持し、条件成立時に自動で送金する