P24

 ハッシュとは、「もとのデータから特定のサイズの別のデータを、計算によって作ること」である。計算に使う関数をハッシュ関数、計算によって求められた別のデータをハッシュ値という。

 P28

 そう、先にも述べたように、ハッシュ関数で計算した結果として得られるハッシュ値は、一定の長さ(特定のサイズ)の値になるのである。MD5では、得られる結果は128ビットと決まっている。

 P40

 もとのデータをたった1文字、「興」から「目」に変えただけである。他の条件は何一ついじっていない。もとデータがほぼ同じなのであるから、そこから作られるハッシュ値も、違うなりに似ていてもよさそうなものである。
 にもかかわらず、生成されたハッシュ値はまったく違う値になる。こういう特性を持っているハッシュ関数は、ハッシュ関数のなかでも特別なものとして暗号学的ハッシュ関数と呼んで区別する。MD5やSHA1は暗号学的ハッシュ関数である。

 P45

と一方向だ。もとデータからハッシュ値を作ることができるだけで、ハッシュ値からもとデータを復元することは不可能なのである。

 P86

 そこで出てきたのが、公開鍵暗号方式である。ポイントは、暗号のキモである鍵を、「暗号を作るだけの鍵」と「解読するだけの鍵」に分けたことだ。できあがったものを説明されれば、なーんだという話ではあるが、暗号業界にとってはコペルニクス的転回だった。
 公開鍵暗号では、鍵はペアになっている。暗号を作るだけの暗号化鍵(公開鍵)と、復号をするだけの復号鍵(秘密鍵)である。

 P92

 このもとデータをハッシュ関数にかけて、ハッシュ値を得る。このハッシュ値を公開鍵暗号の暗号化鍵で暗号化するのだ。こうして作られた暗号文を、デジタル署名と呼んでいるのである(図3118)。
 デジタル署名の非常によくできているポイントは、公開鍵暗号方式のしくみが、そのまま使えることである。
 具体的に言うと、送信者が鍵ペアを作る側になる。手元に秘密鍵を残し、公開鍵は公開してしまう。そして、秘密鍵で暗号化を行う。これが署名になるのだ。署名した文書をメールなどで送ると、受け取った受信者は公開鍵でそれを復号する。
 先にも触れたように、秘密鍵で暗号を作ることも、公開鍵で復号することも本当はできるのだ。しかし、ふつうは絶対にやらない。だって、公開鍵はばらまくものなのだ。ばらまいた鍵で復号ができたら、暗号にならない。
 だから、デジタル署名というのは、暗号のしくみを応用してはいるけれど、暗号とは似て非なるものである。この点は理解しておくべきである。
 ではそんなことをして、どうして大丈夫で何が嬉しいのか。説明を続けていこう。

 P98

 考え方としては印鑑登録と同じだ。自分のデジタル署名がちゃんとしたものだと証明したい利用者は、認証局に対して公的な企業情報や有価証券報告書、会社定款などを、鍵ペアと一緒に提出する(鍵ペアは認証局に作成してもらうこともできる)。認証局はこれらの情報をもとに会社の実在性などをチェックして、申請者(申請社)本人に間違いないと確認すれば、デジタル証明書を発行することになる(図3−22)。

 P121

 実は、ここにブロックチェーンの第二の特徴である、非中央集権型である点がかかわってくる。非中央集権型、すなわち誰も偉い人がいないシステムを実現するために、長い長いブロックの連鎖が必要なのだ。
 一つ確実に言えるのは、「単純に処理効率を考えれば、中央集権型のシステムのほうが優れている」ということだ。独裁者の治める国が、次々と果断な政策を断行していけるのに対して、民主主義を標榜する国が、なかなか物事を決められないのに似ている。

 P122

 したがって、既存の銀行が十分に信頼できると考えるならば、銀行機能をブロックチェーン技術で置き換えるのはあまりいいアイデアではないかもしれないし、財務省の決裁文書生成過程や保管体制を信用できないと考えるならば、これらの文書を作って保管しておくしくみとしてブロックチェーン技術を使うのは、よいアイデアかもしれない。

 P132

 入力および出力のカウンタは、いくつの入力もしくは出力があったかを示す。たとえば、銀行の口座振込のようにAさんがBさんへ送金する場合は、入力も1、出力も1となる。ビットコインのしくみでは、1つのおさいふからお金を出して、それを分割して2つのおさいふへ送金することなどができるので、こうやって入力数と出力数を書いておくのである。
 入力と出力には、ビットコインアドレスと呼ばれる、ビットコインにおけるおさいふの番号が使われる。銀行であれば口座番号に相当するだろう。
 ビットコインの入力、出力記録はとても単純で、基本的にはどのおさいふからいくら取り出し、どのおさいふへいくら入れる、としか書いていない。

 P135

 送金する場合、こうしてできあがった送金データからハッシュ値を計算し、送金者が自分の秘密鍵でデジタル署名をし、公開鍵も含めてトランザクションを作る。
 そして、このトランザクションをP2Pネットワークに対して送信する(図4−12)。
 デジタル署名を付与するのは、もちろん改ざん対策である。受け取った側は、このトランザクションが正しいものか改ざんされたものか、それだけでは判断することができない。
 しかし、トランザクションからハッシュ値を得て、また、デジタル署名を送信者の公開鍵で復号して得たハッシュ値を比較することで、このトランザクションが本物であることが証明できる(図4−13)。
 トランザクションデータとデジタル署名を辻褄があうように作ることができるのは、秘密鍵を持っている本人だけだからである。もちろん、本人だけが秘密に管理しているはずの秘密鍵が漏洩していた場合には、すべての前提が崩れてしまう。これは公開鍵暗号全般に言えることだ。

 P139

 ただし、送信元のアドレスから出て行った額は0.01927725BTC(BTCはビットコインの単位)なのに対して、受信先のアドレスへ入金された額は0.01911905BTCで、一致していない。これは何故かといえば、この差額分がマイナー(ブロックチェーンのシステムを実質的に運用している貢献者。後の章で詳述する)に報酬として支払われているのである。いわば送金手数料である。

 P156

 しかし、左のブロックだけを改ざんしても、システムも利用者も騙せない。改ざん前のデータから得られたハッシュ値が、次のブロックの一部として組み込まれているので、改ざんを行うと、改ざん後のブロックのハッシュ値と、次のブロックに組み込まれたハッシュ値が合致しなくなる。何か異常が起きたことが白日の下に晒されるのである。そう、マイニングに参加しない(ブロックの追加に関与しない)利用者も、ブロックの中身を見て、検証することはできるのだ。もし怪しいと思えば、自分のところに新規ブロックが送られてきたとき、手持ちのブロックチェーンには追加せず無視すればいい。
 こうして、いくら不正ブロックをP2Pネットワークに放流しても、それは他のノードが持つブロックチェーンには追加してもらえず、価値を認めてもらえない。不正に作ったビットコインや不正に得るつもりだったブロックの追加に対する成功報酬も、得られないことになる。

 P159

 ちなみにその報酬額はいくらぐらいなのか。BTCと円のレート変動、トランザクションごとの送金手数料の違いがあるので、常に変動し続けているが、あくまで2018年8月末時点での参考値を述べると、1回ブロックの追加に成功すると1000万円ほどの成功報酬が得られる。
 ビットコインは、このインセンティブの持たせ方が絶妙なのである。ブロック新規追加の報酬が低すぎると誰もブロックを追加しようとせずに、ブロックチェーン自体が機能しなくなるし、高すぎるとその報酬を誰が用意するのかという話になる。

 P194

 また、2018年にはアイスランドにおいて、「ビットコインのマイニングに使われる電力量が、一般家庭全体で消費される電力量を上回った」と報道された。2018年5月には、「マイニングによる電力消費が、2018年末には世界の電力消費のO.5%に達する」との予測がJouleに掲載された。

 P195

 そして、マイニングのために繰り返される計算は、今のところ何の役にも立っていない。チェーンにブロックを追加する権利と、そこで得られる報酬のために、他の何にも活用しようのない無意昧な計算が消費されている。

 P197

 ブロックチェーンも、信じられないほどの電力を投入して膨大な作業を行っているのであるから、それを(社会的には)意味のないナンス取得のための計算競争でなく、何か社会の役に立つ計算で競争できれば、将来的にはマイニングに投入されるリソースの有効活用ができるかもしれない。しかし、いまのところよいアイデアは実装されていない。ブロックチェーンに投下されるGPUや電力は、マイナーには(たまに)報酬をもたらしているし、GPUメーカーや電力会社を儲けさせてもいるが、社会的には無駄な作業に使われていると言える。

 P211

 高額な買い物をするとき、クレジットカ−ドのオーソリセンターに確認を取られる手間だっていらいらすることがあるのに、少額決済もできることが売りのビットコインで、店頭購入に10分も待たされたら客は怒り出すし、店舗のオペレーションも破綻する。だから、この種のシステムを導入している店舗は、トランザクションが承認されていないことを承知で客にモノを売ってしまう。それで、後から「あのトランザクションは不正だった」というとがわかり、代金を取りっぱぐれることがあるのである。

 P243

 ブロックチェーンは、「特定の管理者がいない状況、もっと言えば参加者がすべて敵同士であるような油断のならない状況で、事前の取り決めに抵触するようなデータ処理を認めず、処理の透明性を確保し、かつデータの変更や改ざんが不可能であるようなデータ蓄積システム」だ。
 変わったシステムである。それは地層のようなもので、上っ面の部分を自分の都合のいいように変更すれば、不整合が嫌でも目立ってしまう。かといって、堆積した地層の下から順を追って辻褄があうように変更しようとすれば、信じられないほどの労力が必要になる。本来はそれだけのしくみなのだ。