導入

1990 年代に、Nick Szabo が初めてスマート コントラクトの概念を提案しました。その際、同氏はスマートコントラクトを、プロトコルとユーザーインターフェースを組み合わせて標準化し、コンピューターネットワークのセキュリティを確保するツールと定義した。

Szabo 氏は、クレジット システム、支払いプロセス、コンテンツ権利管理など、契約上の取り決めに関連するさまざまな分野でのスマート コントラクトの使用の可能性について説明しました。

暗号通貨の分野では、スマート コントラクトは、ブロックチェーン上で実行されるアプリケーションまたはプログラムとして定義できます。通常、これらは特定のルールによって強制されるデジタル プロトコルとして機能します。これらのルールはコンピュータ コードによって事前定義されており、すべてのネットワーク ノードによって複製されて実行されます。

ブロックチェーン スマート コントラクトは、トラストレス プロトコルの作成をサポートします。これは、契約当事者がお互いを知らない、または信頼することなく、ブロックチェーンを介してコミットメントを行うことを意味します。両当事者は、条件が満たされない場合には契約は締結されないと決定した。さらに、スマートコントラクトを使用すると仲介業者が不要になり、運用コストが大幅に削減されます。

スマート コントラクトはビットコイン プロトコルで長年サポートされてきましたが、イーサリアムの作成者で共同創設者のヴィタリック ブテリンの手によって普及しました。各ブロックチェーンはスマート コントラクトの実装方法が異なることに注意してください。​

この記事では、イーサリアム ブロックチェーンの重要な部分であるイーサリアム仮想マシン (EVM) で実行されるスマート コントラクトに焦点を当てます。


スマートコントラクトはどのように機能しますか?

簡単に言えば、スマート コントラクトは、特定の条件が満たされた場合に特定のタスクを実行する決定論的なプログラムです。したがって、スマート コントラクト システムは通常、「if...then...」条件文に従います。 「スマートコントラクト」という概念はよく知られていますが、それは法的な契約でもスマートでもありません。これらは、ブロックチェーン分散システム内で実行されるコードの一部にすぎません。

イーサリアムネットワークでは、スマートコントラクトは、ユーザー(アドレス)が相互に対話するときにブロックチェーン操作の実行と管理を担当します。スマートコントラクト外のアドレスは「外部アカウント(EOA)」と呼ばれます。したがって、スマート コントラクトはコンピューター コードによって制御され、外部アカウント (EOA) はユーザーによって制御されます。

イーサリアムのスマートコントラクトは基本的にコントラクトコードと2つの公開鍵で構成されます。最初の公開キーは契約作成者によって提供され、もう 1 つの公開キーは契約自体であり、各スマート コントラクトの一意のデジタル識別子として使用されます。

すべてのスマート コントラクトの展開はブロックチェーン トランザクションを通じて行われ、外部アカウント (EOA) または他のスマート コントラクトが呼び出された場合にのみ有効になります。ただし、スマート コントラクトは通常、外部アカウント (EOA)、つまりユーザーによって初めてトリガーされます。


主な特長

Ethereum スマート コントラクトには次の共通の特徴があります。

配布されました。スマート コントラクトは複製され、イーサリアム ネットワーク内のすべてのノードに分散されます。これは、他の集中サーバーベースのソリューションとは大きく異なります。

確実。スマート コントラクトは、要件が満たされた場合にのみ、事前に設計されたアクションを実行します。そして、誰がやっても結果は一貫しています。

自主性。 「自己実行」プログラムと比較して、スマート コントラクトはさまざまなタスクを自動的に完了します。ほとんどの場合、トリガーされていないスマート コントラクトは「スリープ」状態のままであり、アクションは実行されません。

不変性。スマート コントラクトは、展開後に変更することはできません。スマートコントラクトは、特定の機能が実装された後にのみ「削除」できます。したがって、スマート コントラクトは改ざん防止コードを提供すると言ってもいいでしょう。

カスタマイズ。導入前に、スマート コントラクトはさまざまな方法でコーディングされます。したがって、さまざまな分散型アプリケーション (DApp) の作成に使用できます。これは、イーサリアムがチューリング完全ブロックチェーンであるという事実と密接に関連しています。

信頼を解除します。 2 つ以上の当事者は、お互いを知ったり信頼したりする必要がなく、スマート コントラクトを通じて対話できます。さらに、ブロックチェーン技術によりデータの正確性が保証されます。

透明性。スマート コントラクトの基礎はパブリック ブロックチェーンであるため、ソース コードは不変であるだけでなく、誰にとってもオープンで透過的です。


スマートコントラクトは変更または削除できますか?

Ethereum スマート コントラクトは、一度デプロイされると、新しい機能を追加できなくなります。ただし、コントラクト作成者がコード内で「SELFDESTRUCT」関数を予約している限り、この関数は後でスマート コントラクトを「削除」し、新しいコントラクトに置き換えることができます。この関数がコードで予約されていない場合、スマート コントラクトを削除できません。

いわゆるアップグレード可能なスマート コントラクトを通じて、開発者はコントラクトの不変性をより柔軟に運用できることは注目に値します。アップグレード可能なスマート コントラクトを作成するには多くの方法があり、それぞれの複雑さのレベルは異なります。

簡単な例として、スマート コントラクトが複数の小さなコントラクトに分割されているとします。一部の部分は不変になるように設計されていますが、他の部分は「削除」機能を有効にします。つまり、コードの一部 (スマート コントラクト) を削除して置き換えることができますが、他の機能は変更されません。


