web3解説: スマートコントラクトとは?

web3解説: スマートコントラクトとは?

仮想通貨の第1世代をビットコイン、第2世代をイーサリアム、以降を第3世代とするならば、スマートコントラクトという仕組みは第2世代から登場した機能です。これまで単なる”中央集権型”組織を介さないデジタル決済の新しいカタチだけであったものに、付加機能として、条件が合致したときにプログラムが実行されるようにしたのがスマートコントラクトです。

インターネット神

ううむぅ…

どうしたんじゃ、インターネット神よ。

インターネット神

いやぁ、スマートコントラクトは結局何が良いのかと、友人に聞かれたんじゃが、言葉に詰まってしまってのぅ…

そうか。では、わしを相手に整理して、説明してみてはどうかのう。

インターネット神

そうじゃの。レッツトライじゃ。

目次

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

スマートコントラクトとは、ブロックチェーン上で実行可能なプログラムです。条件を満たした場合に実行されるといった用途を想定していることから、”契約(=コントラクト)”という名称がつけられています。

よく例として、自動販売機に例えられます。自動販売機では、100円の水を買う場合、100円を入れれば水を買うことができますが、100円より少ない場合(90円など)、水を買うことはできません。自動販売機の場合は、100円なら水を買える、100円より少なければ買えない、というルールによる判定が機能として備わっています。

自動販売機は、一定金額以上ならその商品を購入できる、というルールで判定する機能を備える。
自動販売機は、一定金額以上ならその商品を購入できる、というルールで判定する機能を備える。

スマートコントラクトはこれと同じように、”条件を満たせばトランザクションが実行される”ことが可能になります。ただ、そのルールは、プログラムによってより高度に設定することが可能です。イーサリアムの場合であれば、Solidityと呼ばれるプログラミング言語によって、プログラムを作ることで実現しています。

スマートコントラクトの特徴

ただのコンピュータープログラムであれば、今も世の中には多く存在します。では、スマートコントラクトはそれらと何が違い、新しいのでしょうか。

1つ目の特徴は、不変性(永続性)です。一度ブロックチェーン上にリリース(デプロイ)したプログラムは変更することができません。すなわち、誰かが勝手に都合の良いように書き換えて、動作を変更することができません。

2つ目の特徴は、分散性です。世界中に分散しているノード(コンピュータ)によって、ブロックチェーン・ネットワークは成り立っています。そして、スマートコントラクトが実行された結果は、これらの世界中で分散しているノードによって検証されるので、仮に結果を誰かが書き換えようとしても、すべてのノードで書き換えることは難しいです。

分散性 … 世界中のノードに対して結果を後から変更するのは非常に難しい。
分散性 … 世界中のノードに対して結果を後から変更するのは非常に難しい。

3つ目に、決済の機能をネイティブに備えている点が特徴的です。現在も様々なAPIによって決済をプログラムに組み込むことが可能です(例えば、カード決済の仕組みをAPIで提供しているStripeが好例です)が、スマートコントラクトは、仮想通貨という特性上、この機能をネイティブに備えており、容易にプログラムに含めることができます。

スマートコントラクトはどう作るのか

STEP
設計・コードの実装

プログラムやシステムを作る際には、何を実現したいか(要件)を確認し、それをどう実現するか(設計)を考えます。そして、設計をもとにプログラムを作ります(実装)。イーサリアムの場合、スマートコントラクトはSolidityという言語で実装します。

STEP
コンパイル

実装が完了したら、プログラムをコンパイル(実行形式への翻訳)します。コンパイルするとプログラムのバイナリーデータやインターフェースデータが生成されます。イーサリアムの場合、バイナリーデータとContract JSON ABIの2つです。ABIデータは、バイナリーデータだけではユーザーが理解できないため、補足的に必要となるものです。

STEP
デプロイ

コンパイルの際に生成されたデータをブロックチェーン・ネットワーク上に配置します(デプロイ)。イーサリアムの場合、コントラクト用のアカウントが生成されます。

STEP
トランザクションの伝播(でんぱ)

ブロックチェーンに対しては、コントラクト用アカウントを生成するトランザクションが作成され、これが承認されると、コントラクトに対して、アドレスが付与されます。

STEP
実行

アドレスが付与されると、ブロックチェーン上にスマートコントラクトが配置された状態になり、それを実行することが可能になります。

スマートコントラクトの例

一つの例として、不動産の売買がスマートコントラクトによってどのように変わるかを見てみます。

As-Is
売り手が不動産を売りたい場合、仲介人に相談する必要があります。仲介人は買い手を紹介し、買い手との文字通り仲介役になって、トランザクション(不動産の移転とお金の移動)が正しく行われるためのサポートを行います。そのための手数料をもらいます。

To-Be
プログラムによって、一定額以上が振り込まれた場合に、買い手に不動産の権利を移転し、お金を売り手のアドレスに送金する、というのを同時に行うことができます。仲介人を介さずにトランザクションを実行することができるうようになります。

スマートコントラクトは、一定額が受領されたら、権利を購入者へ移転、お金を売却者へ送金する
スマートコントラクトは、一定額が受領されたら、権利を購入者へ移転、お金を売却者へ送金する
インターネット神

どうじゃ、わしの解説は。

スマートコントラクトのことは分かるのじゃが、ユースケースについてもっと知りたいのう。

インターネット神

そうか。うむ。では、次回以降、スマートコントラクトのユースケースについて解説してみるぞ!

うむ。それは目が離せないのう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

After joining IBM in 2004, the author gained extensive experience in developing and maintaining distributed systems, primarily web-based, as an engineer and PM. Later, he founded his own company, designing and developing mobile applications and backend services. He is currently leading a Tech team at a venture company specializing in robo-advisory.

コメント

コメントする

CAPTCHA


目次