ブロックチェーン技術とビットコイン

ブロックチェーン技術の特徴

  1. データをハッシュ関数で変換するとハッシュ値が出ます。ハッシュ値は手持ちのパソコンでも簡単にできます。
  2. ハッシュ値はすべて長さが統一されます。元データがどんなに長い文章、データでもMD5法式(ハッシュ関数の方式の一つ)の場合、2進法で128ビットに統一(固定)されます。さらに16進法に変換して表現するので32桁(ビット)になります。16進法を使う理由はわかりやすいからです。0~9とアルファベット a~f を組み合わせ標示します。
  3. ハッシュ値は一方通行で、ハッシュ値から元のデータには変換できません。
  4. ハッシュ値は個々のデータ別に生成されます。同じデータなら必ず同じハッシュ値が出ます。もしデータの中身に変更が加わる(改ざんされる)と全く別のハッシュ値が生成されます。

  5. 例えば、元データをハッシュ化して、そのハッシュ値を添付して元データと一緒に送ると、受け手が再度データをハッシュ化すると、改ざんされていなければ、送られたハッシュ値と全く同じものが出るはずです。違うものが出れば添付されたデータは改ざんされたことになります。
  6. ハッシュ値はフェイク(改ざん)を見抜き、そのため、データの信ぴょう性を保証することができる便利なツールなのです。
  7. ハッシュ値の使い方には、パスワードの漏洩防止があります。パスワードは他人には見られては困ります。このため、お店側は、漏洩を防ぐためにパスワードをハッシュ化して、パスワードの代わりにハッシュ値を保管しておきます。お店のパソコンに侵入されて、ハッシュ値を盗まれてもハッシュ値から元のパスワードを類推することはできません。ユーザーがパスワードを打ち込んだ時、再度ハッシュ化して正しいパスワードなら同じハッシュ値が出ます。ユーザーが打ち込んだパスワードが正しいかどうかの判定がすぐできます。(ユーザー側がパスワードを盗まれた場合はどうしようもありませんが)
  8. あるOSをダウンロードするとします。作成元からそのOSのハッシュ値を得ておきます。OSを別途ダウンロードします。2GBぐらいあるので時間がかかりますが終わりました。この長いデータにハッシュ関数をかけます。32桁のハッシュ値が得られました。どんなに長いデータでも32桁になります。これが作成元の公開したハッシュ値と一致すれば改ざんがない正しいOSだとわかります。
  9. ハッシュ値の使い方は元データを暗号化することではありません。平文で送られたデータが改ざんされていないかどうかを確かめるためにハッシュ値を使います。(データの暗号化と復号の仕組みは後で説明します)
  10. 改ざんの最も悪質な手口は、ネットワークに中間侵入して、本文もハッシュ値も同時に盗み見出し、本文を改ざんしてそこから得るハッシュ値とともに送るやり方です。この場合受け手は改ざんされたことに気づきようがありません。
  11. これを防ぐため、共通鍵方式が編み出されました。これは、送り手と受け手が「共通鍵」を持ちます。この共通鍵を、例えば00としておきます。この共通鍵は他人にはわからないようにお互いに管理します。そして、送り手は本文の頭に00を付けたハッシュ値を得て、それを00が付いていない本文とともに送ります。受け手は本文に00をつけてハッシュ値を出します。送り手が送ってきたのとおなじハッシュ値なら改ざんされていない正しい本文ということになります。盗み取る人は本文とハッシュ値を得て、本文を改ざんして、ハッシュ値を作っても、頭についた共通鍵がわからないのでハッシュ値が正しく出ません。受け手が本文に00をつけてハッシュ値を出すと、改ざん者が付けた本文だけのハッシュ値と違うことに気づきます。改ざんがあったとわかります。
  12. しかし、共通鍵方式は受け手の数だけカギを作る必要があります。膨大な量の共通鍵が必要になります。管理ができません。このため、公開鍵方式が発案されました。
  13. 公開鍵方式というのは、公開する「公開鍵」pkと秘密にする「秘密鍵」sk の二つのカギを作ります。
  14. 「公開鍵」は暗号を作るだけのカギ、「秘密鍵」は復号するためのカギです。
  15. ここにA君が送り手、B君が受け手の2人がいるとします。全員は事前に鍵作成のアルゴリズムを実行しておく必要があります。
  16. 公開鍵方式には、G=鍵生成アルゴリズム、E=暗号化アルゴリズム、D=復号アルゴリズム、の3つのアルゴリズムが使われます。このGを使い事前に、pk、sk、を作成しておく必要があります。
  17. 鍵生成にはGにキュリティ・パラメータを入力します。さらに乱数も入力します。乱数は実行ごとに違う乱数を出しますのでユーザーごとにみんな違うカギが生成されます。
  18. 今回セキュリティ・パラメータとしてkを使います。
  19. G(Key Generation Algorithm)にセキュリティパラメータとして1^{k}を入力すると、「公開鍵」pk、「秘密鍵」sk、のペアを出力します。
  20. A君はpkaを「公開鍵」として公開します。
  21. B君も自分の「公開鍵」pkbと「秘密鍵」skb を取得しています。そして「公開鍵」pkbを公開します。
  22. A君は自分のデータmと受け手のB君の公開鍵pkbを、E(Encryption algorithm)に入力すると、mの暗号文Cが出力されます。これをB君に送ります。
  23. B君は、A君が送ってきた暗号文Cと自分の「秘密鍵」skbをD(decryption algorithm)に入力します。すると平文が出ます。
  24. まとめると、A君はB君の公開鍵pkbをつけて、暗号化した本文Cを暗号化アルゴリズムに通し、B君に送ります。B君は自分しか知らない「秘密鍵」skbと暗号文Cを復号アルゴリズムに入力して平文mを得ます。
  25. こうすると、共通鍵を人別に大量に作成し盗まれる恐れを感じながら送る手間がなくなります。送り手A君は、受け手B君の公開鍵を使って暗号文を作り、受け手B君は、自分しか知らない秘密の復号鍵で平文に解読する、というカギのやり取りがない簡単、かつ安全な送信手順が出来上がりました。要は、B君の公開鍵で作られた暗号文はB君の秘密鍵でしか解けないないのです。この二つはペアでしか機能しません。そして、3つのパラメーターが重要な役割をします。
  26. この公開鍵方式は、pkとskのペアで成り立ちますが、考え方はRAS暗号方式の応用です。大きな素数の素因数分解は十分に困難、という現象を利用しています。大きな数の a(素数)x s(素数)=p(素数)のpを素因数分解するのは s が不明の時は多大な時間がかかり実際には困難です。この現象を利用して、公開鍵pを作り、復号にはsとaが必要な仕組みになっています。sがわかれば簡単ですが、sは秘密鍵ですからわかりません。よってaもわかりません。
  27. こうして作成されたトランザクションはいったん作成されると後から改ざん、または修正するのは不可能です。
  28. さらに、デジタル署名が併用されることがあります。
  29. まず、A君は送りたいデータmをハッシュ化して(これをデジタル署名といいます)、さらに、データmとともに、公開鍵鍵方式のB君の公開鍵で暗号化します。これをB君に送ります。B君は公開鍵方式で自分の側にある秘密鍵で復号するとデータmのハッシュ値(デジタル署名)とデータmの平文がでます。
  30. デジタル署名と送られたデータが正しいかどうかを見るためにつぎの処理があります。
  31. デジタル署名方式には3つのアルゴリズムがあります。G=鍵生成アルゴリズム、S=署名生成アルゴリズム、V=署名検証アルゴリズム、です。
  32. 今回は送り手A君が鍵ペアを作る側に回ります。(前出の公開鍵方式では受け手側が鍵ペアを作った)最初に、署名者A君はG=鍵生成アルゴリズムで公開鍵pk(復号鍵)と秘密鍵sk(暗号化鍵)を作ります。
  33. そして、本文のデジタルデータmをハッシュ化したデジタル署名を秘密鍵skと共にS=署名生成アルゴリズムに入力して暗号化してδを作ります。
  34. B君はそのδを受け取るとA君の公開鍵pkとδをV=署名検証アルゴリズムに入力して復号します。
  35. こうしてB君が得たのは、元データmがハッシュ化されたハッシュ値です。
  36. 別に受け取って公開鍵方式で復号した元データのハッシュ値と比較して同じなら、送られてきたデータmは正しいデータということになります。
  37. ここで、注意点は公開鍵方式もデジタル署名方式もRAS暗号で、素因数分解の原理を使っていることです。このため、実際は公開鍵でも秘密鍵でも、暗号化も復号化もできるということです。大事なのは解読する人しか半譜を持っていないということです。
  38. 公開鍵方式では暗号化するのにA君がB君の公開した公開鍵を使い、復号するのは受け手のB君が保管している秘密鍵を使いました。二つのカギの作成は受け手のB君でした。
  39. 一方で、デジタル署名方式では暗号化するのにA君が持つ秘密鍵を使いA君が作成し、復号にはA君が公開した公開鍵を使いB君が行います。二つのカギの作成者は送り手のA君です。
  40. この二つは、真反対ですが素因数分解を応用した半譜と思えば、実際は公開鍵、秘密鍵のどちらを使っても機能としては暗号化も、復号化もできます。使い方として決まりを設けているだけです。
  41. こうして、データ量を128ビット、表示を32桁のハッシュ値に統一して、正しさを検証できるハッシュ値と、決済金額などの額(平文で短い数字が多い:例えば10など)のトランザクションをブロックにして、P2Pネットワークに参加している誰でもが見れるようにしたのがブロックチェーン技術です。(暗号化したデータはRAS暗号方式ですから、鍵だけがブロックチェーンのトランザクションで送られますが、本文は別に送られます。ハッシュ化すると解読できなくなるからです)
  42. 最初のトランザクションから現在最新のブロックまでが一系統で延々と一連のつながりになっています。この個々のトランザクションをブロックといいます。すべて修正できないので、信頼性があり、また、管理者がいないので管理者による不正ができないシステム技術として評価されています。
  43. このブロックチェーン技術を採用して決済システムを作ったのがビットコインのシステムです。

