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

シェア
Copied to clipboard!
スマートコントラクトとは?
この記事を聞く
00:00 / 00:00

1990年代Nick Szaboが初めてスマートコントラクトと言いました。当時、彼はプロトコルをユーザーインターフェイスと組み合わせることによって、コンピューターネットワークを構成し、安全にするツールとしてスマートコントラクトを定義しました。Szaboはクレジットシステム、決済処理、そしてコンテンツ権利管理のような契約による合意を含む、様々な分野におけるの使用の可能性について議論しました。

仮想通貨の世界においては、スマートコントラクトはブロックチェーン上で稼働するプログラム、もしくはアプリケーションとして定義されます。たいてい、スマートコントラクトは特定のルールに基づいて、施行されるデジタルでの合意として機能します。これらのルールはコードによって事前に定義され、全ネットワークのノードによって複製され、実行されます。

実質的に、ブロックチェーンスマートコントラクトによって、トラストレスプロトコルの作成が可能になります。つまり、2当事者間で互いに知り合ったり、信用したりする必要なく、ブロックチェーンを使うことによって約束をすることができるようになります。彼らは条件が満たされない場合、契約が実行されないことを確信できます。それ以外でもスマートコントラクトを使うことで、仲介業者の必要を排除し、オペレーションコストを大幅に削減することができます。

ビットコイン(Bitcoin)プロトコルは長年スマートコントラクトをサポートしてきましたが、イーサリウム(Ethereum)の共同創業者兼クリエイターのVitalik Buterinが有名にしました。ただ、各ブロックチェーンはそれぞれ独自の方法でスマートコントラクトを実装しています。 

この記事では、イーサリウム(Ethereum)ブロックチェーンの必須の要素である、イーサリウム(Ethereum)仮想マシン上で稼働するスマートコントラクトについて説明します。


スマートコントラクトの機能

簡単に言えば、スマートコントラクトは決定論的なプログラムとして機能します。そして、ある一定の条件が満たされたら、特定のタスクを実行します。このように、スマートコントラクトシステムは常にif、thenステートメントをフォローします。しかし、使われている単語と違って、スマートコントラクトは法律上の契約でも、スマートでもないです。スマートコントラクトは分散型システム(ブロックチェーン)上で稼働するコードにすぎません。

イーサリウム(Ethereum)ネットワーク上では、スマートコントラクトはユーザー(アドレス)間でなんらかの取引を行う時の実行と管理の役割を果たしています。スマートコントラクトではないアドレスは外部所有アカウント(EOA)と呼ばれます。なので、スマートコントラクトはコンピュータコードによって、EOAはユーザーによってコントロールされています。

基本的に、イーサリウム(Ethereum)のスマートコントラクトはコントラクトコードと2つの公開鍵でできています。1つ目の公開鍵はコントラクトの作成者によって提供されています。もう1つの公開鍵はコントラクト自体を表し、それぞれのスマートコントラクト独自のデジタルIDとして機能します。

あらゆるスマートコントラクトのデプロイはブロックチェーントランザクションを通じて行われ、EOA(もしくは、他のスマートコントラクト)によって呼び出されたときにのみアクティベートされます。しかしながら、最初のトリガーは必ずEOA(ユーザー)によるものとなります。


主な機能

イーサリウム(Ethereum)スマートコントラクトには以下のような特徴があります。

分散化 スマートコントラクトはイーサリウム(Ethereum)ネットワーク内の全てのノードで複製され、分散化されます。これは中央集権型サーバベースの他のソリューションとの主要な違いです。

決定論 スマートコントラクトは与えられた要件を満たされた時に、設計された行動だけを行います。また、その結果は何が起きようと、常に同一です。

自動化 スマートコントラクトはあらゆる作業を自動化し、自動執行プログラムのように機能します。そして、条件が満たされない限りは何も行いません。

