見出し画像

ビットコインをつくる技術のお話~ビットコイン物語

おはようございます。🐤

長い長い冬の時代、みなさんいかがお過ごしでしょうか。ビットコイン物語楽しんでいただいていますでしょうか。

第一部の登場人物は例外なくコンピュータ技術者でした。プログラミングだったり暗号技術にとても詳しい人たちのお話だったのです。でも、技術のお話はずっと避けてきました。

しかし、好きな人はすごく好きな分野のお話だと思うので、今回は技術のお話満載でいきたいと思います。ビットコインを作っている暗号技術のうち、秘密鍵と公開鍵、それとハッシュについてお話していきます。

このお話、難しいので避けていた方も多いと思いますが、すごくすっごくわかりやすく説明ができたと思うので、ちょっと騙されたと思ってこの先を見てみませんか?

そして、この機会にビットコインをつくる技術についてわかった気になって、人に説明してドヤってみませんか? きっと楽しいですよ!

ビットコイン=公開された台帳

まずそもそもビットコインのとても偉大な発明は、お金のやりとりのデータをすべて公開するという発想です。

僕たちが使っている銀行やクレジットカードでは、ある企業に個人情報やID、パスワードを登録しています。だから自分が何にお金を使ったのかは、自分とその企業しか知り得ない二人だけの秘密の情報になります。

ここに必要なのは「信頼」です。

銀行にお金を預けたり送金したりするとき、僕たちは「銀行は僕のお金をもって逃げない」とか「銀行が振込相手や金額を間違えることはない」と銀行を信頼しています。

「信頼」が必要のないやり方

ビットコインはこの「銀行への信頼」をなくせないか、「信頼」なしで安心してお金をやり取りできるしくみは作れないかと考えました。

で、考えたのが「台帳を公開する」ということです。要するにみんなの目に晒すことで、ズルしたらバレるよねということです。「みんなの目」を信頼すると言ってもいいかもしれません。

ビットコイン、といってもコインのようなものがネットワークでやり取りされているわけではなく、ネットワーク上にある「台帳」上の数字なのでした。

公開された台帳で不正を防ぐやり方とは?

公開された台帳だけでいいなら、Googleスプレッドシートでも良さそうです。しかし当たり前ですが、自分の資金を他人に操作されないように、不正が起きないようにする工夫が必要です。

ここでようやく1つ目のだいじな技術がでてきます。「公開鍵暗号方式」というのがビットコインをつくる主要な技術のひとつです。

この「公開鍵暗号方式」を使うと、「自分であること」の証明が簡単にできるようになります。

しくみを詳しくいきます、まず自分だけがもつ「秘密鍵」と、それに対応した「公開鍵」のペアを作ります。ペアというのがポイントです。

  • アリスは取引を作成します。

  • その取引データに「秘密鍵」で署名します。(「署名」とは鍵を使って暗号化するような作業と考えてください)

  • 署名した取引データと「公開鍵」を合わせて、ネットワークに送信します。

  • 送信されたデータの「署名」と「公開鍵」が一致すれば(署名データを公開鍵で開けて取引データと一致すれば)、この取引データは間違いなくアリスが作ったものと認められ、有効な取引データとして処理が進みます。

  • 悪いことを考える「ダレス」さんという人がアリスの資金を操作しようとするとどうなるか? アリスの秘密鍵をもっていないから、アリスの署名ができません。強引に「ダレス」の署名をして送っても、アリスの公開鍵でこの署名を解読するので、取引データと一致しません。

  • ちなみにアリスのウォレットアドレスは公開鍵を変形して作られるものなので、公開鍵をごまかすわけにもいきません。

🐤 逆にいうと、アリスの秘密鍵をもっていたら、それはブロックチェーンの世界ではアリス本人であることと全く同じです。秘密鍵を持っている人がその資金を操作できる人なのです。

ということで、ここまでが「ブロックチェーン上の資産は、自分しか操作できない」という説明でした。なんとなくでも伝わったでしょうか。

ウォレットとは

さてここで改めて整理します。

  • ビットコインとは、ネットワーク上にある「公開された台帳」に書かれた数字

  • 台帳上の自分の資産は、自分にしか操作できない

  • 自分の資産を操作するときは、秘密鍵と公開鍵を使う

  • 秘密鍵と公開鍵とウォレットアドレスは1セット

で、「ウォレット」ってなんでしたっけ? 急にでてきましたけど、ウォレットというのは日本語に訳したら「財布」となるのですが、ここにビットコインが入っているわけじゃないのがまた勘違いしやすいところです。

ウォレットアプリは、秘密鍵と公開鍵(とウォレットアドレス)を人間が操作しやすくするためのツールです。

ハッシュとは

ハッシュって、突然でてきましたね。でもこれはさきほどの公開鍵方式の本人確認方法でもひっそりと使われているすごく便利なツールなんです。そのせいか、ビットコインの世界にいると「ハッシュ」というのはよく聞く単語です。

  • ハッシュレート(計算力の単位)

  • HushHub(日本のブロックチェーン企業)

  • ハッシュポート(CNPTを作っている会社の親会社)

で、ハッシュとはなにかというと、あるデータを一定の決まりに従って違うデータに変換することです。

たとえば、「あいうえお」というデータをハッシュ関数に通します。ハッシュ関数というのは自動変換機のようなものと考えてください。すると、「fdb481a..(中略)..888ed9a」というデータに変わります。

特徴は、入力データから出力データは簡単に一瞬で作れるのですが、逆はどんなに計算しても辿れないということです。

「入力値⇒出力値」を計算するのは簡単だけど、「出力値⇒入力値」を計算するのはめちゃくちゃたいへん。この性質を利用して、ビットコインはマイニングをしています。

マイニングとは具体的にどういう作業かちょっとだけ説明します。さきほどのツールを使って「あいうえお」の後に何かデータをつけ足して、この出力値の頭を0にするという文字探しゲームです。

「あいうえお0」⇒「9e4d810364aa1630….」
「あいうえお1」⇒「1b057a6bd074813c….」
「あいうえお2」⇒「79f711c6f4258598….」
「あいうえお3」⇒「7f0b761bc7ca87f2….」
「あいうえお4」⇒「ef4f77b27b54b978….」
……
「あいうえおz」⇒「03965cf19ca74c13….」

や、やっと出ました。こんなふうに何かデータをつけ足すと出力値の頭何桁かが「偶然」0になることはあるのですが、そんなデータを探すゲームです。100m競争と同じで、速さを競う以外の意味はありません。

強いていえば、「一定時間を稼ぐこと」と「計算力(電力料金)を負担する」ことで、悪いことを防ぐ役割をしています。だって、何か悪いことをしようと思ったら、まずこの計算力に勝たないとブロックチェーンを操作する権利が得られないので。

ハッシュ値は他にも、さきほどの「公開鍵暗号」にも使われています。「署名」と一言でいっていましたが、やってることはというと、取引データをハッシュ化して、そのハッシュを「秘密鍵」で暗号化するんですね。これが「署名」です。

暗号化されたデータは「公開鍵」でもとのハッシュに戻るんですが、それと、取引データをハッシュ化したものが一致すればOKということなのです。

というわけで今日はビットコインをつくっている暗号技術のお話でした。

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