質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Blockchain

Blockchain(ブロックチェーン)とは、分散型台帳技術もしくは分散型ネットワークのことを指します。クラウド上のデータを分散し、ノード間でデータの相違があった際には他ノードの合意によって信頼性が高いデータを判断。データの確保および信憑性を保持する技術です。

Q&A

1回答

313閲覧

ビットコインのPoWの承認作業について

noj

総合スコア13

Blockchain

Blockchain(ブロックチェーン)とは、分散型台帳技術もしくは分散型ネットワークのことを指します。クラウド上のデータを分散し、ノード間でデータの相違があった際には他ノードの合意によって信頼性が高いデータを判断。データの確保および信憑性を保持する技術です。

0グッド

0クリップ

投稿2018/10/13 08:31

編集2022/01/12 10:55

いつも大変お世話になっております。
プログラムについて素人なのですが、仮想通貨を勉強していてどうしても解けない疑問があるのでここで質問させていただきたいと思います。

ビットコインのマイニングにおけるPoWの仕組みについてです。

計算が行われて発言権を得たマイナーがブロックを生成し、それをほかのマイナーが承認することでブロックが生成される。という理解をしています。

このときの承認について、多くのサイトでは「過半数のノードによる承認」でブロックの正当性が認められると解説されています。

しかし、51%問題では「ハッシュレートが51%以上」でノードの承認が可能になるから問題になっているのではないですか?

この「承認」は、ノードの数による過半数なのか、ハッシュレートの過半数なのか、どちらが正解なのでしょうか?

ハッシュレートによる過半数だとしたら、いつの時点でのハッシュレートで、どのようにして承認作業が進むのか教えていただけますか?

もしノードの数による過半数なのであれば、51%問題はなぜ51%なのでしょうか?計算速度が圧倒的に速いコンピュータで51%超えたとしても、ノードの数では過半数にならず、問題にはならないのではないでしょうか?

いろんな書籍を読み漁り、かれこれ100以上のサイトを調べつくしましたが、欲しい答えは見つかりませんでした。1週間以上これで悩んでいます。

ご教授いただければ幸いです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

承認するルールは単純で、いちばん長いブロックチェーンを信頼する、というものです。承認するかどうかも各ノードが自律的に判断していて、「過半数の承認」のようなコンセンサスを取るものではありません。

そして、51%攻撃は、ハッシュパワーの過半数をかき集めることで、他のより長いチェーンを意図的に生成してしまうことが可能となる、というものです。

投稿2018/10/13 09:30

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

noj

2018/10/13 11:49

返信ありがとうございます! 「いちばん長いブロックチェーンを信頼する」というのは、具体的にはどういう意味でしょうか? 新しいブロックが生成されるときの話なんですが、私が理解できていないだけでしょうか? また、他のより長いチェーンを意図的に生成するというのは、なぜ51%なんでしょうか?その理論であれば、48%でも可能なように思います。 51%というからには、過半数と深く関係しているはずですが、その理論がわかりません。
maisumakun

2018/10/13 12:45

最初に読み落としていましたが、「計算が行われて発言権を得たマイナー」の時点で誤りです。 承認されるブロックは誰でも生成はできるのですが、正しく承認されるためにはものすごい量の計算をこなして、承認されるための条件に合ったブロックを生成する必要があります(条件を満たすことのチェックは、大した計算をしなくても可能なようになっています)。つまり、マイニングの計算は「発言権を得るため」ではなく「承認条件に合うブロックを生成する」ために行われています。「新しいブロックを生成する」と「承認を得ること」は全く別個のものではなく、「承認されるブロックを生成する」という1つの作業を別の観点から眺めたものなのです。 そして、この「承認されうるブロック」を生成できる確率は計算量=ハッシュパワーに比例しますので、攻撃者のハッシュパワーが50%を切っていても、確率次第では攻撃が成立することがあります。過半数を持っていれば、自分のつないだブロックチェーンを正式なものにできてしまいます。 https://zoom-blc.com/51-percent-attack
noj

2018/10/13 13:00

何度もありがとうございます。 私は、「承認条件に合うブロックを生成」できたあとのことを知りたいのです。 添付していただいたURLを読みましたが、その中に、 「この承認にはネットワーク参加者の計算量の過半数が必要」とあります。 計算量というのは、ハッシュレートのことですよね? ハッシュレートを20%持っていれば、20%の投票権を持っているということなんでしょうか? ノードひとつに対しひとつの投票権ではないのですか? 計算量の過半数というのは、一体どういうことを指すのでしょうか? 上記のサイトを読んでみてもやはりわかりませんでした・・・。
maisumakun

2018/10/13 13:20 編集

本来の場合、ビットコインの承認は個々のマイナーが、ビットコインのアルゴリズムに従って行います(まったく分散的なものであって、「過半数」なんてことはありません)。…が、51%攻撃の場合はそういうのと関係なく、攻撃者は自分で作ったブロックチェーンを伸ばし続けます。 攻撃者のチェーンが本来のチェーンより長くなった瞬間に、「最長のチェーンを信頼する」というアルゴリズムに従って、それが「正しいブロックチェーン」とみなされてしまう、ということです。
maisumakun

2018/10/13 13:27

「投票」と表現するかどうかは別として、「そのブロックにつながる次のブロックの探索を始める」ことが「承認の投票」に相当します。
noj

2018/10/13 13:39

なるほど!ちょっとわかってきました! 承認条件に合うブロックを生成できた時点で、無条件でチェーンにつなげられるということですよね?(ブロックを生成して、それをほかのマイナーが承認することでチェーンにつなげられるのかと思っていました。) つまり、次のブロックがつながったときに、ひとつ前のブロックが「1回承認された状態になる」ということで合っていますか? そして、ハッシュレートが51%を超えていると、不正なブロックのあとにブロックをつなげられる可能性が高くなるということでしょうか。。。 もしそうであれば、最新のブロックが不正なブロックだとわかった場合、その一つ手前のブロックに戻り、そこにつながる次のブロックの探索を始めるという作業になりますか? ブロックの分岐は「条件に合うブロックが同時に生成されたとき」だと思っていましたが、どのブロックにつなげるかマイナーが自由に決められるということでしょうか。 最後の質問になりますが、不正ブロックというのはどのようにして見分けることができるのでしょうか?これを理解するには高度な専門知識が必要ですか? 何度もありがとうございます。 どうぞよろしくお願いいたします。
noj

2018/10/13 14:26

最初の質問に戻りますが、 「ブロックを生成した後に、そのブロックの取引情報が本当に正しいのか承認が行われます。この承認にはネットワーク参加者の計算量の過半数が必要です。」 という部分が、やはりどうも理解できません・・・。
maisumakun

2019/01/18 05:41

その部分自体がおかしいです。「ブロックをブロックチェーンにつなぐこと」≒「承認」です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問