スマートコントラクト
別名: Smart contract · スマコン
定義
スマートコントラクトとは、ブロックチェーン上に置かれ、あらかじめ決められた条件が満たされると自動的に実行されるプログラムのことです。
スマートコントラクトの仕組み
スマートコントラクトは、一度デプロイ(配置)されるとブロックチェーン上の誰もが呼び出せ、書かれたとおりに動きます。トークンの発行、分散型取引所(DEX)での交換、レンディング、NFTの売買などは、すべてスマートコントラクトで動いています。
仲介者がいなくても取引が成立するのが利点ですが、コードにバグがあれば、そのまま悪用される危険があります。過去にはコントラクトの脆弱性を突いて大量の資金が流出した事件が何度も起きています。監査済みであっても、リスクがゼロになるわけではありません。
利用者が特に注意すべきなのは「承認(アプルーブ)」です。DEXなどを使うとき、ウォレットはコントラクトにトークンを動かす許可を与えます。上限なしの承認を悪意あるコントラクトに与えると、後から資産を引き出されるおそれがあります。
具体例
例えば、DEXで100 USDCをETHに交換するとき、まず「USDCの使用を許可する」承認の取引を行い、次に交換の取引を実行します。ガス代はそれぞれにかかるので、1回300円なら合計600円です。承認額を無制限ではなく100 USDCに設定しておけば、そのコントラクトが動かせるのは最大100 USDCまでになります。
よくある失敗
- 怪しいサイトで求められるままに、無制限のトークン承認に署名すること。
- 「監査済み」と書かれていれば絶対に安全だと考えること。
- 使わなくなったコントラクトへの承認を取り消さずに放置すること。
学んで試す
よくある質問
スマートコントラクトは後から書き換えられますか?
基本的にデプロイ後のコードは変更できませんが、アップグレードできる設計のコントラクトもあります。その場合は、管理者権限を誰が持っているかが重要です。
スマートコントラクトを使うのに費用はかかりますか?
実行するたびに、そのチェーンのガス代がかかります。処理が複雑なほどガス使用量は多くなります。