仮想通貨をできるだけ簡単な言葉で解説

先日、仕事の関係でお客さんのサーバが設置してあるデータセンターにシステムのメンテナンスで行ってきました。止めてはいけないサーバなので、発電施設も付属する免振・防火構造のデータセンターです。
サーバラックが立ち並ぶデータセンターの中でひと際大きな音を発生するラックが目につきました。サーバラックの中には、グラフィックボードと電源ユニットが大量に入っていました。そして、SSDに「ethOS」の文字が。仮想通貨のマイニングをデータセンターでやってるの?(笑)しかも、電気代の高い日本の場所代の高い東京のデータセンターに置いて採算が取れるのか正直微妙な感じです。
そんなことで、今回は仮想通貨のマイニングについて説明させていただきます。

仮想通貨はどのように運営されてるのか

仮想通貨は、大きく2つの技術からできており、データを分散して保存する技術「ブロックチェーン」とそのデータの正当性を保つ技術です。
仮想通貨のマイニングでお金が稼げるというのは、マイニングは採掘という意味で、データの正当性を保つための計算を手伝うことによって、計算した分の手当として仮想通貨の一部が支払われることになります。

ブロックチェーンとは

ビットコインに代表される仮想通貨ですが、ブロックチェーンという技術を使用しています。ブロックチェーンを簡単に言うと、世界中にあるパソコンに分散してデータを蓄積することができるデータベースのことです。
少し前に分散型コンピューティング技術で地球外知的生命体(宇宙人)を探索するプロジェクトが話題になりました。http://setiathome.berkeley.edu/index.php
ちなみに宇宙人はまだ見つかっておりません。宇宙人を探すことよりも、多数のコンピュータで処理を分散して行う技術の先駆けだと思っています。
俗にいうスーパーコンピュータも普通のコンピュータをいっぱい並べて、多数のコンピュータで分散して処理を行っています。スーパーコンピュータの性能ランキングなんてやっていますが、処理の効率×コンピュータの性能×お金(どれだけコンピュータを並べられるか)によって性能が決まります。ランキングといっても各国がどれだけスーパーコンピュータにお金をかけたかによってランキングが決まるといっても過言ではありません。
話はそれましたが、ブロックチェーンは、データを分散して保存していく技術です。とりあえずそれだけ覚えておいてください。詳しく知りたい方は、下のWikipediaリンクをご参照ください。

ブロックチェーンとは
「ブロック」と呼ばれるデータの単位を一定時間ごとに生成し、鎖(チェーン)のように連結していくことによりデータを保管するデータベースである。
wikipedia.orgより引用

データの正当性を保つ技術

ハッシュ関数

データの正当性を保つにはハッシュ関数を使います。ハッシュとは、データから作られた小さな値です。
身近な事例で考えれば、商品に付いているバーコードの最後の1文字がそれに該当します。バーコードの前12桁がデータで、13桁目がハッシュ値となります。
バーコードの左から12桁の偶数桁の合計に3を掛けた数と奇数桁の合計を足した値の下1桁を足して、10から引いた値が、バーコードの13桁目の値になります。
※計算方法に関しては下をの絵をなお、バーコードは東京駅で売っていたクッキーのものを使用させていただいておりますが、とてもおいしかったのでクッキー好きな人は是非食べてみてください。
一般的にはチェックデジットといって、データが正しいかどうか少ない数でチェックすっることができます。12桁の数を1桁でも変えてしまうと13桁目の数と合わなくなってしまうのでエラーとなります。

バーコードは簡単なデータのチェック方法ですが、フィンテック(financial technologyの略称)分野の場合、取り扱うものがお金なので、もっと複雑な計算式が必要となります。

暗号化

BitCoinでは「楕円曲線公開鍵暗号」が使われています。
暗号化を一言でいうと、難しい鶴亀算をうまく使って暗号化します。鶴亀算とは、「ツルとカメが合わせて8匹、足の数が合わせて26本であるとき、ツルとカメは何匹(何羽)いるか。ただしツルの足は2本、カメの足は4本である。」という計算です。
https://ja.wikipedia.org/wiki/%E9%B6%B4%E4%BA%80%E7%AE%97より引用
もうちょっと詳しく言うと、効率的に解く方法が発見されていない数式でコンピュータで計算するには大量の数値を代入していかなければ答えが出せない関数を暗号で使います。小学校の算数の時間を考えてみて下さい。1個100円のリンゴと、1個180円の桃があります。リンゴと桃を合計で、8個買った時、合計金額が1,200円になりました。リンゴと桃それぞれいくつづつ購入したでしょうか。なんてテストがありませんでしたか。これをコンピュータにさせるには、合計金額が1,200円になるまでリンゴと桃の数を代入して計算していかなければなりません。実際、コンピュータであれば、このくらいの数値であれば一瞬で計算できますが、もっと大量の計算をコンピュータにやらせます。桃とリンゴとバナナとナシとサクランボにブルーベリー・・・を買って10億円になりましたみたいな計算だと大量の計算をしなければならなりません。
最初の問題を効率的に解く方法を考えると、合計金額が1,200円なので、リンゴは、1個100円なので12個以下、桃は、180円なので6個以下となります。そうすると、
100円×リンゴの数+180円×桃の数=1,200円にリンゴ≦12、桃≦6の条件が加わります。そうすると、リンゴは0~12までの13個、桃は0~6までの7個の数字の組み合わせを代入すれば必ず答えがでます。つまり、最高でも13×7の91回の計算で答えが出ることになります。コンピュータでこの計算をするのは簡単なので、もっと大量の計算が必要となる楕円曲線を利用した暗号方式が、楕円曲線暗号です。

秘密鍵・公開鍵

key

