コントラクト【contract】

概要

コントラクトとは、「契約」という意味の英単語。IT分野では法的な契約の意味の他に、システムやソフトウェアの構成要素間で守るべき技術的な約束事を指すことが多い。ソフトウェア開発では機能の呼び出し方や保証される結果を定める仕様の取り決めとして用いられ、ブロックチェーンの分野では事前に取り決めた内容を自動的に履行する仕組みを指す。
コントラクトのイメージ画像

ある機能や部品が外部に対してどのような振る舞いを行うかを定義した取り決めをコントラクトという。利用する側と提供する側の間で共有される約束事であり、入力できる値や呼び出し方法、処理後に保証される結果などを明確にする。複数のモジュールクラスが連携して動作する際、内部構造を知らなくても利用できるようにするために用いられる。

オブジェクト指向開発では、呼び出し前に満たすべき事前条件、処理後に保証される事後条件、常に維持される不変条件を定義する考え方を「契約による設計」(DbC:Design by Contract)と呼ぶ。インターフェース抽象クラスはこの取り決めを表現する仕組みである。分散システムWebサービスの分野では、API仕様書がコントラクトとして機能し、データ形式や認証方式などを定める。

スマートコントラクト

仮想通貨暗号資産の分野では「スマートコントラクト」(smart contract)と呼ばれる仕組みが知られている。これは、ブロックチェーン上に記録され、特定の条件が満たされると自動的に処理を実行するプログラムである。イーサリアムなどのブロックチェーンではコントラクトはアカウントの一種として扱われるが、秘密鍵を持たないため一般の利用者が保有するアカウントとは異なる。プログラムコードと実行に必要なデータを保持し、取引(トランザクション)を受け取ると内部の処理を実行する。

この考え方は、ブロックチェーンの仕組みが考案される以前の1990年代に暗号学者ニコラス・サボ(Nicholas Szabo)氏が提唱した。氏は、契約条件をプログラムとして記述し、条件が満たされた際に自動的に履行される仕組みを構想した。ブロックチェーン上に展開されたコードは後から書き換えることが基本的にできず、コントラクトの実行には処理内容に応じたコストがかかる。イーサリアムではこのコストを「ガス」(gas:ガソリンのこと)と呼び、利用者がガス代として暗号資産を支払う。

(2026.6.19更新)
 
この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。