Web教材一覧システムの活用電子マネー

ブロックチェーン

ブロックチェーンは、暗号資産取引での利用が主流ですが、ここでは暗号資産については割愛します。→参照:暗号資産


前提概念

ビザンチン将軍問題
ビザンチン帝国にA,B,Cの将軍がいました。3将軍が全員一致すれば勝つことができます。誠実なAは、BとCに「攻撃」を提案しました。ところがBは裏切者でCに「撤退」を提案しました。日和見なCは相反する提案を受けて戸惑ってしまいます。すなわち、合意形成に達していないのです。
もう1人、誠実な将軍Dがいました。DはAの提案を受けて、自分も「攻撃」をB、Cに提案します。Cは「攻撃」が多いので同調して「攻撃」を提案します。Bは他の3人が「攻撃」であることから、自分の非を認めざるをえません。すなわち、合意形成が成立しました。
一般的に、裏切者が全体の1/3未満ならば、正しい合意形成が得られることが証明されています。
合意形成
これをネットワークでのデータの正当性に置き換えます。
将軍はノードになり、各ノードはP2Pで接続されています。裏切者の将軍は、故障したノード、誤ったデータを発信したノードになります。すなわち、正常なノードが2/3以上ならば、データの正当性に関して正しい合意形成ができることになります。
この合意形成こそがデータの正当性を保証するものですから、実際には、もっと複雑な合意形成ルールが採用されます。
分散ネットワーク
このネットワークは、各ノードが対等に他のサーバに接続しています。あるノードは故障しても、他のノード間は正常に動作します。
すべてのノードに合意形成を得た同一のデータが分散保存されています。どこかのノードで失っても、簡単に復旧できます。
すなわち、合意形成のルールが確立していれば、データ管理のための中央サーバ(管理者)は不要になります。
ブロックチェーン
将軍からの提案は、商取引でいえば「誰から誰にいくらの金額を支払う」ような取引データになります。
ブロックチェーンとは、取引データ(実際には複数の取引データをまとめたブロック)を発生順につないだ(チェーン)ものです。それをたどれば、全ての取引を遡ることができます。
ここで重要なのは、正しいブロックでないと前のチェーンにつなげないということです。そのルールが合意形成ルールです。また、以前のブロックを改ざんしたときの発見にもなりますし、発見を逃げる改ざんを行うには膨大な作業が必要になります。
日本ブロックチェーン協会は、「ビザンチン障害を含む不特定多数のノードを用い、時間の経過とともにその時点の合意が覆る確率が0へ収束するプロトコル、またはその実装をブロックチェーンと呼ぶ。」と定義しています。

ブロックチェーンの種類

ブロックチェーンは、主に管理者の有無、合意作成ルールにより、次のように区分できます。

パブリック型  管理主体:なし、合意形成:中央排除型(PoW、PoS)
そもそもブロックチェーンは代表的な暗号資産(仮想通貨)であるビットコインの基本方式として開発されました。
暗号資産データの信頼性を確実なものにすることを重視しています。その手段として、チェーンへの接続には暗号解読に成功することを合意形成のルールとしています。その暗号解読作業をマイニング、作業者をマイナーといい、誰でもマイナーになれます。解読の報酬としてビットコインを渡します。すなわち中央銀行の役割も持っているのです。
ビットコインの運営は、特定の管理者が存在せず、設定されている論理に従うシステムそのものが管理しています。
法定通貨のように政府や中央銀行のような権力による運営から独立していることがビットコインの特性になっています。
プライベート型  管理主体:単一組織、合意形成:中央集権型(PBFT)
小規模あるいは特定の分野でのネットワークで、1人(1組織)の管理者が存在します。管理者の許可を受けたものだけが、利用者となれます。
ブロックチェーンの仕様変更を行う際に、プライベート型の場合は管理者の決定で自由に変更を行うことが可能です。そのため、より柔軟なシステムの構築ができますが、反面、規模の拡大には管理者の信用が重要な要素になります。
コンソーシアム型  管理主体:複数組織、合意形成:多様
いくつかの組織が参画したコンソーシアムが管理を行う形態です。例えば銀行業界では3大メガバンクによるコンソーシアム型ネットワークがあります。銀行間での送金などの業務で信頼性の確保のために、ブロックチェーンの仕組みを利用します。そして、送金手数料を安くしたり、送金時間の短縮の実現ができます。

