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

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

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

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

Q&A

解決済

1回答

816閲覧

なぜビットコインでは改竄されたブロックにつなげてマイニングが行われないのでしょうか?

hososo

総合スコア34

Blockchain

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

0グッド

0クリップ

投稿2020/05/12 13:05

現在ブロックチェーンのアルゴリズムを勉強中です。コンセンサスアルゴリズムのProof of workについて、以下の理由で情報の安全性が保たれていると考えております。※悪質というのは改竄をするようなノードのことです。

①善良なノードの計算量は、悪質なノードの計算量を上回る

②最初にマイニングに成功した人が善良なノードである可能性が高い
or
③仮に悪質なノードがマイニングに成功しても、継続的に悪質なノードがブロックチェーンをつなげるためには莫大な計算量が必要である

しかし、ここで③に対し疑問が生じました。たしかに、悪質なノードは全世界の善良なノードよりも計算量を上回らないと、改竄されたフォークを伸ばすことは出来ません。けれどもそれは2つの「正しいフォーク」「改竄されたフォーク」が発生し、競争状態になったときに伸ばし負けるという意味だと思ってます。

もし、偶然悪質なノードがすぐに計算を終えてしまった場合どうなるのでしょうか?
このときこの悪質なノードは全世界に対し改竄されたブロックを「他の善良なノードの計算が終わる前」に配布します。すると全世界のノードは今行っているマイニングを中断し改竄されたブロックにつなげてマイニングをしようとはしないのでしょうか?

もし、全世界のノードが同じマイニングプールを持っていれば、「俺のマイニングプールの情報を入れてもこのノンスでは条件を満たさない!これは改竄されている!」と気づくと思います。でも実際にはノード全体に情報が行き渡るまで2-3秒のラグがあると思われます。そうすると、全世界のノードが共通のマイニングプールを持つのは難しいです。

乱雑な質問ですが、回答よろしくお願い致します。
また、私の理解に間違いがあるかもしれません。ぜひ教えて下さい。

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

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

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

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

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

guest

回答1

0

ベストアンサー

「俺のマイニングプールの情報を入れてもこのノンスでは条件を満たさない!これは改竄されている!」と気づくと思います。

このチェックはブロックチェーンを繋ぐ前に行いますので、そもそもノンスが一致しないブロックへ後続のブロックがつながるようなことは発生しません(ノンスのチェックはマイニングのようなことをしなくても一瞬で行なえます)。

投稿2020/05/12 13:18

maisumakun

総合スコア145184

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

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

hososo

2020/05/13 11:21

回答ありがとうございます。ですがまだ良くわかりません... ナンスのチェックは、「ハッシュ計算をしたときに先頭の0が規定の数以上あるかを確認している」と捉えています。では何をハッシュ計算しているかというと、親ブロックのハッシュや取引内容、タイムスタンプなどだと考えてました。 しかしもし取引内容そのものを偽装していたらどうなるのか?ということが理解できません。例えば私が「Aさん→Bさん」のトランザクションを、「Aさん→私」に改竄した上でその取引内容で条件を満たすハッシュを見つけたとします。このブロックを全世界に配布します。そうすると、ブロックを受け取ったノードは「Aさん→私」の取引内容をもとにハッシュ計算をすると思います。このとき私が偽造した取引内容で、私が導き出したナンスの組み合わせなら条件を満たすはずです。 もし、全世界のノードが「Aさん→Bさん」の取引内容を”知った上”でナンスを計算すれば、私の取引内容の改竄はバレます。でも全世界のノードが同じ取引内容を知ることは難しいです。 私の理解は中途半端ですので、誤りのあった際はぜひご指摘いただきたいです。 よろしくお願いします。
maisumakun

2020/05/13 11:24

> 「Aさん→Bさん」のトランザクションを、「Aさん→私」に改竄した上で トランザクション自体がAさんの秘密鍵で署名されていますので、そもそもこんなことはできません。
hososo

2020/05/13 16:13

なるほど!理解できました。 取引時点でのトランザクションの安全性はブロックチェーンの特殊なアルゴリズムではなく、電子署名にあったのですね。そしてその安全性を長く保つ技術がブロックチェーン... スッキリしました。丁寧な回答ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問