無料プレビュー約7分で読めます
スマートコントラクトとは?
スマートコントラクト(smart contract)とは、ブロックチェーン上に保存され、誰かが呼び出したときに実行されるプログラムです。賢いわけでもなく、法的な意味での契約でもありません。自動販売機のようなものです。正しいものを入れれば、決められたものが出てきて、誰の承認も必要ありません。
重要な性質
- 決定的:同じ状態で同じ呼び出しをすれば、常に同じ結果になります。
- 公開:デプロイされたバイトコードは誰でも読むことができ、通常はソースコードも読めます。
- 自律的:一度デプロイされると作成者なしで動き、止める手段がないことも多くあります。
「コードは法である」は警告であり、スローガンではない
コントラクトは、作成者が意図したとおりではなく、書かれたとおりに動きます。意図についての条項はなく、訴えるべき裁判官もいません。コードが誰かに資金を抜き取ることを許しているなら、それはコントラクト違反ではありません。コントラクトが正常に動いているのです。
だから監査が存在します。そして、実際のお金を保有する未監査のコントラクトは、書類上の不備ではなく、現実のリスクです。同じ理由で、「コントラクトは検証済み(verified)」という言葉が意味するのは、公開されたソースコードがデプロイされたバイトコードと一致していることだけです。そのソースコードが安全かどうかについては、何も語っていません。
検証済みとは「これが本当に実行されているコードである」という意味です。「このコードは安全である」という意味ではありません。この2つを混同して、多くの人が大きなお金を失ってきました。