プライベート型のルール

PBFT (practical Byzantine Fault Tolerance)
「特定のノードで障害が発生する」「特定のノードによってメッセージが改ざんされうる」などビザンチン障害への耐性をもつ分散合意アルゴリズムの 1 つ。プライベート型ではこれが多い。ここでは、パブリック型のマイニングなどは存在しません。
実際にはP2Pではなくリーダーノード(中央サーバ)があり、データを保管する多数のバックアップノードがあります。送信者は署名してデータをリーダーノードに送信し、リーダーノードはそれらをバックアップのにマルチキャストします。
スマートコントラクト
ここでのスマートとは自動化のこと。「特定の条件が満たされた場合に、決められた処理が自動的に実行される」仕組みです。自動化することにより処理が簡単で迅速なこと、改ざんリスクが小さいこと、仲介手数料が不要などの利点があり、ブロックチェーンで広く採用されています。ネットワークの型によらず用いられていますが、その仕組みは多様です。

パブリック型のルール

パブリック型ではブロックチェーンの一貫性を維持するために暗号解読(マイニング)が必要で、それを試みる人をマイナーといい、マイニングに成功してブロックに書きこんだ人に報酬として決められた額の仮想通貨を渡します。

PoW(Proof of Work)
ワークとは暗号解読(マイニング)してブロックに書き込む作業のこと。最も早くワークを達成した者に報酬を与えます。公平なルールだといえます。
しかし、誰でもワーク達成者になれるので、多くの人がマイナーとして作業します。この作業は膨大な計算量を必要とするので、そのための電力消費が問題になります。また、不正行為も過半数が支持すれば成立します(51%ルール)が、現在では巨大な計算資源を自動的に利用する時代です。そのようなグループが共謀すれば51%攻撃を行うことができry弊害があります。
PoS(Proof of Stake)
ブロックへの書き込みを保有コイン残高によって制限する方法です。これにより、マイナーになる人を減らすことができ、また、 51%攻撃では、過半数を超えるコインを所有する必要があり、PoWの弊害を避けることができます。反面、持てる人・持てない人の不公平が増大します。

ブロックチェーンの構造とマイニング

ブロックチェーンの構造
ブロックチェーンの構造は、これまでの取引データのブロックがチェーン状につながっており、新規に発生した取引のブロックが末尾につなげます(書き込み)。
一つのブロックには、次の3つの要素があります。
・取引データ:いくつかのデータをまとめてブロックにしています。
・直前のブロック(厳密にはヘッダ)のハッシュ
・ナンス:マイニングに用いる数字列
マイニング
ブロックチェーンにおいては各ブロックのハッシュ値は、例えば「ハッシュの最初のN桁が全て0である」というようなルールがあります。
新ブロックのナンスに数値を与えて、新ブロックのナッシュを計算します。それが上のルールに合致すれば、新ブロックが直前のブロックに連結できたことになります。しかし、それには膨大な計算量が必要になります。
膨大な計算量が必要なのは、既存のブロックの改ざん防止のためです。あるブロックを改ざんすると、ハッシュは前のブロックのハッシュですから、矛盾が起こらないように、ナンスの再計算をする必要がある。これをかなり前のブロックまでやるのは事実上困難だからです。

しかし、あまりにも膨大な計算をするのでは、成功するまでに時間がかかり、新ブロックがつながりません。取引の実行が遅れてしまいます。信頼性の確保と取引時間の短縮のバランスが必要です。それはNの値で調整できますが、その設定ルールについては、私は知りません。
また、計算量は報酬額にも影響します。計算に要する費用が報酬額よりも大きいならマイナーが減少してしまいます。報酬額が高いと仮想資産総額が増大し価値が低下します。そのルールは示されていますが割愛します。