🤝 スマートコントラクトとは何か?
コードが「契約」になる仕組みを解説
もふねこだよ。🐾 「スマートコントラクト」という言葉はよく聞くけど、「何がスマートで何が契約なの?」って疑問だよね。DeFi・NFT・DAOの全ての根幹にある技術だから、ちゃんと理解しておこう!
1. スマートコントラクトとは?
スマートコントラクトとは、「条件を満たした時に自動的に実行されるプログラム」のことだよ。ブロックチェーン上に書き込まれることで、特定の誰かが管理しなくとも、条件さえ成立すれば誰でも同じ結果を得られるんだ。
🏧
ATMに例えると分かりやすい。ATMは「暗証番号が正しい+残高が足りている」という条件を満たした時に、自動的にお金を出してくれる。銀行員が個別に判断するわけじゃない。スマートコントラクトはこれを「お金の送受金」だけでなく、あらゆる条件付き取引に応用できるんだよ。
2. スマートコントラクトのコードの例(Solidity)
イーサリアムでは「Solidity」というプログラミング言語でスマートコントラクトを書くんだよ。超シンプルな例を見てみよう。
// 非常に簡略化した「エスクロー(仮払い)」の例
contract SimpleEscrow {
address public buyer;
address public seller;
// 買い手が資金を預ける
function deposit() external payable { ... }
// 買い手が「商品受取」を確認した時だけ、
// 売り手に自動的に資金が送られる
function confirmReceived() external {
require(msg.sender == buyer);
seller.transfer(address(this).balance);
}
}
contract SimpleEscrow {
address public buyer;
address public seller;
// 買い手が資金を預ける
function deposit() external payable { ... }
// 買い手が「商品受取」を確認した時だけ、
// 売り手に自動的に資金が送られる
function confirmReceived() external {
require(msg.sender == buyer);
seller.transfer(address(this).balance);
}
}
このコードがブロックチェーンに書き込まれると、「買い手が確認した時だけ売り手に送金」という契約が人間の介入なしに自動実行されるんだよ。仲介業者(Escrow会社)が不要になる!
3. スマートコントラクトで実現する主なサービス
DeFi(分散型金融)
Uniswapなどの分散型取引所は、スマートコントラクトが流動性プールと交換レートを自動管理
NFT(非代替性トークン)
NFTの発行・転送・ロイヤリティ分配はすべてスマートコントラクトで自動処理
DAO(分散型自律組織)
投票・提案・資金執行をコードで自動化。理事会なしに組織が動く
マルチシグウォレット
「3人中2人が署名した時だけ送金」などの多重署名をコードで実装
4. スマートコントラクトの弱点とリスク
- コードのバグは修正できないことがある:一度ブロックチェーンにデプロイされたコードは改ざんできない設計。バグがあると悪用される(例:2016年のDAOハック事件)
- 「コードの意図」と「実際の挙動」が乖離することがある:書いた人が意図しない抜け穴を攻撃者に突かれるリスク
- 外部データへの依存(オラクル問題):スマートコントラクトはチェーン外のデータ(株価・天候など)を直接取得できない。Chainlinkなどのオラクルを使うが、そこもリスク
📝 まとめ:スマートコントラクトの本質
- 条件を満たした時に自動実行されるブロックチェーン上のプログラム
- 仲介者(銀行・弁護士・取引所)不要で、コードが「信頼」を担保する
- DeFi・NFT・DAOなどWeb3の全サービスの根幹となる技術
- コードのバグが致命的なリスクになることがあるため、監査の重要性が高い