見出し画像

Fintech革命 ブロックチェーンテクノロジー イーサリアムとスマートコントラクト Vol.2


皆さんはブロックチェーンという仕組みをご存知でしょうか。
仮想通貨に代表される、分散型でネットワーク、データベースを共有するテクノロジーです。従来の中央集約型と異なり、この革命的なテクノロジーが生み出す市場は、年間66%で急成長しており、経済産業省の発表では将来的に国内だけで67兆円の市場規模が予想されています。
今回はこのブロックチェーンの仮想通貨以外の利用について調べた事を記載します。

ブロックチェーンの仕組みは以前の記事に書いています。宜しければ読んでみてください。
前回の記事はこちら。


はじめに~イーサリアムとスマートコントラクト

結論:ブロックチェーンのビジネス利用で重要な技術であるスマートコントラクトを調査する。

前回迄でブロックチェーンの仕組について調査内容を記載しましたが、仕組みがわかっても、なかなか具体的な使い方がイメージ出来ません。今回からはビジネス利用で必須技術の「スマートコントラクト」を調査して行きます。


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

結論:ブロックチェーン以外の広域でも使用される概念で、世の中の全ての契約を自動的に実行させることをスマートコントラクトと言う。

ブロックチェーン_スマートコントラクト_1_従来契約

スマートコントラクトは広い意味でつかわれる概念として、1997年に情報工学者のニック・サボが提唱しました。
その内容は「ある特定の条件を満たすと自動的に契約を決済する仕組みをスマートコントラクトと呼ぶ」です。
よくあるスマートコントラクトの例は自動販売機です。他にもネット通販のサイトも自動で契約されますのでスマートコントラクトに成ります。

1.自動販売機にお金を入れる。
2.ジュースを選びボタンを押す。
3.ジュースを手に入れる。
4.おつりが返却される。

この場合、「お金を入れる」と「ジュースを選びぼたんを押す」という条件が揃いましたので、「ジュース」と「おつり」が出力された事になります。
一方でお店で商品を購入する様な、人の手を介する様な契約はスマートコントラクトとは言いいません。


ブロックチェーンでのスマートコントラクト

ブロックチェーン_スマートコントラクト_2_全体図

スマートコントラクトは人の手を介さずに契約する行為ですが、ブロックチェーンの中でのスマートコントラクトは
ブロックチェーン上に記載された条件を満たすと自動的に成立するトランザクション(コントラクト)を言います。
ブロックチェーンには、コントラクト以外にも残高や文字データも登録されます。
ここではイーサリアム上のスマートコントラクトの処理イメージを説明します。

コントラクト以外のトランザクション(残高の送金時)
例)AさんからBさんに残高1ETH(*1)を送付する場合のトランザクション

From:0xAAAAAA  Aさんのアドレス
To:0xBBBBBBB Bさんのアドレス
value:1       送付する残高
data:なし      設定するデータはなし

ブロックチェーン_スマートコントラクト_3_送金

ブロックチェーンのトランザクションは残高の送信(誰が誰に仮想通貨を送ったか)の情報がブロックに書き込まれます。
イーサリアムでは従来のブロックチェーンと同じく保持してる残高(*1)の送付の仕組みがありますので、そちらを説明します。

まず、イーサリアムの上のノードやブロックチェーンにはアドレスが設定されています。
1)マイナー(*2)がトランザクションを発行する場合に、From:何処から、To:何処に、value:残高、data:文字やプログラムなど、を設定します。
2)トランザクションが発行された後で、自分のノード内でトランザクションが先ず改ざんされていないか等のチェックが行わます。問題が有れば破棄しますが、問題なければ自身のノードのブロックチェーンにブロックにアドレスが付与され登録されます。
3)イーサリアムでは隣のノードのブロックチェーンが自分の保持する内容より新しければコピーして持ってくるという特性が有ります。隣のノードにブロックチェーンが取り込まれチェックし問題無ければ、自身のブロックチェーンに上書きします。
4)更に隣のノードも同じ事を繰り返して全体にシェアされブロックチェーン承認されます。

(*1)イーサリアムの場合は残高の単位はETH(イーサ)となります。
(*2)ブロックチェーンにブロックを追加できるノードをマイナーと呼びます。

コントラクトの登録
イーサリアムではブロックチェーンにプログラムなどの任意のデータを書き込む事ができます。
例)Cさんがコントラクト(add)を追加する場合のトランザクション。

From:0xCCCCCCC  Cさんのアドレス
To:0        なし
value:0      なし
data:add(x,y)  コントラクト。ここではx+yの値を返す関数を例にしています。

ブロックチェーン_スマートコントラクト_4_登録

登録の手順は残高の送金時と同じになります。
1)マイナーがトランザクションを発行する。data部にはプログラムや好きな文字などを登録できます。
2)自分のノードで改ざんなどのチェックをしてブロックにアドレスが付与され登録されます。
3)隣のノードにコピーされます。
4)更に隣のノードも同じ事を繰り返して全体にシェアされブロックチェーンが承認されます。


コントラクトを使う
登録されたコントラクトはコントラクトのアドレスを知っているノードであれば利用できます。
例)Dさんがコントラクト(add)を利用する場合のトランザクション。

From:0xDDDDDD Dさんのノードアドレス
To:0x000004    実行するブロックチェーン上のコントラクトのアドレス
value:0             なし
data:add(100,200) コントラクトに引き渡す条件。

ブロックチェーン_スマートコントラクト_5_利用

1)マイナーがトランザクションを発行する。From:実行するDさんのアドレス、To:実行するコントラクトのブロックチェーン上のアドレス、Data:コントラクトに引き渡す条件を設定します。
2)マイナーがトランザクションのブロックチェーン上のアドレスを指定し、条件であるadd(100,300)を渡し、結果である300をブロックチェーンに書き込みます。
3)ブロックチェーンが隣のノードにコピーされます。
4)更に隣のノードも同じ事を繰り返して全体にシェアされブロックチェーンが承認されます。

本記事のまとめ

ここで最初の「スマートコントラクトとは」で説明した自動販売機の例と照らし合わせてみてください。
1.自動販売機にお金を入れる。⇒トランザクションにadd(100,200)を設定する。
2.ジュースを選びボタンを押す。⇒コントラクトのアドレスを指定しトランザクションを実行する。
3.ジュースを手に入れる。⇒300という値が全体にシェアされブロックチェーンが承認されます。
4.おつりが返却される。⇒同上。

これで、イーサリアムでニック・サボが提唱しているスマートコントラクトが実現できている事が分かります。
実際のコントラクトはadd(x,y)の様に単純なプログラムではなく、複雑な内容が設定されます。

最後に、

今回はイーサリアム上でのスマートコントラクトの調査結果を記載しました。今後もブロックチェーンテクノロジーについて調査していきたいと思います。


最後までお読み頂き有難うございました。この記事が良かったと思われる方は、スキやフォローしていただけると嬉しいです。

次の記事はこちら。


この記事が気に入ったらサポートをしてみませんか?