LINEで送る
Pocket

前回では,維持管理作業への参加者が,それぞれ自分のコンピュータの中に保有しているビットコインの全取引履歴データベース(ブロックチェーン)の更新権限を,当たりが出るまで10分間かかるくじ引きで決めるという点を解説しました。

今回は,くじ引きで当たり(答え)が出た場合に,どのように世界中の全取引履歴データベースが一斉に整合性を持って更新されていくのかを解説していきます。

くじ引きの答えが見つかったあとの処理

【答えを見つけた人の処理】
くじ引きで当たり(答え)を見つけた参加者は,(1)自分がくじの答えを見つけたこと,(2)対象となる取引情報をビットコインの全取引履歴データベースに追加すること,(3)自分が報酬を受け取ること,について,他の参加者にインターネットを介して通知します。

他の参加者に通知される内容は,基本的にくじ引きでハッシュ関数の入力値にしているものと同じものになります。

hbw4-1

【他の参加者の処理】
通知を受け取った他の参加者は,以下の内容を確認します。

(1)くじ引きの答えが正しいか
(2)今回データベースに追加する取引情報に不整合な点はないか
(3)前回のくじの結果を代表する値が一致するか

送られてきた情報の中に誤りや不正があれば,その情報は破棄され,正しい当選者からの情報が送られてくることを待つことになります。

そして,内容が正しければ,自分の持つビットコインの全取引履歴データベースに追加を行います。

ビットコインの全取引履歴データベースには,受け取った以下の情報が追加されることになります。この1つの追加情報を「ブロック」と呼んでいます。

hbw4-2

ブロックは,くじ引きの当選者が10分程度で現れるので,それに合わせて追加されていくことになります。

例では含まれる取引情報は「太郎から花子へ10BTC送る」取引のみとしていますが,実際は世界で行われた複数の取引が1つのブロックに含まれ,取引履歴データベースに蓄積されていくことになります。

(注)説明では「太郎」や「花子」と書いていますが,実際には太郎の持つ「ビットコインアドレス」,花子の持つ「ビットコインアドレス」が記録されていき,ビットコインアドレスを誰が所有しているかの情報は記録されません。

(1)くじ引きの答えが正しいかの確認

くじ引きの答えの確認は,当選者から送られてきた「答えとなる任意の数値」をハッシュ関数に入れることで簡単に確認できます。

hbw4-3

(2)今回データベースに追加する取引情報に不整合な点はないかの確認

「太郎が花子に10BTC送った」という例で考えてみます。

くじ引きの当選者から,この取引データを各自のビットコインの全取引履歴データベースに追加してくださいという情報を,維持管理作業への参加者であるジョンが受け取ったとします。

ジョンはまず,自分の持つビットコインの全取引履歴データベースを見て,太郎の保有する残高を確認します。

具体的には,過去の太郎の送金・受取の記録を見て,花子に送る前の残高が,本当に10BTCあったのかを確認します。

ここで,太郎の持つ残高が,5BTCしかなければ,花子に10BTCを送ることはできないので,この取引情報は不正と分かります。

hbw4-4

(3)前回のくじの結果を代表する値と一致するかの確認

ビットコインでは,改ざんを防ぐために,今回のくじ引き情報に,前回のくじの結果が含まれています。

ジョンは,受け取った取引情報の中に含まれている前回のくじの結果情報と,自分の保有するビットコインの全取引履歴データベースの前回のくじの結果情報を照合して,不正が無いかを確認します。

hbw4-5

以上で,くじ引きの当たり情報を受取ったジョンは,受け取った情報が正しいことが確認できたため,自分のコンピュータ内に保有するビットコインの全取引履歴データベースにデータを追加し,更新が完了することになります。

———————————————————————-
ここで,少しビットコインの全取引履歴データベース(ブロックチェーン)の改ざんの難しさについて触れておきます。

ビットコインの全取引履歴データベースでは,前回のくじの結果が連鎖する形で蓄積されているので,どこかを改ざんすると,以降のデータも連鎖して改ざんする必要があり,セキュリティ上非常に改ざんに強い構造となっています。

hbw4-6

例えば,#2016のブロックに含まれる取引情報を,「自分に100万BTC送る」という形に改ざんした場合,#2016のブロック追加時のくじ引きにおける,答えとなる任意の数値とハッシュ関数の出力値を再度求めることに加え,以降の取引に含まれる,前回くじの結果箇所を書き換え,さらにそのレコードの答えとなる任意の数値とハッシュ関数の出力値を求め続けていく必要があります。

hbw4-7

改ざんが成功するには,1回のくじ引きについて,世界中の維持管理作業参加者全員が10分間かけてなんとか見つけている答えとなる任意の数値を,改ざん者は自分だけで改ざん対象となる取引以降のブロックについてもすべて見つける必要があり,さらに,将来に渡っても,自分の取引履歴が正しいことを証明するために他の人よりも早く答えを見つけていく必要があります。これらの条件をすべて達成して初めて,ビットコインの全取引データベースを所有する参加者は改ざん者の偽の情報を正しいと思い込み,正規の取引履歴を破棄するようになります。

これではとても改ざんは困難であり,むしろこの改ざんができるほどのコンピュータを持っていれば,ビットコインの維持管理作業に正当に参加して,容易にくじ引きで当たりを見つけて報酬を手に入れることが可能なはずです。そのため,ビットコインの改ざんの難しさは,改ざんを行おうとする人に,改ざんではなく正当に参加させるインセンティブを与えることになります。

この記事を書いた人

後藤 あつし
大手金融機関における市場リスク管理、信用リスク管理、流動性リスク管理、バーゼル規制対応等の長年の経験を有する。ビットコインおよびその技術であるブロックチェーンについては初期の頃から金融イノベーションに繋がる可能性を感じ調査・研究を行うとともに、主に金融の側面から関連事業者・団体への助言、各所記事や資料等の作成サポート、BTCNへの寄稿なども行なっている。

連絡先 gotoa123tアットマークyahoo.co.jp