ビットコインとの関係

  1. ビットコインはブロックチェーンをうまく使った例です。
  2. ビットコインのブロックチェーンはそのP2Pネットワークに参加した全世界のコンピュータがノードになります。
  3. それぞれが最初のブロック(2009年1月)から現在までの累々と続くブロックの連鎖をすべて保持しています。
  4. 2018年9月1日で539,496番のブロックがあり、個々のブロックが約2,000個のトランザクションを内蔵しているので、約10億個強のトランザクションという膨大な数のデータがそれぞれのノードに保存されています。
  5. ブロックチェーンは壮大なデータベースを形成しているのです。
  6. 壮大なデータを1台のノードに格納し処理できるのでしょうか?
  7. できます。(ただし、高性能な専用機ノードが必要です)ハッシュ値が1トランザクション128ビットに統一されています。2018年の段階で、ビットコインのブロックチェーンの全データ量は約10億トランザクションの128倍ですから、128GB程度です。十分に各ノードに収容できるデータ量です。(パソコンでは厳しいかもしれませんが)
  8. ただ、垂れ流しのデータですからそのうち莫大なハッシュ値がネット上に溢れるという心配をもたれるのではないでしょうか。この点、希薄化を防ぐために、BTCの発行量は2100万BTCしか発行できないように設計されています。2015年の時点ですでに半分の量が発行されています。このため、最終データ量も2018年の倍以上にはなりません。十分に高性能の専用機で構成したノード1台に収容できます。
  9. ビットコインのシステムは手数料の安い決済システムです。そして決済処理が新しいビットコインを発行するトリガーになります。決済が完了するごとに新ビットコインが発行されます。(2018年現在12.5BTC
  10. ビットコインのシステムでは、参加するノードのA君がB君に例えば、0.1BTCを送金する、という決済トランザクションをP2Pネットワークに出すことから始まります。
  11. これを見たO君、P君、Q君が送金処理に参加します。
  12. A君が出した依頼をO君がビットコインのブロックチェーン台帳の尻に貼り付けます。この時、前回の尻にあるハッシュ値が記載されていますが、このハッシュ値に変化する難易度に応じて頭に00などのハッシュ値が付けられます。
  13. これをナンス(使い捨ての計算値)と呼びます。
  14. 先頭についているハッシュ値00を吐き出すデータを求めて数限りない勝手な組み合わせのデータをノードに打ち込みます。この気が遠くなるような社会的に無意味な膨大な電力を使う作業が10分間に延々と繰り返されます。
  15. この作業をマイニングといいます。
  16. そして00のハッシュ値を得たナンスを出した者が勝者になります。今回はP君が勝者になりました。
  17. このナンスを吐き出すための計算は高性能コンピュータにさせます。
  18. そして、このナンス値が正しいかどうかはナンスに参加したノードの計算回数の51%が正しいとしたときにナンス正しいとされます。するとP君はブロックチェーン台帳の尻にA君からB君への0.1BTCの送金処理と自分の口座に12.5BTCと手数料0001BTCを得たことを書き込み、新しい次に使うハッシュ値を貼り付けます。(次のナンスになる)
  19. こうして、一番早く処理を完成させたものにだけ、12.5BTC(2019年9月20日現在約1375万円)の新規のビットコインが発行されます。さらに、それぞれのトランザクションで設定された任意の手数料が支払われます。今回はA君が手数料0.0001BTCを払うと設定したと仮定します。今回はP君が最初に処理を完成させました。P君は12.5BTC+0.0001BTCを得ました。このようにして送金処理を完成させるごとに、12.5BTCはネットワーク(P2P)上に増加してゆきます。
  20. このように処理されたブロックは10分に一個ずつ増加していくように設計されています。
  21. ビットコインの詳しい説明
  22. マイニングはこの恐ろしいほどの額のインセンティブがあって初めて機能しています。
  23. 興味深いのは、1BTCと実際の通貨との交換価値がGDPのような裏付けがあって決まっているわけではないことです。ボラティリティが非常に高く変動幅が大きく、実際に決済システムとして機能しているとは思えず、投機の対象としてしか見れないビットコインにもかかわらず、決済トランザクションが発生していることです。
  24. これは、インセンティブだけが目的だからです。インセンティブが先で価値は後のような状態です。価値には実物の裏付けは何もありません、ただ、多くの人が投機対象としてBTCを購入する現金の総量によって裏付けされているだけです。金のようなものだと思えばいいのでしょうが、鉱物はつぶしがききますが、単なるデータの塊なので実社会では役には立ちません。人間の欲がなせる価値でしかありません。
  25. 問題はナンス値を検証するマイニングに膨大な電力を消費することです。2018年の電力消費量は、アイスランドの一般家庭消費量以上です。電力消費量が上がるということはコストが上がるということです。
  26. さらに問題があります。ビットコインは価値の希薄化を防ぐため、4年一度発行量が半減するように設計されています。マイニングの難易度は上がります。より高度な計算能力のシステムが必要になります。コストが上がるのです。一方で、賞金になるBTC数は半分になります。このため、もし、BTCの市場価格が低くなるとマイニングのインセンティブが効かなくなります。
  27. 1BTCの価格を1BTCをマイニングするのに必要な経費で割った数値が損益分岐点です。これが1を割り込むとマイニングする人がいなくなります。2018年にこの現象が起こりました。

  28. 多くの評論家が実社会のいろいろな係数の変化とビットコインの価格変化を関連付けようとしますが根拠が実証されていません。むしろ評論家の意見とは逆か、無関係に価格形成しているようです。唯一関連性があるのは、ハッシュレートの増減と、ビットコインの検索数の増減で、これでビットコインの価格の増減傾向が分かります。
  29. ハッシュレートとは1秒間にマイニングするシステムの能力のことです。ビットコインの価格が下がるとどういうわけかハッシュレートも下がります。マイニング数が減るからです。また、ハッシュレートはビットコインの検索数と関連を持っていますから、ビットコインの検索数が減ると、ハッシュレートが下がり気味であり、ハッシュレートが下がり気味だとBTCの価格も下がり気味だ、という相関があります。(この見解は保証するものではありません。また、このサイトは投資を促すものでもありません。もし、この見解によって投資されて損害が発生しても、Watson Courtier ならびにCourtier Co., Ltd.は一切の責任を負いません)
  30. 参考:ハッシュレートの暴落:2019年9月24日午前3時から1時間で暴落し、ビットコインが1時間で1300ドル暴落しました。ハッシュレートの推移は末尾に添付したURLでご覧ください。
  31. ナンスによる検証作業がなければビットコインのブロックチェーンは不正を見分けられません。しかし、インセンティブがなければシステムリソースと電力が莫大にかかるナンス検証をする人はいません。したがって、ブロックチェーン技術はインセンティブがない処理には役に立たない技術といえます
  32. ただ、プライベートブロックチェーンでインセンティブなし(ナンスなし)で成立するかもしれませんが、その場合ブロックチェーン技術よりも既存のデータベース技術のほうがはるかに便利です。なぜなら、管理ができて過去の修正ができるのでシステムリソースは小さくて済み、電力消費量も少なく、不特定多数ではない相手を対象にわざわざ面倒なブロックチェーン技術を使う必要がないからです。
  33. ブロックチェーン技術の将来性はインセンティブのあるなしで決まります。処理をすればボラティリティの高い商品が生み出されない限り適用は考えられません。さらに、ナンス値をマイニングするトリガー(名目)が必要です。
  34. ビットコインでは安い手数料の決済処理というもっともらしいトリガーと、マイニングというインセンティブの塊、が結びついて成り立っています。
  35. ここまでの考察で、ブロックチェーンの新市場は、トリガーインセンティブの2つの要素から成り立つことがわかります。そこで、インセンティブはそのままビットコインのマイニングを使い、トリガーだけ変えるとどうでしょうか。
  36. 例えば、人のゲノム解析や、作物のゲノム解析を医療に応用する場合、莫大な費用がかかります。この費用を決済するのにビットコインで少額決済するトランザクションをP2Pに出します。しかし、実際はマイニングの賞金でまかなうモデルを作ります。マイニングをする参加者の巨大なプールを作りその中でマイニングを行えばナンスがプールの中でヒットする確率は上がります。トリガーを出した人の匿名性は維持されますのでブロックチェーンの特性を発揮できます。しかし、これは暗黒世界を招く恐れがあります。ブロックチェーン技術は必ずしも正しい方向に向かうという保証はありません。目的が法の目をかすめる可能性があります。インセンティブがすべての原因になります。このようなモデルは欧米ですでに出始めています。注意する必要があります。
  37. また、ドイツの証券取引所BSDEXがユーローとビットコインのペア取引をすることを発表しています。現物の通貨と仮想通貨ビットコインを取引するのは日本でも取引所、交販売所がありますから珍しくもありませんが、インセンティブのつくマイニングが可能な仮想通貨を現物通貨との交換はアイディアを凝らすと現物通貨そのものの保有量をボラティリティ高く上げることが可能になります。取引所が大型のノードを持つマイニングプールになればマイニング・インセンティブそのものが交換トランザクションが起こるたびに発生し、大きなマイニングプールを持つ取引所自体に入る可能性が高くなります。これは、取引所が金鉱を持つのと同じことを意味します。これを有意義に自治体や国家が運営して投資や債務の返済に充てるモデルを作れば社会的に有意義ですが、プライベートな取引所が設けるだけに終わると仮想通貨は単なる登記の洲段になってしまします。

記述:Watson Courtier

著作権:Watson CourtierならびにCourtier Co., Ltd.(横浜)2019年9月23日