
私はビットコインの仕組みに関する記事や書籍についてはたくさん見てきました。
すると大体二種類の解説があることに気がつきました。一つは初心者向けです。もう一つはエンジニア向けです。
ですが、私はそれに疑問があります。
エンジニア向けのものは難しすぎるしコードが入っていて呪文のように見えます。プログラミングができない人との隔たりがあります。
一方で初心者向けのものは解説が本当に表面だけで実際にわかったような気になるだけで全く分かりません。
この二つの解説に隔たりがあるのでこの隔たりを埋められるような詳しく分かりやすく解説をしたいと思いこの記事を作ってみることにしました。
そこで自分で図を使って解説しようと思っていたのですが、そんな時に海外の動画で素晴らしい動画あったのでそれを元に解説することにしました。
引用:Ever wonder how Bitcoin (and other cryptocurrencies) actually work?
この動画が一番詳しい解説の中で分かりやすかったです。
ですが残念ながら英語なのでよく分からないと思います。また26分間とまあまあ長いので見るためにはまとまった時間を用意しないといけません。
ですのでこの素晴らしい動画をもう少し時間を節約しながら読めるように引用させていただきつつ、図解とテキストでの解説にしたいと思います。
動画にあることだけ解説せずに、私の知っていることも交えながら解説します。
草猫店長の目次ノート

ビットコインは組織によって管理されていない

動画14秒頃
ビットコインは匿名のサトシナカモトと呼ばれる人物によって設計されました。最初は9枚のレポートで2009年のことでした。
ビットコインの最大の特徴は、ビットコインは銀行と違い誰かが所有権を持って管理している訳ではないところです。
ビットコインは不特定多数の人によって管理されています。
不特定多数の人というのはビットコインの取引履歴を代わりにチェックしてくれる人たちのことを言います。
この代わりにチェックしてくれる人たちはビットコインの2009年から始まる全取引履歴をハードディスクか何かで保管しています。
全取引履歴のことをフルノードとも呼ぶのですが、世界にフルノードを持った人がたくさんいるため、一人のデータが吹き飛んだところでデータが消滅することがありません。
この誰かが主導権を持って管理していない状態を「分散型」とか「非中央集権型」と表現します。


ビットコインは暗号技術の結晶

ビットコインはデジタル署名やハッシュアルゴリズムと言った暗号化に関わる技術によって作られています。
暗号化に関わる技術を使いながら取引履歴を台帳(Leger)にどんどん保存していきます。家庭でいえば何にいくら使ったかの帳簿と同じようにです。

画像のようにお金の流れが随一書き込まれていきます。
「でもこれって今までのコンピューターの技術でできることじゃない?」
と思ったかもしれません。その通りで、今までのデータベースの技術を使えば何にいくら使ったのかを簡単に計算できます。
ですが、従来のデータベースやコンピューターの計算とは違うのは”信用”の点で全く異なります。

上の計算式をみて、「台帳と暗号理論を組み合わせたものが仮想通貨だ」というのは理解できるかと思います。
ですが、マイナス信用ってどういうこと?と腑に落ちないかと思います。
これは「このシステムは信用しなくても正しく利用できるよ」という意味のマイナス信用です。
銀行の場合はお金の送金は銀行の中の人たちが悪さをしないと信じているから銀行を平気で使うことができました。
ですがビットコインの場合は銀行の中の人たちも存在しなければ、ただビットコインには自動で動くシステムしかありません。
要するに人が介在する必要がない、言い換えると人や組織が存在していないので誰かを信用する必要がそもそもない。そうした意味でマイナス信用となっています。
この誰かを信用する必要がない性質のことをトラストレスと言います。
トラストレスの性質は今までのデータベースやコンピューターの計算では実現できることができなかったポイントです。
この性質があるからこそ、世界の人がいくら、どれだけ使おうとも正しく台帳が刻まれていると世界中の人が認識することができました。
ビットコインでは一度お金を集計してから送金する

ビットコインの場合はA→Bヘお金を送金する際に一度送金する通貨を保留しておきます。
これは不正がないのか確認する作業を入れるからです。
不正がないことを確認することでビットコインを送金することを確定します。
この不正がないのかどうかチェックする作業一連のことをマイニングと言います。
マイニングとはどのような活動なの?

先ほどは、ビットコインの場合はA→Bヘお金を送金する際に一度送金する通貨を保留しておきます。と説明しました。
保留された状態のビットコインは送金が正当なものかどうかを誰かがチェックしなくてはいけません。
しかし誰が、チェックすれば良いのでしょうか。
誰かれとチェックする許可を与えていたら誰が不正をせずにチェックしてくれたか分かりません。
悪意のある人が問題のある送金を「問題ないよ」と報告することもできます。
このチェックする権利というものを「一番計算してくれた人」に譲るようにビットコインの場合はなっています。
一番計算してくれたことを示すには
一番計算してくれた人はどうやって示せば良いのでしょうか。

それは「0」が決められた個数分だけ連続で算出できればOKです。(010101となっていますが実際は16進数で表記されます)
「そんなシンプルなの?」と思うかもしれません。
確かにシンプルなのですが、確率は天文学的な数字を超えていて、地球上から全ての砂つぶの中から正解の砂つぶを発見するよりも確率が低いです。
それだけ計算したことを示してくれれば「チェックする権利」を与えても良いかなあ。となりますよね。
計算方法はどうやるの?
計算には主に2つの素材を使って計算します。
素材として使うのはブロックヘッダーとナンス値と呼ばれる計算用に使う値です。
ブロックヘッダーは二種類に分かれます。

