仮想通貨の第1世代をビットコイン、第2世代をイーサリアム、以降を第3世代とするならば、スマートコントラクトという仕組みは第2世代から登場した機能です。これまで単なる”中央集権型”組織を介さないデジタル決済の新しいカタチだけであったものに、付加機能として、条件が合致したときにプログラムが実行されるようにしたのがスマートコントラクトです。
ううむぅ…
どうしたんじゃ、インターネット神よ。
いやぁ、スマートコントラクトは結局何が良いのかと、友人に聞かれたんじゃが、言葉に詰まってしまってのぅ…
そうか。では、わしを相手に整理して、説明してみてはどうかのう。
そうじゃの。レッツトライじゃ。
スマートコントラクトとは?
スマートコントラクトとは、ブロックチェーン上で実行可能なプログラムです。条件を満たした場合に実行されるといった用途を想定していることから、”契約(=コントラクト)”という名称がつけられています。
よく例として、自動販売機に例えられます。自動販売機では、100円の水を買う場合、100円を入れれば水を買うことができますが、100円より少ない場合(90円など)、水を買うことはできません。自動販売機の場合は、100円なら水を買える、100円より少なければ買えない、というルールによる判定が機能として備わっています。
スマートコントラクトはこれと同じように、”条件を満たせばトランザクションが実行される”ことが可能になります。ただ、そのルールは、プログラムによってより高度に設定することが可能です。イーサリアムの場合であれば、Solidityと呼ばれるプログラミング言語によって、プログラムを作ることで実現しています。
スマートコントラクトの特徴
ただのコンピュータープログラムであれば、今も世の中には多く存在します。では、スマートコントラクトはそれらと何が違い、新しいのでしょうか。
1つ目の特徴は、不変性(永続性)です。一度ブロックチェーン上にリリース(デプロイ)したプログラムは変更することができません。すなわち、誰かが勝手に都合の良いように書き換えて、動作を変更することができません。
2つ目の特徴は、分散性です。世界中に分散しているノード(コンピュータ)によって、ブロックチェーン・ネットワークは成り立っています。そして、スマートコントラクトが実行された結果は、これらの世界中で分散しているノードによって検証されるので、仮に結果を誰かが書き換えようとしても、すべてのノードで書き換えることは難しいです。
3つ目に、決済の機能をネイティブに備えている点が特徴的です。現在も様々なAPIによって決済をプログラムに組み込むことが可能です(例えば、カード決済の仕組みをAPIで提供しているStripeが好例です)が、スマートコントラクトは、仮想通貨という特性上、この機能をネイティブに備えており、容易にプログラムに含めることができます。
スマートコントラクトはどう作るのか
プログラムやシステムを作る際には、何を実現したいか(要件)を確認し、それをどう実現するか(設計)を考えます。そして、設計をもとにプログラムを作ります(実装)。イーサリアムの場合、スマートコントラクトはSolidityという言語で実装します。
実装が完了したら、プログラムをコンパイル(実行形式への翻訳)します。コンパイルするとプログラムのバイナリーデータやインターフェースデータが生成されます。イーサリアムの場合、バイナリーデータとContract JSON ABIの2つです。ABIデータは、バイナリーデータだけではユーザーが理解できないため、補足的に必要となるものです。
コンパイルの際に生成されたデータをブロックチェーン・ネットワーク上に配置します(デプロイ)。イーサリアムの場合、コントラクト用のアカウントが生成されます。
ブロックチェーンに対しては、コントラクト用アカウントを生成するトランザクションが作成され、これが承認されると、コントラクトに対して、アドレスが付与されます。
アドレスが付与されると、ブロックチェーン上にスマートコントラクトが配置された状態になり、それを実行することが可能になります。
スマートコントラクトの例
一つの例として、不動産の売買がスマートコントラクトによってどのように変わるかを見てみます。
As-Is
売り手が不動産を売りたい場合、仲介人に相談する必要があります。仲介人は買い手を紹介し、買い手との文字通り仲介役になって、トランザクション(不動産の移転とお金の移動)が正しく行われるためのサポートを行います。そのための手数料をもらいます。
To-Be
プログラムによって、一定額以上が振り込まれた場合に、買い手に不動産の権利を移転し、お金を売り手のアドレスに送金する、というのを同時に行うことができます。仲介人を介さずにトランザクションを実行することができるうようになります。
どうじゃ、わしの解説は。
スマートコントラクトのことは分かるのじゃが、ユースケースについてもっと知りたいのう。
そうか。うむ。では、次回以降、スマートコントラクトのユースケースについて解説してみるぞ!
うむ。それは目が離せないのう。
コメント