利点と使用例

プログラム可能なコードとして、スマート コントラクトは高度にカスタマイズ可能で、さまざまな方法で設計され、さまざまなサービスとソリューションを提供します。

分散型の自己実行プログラムであるスマート コントラクトは、透明性を高め、ランニング コストを削減します。実装によっては、スマート コントラクトによって実装効率が向上し、煩雑なコストが削減されることもあります。

スマート コントラクトは、2 つ以上の当事者間の資金移動や取引に関して特に役立ちます。

言い換えれば、スマートコントラクトは、トークン化された資産、投票システム、暗号通貨ウォレット、分散型取引所、ゲーム、モバイルアプリの作成など、幅広いユースケースに合わせて調整できます。スマート コントラクトは、ヘルスケア、慈善団体、サプライ チェーン、ガバナンス、分散型金融 (DeFi) などの分野をカバーする他のブロックチェーン ソリューションとともに展開することもできます。


ERC-20

イーサリアム ブロックチェーン上で発行されるトークンは、ERC-20 標準に従っています。この標準は、すべてのイーサリアム トークンの中核機能を指定します。したがって、これらのデジタル資産は「ERC-20 トークン」と呼ばれることが多く、既存の暗号通貨の大部分を占めています。

多くのブロックチェーン企業や新興企業は、スマート コントラクトを導入して、イーサリアム ネットワーク上でデジタル トークンを自律的に発行しています。トークンが発行された後、ほとんどの企業は初期コイン オファリング (ICO) を通じて ERC-20 トークンを配布します。ほとんどの場合、スマート コントラクトを使用すると、トラストレスな方法で資金取引とトークン配布を効果的に実現できます。


制限事項

スマート コントラクトは人間が作成したコンピューター コードで構成されます。コードには欠陥や抜け穴があり、多くのリスクをもたらします。理想的には、特に機密情報や多額の資金が関係する場合、スマート コントラクトは経験豊富なプログラマーによって作成および展開される必要があります。

さらに、集中型システムがスマート コントラクトのソリューションと機能のほとんどを提供できると信じている人もいます。主な違いは、スマート コントラクトが集中サーバーではなく分散 P2P ネットワークで実行されることです。さらに、スマート コントラクトはブロックチェーン システムに基づいているため、多くの場合、改ざんが不可能であったり、変更が困難であったりします。

スマート コントラクトの不変性には明らかな利点がありますが、場合によっては逆効果になる可能性があります。例えば、2016年に分散型自律組織「The DAO」がハッキングされ、数百万枚のイーサリアムコイン(ETH)が消失したのは、スマートコントラクトのコードに欠陥があったことが原因だった。

スマート コントラクトは不変であるため、開発者はコードを修正できません。これは最終的にハードフォークにつながり、そこから 2 番目のイーサリアムチェーンが誕生しました。簡単に言えば、チェーン (現在のイーサリアム ブロックチェーンの一部) がハッキング前の状態に「復元」され、資金が元の所有者に返されます。現在イーサリアムクラシックとして知られるもう一方のチェーンは、ブロックチェーン内で発生するイベントは決して改ざんされるべきではないと主張し、ハッキングに介入しないことを決定した。

この問題はイーサリアム ブロックチェーンが原因ではなく、スマート コントラクトの誤った実行が原因であることに注意することが重要です。

スマート コントラクトのもう 1 つの制限は、不明確な法的効果に関連しています。スマートコントラクトはほとんどの国でグレーゾーンにあり、現在の法的枠組みにはまだ適用されていません。

たとえば、多くの契約では、取引の両当事者が適切な実名認証に合格し、18 歳以上である必要があります。ただし、ブロックチェーン技術の匿名性と仲介者の不在は、契約要件と矛盾します。この問題に対する解決策は将来現れるかもしれません。ただし、スマート コントラクトは国境のない分散ネットワークで実行されるため、法的執行が非常に困難になります。


短所

ブロックチェーン愛好家の中には、スマートコントラクトを、既存のビジネスシステムや官僚的システムの多くを置き換える自律的なソリューションと見なしている人もいます。このアイデアは実現するかもしれないが、それが標準になるまでにはまだ長い道のりがある。

スマートコントラクトは確かに興味深いテクノロジーです。ただし、分散、決定論、透明性、不変性などの特性により、スマート コントラクトの魅力が低下することがあります。

スマート コントラクトの本質的な欠点は、多くの実際的な問題をうまく解決できないことです。実際、一部の組織は現在、応急処置として従来のサーバー ソリューションを使用しています。​

スマート コントラクトと比較すると、集中サーバーは維持が容易で安価であり、多くの場合、速度とネットワーク間通信 (相互運用性) の点で大きな利点があります。


要約する

スマートコントラクトが仮想通貨分野に大きな影響を与え、実際にブロックチェーン分野に大きな変化をもたらしたことは疑いの余地がありません。エンドユーザーは必ずしもスマート コントラクトと直接対話する必要はありません。しかし、近い将来、スマートコントラクトは金融サービスやサプライチェーン管理などのさまざまな分野をカバーするように、より広く使用されるようになるでしょう。

スマート コントラクトとブロックチェーンが連携して、今日の社会のほぼすべての領域に混乱をもたらしています。しかし、これらの画期的なテクノロジーが障害を突破し、最終的に大量採用を達成できるかどうかは、時間が経てばわかります。