ビットコインの話題が、どこのニュースを見ても多く出ている。
最近ではTVでも特集されたりして、今後さらに認知が広がっていくと考えられる。

筆者は最初、ビットコインについて円やドルのような1つの通貨程度と考えていたが、色々と関わっていくうちに既存の通貨とは全く異なるものであることがようやくわかってきた。

この記事では、ビットコインを知る上で良く出てくる「P2P」「PoW」「ハッシュ関数」「マイニング」などの用語解説を交えながらブロックチェーンの仕組みについて、初心者の方や知ってる風だけど実はあまり良く分かってない方に向けて書いていく。

P2Pとは?既存通貨と仮想通貨(暗号通貨)の違い

P2Pは「Peer to Peer(ピア・ツー・ピア)」を略したもので、対等な者同士という意味であり、データを様々な不特定多数のネットワークで管理するということだ。

P2P

これが従来の通貨の管理方法と異なるところだ。

中央集権型(既存の銀行など)は、管理するのにお金がかかるが、分散型(仮想通貨)はネットワークでの管理なので管理自体にお金がかかることはない。

ハッシュ関数とは?ブロックチェーンの仕組みのそのもの

ビットコインを知る上で「ハッシュ関数」の存在を知る必要がある。

いきなり「ハッシュ関数」と言われても良く分からないと思うが、ここはそういうものがあるという事で読み進めて欲しい。

ハッシュ関数とは、一方的にランダムな値を作り出す関数のことである。ただし、ランダムと言っても同じ値を入れた場合は同じ値の結果を返す。これは、世界中の誰がやっても同じ結果を得られるという事だ。

Y=2X
X=2の場合Y=4
X=3の場合Y=6

上記のようにXの値により、Yの値は変わる。そして、世界中の誰でも答えは同じである。ハッシュ関数もこれと同じ原理だ。例えば下記のサイトでハッシュを生成してみてみよう。

http://www.milk-island.net/javascript/hashgenerator/sha2_256.html

文字列:コインチョイス
ハッシュ値:FD14594185588EF95D4A176951E2D60E1E5662B8C5FB38FC1F09677043623FF4

文字列:ゲス不倫
ハッシュ値:57A51E9757A704F3801DFFEEE12A532D05914091DCF740018CE65E2CA35FB66D

文字列:アイーン!
ハッシュ値:20FB3E38E65A6B66D6219F4E1B0B761763F028D8AA39C2AE454E24A615B349AB

文字列:アイーン!!
ハッシュ値:AA385641E9076D9DFC06676702D9877F8F0C89272B61ECA5158B65DD031E3777

文字列:アイーン!!!
ハッシュ値:7D4877E22080C1BCE1F892E6AB10410DFA5764F79289EC471785212A86F69648

文字列:だっふんだ
ハッシュ値:F777886B7625247EB6410A0A8E3128C37BFB6233769096230F07C76F6FB668EB

このような結果が出てくる。ちなみに筆者は志村けんさんのファンである。これは誰がやっても同じ結果を得ることが出来る。志村さんがやっても同じ結果なのだ。

ただ、ハッシュ値から元の文字列を導き出すには、規則性がないため簡単ではないというかほとんど無理だ。一方向のみで簡単に同じ値を得ることが出来る。

「取引[1]」という文字列があったとして、下記のようにハッシュを作っていく。時間のある方は、同じように試してみましょう。全く同じ結果を得ることが出来る。

【1番目の取引】
文字列:取引[1]
ハッシュ値:174A15CAAE568C1C8C28513C2F05A2ED528C36D3FC6A4ED6F1A555F3CB724985

【2番目の取引】
2番目の暗号は、取引[2]に取引[1]の暗号(ハッシュ値)を付け加えたもの
文字列:取引[2]174A15CAAE568C1C8C28513C2F05A2ED528C36D3FC6A4ED6F1A555F3CB724985
ハッシュ値:7F2C23B2AD0D322575B485D570098A9E685AC859C18C69C7638CABD156AC0E5D

【3番目の取引】
3番目の暗号は、取引[3]に取引[2]の暗号を付け加えたもの
文字列:取引[3]7F2C23B2AD0D322575B485D570098A9E685AC859C18C69C7638CABD156AC0E5D
ハッシュ値:8A1F70057999D588865BEAC39B507EF8BEDDD5A25CB85E4A1A1D1EB5E7A63DC2

「取引[1]、取引[2]」の中に取引内容の情報が含まれている。誰から誰に対して、いくつのビットコインが取引されたかという情報のことだ。取引情報を次々にハッシュしていき、一定量溜まったらそれを一つにまとめてブロックにする。そして、そのブロックをつなげていくことがブロックチェーンの仕組みの一つである。

マイニング(採掘)とは?

ビットコインを暗号化する上でハッシュ関数が使われてることを上記で書いた。このブロックとブロックをつなげる作業がマイニング(採掘)だ。

下記の図を見て頂きたい。ビットコインの仕組みの一つで、nonce(ナンス)というものがある。これがある事でマイニングを難しくしている。nonce(ナンス)は、32ビットの値のことだ。32ビットとは、2の32乗なので「4,294,967,296」となり、約43億通りある。ブロック最後のハッシュにその難解なnonce(ナンス)が組み込まれるのだ。

ブロックとブロックをつなげる時のキーになるハッシュは、先頭に数字のゼロ「0」が16個並ぶ。そのnonce(ナンス)を探しあてた者(マイナー)が報酬を受け取ることが出来る。

ブロック最後のハッシュ × nonce値 = 0が16個並ぶハッシュ(図の赤いハッシュ)

ブロックチェーン

マイニング業者は、ブロックとブロックの間をつなげるキーハッシュを43億通りのnonce(ナンス)を加えたハッシュを試すことで答えを導き出す作業を繰り返す業者のことだ。この計算を行うために、計算力の高いコンピューターを準備して稼働させる必要がある。だからマイニングに適しているのは、下記のようなエリアとなる。

・電気代が安く済むエリア
・寒いエリア(計算機を冷却させる)

PoW(Proof of Work)とは?

プルーフオブワーク・・・「仕事の証明」が直訳だ。マイニング(採掘)することで、報酬がもらえる仕組みの事である。ビットコインは、PoWを採用している。これ以外に、PoSというものもあり、Proof of Stake(プルーフオブステイク)を略したもの、意味は「保持数の証明」ということになる。一言でいうと、保持数の多い者に報酬が支払われるという事だが、また別の記事でPoWとPoSに関しては説明しようと思う。