仮想通貨2018年予測

仮想通貨とブロックチェーンを動画で図解(後編)|ブロックチェーンのしくみ

仮想通貨とブロックチェーンを動画で図解(後編)|ブロックチェーンのしくみ

ブロックチェーンとは

ブロックチェーンとは、ブロックと呼ばれるデータの集まりごとにトランザクションを承認し、新しいブロックを連結していくP2P型の決済システムです。このブロックチェーンがどのような仕組みで動いているのかをビットコインを例に解説していきます。聞きなれない言葉も出てくると思いますが、非技術者でも理解できるレベルですので、単語を整理しながら確認していきましょう。
仮想通貨のことがよく分からない方は、前編の「仮想通貨と既存の決済システムの違い」をご確認ください。

動画版

 

prezi版(スライドアニメーション)
ブロックチェーンのしくみ

[toc]

電子署名とトランザクション

ビットコインは、ウォレットと呼ばれる仮想の財布のようなアプリケーションを使って、自分の所有しているビットコインを送金したい相手のアドレスを指定して送金を行います。その送金データをトランザクションと言い、トランザクションが本当に所有者本人から送られているのかどうかを証明する必要があります。

トランザクションとは何か

トランザクションがどのように構成されているかを確認していきます。

アドレスAからアドレスBに0.5BTCを送金する場合を例にしてみましょう。AのアドレスにはあらかじめアドレスCから5BTCが送られているとします。

Tx1

トランザクションAには、送金しようとしている0.5BTCがどのアドレスから送金されたかという着金データが必ず含まれています。これをインプットと呼びます。反対に送金しようとしているデータをアウトプットと呼びます。

Tx2

トランザクションはこのインプットとアウトプットが必ず2つで1組となるようなデータになります。インプットとアウトプットを2つで1組とすることで、全てのトランザクションが1つ前のトランザクションの情報を保持するようになります。

Tx3

一つ前のトランザクションの情報を保持することで、全てのトランザクションが連鎖的につながります。トランザクションを遡ることでどのような経路をたどり送金されてきたかを確認することが出来ます。

あるトランザクションを不正に改ざんするには、繋がり合うすべてのトランザクションのデータを改ざんしなければ辻褄が合わないことになります。

トランザクションの作成と電子署名

実際にウォレットアプリの中でどのようにトランザクションが作成され送信されているかを確認していきます。ウォレットアプリが管理するものに「秘密鍵」「公開鍵」「アドレス」があり、それぞれ以下のような性質を持っています。

秘密鍵 取引データを暗号化するための魔法の杖のようなもの。秘密鍵を持つものがそのウォレットの全権をコントロールできる。秘密鍵から公開鍵が生成される。
公開鍵 秘密鍵と1対1のペアとなる暗号解除用の鍵。ある秘密鍵でかけられた魔法はペアとなる公開鍵でのみ解除でき、他の秘密鍵でかけられた暗号化は解除できない。公開鍵から秘密鍵は絶対に割り出せないので公開して問題ない。
アドレス 送信元および送信先を特定するアドレスで口座番号やメールアドレスのような役割をもつ。公開鍵から生成される。

公開鍵とアドレスは秘密鍵をもとに生成されますが、公開鍵やアドレスから秘密鍵を割り出すことは絶対にできません。
公開鍵からアドレスが生成できるので公開鍵が分かれば送金元のアドレスは特定できます。

トランザクションの生成

トランザクションの生成時、ウォレットアプリでは以下の①から④のデータをネットワークに送信します。

①送金データ
どのアドレスからどのアドレスへいくら送金するかのデータ。

②署名済み送金データ
送金データを秘密鍵で暗号化(署名)した署名済みの送金データ、署名した本人から送付される公開鍵以外では解除できない。ウォレットの所有者である本人が送金をしようとしているかの証拠となる。

署名済み送金データ

 

③公開鍵
署名済み送金データを解除するために使用する鍵。一つの秘密鍵からただ一つのペアとなる公開鍵が生成される。

