導入
Nick Szabo は 1990 年代に初めてスマート コントラクトについて説明しました。当時、彼はスマート コントラクトを、プロトコルとユーザー インターフェイスを組み合わせることによってコンピューター ネットワークを形式化し、保護するツールとして定義しました。
Szabo 氏は、クレジット システム、支払い処理、コンテンツ権利管理など、契約上の取り決めが関係するさまざまな分野でのスマート コントラクトの使用の可能性について説明しました。
暗号通貨の世界では、スマート コントラクトをブロックチェーン上で実行されるアプリケーションまたはプログラムとして定義する場合があります。通常、これらは特定のルールセットによって強制されるデジタル契約として機能します。これらのルールはコンピュータ コードによって事前定義されており、すべてのネットワーク ノードによって複製されて実行されます。
ブロックチェーン スマート コントラクトにより、信頼のないプロトコルを作成できます。つまり、2 つの当事者は、お互いを知ったり信頼したりすることなく、ブロックチェーンを介して契約を結ぶことができます。条件が満たされない場合、契約は実行されないことが保証されます。そのほか、スマート コントラクトを使用すると仲介者が不要になり、運用コストが大幅に削減されます。
ビットコイン プロトコルは長年スマート コントラクトをサポートしてきましたが、スマート コントラクトを普及させたのは、イーサリアムの考案者兼共同設立者である Vitalik Buterin 氏です。ただし、各ブロックチェーンではスマート コントラクトの実装方法がそれぞれ異なる場合があることに注意してください。
この記事では、Ethereum ブロックチェーンの重要な部分である Ethereum 仮想マシン (EVM) 上で実行されるスマート コントラクトに焦点を当てます。
どのように機能するのでしょうか?
簡単に言えば、スマート コントラクトは決定論的プログラムとして機能します。特定の条件が満たされた場合に特定のタスクを実行します。そのため、スマート コントラクト システムは多くの場合、「if…then…」ステートメントに従います。しかし、よく使われる用語にもかかわらず、スマート コントラクトは法的契約でもスマートでもありません。分散システム (ブロックチェーン) 上で実行されるコードの一部にすぎません。
Ethereum ネットワークでは、スマート コントラクトは、ユーザー (アドレス) が相互にやり取りするときに行われるブロックチェーン操作の実行と管理を担当します。スマート コントラクトではないアドレスは、外部所有アカウント (EOA) と呼ばれます。したがって、スマート コントラクトはコンピューター コードによって制御され、EOA はユーザーによって制御されます。
基本的に、Ethereum スマート コントラクトは、コントラクト コードと 2 つの公開キーで構成されています。最初の公開キーは、コントラクトの作成者によって提供されるものです。もう 1 つのキーは、コントラクト自体を表し、各スマート コントラクトに固有のデジタル識別子として機能します。
スマート コントラクトの展開はブロックチェーン トランザクションを通じて行われ、EOA (または他のスマート コントラクト) によって呼び出された場合にのみアクティブ化されます。ただし、最初のトリガーは常に EOA (ユーザー) によって発生します。
主な特徴
Ethereum スマート コントラクトには、次のような特徴がよく見られます。
分散型。スマート コントラクトは、Ethereum ネットワークのすべてのノードに複製され、分散されます。これは、集中型サーバーに基づく他のソリューションとの大きな違いの 1 つです。
決定論的。スマート コントラクトは、要件が満たされた場合に、設計されたアクションのみを実行します。また、誰が実行しても、結果は常に同じになります。
自律的。スマート コントラクトは、自己実行プログラムのように動作し、あらゆる種類のタスクを自動化できます。ただし、ほとんどの場合、スマート コントラクトがトリガーされない場合は、「休止状態」のままになり、アクションを実行しません。
不変。スマート コントラクトはデプロイ後に変更できません。特定の関数が以前に実装されていた場合にのみ、「削除」できます。したがって、スマート コントラクトは改ざん防止コードを提供できると言えます。
カスタマイズ可能。展開前に、スマート コントラクトはさまざまな方法でコーディングできます。そのため、スマート コントラクトを使用して、さまざまな種類の分散型アプリケーション (DApps) を作成できます。これは、Ethereum がチューリング完全なブロックチェーンであるという事実に関係しています。
トラストレス。2 人以上の当事者が、お互いを知らずに、または信頼せずに、スマート コントラクトを介してやり取りできます。さらに、ブロックチェーン テクノロジーにより、データの正確性が保証されます。
透明性。スマート コントラクトはパブリック ブロックチェーンに基づいているため、ソース コードは変更不可能であるだけでなく、誰でも閲覧できます。
スマートコントラクトを変更または削除できますか?
デプロイ後に Ethereum スマート コントラクトに新しい機能を追加することはできません。ただし、作成者がコードに SELFDESTRUCT という関数を含めた場合、将来的にスマート コントラクトを「削除」して、新しいものに置き換えることができます。ただし、その関数が事前にコードに含まれていない場合は、削除できません。
特に、いわゆるアップグレード可能なスマート コントラクトにより、開発者はコントラクトの不変性をより柔軟に管理できるようになります。アップグレード可能なスマート コントラクトを作成する方法は数多くあり、複雑さの度合いもさまざまです。
簡単な例を挙げて、スマート コントラクトが複数の小さなコントラクトに分割されているとします。そのうちのいくつかは不変に設計されていますが、他のコントラクトでは「削除」機能が有効になっています。つまり、コード (スマート コントラクト) の一部を削除して置き換えても、他の機能はそのまま残ります。
利点と使用例
スマート コントラクトはプログラム可能なコードであるため、高度にカスタマイズ可能で、さまざまな方法で設計できるため、さまざまな種類のサービスとソリューションを提供できます。
分散型で自動実行されるプログラムであるスマート コントラクトは、透明性の向上と運用コストの削減を実現します。実装によっては、効率性の向上や官僚的経費の削減にもつながります。
スマート コントラクトは、2 つ以上の当事者間で資金の送金または交換が行われる状況で特に役立ちます。
言い換えれば、スマート コントラクトはさまざまなユースケースに合わせて設計できます。例としては、トークン化された資産、投票システム、暗号通貨ウォレット、分散型取引所、ゲーム、モバイル アプリケーションの作成などが挙げられます。また、ヘルスケア、慈善事業、サプライ チェーン、ガバナンス、分散型金融 (DeFi) の分野に取り組む他のブロックチェーン ソリューションと一緒に導入することもできます。
ERC-20
イーサリアム ブロックチェーンで発行されるトークンは、ERC-20 と呼ばれる標準に準拠しています。この標準は、すべてのイーサリアム ベースのトークンのコア機能を規定しています。そのため、これらのデジタル資産は ERC-20 トークンと呼ばれることが多く、既存の暗号通貨の大部分を占めています。
多くのブロックチェーン企業やスタートアップは、イーサリアム ネットワーク上でデジタル トークンを発行するためにスマート コントラクトを導入しました。発行後、これらの企業の大半は、イニシャル コイン オファリング (ICO) イベントを通じて ERC-20 トークンを配布しました。ほとんどの場合、スマート コントラクトの使用により、資金の交換とトークンの配布が、信頼性を必要とせず、効率的に実行できるようになりました。
制限事項
スマート コントラクトは、人間が書いたコンピューター コードで作成されます。コードには脆弱性やバグがあるため、多くのリスクが伴います。理想的には、特に機密情報や多額の金銭が関係する場合は、経験豊富なプログラマーが作成して展開する必要があります。
それ以外にも、集中型システムはスマート コントラクトが提供するソリューションと機能のほとんどを提供できると主張する人もいます。主な違いは、スマート コントラクトは集中型サーバーではなく、分散型 P2P ネットワーク上で実行されることです。また、ブロックチェーン システムに基づいているため、変更不可能であるか、変更が非常に困難である傾向があります。
変更不可能であることは、状況によっては素晴らしいことですが、他の状況では非常に悪いこともあります。たとえば、2016 年に「The DAO」と呼ばれる分散型自律組織 (DAO) がハッキングされたとき、スマート コントラクト コードの欠陥により、数百万のイーサ (ETH) が盗まれました。
スマート コントラクトは変更不可能であったため、開発者はコードを修正できませんでした。これが最終的にハード フォークにつながり、2 番目の Ethereum チェーンが誕生しました。簡単に言うと、1 つのチェーンはハッキングを「元に戻し」、資金を正当な所有者に返しました (これが現在の Ethereum ブロックチェーンの一部です)。もう 1 つのチェーンは、ブロックチェーン上で発生する事柄は決して変更すべきではないとして、ハッキングに干渉しないことを決定しました (このチェーンは現在 Ethereum Classic と呼ばれています)。
問題は Ethereum ブロックチェーンから生じたのではなく、スマート コントラクトの実装の欠陥によって発生したことに注意することが重要です。
スマート コントラクトのもう 1 つの制限は、法的地位が不確実であることに関係しています。ほとんどの国でグレー ゾーンにあるだけでなく、スマート コントラクトが現在の法的枠組みに適合していないことも原因です。
たとえば、多くの契約では、両当事者が適切に身元確認され、18 歳以上であることが求められます。ブロックチェーン技術によって提供される匿名性と仲介者の不在が相まって、こうした要件が脅かされる可能性があります。これに対する潜在的な解決策はありますが、スマート コントラクトの法的強制力は、特に国境のない分散型ネットワークに関しては、非常に難しい課題です。
批判
ブロックチェーン愛好家の中には、スマート コントラクトが、商業システムや官僚システムの大部分をすぐに置き換え、自動化するソリューションになると考えている人もいます。これは実現可能ではありますが、おそらく標準になるにはほど遠いでしょう。
スマート コントラクトは確かに興味深いテクノロジーです。しかし、分散型、決定論的、透明性があり、ある程度不変であるため、状況によっては魅力が薄れることがあります。
本質的に、批判は、スマート コントラクトが多くの現実の問題に適したソリューションではないという事実に基づいています。実際、一部の組織では、従来のサーバーベースの代替手段を使用する方が適しています。
スマート コントラクトと比較すると、集中型サーバーは保守が簡単で安価であり、速度とネットワーク間通信 (相互運用性) の点で効率が高くなる傾向があります。
最後に
スマート コントラクトが暗号通貨の世界に大きな影響を与え、ブロックチェーンの分野に革命をもたらしたことは間違いありません。エンド ユーザーはスマート コントラクトと直接やり取りすることはないかもしれませんが、将来的には金融サービスからサプライ チェーン管理まで、幅広いアプリケーションでスマート コントラクトが利用されるようになるでしょう。
スマート コントラクトとブロックチェーンを組み合わせると、社会のほぼすべての分野に混乱をもたらす可能性があります。しかし、これらの画期的なテクノロジーが大規模な導入を阻む多くの障壁を克服できるかどうかは、時が経てばわかるでしょう。