先ほど、BitCoinでは「楕円曲線公開鍵暗号」が使われています。と書かせていただきましたが、秘密鍵・公開鍵とは何でしょう。家の鍵は、通常開けたり閉めたりできます。でも、仮想通貨の暗号化技術で使う鍵は、「秘密鍵」と「公開鍵」の2種類があります。この2種類の鍵はペアになっていて、「公開鍵」は、暗号化のみができる鍵。「秘密鍵」は、ペアになっている「公開鍵」で暗号化されたものが解除できる鍵です。
なぜ、秘密鍵と公開鍵を分けたのでしょうか。開けられるだけの鍵と閉められるだけの鍵を持っていた場合何に使えるか考えてみましょう。
観光地に行った際、レンタカーやレンタル自転車を借りることがあると思います。レンタカーやレンタル自転車は、「乗り捨てOK」と書いてあるケースがあります。この場合の「乗り捨て」とは、レンタカーやレンタル自転車を借りた場所と違うレンタカー屋さんやレンタル自転車屋さんの営業所や事務所に返せるという意味ですが、閉められるだけの鍵があれば、レンタカー屋さんやレンタル自転車屋さんの営業所や事務所に鍵を返す必要がなくなり、どこに乗り捨ててもいい本当の「乗り捨て」ができるようになります。※インターネットの場合は、世界のどこへでも瞬時にアクセスできるため「乗り捨てられた場所」は関係ありません。
前段が長くなってしまいましたが、秘密鍵・公開鍵の意義は、鍵のやり取りが必要ないことです。

仮想通貨は技術の組み合わせ

ブロックチェーンで、多数のコンピュータに仮想通貨の取引情報を記録します。記録された情報は暗号化技術で改ざんされにくくなっています。多数のコンピュータに保存された情報は、ハッシュ関数により情報の改ざんがあった場合わかるようになっています。これらの技術によって仮想通貨は成り立っています。

マイニングとは

仮想通貨技術には前記したように大量の計算が必要となります。しかし、GoogleやAmazonのように大量なサーバを持っているわけではなく、処理を世界中のコンピュータに委託しています。そして、仮想通貨の計算処理をすると報酬がでます。処理をして報酬を得ることを「マイニング」といい、処理をして報酬を得る人のことを「マイナー」とよびます。
マイニングの成果報酬は、計算を解いた数なので、マイニング計算の時に、前記したような効率的に計算を解く方法を組み込むとマイニングの効率が上がります。ただ、仮想通貨のマイニングは、こんなに簡単な計算でないことは分かりますよね。
仮想通貨はこのような技術を使って、暗号化したり、エラーチェック(データが不正に変更されていないか)したりしています。

マイニングには専用のコンピュータが必要なの?

マイニング用のコンピュータとは?

マイニングの計算は、先ほどのリンゴと桃のように難しくない計算問題を大量に解くイメージです。通常のパソコンは難しい計算が解けるように設計されていることに対してマイニング用のコンピュータは簡単な計算が大量に解けるように設計されています。
普通のパソコンはCPU(Central Processing Unit)を重視した設計です。パソコンを購入するとき、Intel Corei5で4コアのCPUだから処理が速いとか、Celeronの2コアだから処理が遅いとかが購入するときの判断となります。
対して、GPU(Graphics Processing Unit)は、3Dの処理などに使う処理装置です。通常は、パソコンの中にグラフィックボードとして搭載して、3D CADなどで、レンダリング(画像・映像・音声を生成)する場合にCPUと連携して処理を高速に行います。CPUでは、2コア~8コアが一般的ですが、GPUの場合、数千コアとなります。下の絵を見て下さい。

この絵をコンピュータでレンダリングする場合、x軸100、y軸200から、斜め35度に直線を1cm引いて、x軸150、y軸200から、斜め45度に直線を2cm引いて・・・のような処理を行います。要は簡単な計算が連続します。CPUでこの処理をすると、コアの数づつ、直線を引いていきます。対して、GPUは、数千コアあるので、一気にこの絵を描くことができます。マイニングも、簡単な計算の連続なのでコア数が多ければ多いほど処理を早く行えることになります。

もっと簡単に考えると


小学校のクラスに、頭がいい優秀な子1人と、そうでもない子が30人いたとします。頭がいい優秀な子1人のチームとそうでもない子が30人のチームを作り難しい計算をさせた場合、優秀な子1人の方が計算が早く終わると思います。逆に簡単な計算30個をやらせた場合、そうでもない子が30人のチームの方が計算が早く終わります。CPUは、頭がいい優秀な子1人。GPU(Graphics Processing Unit)は、そうでもない子が30人のチームと思ってください。

仮想通貨の問題点


仮想通貨の処理には、大量の計算が必要で、大量の計算によって信頼性が確保されています。また、その処理を委託することによって成り立っています。仮想通貨のマイニングで報酬を得られる仕組みで、マイニングは大量の電力を消費します。仮想通貨は大量の電力を消費しますが、あなたは仮想通貨で買い物をしたことがありますか。仮想通貨を持っていても、仮想通貨で買い物をしたことがある人は少ないと思います。仮想通貨のほとんどが投機目的(株やFXみたいに利益を出すために投資すること)で売買され、仮想通貨で便利になったことはほとんどないと思います。悪く言えば、ギャンブルで大量の電力を消費しています。
それと、「仮想通貨は儲かる」みたいな噂がありますが、仮想通貨で確実に儲けるためには、ゴールドラッシュと一緒で、ゴールドラッシュに向かう人(仮想通貨で儲けようと企む人たち)相手に、スコップやツルハシなどの道具(マイニング用のコンピュータや効率的にマイニングを行うための情報)を売るのがいいのかもしれませんね。

関連記事

【図解】パソコンが壊れた際のデータ復旧