④前のトランザクションID
全てのトランザクションが一つ前のトランザクションのIDの情報を保持します。これによりトランザクションの経路を確認できる。

トランザクションの検証

トランザクション生成の流れ

ウォレットアプリが上記①から④のデータをP2Pネットワークに送信し、マイナーと呼ばれるトランザクションを検証する役割を果たすユーザーがそのトランザクションの正当性を検証します。ここで検証されるのは以下の2つのポイントです。

1.トランザクションの整合性の確認

「①送金データ」と「④前のトランザクションIDから遡って調べたトランザクションの経緯」を確認し、アウトプット(送金しようとしている数量)がインプット(所持している数量)と比較して不整合がないかを検証します。

2.所有者の確認

「②署名(暗号化)済みの送金データ」は秘密鍵を所持していないと作成できません。署名済みの送金データは対応する公開鍵でしか解除できないため、署名済みの送金データとそれを解除できる公開鍵を送付してきたかどうかで、秘密鍵の所有者が送信した正しいトランザクションかどうかを検証します。

自分の秘密鍵を使って別のアドレスを送金元とする取引データを作成した場合も、公開鍵から送金元のアドレスが確認できるため、アドレスの不一致により排除されます。

トランザクションの検証

これにより以下のような不正なトランザクションを排除することができます。

  • 自分の所持している以上の数量を送金
  • 秘密鍵の所有者以外が取引データの改ざん
    公開鍵を使って複合(暗号化を解除)したオリジナルの取引データが、改ざんされた取引データを一致しないので排除される。

このような秘密鍵と公開鍵を利用した暗号化の仕組みを一般的に公開鍵暗号方式と呼びます。

マイニングとプルーフ・オブ・ワーク

マイニングとは

マイナーがトランザクションを承認し、共有台帳に書き込む行為がマイニングと呼ばれます。このマイニングにより前述したトランザクションの正当性が検証されます。

ブロックチェーンにブロックをつなげる

マイニングとは、トランザクションを束にしたブロックと呼ばれるものをマイナーが承認し、一定間隔で繋げていく行為のことを指します。一般ユーザーがトランザクションを生成し、マイナーがそれを束にして承認する。これを一定間隔で繰り返し行うことでネットワークを維持する仕組みのことを一般的にブロックチェーンと呼びます。

マイニングとPOW2

このマイニングは誰でも参加できるので、悪意のあるマイナーによる二重支払いなどの不正なトランザクションの承認を排除する必要があります。

二重支払いとは

例えば、1BTCしか持っていない人がその1BTCを同時に複数のアドレスへ送金できてしまうようなことを二重支払いといいます。

二重支払い

ビットコインではこのようなマイナーによる不正な承認を排除するためにプルーフ・オブ・ワークという仕組みを採用しています。このプルーフ・オブ・ワークの仕組みを理解するために、ブロックを生成する仕組みについて詳しく確認していきましょう。

ブロックに含まれているもの

ブロックを構成する要素として、まず理解しておきたいのは以下の3つになります。ここでは他の情報は省略します。

  • 直前のブロックのハッシュ値
  • ノンスと呼ばれるランダムな数値
  • トランザクションの束のハッシュ値

ブロックの中に含まれるもの

ここでハッシュ値という聞きなれない単語が出てきますが、これはブロックチェーンにおいては特に重要な役割を果たしますので確実に理解しておきましょう。

ハッシュ化(SHA256)とは

ハッシュ値というのはハッシュ関数と呼ばれるプログラムでデータをハッシュ化したものを指します。ハッシュ関数には様々な種類がありますが、ビットコインで採用しているハッシュ関数はSHA256と呼ばれます。

ハッシュ関数とは任意のデータを別の文字列に変換するもので、以下のような特徴があります。

どんなデータであっても同じ長さの数値へ変換する

ハッシュ1

