無料プレビュー約7分で読めます

スマートコントラクトとは?

スマートコントラクト(smart contract)とは、ブロックチェーン上に保存され、誰かが呼び出したときに実行されるプログラムです。賢いわけでもなく、法的な意味での契約でもありません。自動販売機のようなものです。正しいものを入れれば、決められたものが出てきて、誰の承認も必要ありません。

重要な性質

  • 決定的:同じ状態で同じ呼び出しをすれば、常に同じ結果になります。
  • 公開:デプロイされたバイトコードは誰でも読むことができ、通常はソースコードも読めます。
  • 自律的:一度デプロイされると作成者なしで動き、止める手段がないことも多くあります。

「コードは法である」は警告であり、スローガンではない

コントラクトは、作成者が意図したとおりではなく、書かれたとおりに動きます。意図についての条項はなく、訴えるべき裁判官もいません。コードが誰かに資金を抜き取ることを許しているなら、それはコントラクト違反ではありません。コントラクトが正常に動いているのです。

だから監査が存在します。そして、実際のお金を保有する未監査のコントラクトは、書類上の不備ではなく、現実のリスクです。同じ理由で、「コントラクトは検証済み(verified)」という言葉が意味するのは、公開されたソースコードがデプロイされたバイトコードと一致していることだけです。そのソースコードが安全かどうかについては、何も語っていません。

検証済みとは「これが本当に実行されているコードである」という意味です。「このコードは安全である」という意味ではありません。この2つを混同して、多くの人が大きなお金を失ってきました。
スマートコントラクトとは? · Crypto Academy