改ざん耐性 デプロイされた後、スマートコントラクトを変更することはできません。事前にある特定の機能が実装されている場合のみスマートコントラクトを削除することができます。それゆえ、スマートコントラクトは改ざん耐性のあるコードと言われています。

カスタマイズ可能 デプロイする前に、様々な方法でスマートコントラクトをプログラミングすることができます。そのため、多くの種類の分散型アプリ(DApp)を作るために使うことができます。これはイーサリウム(Ethereum)がチューリング完全なブロックチェーンであることと関連しています。

トラストレス 2、もしくはそれ以上の数の当事者が含まれるトランザクションにおいても、スマートコントラクトを使うことで、互いに知らなくてもやり取りすることができます。さらに、ブロックチェーンテクノロジーはデータが正確であることを保証します。

透明性 スマートコントラクトはパブリックブロックチェーンに基づいているため、そのソースコードは改ざん不可能なだけでなく、公開されています。


スマートコントラクトの変更や削除

デプロイしたら、イーサリウム(Ethereum)スマートコントラクトに新しい機能を追加するのは不可能です。しかしながら、もしも作成者がSELFDESTRUCTと呼ばれる関数をコードに含めた場合、削除や将来的に新しいスマートコントラクトへのリプレースなどが可能になります。一方で、この関数をコードに事前に含めなかった場合、削除はできません。

特に、いわゆるアップグレード可能なスマートコントラクトにより、開発者は不変性のあるコントラクトでも、より柔軟に対応できます。複雑さを変えながら、アップグレード可能なスマートコントラクトを作成する方法は多数あります。

単純化した例として、複数のスマートコントラクトに分割されたスマートコントラクトを考えてみましょう。それらの中の一部は変えられないように設計されますが、他のでは「Delete」機能が有効になっています。つまり、他の機能に変更を加えることなく、スマートコントラクトのコードの一部を削除したり、変更したりすることができるようになります。


アドバンテージとユースケース

プログラミングできるコードとして、スマートコントラクトは高度にカスタマイズでき、様々な方法で設計することができ、そして多くの種類のサービスやソリューションを提供します。

分散型、かつ自動執行プログラムとして、スマートコントラクトはさらなる透明性と運営コストの削減を実現するかもしれません。スマートコントラクトの実装によっては、効率性を向上させ、行政のコストを削減することもできます。

特に、スマートコントラクトは2、もしくはそれ以上の当事者間での資金の移転、もしくは交換が含まれるシチュエーションにおいて便利です。

言い換えると、スマートコントラクトは幅広いユースケースのために設計することができます。トークン化アセットの発行、投票システム、仮想通貨ウォレット、分散型取引所、ゲーム、そしてモバイルアプリケーションなどもスマートコントラクトの活用例に含まれます。また、ヘルスケアチャリティーサプライチェーンgガバナンス、そして分散型金融(DeFi)といった、ブロックチェーンソリューションが模索されている他の分野にもデプロイされるかもしれません。


ERC-20

イーサリウム(Ethereum)ブロックチェーン上で発行されたトークンは ERC-20として知られるスタンダードをフォローしています。このスタンダードは全てのイーサリウム(Ethereum)ベーストークンの主要な機能を表しています。そのため、これらのデジタル資産はよくERC-20トークンと呼ばれ、既存の仮想通貨の大半を占めています。

多くのブロックチェーン企業とスタートアップがイーサリウム(Ethereum)ネットワーク上に自分たちのデジタルトークンを発行するためにスマートコントラクトをデプロイしました。発行後、大半の企業はERC-20トークンを ICOイベントで配布しました。大半のケースでは、資金の交換、トークンの配布をトラストレス、かつ効率的な方法で行うためにスマートコントラクトを使っています。


限界

スマートコントラクトは人が書いたプログラミングコードによって動きます。そのためコードには脆弱性とバグがあるため、多くのリスクをもたらします。理想的には、機密情報や多額の資産を扱うシステムを含むコードを書いたことあるような、経験豊富なプログラマーがコードを書いて、デプロイすべきです。

