卒論から始まるBlockchain

卒論から始まるBlockchain

俺の屍を越えて行け

日本ブロックチェーン協会の定義から、ブロックチェーンを理解しよう② ~ ファイナリティー編 ~

前回までのおさらい

前回は定義1の一番最初に出てくる単語「ビザンチン障害」をメインに解説していきました。(日本ブロックチェーン協会の定義から、ブロックチェーンを理解しよう① ~ ビザンチン障害編 ~ - 卒論から始まるBlockchain)

 ビザンチン障害:応答を返さない、誤った応答を返す障害のこと。

と紹介しました。さらに、それを含むネットワーク内でどのように合意すればいいかは、実はこの記事で紹介してたよ(ブロックチェーンってなに?に答えよう - 卒論から始まるBlockchain)と言いました。またそのような場合に、ネットワーク内で一つの情報(提案)に合意するためには、

ネットワークの総数:n≥3t+1(n:ネットワークの総数, t : 故障機器数)

正常に動く機器:m≥2t+1(m :正常に動く機器の総数, t : 故障機器数)

が必要だよ!という話をして終わりました。その上で今日は太字の部分

1)「ビザンチン障害を含む不特定多数のノードを用い、時間の経過とともにその時点の合意が覆る確率が0へ収束するプロトコル、またはその実装をブロックチェーンと呼ぶ。」

出典:「ブロックチェーンの定義」を公開しましたJBA

 「時間の経過とともにその時点の合意が覆る確率が0へ収束するプロトコル

をメインに説明していきたいと思います!

 

プロトコル”とは 

相変わらずどこから手を付けていけばいいのかというところですが、とりあえずカタカナから片付けましょう(何となく)。

 

プロトコル:機器同士がネットワークを利用して通信するうえで決めている約束事

 

この記事を読んでいる方の多くは日本語を母語にしているかと思います。ではなぜ私たちは「日本語」で会話ができるのでしょうか。それは「日本語」での単語の意味や、文法がわかっているから。つまり「日本語」のルールがわかっているからですね。一方が日本語で話し、一方がスワヒリ語で話しても会話は成り立ちませんね。同じように、インターネットや通信の世界も場所によって様々なルールがあります。でもそれでは不便だよね。だから、プロトコル(ルール、お約束事)を決めましょう。それをもとに色々やっていきましょう、というのがあるわけです。じゃあブロックチェーンにおけるルールは何かというと、

時間の経過とともにその時点の合意が覆る確率が0へ収束する」ルール・お約束事です。

ふむ...わからん( ˘ω˘) ややこしい言い方しやがって、っという怒りは我慢しましょう。

 この長くてややこしい文章を、私は「ファイナリティーを得る」と置き換えて理解しています(間違ってたらごめんなさい)。なのでここから先はファイナリティーについての説明を絡めながら進めます。

