スマートコントラクトという概念は、もともとブロックチェーンの文脈で生まれたものではなく、コンピュータ科学者で暗号学の専門家であるNick Szabo氏が1994年にデジタル形式での一連の約束、つまり関係者がプロトコルに従って実行する一連のプロトコルとして定義したものです。
しかし、その当時はあまり注目されず、分散型のピアツーピア伝送システムであるビットコインの誕生や、プログラム可能で不変性のあるブロックチェーン技術の出現まで待たなければなりませんでした。これらの発展により、スマートコントラクトという概念は単なる理論的な概念以上のものになりました。
2013年末、Vitalik Buterin氏はイーサリアムのホワイトペーパーを公開し、その後数年間にわたって、この分散型スマートコントラクトのアプリケーションプラットフォームを開発するチームを率いました。これは、AppleのiOSやAndroidのような基盤となるオペレーティングシステムとして機能し、開発者がさまざまな種類のスマートコントラクトやブロックチェーンアプリケーションを迅速に作成できるように豊富なAPIインターフェイスを提供します。
今では、スマートコントラクトという概念はより明確になっています。スマートコントラクトとは、コンピュータに書き込まれた不変性のあるコントラクトプロトコルであり、参加者が合意した特定の条件が満たされたときに実行されるものです。
簡単に言えば、スマートコントラクトはコンピュータプログラムの一種です。私たちが想像するほど知能が高いわけではなく、また伝統的なコントラクトが持つような法的拘束力もありません。
決定論的:同じスマートコントラクトを実行した結果は常に一致します。たとえそれが世界中の異なる地域に散らばったコンピュータで実行されたとしても結果は同じになります。
オープンかつ透明:スマートコントラクト内のすべての条項や条件は、参加者に完全にアクセス可能で閲覧可能です。
不変性:コントラクトがデプロイされると、その内容は変更できません。コントラクトの実行に干渉することはできず、許可を与えられた当事者だけが結果を見ることができます。
スマートコントラクトは、トランザクションによって呼び出されたときにのみ実行されます。一つのコントラクトは別のコントラクトを呼び出すことができ、この呼び出しはコントラクト間で段階的に続くことができます。しかし、この実行チェーンの最初のコントラクトの実行は、外部アカウントによって作成されたトランザクションによって開始されなければなりません。スマートコントラクトは自動的にもバックグラウンドで実行されることはありません。トリガーするトランザクションがなければ、コントラクトは呼び出されるのを待つ状態にとどまります。
トランザクションの実行は一体となっており、グローバルな状態の変更はすべての実行が成功したことが確認された後にのみ発生します。ここでの成功の確認とは、プログラムの実行にエラーや終了条件が発生しなかったことを意味します。プログラムの実行がエラーによって終了した場合、それまでに行われたすべての操作はロールバックされ、その実行がなかったかのように処理されます。
スマートコントラクトの使用がますます広まるにつれて、課題は浮き彫りになります。現実世界のコントラクトと同様に、それらが慎重に監査され検証されない場合、脆弱性が生じる可能性があることに気づき始めました。これは資産の安全性に関わる問題です。
イーサリアムの歴史で最も有名な事件の一つが『TheDAO事件』です。TheDAOは自律分散型の資金調達系プロジェクトで、わずか1ヶ月で1億5000万ドル相当のETHを調達しました。しかし1ヶ月以内に、トークンコードに存在する脆弱性が原因で、大量の資金がハッカーによって移動されました。スマートコントラクトの不変性の性質上、プロジェクトチームはこれに介入することができませんでした。
今日でも、コントラクトの脆弱性は続いています。しかし、これらのハッキング事件によって、現実世界のコントラクトと同様に、プロトコルプロセスが複雑すぎる場合は、専門的な第三者監査を関与させる必要があることを多くの開発者が認識するようになりました。
スマートコントラクトは、オープンかつ透明で不変性のあるプロトコルコードで第三者の仲介者を置き換え、コントラクト参加者の信頼コストを削減します。それらは広範な応用と展望を持っています。セキュリティ監査における課題は依然として存在しますが、この分野が10年未満の歴史しかないことを認識することが重要です。スマートコントラクトの開発はまだ初期段階にありますが、スマートコントラクトの市場受容が時間の問題であると私たちは信じています。