まずは前回の計算結果です。

次に送金要請したデータです。送金データはマークル木と呼ばれる方法で5000件近くの送金データでも一つに圧縮されています。
前回の計算結果 + 送金データがブロックヘッダーになります。(それ以外にもデータはありますがメイン要素が2つです)

先ほど言ったナンス値と呼ばれるものです。
ブロックヘッダーにナンス値を加えたものをSHA256と呼ばれる暗号化の方法で「00000000…」出すように頑張るのがマイニングです。



デジタル署名はあなたが送金したことを証明するためにある

先ほど、ビットコインはトラストレスであることを説明しました。
どのような点でトラストレスなのかというとデジタル署名を行なっている点でもトラストレスになっています。
1件1件の取引に関して、署名(シグネチャ)が行えるようになっています。

一件一件の送金データには署名(シグネチャ)が入っています。この署名(シグネチャ)は一人ずつが持っている秘密鍵と呼ばれるものがなければ作り出すことはできません。

一人につき二種類の鍵があります。先ほど言った秘密カギともう一つは公開カギです。
画像でpkとなっているのがプライベートキー(公開カギ)です
画像でskとなっているのがシークレットキー(秘密カギ)です。
聞きなれないとよくわからないと思いますのでまずはこういうのもあるんだー程度で知っておくと良いと思います。
送り手は送金データ(メッセージ)に対して秘密カギを合わせたものをSHA256と呼ばれる方法で計算します。
SHA256と呼ばれる計算で出てきた唯一無二の値が署名(シグネチャ)として機能します。



署名(シグネチャ)が正しいかどうかをチェックするためには公開カギを使います。公開カギが秘密カギと対応したものであれば送金データは正しいものだったとわかります。
署名データの0101010…の数字は唯一無二の値なので、送金データをコピーして同じ署名を生み出したらバレてしまいます。
そのため不正することができないということですね。
常に前回の取引履歴を参照するよ
ビットコインのブロックチェーンは常に前回のブロックを参照します。
ブロックチェーンがブロックチェーンと呼ばれる由縁はブロックチェーンが常に前回の取引などのまとまりを表したSHA256の計算結果を引っ張ってきているからです。
例えば1から100ブロックのビットコインの履歴があります。そのうち、50ブロック目だけ不正して変えようと思います。
ですがそのためには50ブロック目から100ブロック目までの全てのデータもハッキングしないといけません。
正確には51%アタックという手法で高速でブロック承認していかないといけません。ビットコインに置いて採算性はとても合いません。
SHA256の暗号化の連鎖によって常に一つ手前の取引が参照されるようになります。

この様がまるでブロック(取引履歴)のチェーン(暗号化の連鎖)のようになっていることからビットコインおよび仮想通貨の技術のことをブロックチェーンと呼ぶようになりました。
何回も出てきたSHA256ってなんなの。ザクとの関係はある?
友達が働いてる隠れ家barに初めて行って来た✨
まさかの上からシャー専用ザクが見下ろしてる素敵店(笑)
大好きなお酒も有ったし、
ポップコーンも美味しかったし、
周りのお店の方々も愉快だったし、
こりゃ、また行くな pic.twitter.com/HufDneb1W4
— 田中 秀哉 (@girigirishuya) 2016年11月15日
ザクとは何も関係ありません。
SHA256という謎めいた専門用語が何回かでてきましたがこれはハッシュアルゴリズムと呼ばれるものです。
SHA256以外にも仮想通貨毎に違かったりします。ビットコインで使われているSHA256が一番ベーシックなものです。
ハッシュアルゴリズムによってマイニングのしやすさが変わってきます。セキュリティももちろんです。
ハッシュアルゴリズムで大切な特性は、
①逆算できないようになっているところ。
②ほんの少しの文字違いで全く違う値になるところ。
この2つになります。特に②に関しては見た目がほとんどでも全く違う値が算出されます。これが逆算の難しさを高めています。

ビットコインの仕組みを簡単に図解説した まとめ

ビットコインの仕組みについて動画の一部を抜粋させていただきながら解説しました。
さらに興味を持った人はぜひ動画の方もみてみてください。
26分間と少し長いのと、英語なので字幕で日本語変換して見ても良いかもしれません。
ここまでの内容が理解できれば他の仮想通貨のことも理解しやすくなっていると思います。
イーサリアムとの違いやリップルとの違い、そうした他の仮想通貨との違いを知っていくと仮想通貨は楽しくなりますよ。
ブロックチェーンの仕組みについてもっと知りたいなと思った人は、また別の図解を交えながら解説したり、まとめ記事的にブロックチェーンに関する技術を紹介している記事があります。
ブロックチェーンとは ~やさしく仕組みを覚えて仮想通貨を楽しむ~を読むことでより幅広くブロックチェーンについて知れるのでオススメですよ。
仮想通貨を初めてみたいなと思ったらあなたに最適な取引所 仮想通貨の初心者におすすめの取引所で人に合わせて取引所を紹介しているのでぜひ読んでみてください。
良かったらシェアしてね♪ /