それ以外では、スマートコントラクトが提供する機能やソリューションの大半は中央集権型のシステムでも可能という人もいます。しかし、中央集権型のものとの大きな違いは、スマートコントラクトは集約化されたサーバー状ではなく、分散型P2Pネットワーク上で動くことです。そして、スマートコントラクトがブロックチェーンシステムに基づいているため、スマートコントラクトは改ざん不可能、もしくは改ざんするのが非常に困難です。

改ざん不可能であることが活かされる場面もありますが、一方でそれが致命的となることもあります。例えば、The DAOと呼ばれる、分散型自立組織(DAO) が2016年にハッキングされ、何百万ものETHがスマートコントラクトのコードにあった欠陥によって盗まれました。

スマートコントラクトのコードは改ざん不可能なため、開発者はコードを修正することができませんでした。この結果、結局ハードフォークを行い、2つ目のイーサリウム(Ethereum)チェーンを作ることになりました。簡潔に言うと、片方のチェーンは巻き戻しを行い、ハッキングが起きなかったことにし、正しい所有者に資産を返却しました。このチェーンが現在のイーサリウム(Ethereum)ブロックチェーンです。もう1つのチェーンはブロックチェーン上で起きたことは決して変更されるべきではないと主張し、ハッキングに対しての対応を一切行いませんでした。このチェーンのことを現在ではイーサリウムクラシック(Ethereum Classic)と呼びます。

ただし、重要なこととして、この問題はイーサリウム(Ethereum)ブロックチェーンによるものではなかったことです。イーサリウム(Ethereum)ブロックチェーンではなく、スマートコントラクト実装の失敗によるものです。

スマートコントラクトのもう1つの限界は法的な位置づけがまだ不明瞭であることです。スマートコントラクトが多くの国ではまだグレーゾーンであるだけでなく、既存の法的枠組みに適していないこともその理由です。

例えば、多くの国では契約を行う当事者は互いに18歳以上であることが必要です。ブロックチェーンテクノロジーだと仮名で取引ができ、仲介者がいないことと合わせると、こういった要件が満たされない可能性があります。確かに、こういった問題に対するソリューションも考えられてはいますが、スマートコントラクトの法的強制力は、特にボーダーレス、分散型ネットワークにおいては、大きな課題となります。


批判

ブロックチェーンの専門家の中にはスマートコントラクトは現在の商業、そして行政システムの大半を置き換え、自動化させるソリューションと考えている人もいます。確かに、それも可能ですが、実現するのは遥か先のことになるでしょう。

間違いなく、スマートコントラクトは面白い技術です。しかし、しかし、分散型で、決定論的で、透明性があり、ある程度不変でことは状況によっては不利となる可能性もあります。

本質的に、スマートコントラクトへの批判は多くの現実の問題にを解決するのに適したソリューションではないことを主張しています。実際、一部の組織は、従来のサーバーベースの代替手段を使用したほうがよいでしょう。

スマートコントラクトと比べた時、中央集権型のサーバーは保守、運用がより簡単かつ、安価で、スピードとクロスネットワークコミュニケーション(相互運用性)という観点でははるかに効率的な傾向になります。


まとめ

スマートコントラクトが仮想通貨の分野に大きな影響を与え、さらにこの技術がブロックチェーン業界に革新をもたらしていることは疑いがありません。しかし、エンドユーザーは直接スマートコントラクトで直接やり取りすることはできないかもしれませんが、これらは将来、金融サービスからサプライチェーン管理に至るまで、幅広いアプリケーションに活用される可能性があります。

スマートコントラクトとブロックチェーンを組み合わせることで、社会のほぼすべての分野に変革をもたらす可能性があります。 しかし、これらの画期的なテクノロジーが普及するための多くの障壁を克服できるかどうかは将来にならないとわからないことです。

Loading