『仮想通貨の教科書』 第2章 ビットコインが非中央集権を実現している仕組み その3
『仮想通貨の教科書』の 第2章 ビットコインが非中央集権を実現している仕組み を読んだのでメモ続き(その1,その2はこちら)。
2.3 ブロックチェーンを使った身元不明の人々の合意形成
ビットコインにはノードに識別情報(identity)がないためより多くの制限やセキュリティの懸念点がある。
例えば、結託攻撃(Sybil attack)と呼ばれる悪意のある利用者が勝手に新しいノードを作り、二重払いのようなことができてしまう恐れがある。
ビットコインには識別情報はないが、整理券のようなトークンを与えることで、無作為に番号を選びノードを選択する、ということができるようになっている。
この「ノードを無作為に選択できる」ことで「暗黙の合意」(implicit consensus)が可能となる。
新たなブロックを作成するときに、ノードが無作為に選択され、選択されたノードが新しいブロックを提案する。
他のノードは選択されたノードが提案したブロックを受け入れたり拒否したりできる。
また、各ブロックには次のブロックのハッシュ値が含まれている。
この「暗黙の合意」を利用した合意形成に関して以下の3点について検討する
・ビットコインの盗み
・二重払い攻撃
・ビットコインの盗み
これに関しては他人の持つビットコインで支払いをするには他人の電子署名を偽造する必要がある。
しかし、これは暗号アルゴリズムとして不可能である。
他人が取引をできないように、特定の利用者の取引結果のブロックをブロックチェーンに取り込まないようにする。
しかし、これも他の利用者のブロックチェーンには追加されていってしまうので効果はほぼない。
・二重払い攻撃
アリスがボブに二重払いをするケースを想定する。
アリスがボブに何かを支払いするが、ボブに支払うコインと同じコインを利用して自分の持っている違うアドレスへ送金するということが考えれる。
ここで、無作為に選ばれたノードがアリスの支配しているノードだった場合にボブへの支払いの無視し、自分のアドレスへの送金をブロックチェーンに組み込む。
アリスの自分への送金の処理を含むノードが多くのチェーンに組み込まれ、ブランチが伸びていくと二重払いが成功してしまう。
では、ボブはどうすればいいのか。
結論から言うと、ボブはアリスからボブへの支払いを含むブロックがチェーンに組み込まれ、ある程度ブランチが伸びた時点で有効な取引だと承認して取引を完了とする。
こうすることで二重払い攻撃を防ぐことができる。
アリスからボブへ支払いの処理が来てすぐに取引を認めてしまうことを「ゼロ承認取引」(zero-confirmation transaction)と呼び、この場合は二重払いが成功してしまう。
実際のビットコインの場合だと、6個の承認が得られるまで待つ、という経験則が使われている。
所感:
6個の承認が得られるまで待つ、というのがやはり気になる。
これによってほぼ保証できる形になる、と思うのだが完全ではないし
6個の承認は時間がかかる。
(実店舗での利用ではほぼ無理。コンビニの会計時に何分も承認待ちで待たされてたら意味がない)
ブロックチェーンには
・パブリック型(ビットコイン)
・プライベート型
・コンソーシアム型
といった参加方法の分類がある。
パブリック型以外の場合にはより高速に取引ができ、ファイナリティ(正しい取引)も確保できる?
私としてブロックチェーン全体を理解するのに役立った資料がこちら。
https://www.mof.go.jp/pri/summary/topics/cy2017/201701a.pdf
NTT DATAの方が作成したパワポ資料。
資料の中にZaifの運営会社のテックビューロの名前もありました。