仮想通貨投資を検討するにあたり、仮想通貨とはなんぞや、という部分を調べております。
仮想通貨はブロックチェーンという仕組みを用いて動いているとのことなので、まずはブロックチェーンとは何なのかを調べてわかった部分を自分なりにまとめていきたいと思います。
あくまで素人の勉強のアウトプットなので、間違っていたらゴメンなさい。
ブロックチェーンとは
ブロックチェーンとは、中央集権的でない分散型のデータ管理システムのこと。
取引データを適切に記録するための形式やルール。また、保存されたデータの集積(データベース)。
データベースの一種。分散型台帳。
ブロックチェーン技術を使っているサービスの事例としては仮想通貨がある。
ここではブロックチェーンのことをデータベースと定義しましたが、僕はシステム周りやプログラムに明るくないのではっきりデータベースと定義していいのか自信がありません。
ブロックチェーン技術の仕組み
ネットワーク内で発生した取引の記録+一つ前のブロックの内容を示すハッシュ値を一塊の「ブロック」として記録し
時系列に沿ってつながっていく構造になっている。
ブロックには下記の情報が含まれている。
- 取引内容
- 前ブロックのハッシュ(ハッシュ値)
- 現在のブロックのナンス
最初のブロックでは「取引内容」「ナンス値」の2つが格納され、それ以降のブロックでは「取引内容」「ナンス値」「前ブロックのハッシュ値」この三つが格納される。次のブロックに格納される「前ブロックのハッシュ値」は、前ブロックの「取引内容」「ナンス値」「前ブロック全体のハッシュ値」の3つすべてをハッシュ関数に入力することで出力される(要するに、ブロックを構成する一部の値ではなく、すべての値を入力することで出力される)
ナンスとはnonce(Number used once)の略。ブロックを生成するには現在のブロックのハッシュ値が必要になる。ハッシュ値の算出には上述の通り「取引内容」「ナンス値」「前ブロックのハッシュ値」の3つが必要であり、しかもそのハッシュ値には制限がかけられている(例えば、000から始まるなど)ため、ハッシュ値を求めるには左記条件を満たすようなナンスを見つける必要がある。このナンス値を見つけるためにハッシュ関数に「取引内容」「ナンス値」「前ブロックのハッシュ値」を入力し続ける作業がマイニングであり、一番速くこれを見つけたマイナーがビットコインを獲得する。
ブロックチェーンと従来型のデータベースの違い
従来のデータベース
- 各主体がバラバラな構造のDBを持つ
- それぞれのDBは独立して存在する
- 相互のデータを参照するには新規開発が必要
ブロックチェーン
- 各主体が共通の構造のデータを参照する
- それぞれのストレージは物理的に独立だが、P2Pネットワークを介して同期されている
- 相互のデータを参照するのに新規開発は不要
ブロックチェーンの分類
管理者が不在→パブリック型(unpermissioned型)
不特定のノードが参加する→信頼性の高いネットワークを形成する必要がある→意思決定やセキュリティ要件が高い
管理者がいる→クローズド型(コンソーシアム型、プライベート型)(permissioned型)
→管理者がコントロールすることでセキュリティや意思決定の問題を避けられるがブロックチェーンである必要がないのではという指摘もある。
上記についてはそもそも管理者不在=ブロックチェーンだと理解した手前なぜこんな分類があるのか謎です。
プライベート型もコンソーシアム型もブロックチェーンの定義に合致していないのでは?と思いました。
ブロックチェーン技術の生い立ち
元々は2008年にサトシ・ナカモトと呼ばれる人物によって提唱されたビットコインネットワークの副産物でしかなかった。
その後金融、物流、不動産、医療等で応用が進められるようになり、活用領域が拡大し続けている。
ブロックチェーン技術のリスク
- 実装過程でのヒューマンエラー
- 組織的な恣意性(51%リスク)
→コンセンサスアルゴリズムに則り、システム全体のコンセンサスを掌握できるようになることでシステム全体をハックできるようになる。
例えばビットコインはコンセンサスアルゴリズムとしてPoWとナカモト・コンセンサスを採用している。
ナカモト・コンセンサス→チェーンの長い方が正しいと見做す
PoW→証拠としてのパワー→パワーが大きい方が多くブロックを作れる
ブロックチェーン技術のメリット
・改ざんが難しい
・システムダウンの可能性が限りなく低い
・管理コストが低い
・フラットな関係なので競合他社動詞でもデータを融通可能
改竄が難しい
過去に生成したブロック内の情報を改ざんしようとすると、そのブロックのハッシュ値が変更されるが、ハッシュ値には一定の制限があるため後続するすべてのブロックにおいて不整合が発生する。
1つの取引記録Aを改ざんしようとすると、それに伴いAのハッシュ値が変更される。
Aのハッシュ値が変更されると、Aの後に生じた取引記録Bのハッシュ値が変更されるが制限に合わないハッシュ値となるとほかの取引記録と不整合があることがすぐにわかるため是正される。
システムダウンの可能性が限りなく低い
データをネットワーク内の個々のユーザーが管理しているため、一部のサーバーがダウンしたとしてもシステム全体が止まることがない。
中央のサーバーで一括管理していないため、例えば銀行のシステムのようにサーバーダウンによりシステム全体がダウンすることがない。
管理コストが低い
改竄ができないので改竄を防ぐためのリソースが不要
中間手数料がないor安い
ブロックチェーン技術のデメリット
一度ブロックチェーンネットワーク上に配置したプログラムは変更ができない
データ処理量が多く現在の技術でさばききれない
ブロックチェーン技術の応用可能性
現時点では仮想通貨技術くらいしかない(?)がいろいろ応用可能性がある。
・地域通貨のブロックチェーン管理
・権利証明関係(登記、カルテ、戸籍情報など)の非中央集権化
・遊休資産ゼロのシェアリングサービスの実現
・サプライチェーンの管理をブロックチェーン技術で実現
・取引の自動化(契約条件、履行内容、入金履歴などの自動管理)
専門用語
ノード
ブロックチェーンネットワークへの参加主体のこと。
コンセンサスアルゴリズム
ブロックチェーン内での意思決定に使われるルール、仕組み。そのネットワーク内での意思決定、例えばある取引について複数の異なる情報が提出された時(AさんはBさんに10BTC渡したが、Bさんは5BTCしか受け取っていないと主張する、といったイメージ)にどの取引記録が正しいかを決めるためには、「全てのノードが合意する、あらかじめ決められた、何かしらのルール」に基づいて判断を下さなければならない。その時のルールがコンセンサスアルゴリズムと呼ばれる。イーサリアムのPoS(Proof of Stake、プルーフオブステーク)、ネムの PoI(Proof of Importance、プルーフオブインポータンス)、リップルのPoC(Proof of Consensus、プルーフオブコンセンサス)といったあたりが有名。ビットコインではマイニングを行わせることで合意形成を行うPoW(プルーフオブワーク)およびナカモト・コンセンサスというコンセンサスアルゴリズムを採用している。マイナーと呼ばれるノードたちがマイニングを行った結果ブロックが生成されていくが、その積み重ねとして最もブロックの数が多くなったチェーンが正しい取引記録であると見做す仕組み(ナカモト・コンセンサス)という合意形成のルールが敷かれている。
PoW(プルーフオブワーク)
コンピュータの稼働量を証明することで信頼性を担保する考え方。ビットコインのコンセンサスアルゴリズムでも使用されている、技術的要素の一つ。
PoWとは「ある水準のワークをある特定の時間をかけて行ったことを明らかにするプロトコル」(This is a protocol in which a prover demonstrates to a verifier that she has expended a certain level of computational effort in a specified interval of time.)つまり、コンピュータがそれなりの時間きちんと働いたことを証明する仕組み。
プルーフオブワークにもいろいろなものがあるが、ビットコインで使用されているPoWの仕組みはブロックチェーン以前から存在していたPoWの仕組みの一つである「ハッシュキャッシュ」というプルーフオブワークの仕組みに習っている。
ハッシュキャッシュ
スパムメール防止のために使われていたPoWの仕組みの一つ。CPU処理で生成するハッシュ値を基に送信元を検証する仕組み。ハッシュ値はハッシュ関数に引数を入れたときの戻り値であり、ハッシュ関数(ハッシュアルゴリズム、(SHA-256などがある))は引数に対して一見適当に見える(が適当ではない)戻り値を返す関数のこと。暗号生成などに使われる。①ハッシュ値から引数を特定するには大量の引数を実際に入力しまくる作業が必要でCPUに負荷をかける(稼働量を証明する)ことができること、問題生成が簡単で問題生成の際の負荷が小さいこと、演算結果があっているかの検証が簡単なことから
電子メールスパムやサービス拒否攻撃?を制限するためのプルーフオブワークシステムとして使われていた。最近ではビットコインのマイニングアルゴリズムの一部として使用されることで有名になった。
ハッシュキャッシュ自体は電子メールを送る時にハッシュキャッシュの問題を解かなければいけないようにすることでCPU負荷をかけさせ、スパムメールを送りづらくする仕組み。計算能力をお金のように証拠として使用しなければならない(プルーフオブワーク)ため、ハッシュ「cash」(≠cashe)と言われていた(らしい)
ハッシュ関数
引数に対してハッシュ(ぐちゃぐちゃにした戻り)値を出力する関数。関数なので(ぐちゃぐちゃではあるが)同じ引数には必ず同じ戻り値を返すが、外部からは一見デタラメな数値を返しているように見えるのでハッシュ関数と呼ばれる。ブロックチェーンではブロックとブロックをつなぐためにハッシュ関数を利用しており、ブロック内に前ブロックのハッシュ値を格納することによって、ブロック同士をつなぎつつ、PoWの仕組みを担保している。
参考にしたサイト
https://trade-log.io/blog/506/
https://blog.visvirial.com/articles/135
https://gaiax-blockchain.com/pow#i-5
https://www.ogis-ri.co.jp/otc/hiroba/technical/bitcoinpaper/part5.html
ブロックチェーンについて調べた感想
技術的な仕組みは全く分かっていないので知識は全く地に足ついていない感じがしますが、何となく仮想通貨がどういう仕組みになっているのかは理解しました。
もう少し理解が深まった時に見返して定期的に知識をアップデートしていこうと思います。