ハッシュ関数を使用すると、いかなるデータも同じ長さのランダムな数値に変換されます。変換前のデータがどのようなサイズであっても一定のサイズに統一することが出来ます。

少しでも元データが違うと全く別のハッシュ値になる

ハッシュ2

変換前のデータの一部が少し違うだけでも全く別のハッシュ値になります。これにより元データが一部でも改ざんされると、明確に改ざんされたということが分かります。

ハッシュ値から変換前のデータを特定することは不可能

ハッシュ3

変換されたハッシュ値から元のデータを特定することは現時点の技術では世界中のコンピュータを総動員して計算しても不可能です。

ハッシュ化を使う目的

ブロックチェーンにおけるハッシュ化は秘密鍵を使った公開鍵暗号方式のように、暗号化したデータを複合して利用するようなものではなく、その情報に変更が加えられていないかを確認するための目印のような使い方をします。

このハッシュ化の仕組みを理解した上で、ブロック生成の仕組みについて確認していきましょう。

新しいブロック生成の流れ

新しいブロックを構成する要素は前述した以下の3つになります。

  • 一つ前のブロックをハッシュ化したハッシュ値
  • マイナーが未承認トランザクションの中から選んだトランザクションの束
  • ランダムなノンス

この中で一つ前のブロックのハッシュ値は前のブロックをハッシュ化した値になるので確定しています。トランザクションの束は、時系列の古いトランザクションが優先されるというルールはありますが、基本的には手数料の高いものをマイナーが好きに選びブロックに組み込むことが出来ます。。

最後にノンスというランダムな値が組み込まれますが、このノンスはある条件を満たすものしかブロック組み込むことができません。この条件を満たすノンスを見つけるために、マイナー全てが参加する計算力を競う競争が行われます。この競争で一番早く条件を満たすノンスを見つけ出したマイナーが新しいブロックをブロックチェーンに繋げる権利を得ます。

新しいブロック生成

条件を満たすノンス

その条件というのは、「①前のブロックのハッシュ値」「②正解となるノンス自身」「③トランザクションのハッシュ値」を含むブロックの情報をまとめてハッシュ化したハッシュ値が、一定の値以下になることです。この一定の値というのはその時々で異なりますが、例えば頭に0が32個並ぶ値などが条件になります。

新しいブロック生成2

頭にゼロが32個並ぶようなハッシュ値が出現するのはものすごく低い確率です。そのためマイナーはノンスを何度も変更しハッシュ化を繰り返して条件を満たすノンスを見つけなければなりません。

nonce1

nonce4

正解のノンスを見つけたマイナーがそのブロックの承認者となり、ブロックをネットワークに繋げます。一度正解のノンスが分かってしまえば、ハッシュ値を確認するのは一瞬で完了するので、他のマイナーはそれが正解と確認できればそのブロックはあきらめてすぐに次のブロックの生成に入ります。

次のブロックでは、先ほど確定したハッシュ値が「前のブロックのハッシュ値」になりまた次のブロックのノンスを求める競争が始まります。

この作業を繰り返すことで、特定のマイナーが恣意的にブロックを承認し続けることがなくなります。このように計算力によって承認者を決め、ネットワークの正当性を保つしくみをプルーフ・オブ・ワークといいます。

ハッキング(クラッキング)の難しさ

ランダムなノンスを入れ、ブロックをハッシュ化して条件を満たすかを確認する作業を”hush”という単位でカウントします。2018年3月現在、1つのブロックを見つけるまでにネットワーク全体で約150垓hush(兆→京→垓)の計算が行われています。

もしマイナーが不正な承認をしようとした場合、他のマイナーより先にこの膨大な計算を行い連続でこの競争に勝ち続ける必要があります。さらに一つのブロックは一つ前のブロックのハッシュ値を保存していますので、過去のブロックを改ざんするにはそこから連なるすべてのブロックが改変されるため、連続でこの計算を解きなおす必要があり、これが成功する確率は限りなくゼロに近いことになります。

hack