...余計ややこしくなってんじゃねえか(#^ω^)、っという怒りはもう一度我慢しましょう。ちゃんと説明しますから。

 

”ファイナリティー”とは

「ファイナリティー(fainality)」とは金融、特に決済の場面で使われる言葉です。例えば日銀のホームページにはこのように書かれています。

(1)受け取ったおかねが後になって紙くずになったり消えてしまったりしない、また決済方法について(2)行われた決済が後から絶対に取り消されない――そういう決済が「ファイナリティーのある決済」と呼ばれます。 

出典:第7章 決済の実行 : 日本銀行 Bank of Japan

 まずは「(1)受け取ったおかねが後になって紙くずになったり消えてしまったりしない、また決済方法」を説明します。

例えば、私がある店で1万円分の商品券を使って買い物をしたとします。するとお店はその商品券を、発行元の会社に持っていき1万円に換金します。しかし、もし換金する前に発行元の会社が倒産したとしたら、その商品券はどうなるでしょうか。そう、ただの紙切れになりますね。そうなったとしたら、お店側は1万円分の損失を被ったことになります。

この、お店側が現金ではなく商品券を受け取るという事は、「損失を被る可能性を抱えた」事になります。これは商品券を受け取ったこと、倒産する可能性のある会社が発行した商品券を受け取った事、が原因として考えられます。そのため、決済には「(1)受け取ったおかねが後になって紙くずになったり消えてしまったりしない、また決済方法」が重要視されます。

 次に「(2)行われた決済が後から絶対に取り消されない」を説明します。

先ほど受け取った商品券を換金した後、実は無効なものだったと判明したとします(拒否できない)。おかねを取り上げられるということは、お店側からすればタダで商品を手放したことになります。

つまり、「(2)行われた決済が後から絶対に取り消されない」事も決済においては重要なことになります。

ではなぜこれがブロックチェーンの定義の一文に関係があると私が言っているのか。それはブロックチェーンのある特徴に由来します。

ここでは2点だけに絞って説明します。

 

一定時間ごとに繋げていく

ブロックチェーンってなに?に答えよう - 卒論から始まるBlockchainの記事で「データの繋がり」と説明したことに関連しています。詳しい説明は省きますが、この「データの繋がり」は「一定時間」ごとに繋がっていく(長くなっていく)のです。(例えば、ビットコインだと10分に1ブロックずつ伸びていきます。)

また、「みんながみんなのデータを持っている」とも説明しました。ここでは、「どうやったら」一つのデータに合意できるかは説明しました。では「どんな」データを合意しているのでしょうか。

 

「どんな」データを合意するか

もう一度ビットコインを例に話を進めます。ビットコインでは「ある計算を一番早く、正しくした者のデータ」をみんなで合意しています。しかし、世界はとても広いです。なのでどうしても時間差により複数出てきてしますことがあります。しかも、この二人のデータはどれも違う(全く同じの可能性もある)が、どれも正しい(ここでは正しいとする)のです。

お前何言ってるんだ(´・ω・)、という声が聞こえますが本当なんです。ある瞬間に、正しいデータが複数提案される(これをフォークといいます)ことがあるのです。

それじゃあ、みんなで一つのデータに合意できてないじゃないか!どうするんだ!っとなりますね。しかしこれは単純。

それぞれが正しいと思う方(実際は早く受け取ったデータの方)を元に、新しくデータを繋げていきます。

そうしてより長くなった方を正しいデータとして合意していきます。じゃあ長くならなかった(合意されなかった)データはどうなるか―――無効です。なかった事になります。

 

一旦話を整理しましょう。

Q:ブロックチェーンは「どんな」データを合意しているのか?

A:ある計算を一番早く、正しくした者のデータをみんなで合意する(ビットコインの場合&データの中身についての話は省略)。そして、合意したブロックを一定時間ごとに繋げていく。

注意点

1:ある瞬間に、正しいデータが複数提案される(これをフォークといいます)ことがある。

2:その場合、より長くなった方を正しいデータとして合意し、繋げていく。短い方(その他のブロック)は無効になる。

f:id:mochi-mochi-0397:20180604165151p:plain

 

ここで一番の問題点は「2:その場合、より長くなった方を正しいデータとして合意し、繋げていく。短い方(その他のブロック)は無効になる。」です。つまり、一時期は正当な取引であると合意されていたものが、時間が経つと無効になる、覆される可能性があるのです。これが決済の世界なら「ファイナリティーがない決済」になりますね。もちろんこれでは困るわけです。じゃあブロックチェーンではどうするか。ここで一気に話を戻していきます。

 

ブロックチェーンにおける”ファイナリティー”

「時間の経過とともにその時点の合意が覆る確率が0へ収束する」

ブロックチェーンでは「一定時間」ごとにネットワークで合意されたデータを繋いでいき、それらが後で「無効・覆る可能性」が限りなく0に近くなっていく(0%にはならない)ことでデータの正当性を担保しています。「ファイナリティを得る」、つまり「時間が経つにつれて、合意したものが覆る可能性が減っていく」ということになります。

じゃあどのくらいのペースで限りなく0に近くなっていく(収束)していくのでしょうか。例であげたビットコインでは6ブロック(10分×6ブロック=60分)待つことが推奨されています。実際にビットコインの最初の論文でその数式を見ると以下のようになっています。

f:id:mochi-mochi-0397:20180604005247p:plainf:id:mochi-mochi-0397:20180604005251p:plain

f:id:mochi-mochi-0397:20180604005254p:plainf:id:mochi-mochi-0397:20180604005257p:plain

出典:http://www.kk-kernel.co.jp/qgis/HALTAK/FEBupload/nakamotosatoshi-paper.pdf

※Pが大文字だったり小文字だったりするのは何故なんでしょう?わかる方いらっしゃいましたら教えてください(*_*;

とりあえず計算結果だけを見てみましょう。後のブロック(この場合zブロック)から追いつく=覆される確率は、ブロックが重なっていくごとに確率0へ近づいていっていることがわかりますね。もちろんp,qの値に依存いてしまいますが、ここではブロックが繋がっていけばいくほど、一度決まった合意が覆されにくくなっていっているんだとわかっていただければ十分です。実際この論文の結論では以下のように述べています。

良心的なノードが CPU パワーの過半数をコントロールす る限り、プルーフ・オブ・ワークを使って記録された公開型の取引履歴を攻撃者が変えようとすることが、コンピュータ的に加速度的に実質上実行不可能になっていく P2P ネットワークを提案した。

このような状態を「時間の経過とともにその時点の合意が覆る確率が0へ収束する」と述べているんですね。

 

まとめ

ブロックチェーンとは:応答を返さない、誤った応答を返す可能性がある不特定多数の参加者を含むネットワークにおいて、時間が経つにつれてその合意内容が覆される確率が限りなく0に近くなっていくプロトコル、実装のこと

 

となりますね。ただし、これは狭義の意味での定義と注意書きされています。さらに、協会でも一意に定義するのは非常に難しく、今後変わっていく可能性もあると述べています。ここまで、長ったらしく説明してきましたが、あくまで参考程度にしてくれということですね(笑)

今回で(1)は終わりましたが、まだ(2)の定義が残っております。次回からは、こちらの説明をしていきたいと思います。

では今日はここまでです!お疲れ様でした!!ここまでお読みいただきありがとうございましたm(_ _)m

 

//論文は妥協して原論文ではなく和訳を用いました。しかも画像を切り貼りしただけ。ごめんなさい(/_;) 

また、何かおかしなところがありましたらご指摘頂けると幸いです。

 

参考資料

ブロックチェーンのおいて確定を意味する言葉「ファイナリティー」

第7章 決済の実行 : 日本銀行 Bank of Japan

ブロックチェーンの基礎:ブロックチェーンの定義、種類、技術