仮に不正なマイナーがネットワーク全体を凌駕するほどの計算力を有したとすると、不正な承認を行うよりも正規のマイニング報酬を得た方がはるかに効率が良いので、ハッキングを行う動機自体を無くしていると言えます。

ブロック生成の権利を得たマイナーへの報酬

ブロックの承認者となったマイナーには以下の2つの報酬が支払われます。

  1. 承認に対する報酬:12.5BTC=約1,125万円(2018年3月時点)
  2. トランザクション手数料:約35万円/1ブロック(2018年3月時点)

1.の報酬はビットコインの新規発行を兼ねたものになります。全てのビットコインはこのマイナーへの報酬という形で新たに発行され、それ以外には発行されません。

2.の報酬はそのブロックの各トランザクションが支払った送金手数料の合計になります。このためマイナーは手数料の高いトランザクションを優先的に処理します。

これらの報酬がマイナーを計算競争へ参加させるモチベーションとなり、マイナーが増えれば増えるほど計算の競争で勝ち抜くのが難しくなり、不正な承認を行うマイナーの排除につながります。

ディフィカルティの調整と半減期

ブロックの生成の難しさはディフィカルティと呼ばれ、求めるハッシュ値の頭のゼロの数を増減して調整されます。この調整は一定の間隔(2016ブロック)ごとに行われ、ブロックの生成間隔が常に10分に近づくように設計されています。これにより一定間隔で新規通貨の発行を行うことができます。

ディフィカルティ

そしてマイナーへの報酬は、半減期とよばれるタイミング(21万ブロック)で半減します。最初50BTCだった報酬が2012年で25BTCになり、2014年で12.5BTCに、2020年で6.25BTCに減少することになります。

このように「一定間隔での新規通貨の発行」と「半減期による発行数を減少」が参加者全員で共有するP2Pプログラム上で明確に規定・実行されます。これが自由に新規発行を行える既存の通貨とは大きく異なる点と言えます。

まとめ

これで仮想通貨を支えるブロックチェーンの基本的なしくみは理解できたかと思います。現時点で仮想通貨はまだまだ発展途上であり、ビットコインですらBitcoin Coreと呼ばれる公式クライアントのバージョンは0.16です。(通常ソフトウェアの正式リリース時のバージョンは1.0になります。)

仮想通貨についてはさまざまな問題が議論されていますが、各通貨を開発するまっとうな開発者達は、いかにしてブロックチェーンで既存のシステムの問題点を解決できるかということに情熱をもって取り組んでいるのではないかと思います。

そして、P2Pとブロックチェーンを利用したアプリを開発するためのプラットフォーム的役割をもつ仮想通貨も存在します。これらのプラットフォーム上で現在多くのDappsと呼ばれる分散型アプリケーションの開発が進んでいます。これらのDappsが既存のアプリとどう違い、どこが革新的であるかを理解するには、このブロックチェーンのしくみを理解することが必須になります。その理解がまだ一般的に広がっていない状況ですので、逆にビジネスを仕掛けようとする人にとっては真っ白な雪原が広がっているような状況ではないでしょうか。

仮想通貨とブロックチェーンを動画で図解(前編)|仮想通貨と既存の決済システムの違い

 

この記事が気に入ったら
いいね!しよう

最新情報をお届けします

Twitter でコインプラネットをフォローしよう!

 


\もっと仮想通貨のことを知りたい?/
仮想通貨webサイトリンク集
  1. 仮想通貨ブログランキング>>ランキング参加中!
  2. にほんブログ村 仮想通貨情報>>ランキング参加中!
  3. ブログ王投資ブログ一覧>>ランキング参加中!
  4. Coinmarkercap>>仮想通貨時価総額ランクの情報元
  5. コイン神社仮想通貨ICOの最新情報ならここ!
  6. bitpet-ビットペット>>仮想通貨イーサリアムを使ったDappsゲーム

仮想通貨の基礎知識カテゴリの最新記事